Main Content

lqr

Progettazione del regolatore lineare quadratico (LQR)

Descrizione

esempio

[K,S,P] = lqr(sys,Q,R,N) calcola la matrice di guadagno ottimale K, la soluzione S dell'equazione algebrica di Riccati associata e i poli a loop chiuso P per il modello stato-spazio a tempo continuo o a tempo discreto sys. Q e R sono le matrici dei pesi rispettivamente per gli stati e per gli input. La matrice dei termini incrociati N è impostata su zero quando è omessa.

esempio

[K,S,P] = lqr(A,B,Q,R,N) calcola la matrice di guadagno ottimale K, la soluzione S dell'equazione algebrica di Riccati associata e i poli a loop chiuso P utilizzando le matrici stato-spazio a tempo continuo A e B. Questa sintassi è valida solo per i modelli a tempo continuo. Per i modelli a tempo discreto, utilizzare dlqr.

Esempi

comprimi tutto

pendulumModelCart.mat contiene il modello stato-spazio di un pendolo inverso su un carrello in cui gli output sono lo spostamento del carrello x e l'angolo del pendolo θ. L'input di controllo u è la forza orizzontale sul carrello.

[x˙x¨θ˙θ¨]=[01000-0.13000010-0.5300][xx˙θθ˙]+[0205]uy=[10000010][xx˙θθ˙]+[00]u

Innanzitutto, caricare il modello stato-spazio sys nel workspace.

load('pendulumCartModel.mat','sys')

Poiché gli output sono x e θ ed è presente un solo input, utilizzare la regola di Bryson per determinare Q e R.

Q = [1,0,0,0;...
    0,0,0,0;...
    0,0,1,0;...
    0,0,0,0];
R = 1;

Trovare la matrice di guadagno K utilizzando lqr. Poiché N non è specificato, lqr imposta N su 0.

[K,S,P] = lqr(sys,Q,R)
K = 1×4

   -1.0000   -1.7559   16.9145    3.2274

S = 4×4

    1.5346    1.2127   -3.2274   -0.6851
    1.2127    1.5321   -4.5626   -0.9640
   -3.2274   -4.5626   26.5487    5.2079
   -0.6851   -0.9640    5.2079    1.0311

P = 4×1 complex

  -0.8684 + 0.8523i
  -0.8684 - 0.8523i
  -5.4941 + 0.4564i
  -5.4941 - 0.4564i

Sebbene la regola di Bryson fornisca solitamente risultati soddisfacenti, spesso è solo il punto di partenza di una procedura di progettazione iterativa per tentativi ed errori finalizzata a sincronizzare la risposta del sistema a loop chiuso in base ai requisiti di progetto.

aircraftPitchModel.mat contiene le matrici di stato-spazio di un aereo in cui l'input è l'angolo di deflessione dell'elevatore δ e l'output è l'angolo di beccheggio dell'aereo θ.

[α˙q˙θ˙]=[-0.31356.70-0.0139-0.4260056.70][αqθ]+[0.2320.02030][δ]y=[001][αqθ]+[0][δ]

Per un riferimento di passo di 0,2 radianti, considerare i seguenti criteri di progettazione:

  • Tempo di sollevamento inferiore a 2 secondi

  • Tempo di assestamento inferiore a 10 secondi

  • Errore allo stato stazionario inferiore al 2%

Caricare i dati del modello nel workspace.

load('aircraftPitchModel.mat')

Definire la matrice ponderata stato-costo Q e la matrice ponderata di controllo R. In linea generale, è possibile utilizzare la regola di Bryson per definire le matrici ponderate iniziali Q e R. Per questo esempio, si consideri il vettore di output C con un fattore di scala di 2 per la matrice Q e scegliere R come 1. R è uno scalare poiché il sistema ha un solo input.

R = 1
R = 1
Q1 = 2*C'*C
Q1 = 3×3

     0     0     0
     0     0     0
     0     0     2

Calcolare la matrice di guadagno utilizzando lqr.

[K1,S1,P1] = lqr(A,B,Q1,R);

Controllare la risposta al gradino a loop chiuso con la matrice di guadagno generata K1.

sys1 = ss(A-B*K1,B,C,D);
step(sys1)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys1.

Poiché questa risposta non soddisfa gli obiettivi di progettazione, aumentare il fattore di scala a 25, calcolare la matrice di guadagno K2 e verificare la risposta al gradino a loop chiuso per la matrice di guadagno K2.

Q2 = 25*C'*C
Q2 = 3×3

     0     0     0
     0     0     0
     0     0    25

[K2,S2,P2] = lqr(A,B,Q2,R);
sys2 = ss(A-B*K2,B,C,D);
step(sys2)

Figure contains an axes object. The axes object contains an object of type line. This object represents sys2.

Nel grafico della risposta al gradino a loop chiuso, il tempo di sollevamento, il tempo di assestamento e l'errore allo stato stazionario soddisfano gli obiettivi di progettazione.

Argomenti di input

comprimi tutto

Modello di sistema dinamico, specificato come un oggetto del modello ss.

Matrice di stato, specificata come matrice n x n, dove n è il numero degli stati.

Matrice input-stato, specificata come matrice input-stato n x m, dove m è il numero di input.

Matrice ponderata stato-costo, specificata come matrice n x n, dove n è il numero di stati. È possibile utilizzare la regola di Bryson per impostare i valori iniziali di Q dati da:

Qi,i=1maximum acceptable value of (errorstates)2, i{1,2,...,n}Q=[Q1,1000Q2,200000Qn,n]

In questo caso, n è il numero di stati.

Matrice ponderata input-costo, specificata come scalare o matrice della stessa grandezza di D'D. In questo caso, D è la matrice stato-spazio di alimentazione diretta. È possibile utilizzare la regola di Bryson per impostare i valori iniziali di R dati da:

Rj,j=1maximum acceptable value of (errorinputs)2, j{1,2,...,m}R=[R1,1000R2,200000Rm,m]

In questo caso, m è il numero di input.

Matrice opzionale dei termini incrociati, specificata come matrice. Se N non è specificato, lqr imposta N su 0 per impostazione predefinita.

Argomenti di output

comprimi tutto

Guadagno ottimale del sistema a loop chiuso, restituito come vettore riga di grandezza n, dove n è il numero degli stati.

Soluzione dell'equazione algebrica di Riccati associata, restituita come matrice n x n, dove n è il numero degli stati. In altre parole, S ha la stessa dimensione della matrice stato-spazio A. Per ulteriori informazioni, vedere icare e idare.

Poli del sistema a loop chiuso, restituiti come vettore colonna di grandezza n, dove n è il numero degli stati.

Limiti

I dati di input devono soddisfare le seguenti condizioni:

  • La coppia A e B deve essere stabilizzabile.

  • [Q,N;N',R] deve essere definito non negativo.

  • R>0 e QNR1NT0.

  • (QNR1NT,ABR1NT) non presenta alcuna modalità non osservabile sull'asse immaginario (o cerchio unitario a tempo discreto).

Suggerimenti

  • lqr supporta modelli descrittori con non singolarità E. L'output S di lqr è la soluzione dell'equazione algebrica di Riccati per il modello stato-spazio esplicito equivalente:

    dxdt=E1Ax+E1Bu

Algoritmi

Per i sistemi a tempo continuo, lqr calcola il controllo di feedback dello stato u=Kx che minimizza la funzione di costo quadratica

J(u)=0(xTQx+uTRu+2xTNu)dt

soggetto alla dinamica del sistema x˙=Ax+Bu.

Oltre al guadagno sul feedback dello stato K, lqr restituisce la soluzione S dell'equazione algebrica di Riccati associata

ATS+SA(SB+N)R1(BTS+NT)+Q=0

e i poli a loop chiuso P = eig(ABK). La matrice di guadagno K è derivata da S utilizzando

K=R1(BTS+NT).

Per i sistemi a tempo discreto, lqr calcola il controllo di feedback dello stato un=Kxn che minimizza

J=n=0{xTQx+uTRu+2xTNu}

soggetto alla dinamica del sistema xn+1=Axn+Bun.

In qualsiasi caso, quando si omette la matrice dei termini incrociati N, lqr imposta N su 0.

Cronologia versioni

Introduzione prima di R2006a