Simulink での LQR サーボ コントローラーの設計
この例では、航空機の自動操縦アプリケーションを使用した Simulink® での LQR サーボ コントローラーの設計を示します。
航空機モデルを開きます。
open_system("lqrpilot")
このモデルには次の項目が含まれています。
Linearized Dynamics
ブロックには、線形化された機体が含まれる。sf_aerodyn
は、 に対する非線形方程式を含んだ S-Function ブロックである。と の間の誤差信号は、誤差をゼロにするのに役立つ積分器を通過する。
モデルを開くと、lqrpilotData
MAT ファイルも読み込まれます。このファイルには以下のデータが含まれています。
状態方程式行列
A
およびB
線形化された状態行列
A15
最終 LQG ゲイン行列
K_lqr
航空機状態空間方程式
方程式は状態空間システムの標準状態方程式です。
航空機システムでは、状態ベクトルは次のとおりです。
下図に示されているように、変数 、、 は、機体座標系に関連した 3 つの速度です。
変数 および はロールとピッチです。、、および は、それぞれロール、ピッチ、ヨーのレートです。
機体のダイナミクスは非線形です。次の方程式は、状態空間方程式に追加された非線形コンポーネントを示します。ここで、 は重力による加速度です。
平衡化
LQG 設計目的で、非線形ダイナミクスは で平衡化され、、、、および は 0 に設定されています。前の方程式で 、、および は非線形項に影響しないため、結果は 付近で線形化されたモデルになり、その他すべての状態はゼロとなります。
lqrdes
スクリプトは、この平衡化された操作点で線形化されたモデル A15
を計算する方法を示しています。
問題定義
設計の目標は、この図のように安定した旋回を行うことです。
ここでは、60°のロールで安定した旋回を制御するコントローラーを設計します。さらに、ピッチ角度 が、できるだけゼロに近い状態を続ける必要があるとします。
結果
lqrdes
スクリプトは、LQG ゲイン行列 K_lqr
を計算する方法を示しています。
lqrpilot
モデルで、Nonlinear Dynamics ブロックの出力を選択するように Switch ブロックが構成されていることを確認します。
モデルを実行します。
sim("lqrpilot")
ステップ変更 60° に対するロール の応答を確認します。システムが指令されたロールに約 60 秒以内にトラッキングしています。
open_system("lqrpilot/phi (roll angle)")
ピッチ角 を確認します。コントローラーは、ピッチ角を比較的小さく保つことができました。
open_system("lqrpilot/theta (pitch angle)")
最後に、制御入力を確認します。
open_system("lqrpilot/Control Inputs")
lqrdes
スクリプトで Q と R の値を調整して、考えられるさまざまな設計を試すことができます。また、線形システムと非線形システムのダイナミクスのシミュレーションを比較すると、システムの性能に対する非線形の効果を確認できます。