[[制御]]

#contents


*基本式 [#c0925454]
-&mimetex(\dot{x}=Ax(t)+Bu(t));
-&mimetex(u(t)=-F(x(t)-r(t)));(ただしrは平衡点。平衡点であれば、以下の記述はr=0として一般性を失わない)

*状態フィードバック [#ff46b8b1]
-&mimetex(\dot{x}=Ax(t)+Bu(t)=(A-BF)x(t));に対して、A-BFの固有値実部が全て負で漸近安定である。
--固有値は、時定数の逆数を表す。(証明は実際にxを解くによる。よく固有値を-3[/t]とか-4[/t]とかになるように制御する)

*最適レギュレータ [#ub0a3072]
-状態フィードバックのうち、&mimetex(J=\frac{1}{2} \int_0^\infty x^t Q x + u^t R u dt);を最小化するフィードバックゲインは、&mimetex(A^tP+PA+Q-PBR^{-1}B^tP=0);を満たす正定行列Pを用いて、&mimetex(F=R^{-1}B^tP);である。
-[[最適レギュレータで倒立振子を制御するプログラム>https://github.com/hamko/sample/tree/master/opt_reg]](モデルは[[ここ>http://www.r.mach.mie-u.ac.jp/~nkato/class/sc/Invpend_exp5.pdf]]を参照、ただしxの次元の順序が2,3で逆になってるので注意)
--octave run.mでシミュレータが走る。
--モータのモデル化については[[モータ]]へ

*教科書と実機とのギャップ [#p2bdf132]
**操作量uがトルク・力の時のモータでの扱い [#e33cf1fc]
-モータの実出力トルクは
++電流に比例する→電流センサをつける
++電圧に比例する無回転トルク-回転数に比例する粘性抵抗→これらを分解し、電圧に比例する無回転トルクを操作量、粘性抵抗を損失としてモデル化する
**理論と実機の単位の違いを吸収する [#vf9e18af]
-状態・操作量の単位補正行列&mimetex(U_x, U_u);を計算し、フィードバックゲイン&mimetex(K);をロボット用のフィードバックゲイン&mimetex(K_{r} = U_u^{-1} K U_x);に変換する
--&mimetex(x=(x, \theta));で表されるとする。&mimetex(x_1);のロボットの内部単位である1mmは、SI単位系では0.001である。&mimetex(x_2);のロボット内部単位である1radは、SI単位系では1である。このような数値を集めた単位補正行列&mimetex(U_x=diag([0.001\,1]));を用いて、&mimetex(x = U_x x_{r});
--同様に、トルクのロボットの内部単位である1 dutyは、SI単位系でk[Nm]だとする。単位補正行列&mimetex(U_u=diag([k]));を用いて、&mimetex(u = U_u u_{r});
--フィードバックゲインの式&mimetex(u=-Kx);は、&mimetex(U_u u_{r} = -K U_x x_{r});なので、&mimetex(u_{r} = - U_u^{-1} K U_x x_{r});
--したがって、ロボットのプログラミング時のフィードバックゲインは、&mimetex(K_{r} = U_u^{-1} K U_x);と表され、&mimetex(u_{r} = -K_{r} x_{r});である。

**x=0以外の目標値 [#x2ccb304]
-&mimetex(u(t)=-F(x(t)-r(t)));とすればよいだけ。(ただしrは平衡点)

*Tips [#o08fbaa9]
-[[倒立振子の数式とoctaveスクリプト>http://www.katzlab.jp/edu/index.php?Simulator%2F%C5%DD%CE%A9%BF%B6%BB%D2]]

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS