Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Design d'un servo-contrôleur LQR dans Simulink

Cet exemple présente le design d'un servo-contrôleur LQR dans Simulink® en utilisant une application de pilote automatique d’un avion.

Ouvrez le modèle pour

open_system("lqrpilot")

Dans ce modèle :

  • Le bloc Linearized Dynamics contient la cellule d'un avion linéarisée.

  • sf_aerodyn est un bloc S-Fonction qui contient les équations non linéaires pour (θ,ϕ)=(0,15).

  • Le signal d'erreur entre ϕ et ϕref est passé par le biais d'un intégrateur, ce qui contribue à éliminer les erreurs.

L’ouverture du modèle entraîne également le chargement du fichier MAT lqrpilotData qui contient les données suivantes.

  • Matrices des équations d’état A et B

  • Matrice des états linéarisés A15

  • Matrice de gain LQG final K_lqr

Équations de représentation d'état de l'avion

L’équation est l’équation d’état standard d’un système de représentation d’état.

x˙=Ax+Bu

Pour le système de l’avion, le vecteur d’état est le suivant.

x=[u,v,w,p,q,r,θ,ϕ]T

Les variables u, v et w sont les trois vitesses par rapport au repère lié au corps, représentées dans la figure qui suit.

Les variables ϕ et θ sont le roulis, le tangage, p, q et r sont respectivement les taux de roulis, de tangage et de lacet.

La dynamique de la cellule est non linéaire. L'équation suivante montre les composantes non linéaires ajoutées à l'équation de représentation de l’état, où g désigne l'accélération due à la gravité.

x˙=Ax+Bu+[-gsinθgcosθsinϕgcosθcosϕ000qcosϕ-rsinϕ(qsinϕ+rcosϕ)tanθ]

Caractérisation de points de fonctionnement

Pour les besoins du design du LQG, la dynamique non linéaire est caractérisée à ϕ=15 et p, q, r et θ sont mis à zéro. Comme u, v et w n'ont pas d’incidence sur le terme non linéaire de l'équation précédente, on obtient un modèle linéarisé autour de (θ,ϕ)=(0,15) avec tous les états restants mis à zéro.

Le script lqrdes indique comment calculer le modèle linéarisé A15 à ce point de fonctionnement caractérisé.

Définition du problème

L'objectif du design est d'effectuer un virage coordonné régulier, comme le montre cette figure.

Pour atteindre cet objectif, vous devez concevoir un contrôleur qui commande un virage régulier en passant par un roulis de 60°. En outre, gardez en tête que θ, l'angle de tangage, doit rester aussi proche de zéro que possible.

Résultats

Le script lqrdes indique comment calculer la matrice de gain LQG K_lqr.

Dans le modèle lqrpilot, veillez à ce que le bloc Switch soit configuré de manière à sélectionner la sortie du bloc Nonlinear Dynamics.

Exécutez le modèle.

sim("lqrpilot")

Consultez la réponse du roulis ϕ à un changement d’échelon de 60°. Le système suit le roulis défini sous 60 secondes environ.

open_system("lqrpilot/phi (roll angle)")

Visualisez l'angle de tangage θ. Le contrôleur a pu garder l'angle de tangage relativement faible.

open_system("lqrpilot/theta (pitch angle)")

Enfin, visualisez les entrées de contrôle.

open_system("lqrpilot/Control Inputs")

Vous pouvez régler les valeurs Q et R dans le script lqrdes afin de tester différents designs possibles. Vous pouvez comparer également les simulations de dynamiques de système linéaires et non linéaires pour voir les effets des non-linéarités sur la performance du système.

Sujets associés