Main Content

lqr

線形 2 次レギュレーター (LQG) 設計

説明

[K,S,P] = lqr(sys,Q,R,N) は、連続時間または離散時間の状態空間モデル sys について、最適ゲイン行列 K、関連する代数リカッチ方程式の解 S、および閉ループ極 P を計算します。Q および R は、それぞれ状態と入力の重み行列です。交差項行列 N は、省略されるとゼロに設定されます。

[K,S,P] = lqr(A,B,Q,R,N) は、連続時間状態空間行列 A および B を使用して、最適ゲイン行列 K、関連する代数リカッチ方程式の解 S、および閉ループ極 P を計算します。この構文は、連続時間モデルに対してのみ有効です。離散時間モデルの場合は、dlqr を使用してください。

すべて折りたたむ

pendulumModelCart.mat には、出力がカートの変位 x および振子角度 θ である、カート上の倒立振子の状態空間モデルが含まれています。制御入力 u はカート上の水平力です。

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

最初に、状態空間モデル sys をワークスペースに読み込みます。

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

出力は x および θ であり、入力は 1 つのみであるため、Bryson の規則を使用して Q および R を決定します。

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

lqr を使用してゲイン行列 K を求めます。N は指定されていないため、lqrN を 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

通常、Bryson の規則は満足できる結果をもたらしますが、多くの場合これは、設計要件に基づいて閉ループのシステム応答を調整する、試行錯誤による反復設計の開始点にすぎません。

aircraftPitchModel.mat には、入力が昇降舵の偏向角 δ で、出力が航空機のピッチ角 θ である航空機の状態空間行列が含まれています。

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

0.2 ラジアンのステップ指令値について、以下の設計基準を考えます。

  • 立ち上がり時間が 2 秒未満

  • 整定時間が 10 秒未満

  • 定常偏差が 2% 未満

モデルのデータをワークスペースに読み込みます。

load('aircraftPitchModel.mat')

状態コストの重み付き行列 Q と、制御の重み付き行列 R を定義します。一般に、Bryson の規則を使用して、初期重み付き行列 Q および R を定義できます。この例では、行列 Q について出力ベクトル C とスケーリング係数 5 を使用するものと考え、R に 1 を選択します。システムの入力は 1 つのみであるため、R はスカラーになります。

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

     0     0     0
     0     0     0
     0     0     2

lqr を使用してゲイン行列を計算します。

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

生成されたゲイン行列 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.

この応答は設計目標を満たさないため、スケーリング係数を 25 に増やし、ゲイン行列 K2, を計算して、ゲイン行列 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.

閉ループ ステップ応答プロットでは、立ち上がり時間、整定時間、および定常偏差が設計目標を満たしています。

入力引数

すべて折りたたむ

動的システム モデル。ss モデル オブジェクトとして指定します。

状態行列。nn 列の行列として指定します。ここで n は状態の数です。

入力から状態への行列。nm 列の、入力から状態への行列として指定します。ここで m は入力の数です。

状態コストの重み付き行列。nn 列の行列として指定します。ここで n は状態の数です。Bryson の規則を使用して、以下によって与えられる Q の初期値を設定できます。

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

ここで、n は状態の数です。

入力コストの重み付き行列。スカラーまたは D'D と同じサイズの行列として指定します。ここで D は直達状態空間行列です。Bryson の規則を使用して、以下によって与えられる R の初期値を設定できます。

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

ここで、m は入力の数です。

オプションの交差項行列。行列として指定します。N が指定されていない場合、lqrN を既定で 0 に設定します。

出力引数

すべて折りたたむ

閉ループ システムの最適ゲイン。サイズが n の行ベクトルとして返されます。ここで n は状態の数です。

関連する代数リカッチ方程式の解。nn 列の行列として返されます。ここで n は状態の数です。つまり、S の次元は状態空間行列 A と同じです。詳細については、icare および idare を参照してください。

閉ループ システムの極。サイズが n の列ベクトルとして返されます。ここで n は状態の数です。

制限

入力データは以下の条件を満たさなければなりません。

  • AB のペアは可安定でなければならない。

  • [Q,N;N',R] は非負定値でなければならない。

  • R>0 および QNR1NT0

  • (QNR1NT,ABR1NT) の虚軸 (離散時間の場合は単位円) に不可観測モードがない。

ヒント

  • lqr は、特異でない E をもつ記述子モデルをサポートします。lqr の出力 S は、次の等価な陽的状態空間モデルに対する代数リカッチ方程式の解です。

    dxdt=E1Ax+E1Bu

アルゴリズム

連続時間システムの場合、lqr は次の 2 次コスト関数を最小にする状態フィードバック制御 u=Kx を計算します。

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

これは、システム ダイナミクス x˙=Ax+Bu に従います。

状態フィードバック ゲイン K のほかに、lqr は関連する次の代数リカッチ方程式の解 S を返します。

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

また、閉ループ極 P = eig(ABK) を返します。ゲイン行列 K は、以下を使用して S から導出されます。

K=R1(BTS+NT).

離散時間システムの場合、lqr は以下を最小にする状態フィードバック制御 un=Kxn を計算します。

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

これは、システム ダイナミクス xn+1=Axn+Bun に従います。

いずれの場合も、交差項行列 N を省略すると、lqrN を 0 に設定します。

バージョン履歴

R2006a より前に導入