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 .Le signal d'erreur entre et 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
etB
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.
Pour le système de l’avion, le vecteur d’état est le suivant.
Les variables , et 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, , et 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ù désigne l'accélération due à la gravité.
Caractérisation de points de fonctionnement
Pour les besoins du design du LQG, la dynamique non linéaire est caractérisée à et , , et sont mis à zéro. Comme , et 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 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.