Progettazione di un servo controller LQR in Simulink
Questo esempio mostra la progettazione di un servo controller LQR in Simulink® utilizzando un'applicazione per l'autopilota di un aereo.
Aprire il modello per
open_system("lqrpilot")
In questo modello:
Il blocco
Linearized Dynamics
contiene la cellula linearizzata.sf_aerodyn
è un blocco di funzione S contenente le equazioni non lineari per .Il segnale di errore tra e viene fatto passare per un integratore che contribuisce ad azzerare l'errore.
L'apertura del modello carica inoltre il file MAT lqrpilotData
che contiene i seguenti dati.
Le matrici
A
eB
delle equazioni di statoLa matrice di stato
A15
linearizzataLa matrice
K_lqr
del guadagno LQG finale
Equazioni stato-spazio dell'aeromobile
Questa equazione è l'equazione di stato standard di un sistema stato-spazio.
Per il sistema dell'aeromobile, il vettore di stato è il seguente.
Le variabili , e sono le tre velocità rispetto al telaio del corpo, come mostrato nella figura seguente.
Le variabili e sono il rollio e il beccheggio. , e sono rispettivamente il rollio, il beccheggio e i tassi d’imbardata.
Le dinamiche dell’aeromobile sono non lineari. La seguente equazione mostra i componenti non lineari aggiunti all'equazione stato-spazio, dove è l'accelerazione dovuta alla gravità.
Trimming
Ai fini della progettazione LQG, le dinamiche non lineari sono sottoposte a trimming a e le variabili , , e sono impostate a zero. Dato che , e non influiscono sul termine non lineare dell'equazione precedente, il risultato è un modello linearizzato intorno a , con tutti i restanti stati impostati a zero.
Lo script lqrdes
mostra come calcolare il modello linearizzato A15
in questo punto di funzionamento sottoposto a trimming.
Definizione del problema
L’obiettivo della progettazione è di eseguire una virata coordinata e costante, come illustrato in questa figura.
Per raggiungere questo obiettivo è necessario progettare un controller che comandi una virata costante tramite l’esecuzione di un rollio di 60°. Si assuma inoltre che l'angolo di beccheggio debba rimanere il più vicino possibile a zero.
Risultati
Lo script lqrdes
mostra come calcolare la matrice K_lqr
del guadagno LQG.
Nel modello lqrpilot
, assicurarsi che il blocco switch sia configurato per selezionare l'output del blocco Nonlinear Dynamics.
Eseguire il modello.
sim("lqrpilot")
Visualizzare la risposta del rollio a una variazione di passo di 60°. Il sistema traccia il rollio comandato in circa 60 secondi.
open_system("lqrpilot/phi (roll angle)")
Visualizzare l'angolo di beccheggio . Il controller è riuscito a mantenere l'angolo di beccheggio a un valore relativamente basso.
open_system("lqrpilot/theta (pitch angle)")
Infine, visualizzare gli input di controllo.
open_system("lqrpilot/Control Inputs")
È possibile regolare i valori Q e R nello script lqrdes
per provare diversi potenziali progetti. È inoltre possibile confrontare le simulazioni della dinamica del sistema lineare e non lineare per vedere gli effetti delle non linearità sulle prestazioni del sistema.