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 di aereo.
open_system("lqrpilot")
In questo modello:
Il blocco
Linearized Dynamicscontiene 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
AeBdelle equazioni di statoLa matrice di stato
A15linearizzataLa matrice
K_lqrdel 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 gradino 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.