この記事ではMATLABを用いた制御について画像・動画を交えて説明します。特に、状態フィードバック制御に焦点を当てて説明を行います。MATLABシミュレーションについて説明した動画や関連記事リンクは最下部に置いています。
状態フィードバック制御については以下の記事でまとめています。
状態フィードバック制御の基礎事項
以下のリンクには、状態フィードバック制御の基礎事項を実行するmlxファイルを置いています。その他、MATLABのmファイルおよび実行結果のHTMLファイルを置いています。
MATLABソースへのリンク
>>Hiroshi-Okajima/MATLAB_fandamental_control (MATLAB codes) (github.com)
stateeq.m, stateeq.mlx, stateeq.html
実行内容は以下の通りです。
- 可制御性の確認
- 可観測性の確認
- 極配置による状態フィードバック
- 最適レギュレータによる状態フィードバック
MATLABライブスクリプトファイル(mlx)では、極を調整したり、最適レギュレータの重みRを調整したりできます。
実行結果
ここでは、上記ファイルの実行結果について紹介します。制御対象(状態方程式のA,B,C)は以下のように与えるものとします。
A=[0 1 0;0 0 1;-2 -3 -1],B=[0;0;1],C=[2 1 1]
これにインパルス入力を印加した結果がこちらです。
本制御対象は、可制御かつ可観測です。次に、極配置を行った結果を示します。制御対象の次数が3ですので、極は3つ配置し[-10, -12, -20]としました。
高い速応性を実現できていることがわかります。もちろん、極の配置で応答は変わりますので様々なものを試して頂ければと思います。最後に、最適レギュレータの実行結果を示したいと思います。重み関数はQ = 10 I (Iは単位行列)とし、R=5としました。
リアプノフの安定判別法
以下のリンクから、lyapunov.mlxをダウンロードでき、リアプノフの安定判別法について色々と試行錯誤できます。
MATLABソースへのリンク
>>Hiroshi-Okajima/MATLAB_fandamental_control (MATLAB codes) (github.com)
解軌道はあくまで、制御対象に依存して決まります(初期条件にも依存)。しかし、適切にリアプノフ関数を設定することで、システムの安定性を判別することができます。解軌道が等高線から単調に減る方向に動くようリアプノフ関数を設定すると次のようなグラフを作成できます。高さ方向はリアプノフ関数値、平面は状態x1と状態x2です。
これを2次元に落としたものが次のように表されます。
安定なシステムでリアプノフ関数を探した結果、解軌道が原点に収束する様子が見れると共に、等高線の値が小さくなる方に解軌道が常に進んでいることがわかります。
クレーンの振れ止め制御
以下のリンクでは、クレーンの振れ止め制御のMATLABファイルを置いています。
MATLABソースへのリンク(アニメーション)
>>Hiroshi-Okajima/matlab-animation: MATLABを用いた制御アニメーション (github.com)
次の動画で、クレーンの振れ止めを状態フィードバックで実現しています。
MATLABアニメーションのコードを実行することで、mp4ファイルが作成されます。
MATLAB制御シミュレーションの動画・関連記事
以下はMATLABで制御シミュレーションを実施している動画になります。
関連ページ
制御工学チャンネル内のMATLABシミュレーションのページです。
>>制御工学チャンネル:MATLABシミュレーション (control-theory.com)
MATLABに関する書籍
MATLABで制御を行うにあたり、関連の書籍をいくつかピックアップしておきます。
川田先生の書籍です。
足立先生の書籍です。
平田先生の書籍です。
自己紹介
岡島 寛 (熊本大学工学部情報電気工学科准教授)
制御工学の研究をしています。モデル誤差抑制補償器,状態推定,量子化制御など
研究室HP
岡島研究室(システム制御 control-theory.com)
制御動画ポータルサイト
制御工学チャンネル(伝達関数・状態方程式・MATLABなど)
電気動画ポータルサイト
本記事をお読みいただきありがとうございます。役に立った、と思われましたら、ブックマーク・シェア等のアクションをしていただければ嬉しいです。
本記事は以上です。