Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

lqr

Entwurf eines linear-quadratischen Reglers (LQR)

Beschreibung

Beispiel

[K,S,P] = lqr(sys,Q,R,N) berechnet die optimale Verstärkungsmatrix K, die Lösung S der zugehörigen algebraischen Riccati-Gleichung und die Polstellen P des geschlossenen Regelkreises für das zeitkontinuierliche oder zeitdiskrete Zustandsraummodell sys. Q und R sind die Gewichtsmatrizen für Zustände bzw. Eingaben. Die Kreuzterm-Matrix N wird auf Null gesetzt, wenn sie weggelassen wird.

Beispiel

[K,S,P] = lqr(A,B,Q,R,N) berechnet die optimale Verstärkungsmatrix K, die Lösung S der zugehörigen algebraischen Riccati-Gleichung und die Polstellen P des geschlossenen Regelkreises unter Verwendung der zeitkontinuierlichen Zustandsraummatrizen A und B. Diese Syntax ist nur für zeitkontinuierliche Modelle gültig. Verwenden Sie dlqr für zeitdiskrete Modelle.

Beispiele

alle reduzieren

pendulumModelCart.mat enthält das Zustandsraummodell eines inversen Pendels auf einem Wagen, wobei die Ausgänge die Wagenverschiebung x und der Pendelwinkel θ sind. Der Steuereingang u ist die horizontale Kraft auf den Wagen.

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

Laden Sie zunächst das Zustandsraummodell sys in den Workspace.

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

Da die Ausgaben x und θ sind und es nur eine Eingabe gibt, verwenden Sie die Bryson-Regel, um Q und R zu bestimmen.

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

Ermitteln Sie die Verstärkungsmatrix K mit lqr. Da N nicht angegeben ist, setzt lqr N auf 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

Die Bryson-Regel liefert zwar normalerweise zufriedenstellende Ergebnisse, sie ist jedoch oft nur der Ausgangspunkt eines iterativen Trial-and-Error-Entwurfsverfahrens, mit dem Sie die Reaktion Ihres geschlossenen Systems auf der Grundlage der Entwurfsanforderungen abstimmen.

aircraftPitchModel.mat enthält die Zustandsraum-Matrizen eines Luftfahrzeugs, wobei der Eingang der Höhenruder-Ausschlagswinkel δ und der Ausgang der Neigungswinkel θ des Luftfahrzeugs ist.

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

Berücksichtigen Sie bei einer Sprungreferenz von 0,2 Radiant die folgenden Entwurfskriterien:

  • Anstiegszeit weniger als 2 Sekunden

  • Einschwingzeit weniger als 10 Sekunden

  • Fehler im stationären Zustand weniger als 2%

Laden Sie die Modelldaten in den Workspace.

load('aircraftPitchModel.mat')

Definieren Sie die gewichtete Zustandskosten-Matrix Q und die gewichtete Kontrollmatrix R. Im Allgemeinen können Sie die Bryson-Regel verwenden, um Ihre anfänglichen gewichteten Matrizen Q und R zu definieren. Für dieses Beispiel betrachten Sie den Ausgangsvektor C zusammen mit einem Skalierungsfaktor von 2 für die Matrix Q und setzen Sie R gleich 1. R ist ein Skalar, da das System nur einen Eingang hat.

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

     0     0     0
     0     0     0
     0     0     2

Berechnen Sie mit lqr die Verstärkungsmatrix.

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

Prüfen Sie die Sprungantwort des geschlossenen Regelkreises mit der erzeugten Verstärkungsmatrix 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.

Da diese Antwort nicht den Entwurfszielen entspricht, erhöhen Sie den Skalierungsfaktor auf 25, berechnen Sie die Verstärkungsmatrix K2 und überprüfen Sie die Sprungantwort des geschlossenen Regelkreises für die Verstärkungsmatrix 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.

Im Diagramm der Sprungantwort des geschlossenen Regelkreises erfüllen die Anstiegszeit, die Einschwingzeit und der stationäre Fehler jetzt die Entwurfsziele.

Eingabeargumente

alle reduzieren

Dynamisches Systemmodell, angegeben als ss-Modellobjekt.

Zustandsmatrix, angegeben als n-mal-n-Matrix, wobei n die Anzahl der Zustände ist.

Eingang-zu-Zustands-Matrix, angegeben als eine n-mal-m-Eingang-zu-Zustands-Matrix, wobei m die Anzahl der Eingänge ist.

Gewichtete Zustandskosten-Matrix, angegeben als n-mal-n-Matrix, wobei n die Anzahl der Zustände ist. Sie können die Bryson-Regel verwenden, um die Anfangswerte von Q wie folgt festzulegen:

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

Dabei n ist hier die Anzahl der Zustände.

Gewichtete Eingangskosten-Matrix, angegeben als Skalar oder als Matrix mit der gleichen Größe wie D'D. Hier ist D die Durchleitungs-Zustandsraum-Matrix. Sie können die Bryson-Regel verwenden, um die Anfangswerte von R wie folgt festzulegen:

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

Dabei m ist hier die Anzahl der Eingänge.

Optionale Kreuzterm-Matrix, angegeben als Matrix. Falls N nicht angegeben ist, setzt lqr N standardmäßig auf 0.

Ausgangsargumente

alle reduzieren

Optimale Verstärkung des geschlossenen Regelkreises, geliefert als Zeilenvektor der Größe n, wobei n die Anzahl der Zustände ist.

Lösung der zugehörigen algebraischen Riccati-Gleichung, geliefert als n-mal-n-Matrix, wobei n die Anzahl der Zustände ist. Mit anderen Worten: S hat die gleiche Dimension wie die Zustandsraum-Matrix A. Weitere Informationen finden Sie unter icare und idare.

Polstellen des geschlossenen Regelkreises, geliefert als Spaltenvektor der Größe n, wobei n die Anzahl der Zustände ist.

Beschränkungen

Die Eingangsdaten müssen die folgenden Bedingungen erfüllen:

  • Das Paar A und B muss stabilisierbar sein.

  • [Q,N;N',R] muss nicht-negativ definit sein.

  • R>0 und QNR1NT0.

  • (QNR1NT,ABR1NT) hat keinen unbeobachtbaren Modus auf der imaginären Achse (oder Einheitskreis in diskreter Zeit).

Tipps

  • lqr unterstützt Deskriptor-Modelle mit nichtsingulärem E. Der Ausgang S von lqr ist die Lösung der algebraischen Riccati-Gleichung für das äquivalente explizite Zustandsraummodell:

    dxdt=E1Ax+E1Bu

Algorithmen

Für zeitkontinuierliche Systeme berechnet lqr die Zustands-Feedback-Steuerung u=Kx, die die quadratische Kostenfunktion

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

abhängig von der Systemdynamik x˙=Ax+Bu minimiert.

Zusätzlich zur Zustands-Feedback-Verstärkung K liefert lqr die Lösung S der zugehörigen algebraischen Riccati-Gleichung

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

und die Polstellen des geschlossenen Regelkreises P = eig(ABK). Die Verstärkungsmatrix K wird aus S abgeleitet mit

K=R1(BTS+NT).

Für zeitdiskrete Systeme berechnet lqr die Zustands-Feedback-Steuerung un=Kxn, die

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

abhängig von der Systemdynamik xn+1=Axn+Bun minimiert.

In allen Fällen, in denen Sie die Kreuzterm-Matrix N weglassen, setzt lqr N auf 0.

Versionsverlauf

Eingeführt vor R2006a