【倒立振子part17】最適制御

前回作成した状態空間モデルに対してモデルの評価と最適制御を利用して倒立させるレギュレータ極を求めていく。

状態空間モデルの評価

安定性

まず作成した状態空間モデルの初期応答に対する漸近安定性の確認を行う。
操作量を0(u=0)として状態方程式\dot{x}=Axが初期状態x(0)を与えられた場合に
\displaystyle{\lim_{t \rightarrow \infty}x(t)=0}
を満たすときにシステムが漸近安定しているという。
計算については省略するが、
システムが漸近安定であるための必要十分条件は極(状態行列の固有値)の実部が負の時である。

ここで前回求めた状態行列Aの固有値scilabで求めると
[0 , 10.220936 + 0.i , -10.483005 + 0.i , -16.902808 + 0.i]
であるため漸近不安定であるため制御なしでは安定しないことが判明した。

可制御性

漸近安定するためにはフィードバック制御が必要である。
制御ができるかどうか判断するために可制御であるかどうかの判断を行う。
システムが可制御であるための必要十分条件は可制御行列Vがフルランクであること、つまり行列式が0でないことが必要である。
|V|=5.790D+08

状態フィードバック制御

状態方程式の極の実部を負にすることで漸近安定になるため
u=-Kx
という入力を適用すると、状態方程式
\dot{x}=(A-BK)x
となる。Kは状態フィードバックゲインとする。
ここで行列A-BK固有値(レギュレータ極)の実部が負になるような状態フィードバックを設計できれば漸近安定となる。

LQR

上記の状態フィードバックゲインKを求める方法は極配置法やLQRなどがある。
今回はLQR制御を使用する。
LQRは下記の評価関数Jを最小にすることである。
\displaystyle{J=\int_{0}^{\infty}(x^TQx+u^TRu)dt }
ここでQは状態重み行列、Rは入力重み行列を設定することで決まる。
途中の計算式は省略するが
u=-Kx=-R^{-1}B^TX\cdot{x}
として求められる。
ここでXは下記のリカッチ方程式の解である。
A^TX+XA-XBR^{-1}B^TX+Q=0
(シュミレーション計算するのには専用の関数を利用するのでそんなに深く詰めないことにする。。。)

シュミレーション

今回は倒立することに重きを置きたいので振子の角度と角速度に対するQの重みを大きくする。
Rは大きくするとモータを激しく動かさないシステム、小さくするとモータを激しく動かして素早く安定化させるシステムとなる。
ただし小さくしすぎると印可電圧が大きくなりすぎるので入力可能電圧を考慮して決定する。

Q=[100,100,1,1] , R=1000
としたときのシュミレーション結果は下記の通りとなった。
【初期値0.017[rad]】

【初期値0.085[rad]】


漸近安定化することはできたが入力電圧が大きすぎる結果となった。
Rを高くしすぎてもあまり改善しなかった。(1000000倍しても変わらなかった)

次回

入力値が正しいのかそれともDCモータのパラメータ同定があっているのか判断するための方法を考えてみる。
どうしても分からなかったらブラシ付きDCモータに変えるのか古典制御をつかうのかも考える必要があるかも。。。