モデル規範による追従SM制御…Homework
[1] 次の状態方程式で表される制御対象を考えます。
![Rendered by QuickLaTeX.com \displaystyle{(1)\quad \dot{x}(t)=Ax(t)+Bu(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-fb6f354107d1e9a981a5800afaf7372c_l3.png)
この状態が理想的なモデル
![Rendered by QuickLaTeX.com \displaystyle{(2)\quad \dot{x}_m(t)=A_mx_m(t)+B_mr(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-b64d6fc12ca6a10fa8a13d96f3bbdcd1_l3.png)
の状態を追従するように、すなわち
![Rendered by QuickLaTeX.com \displaystyle{(3)\quad e(t)=x(t)-x_m(t)\rightarrow 0 \quad(t\rightarrow\infty) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-8e9eea336c9f6b59ffec58f450865877_l3.png)
となるように制御則を決定したいとします。
●追従誤差のダイナミックスは
![Rendered by QuickLaTeX.com \displaystyle{(4)\quad \begin{array}{l} %\bullet \dot{e}(t)=Ax(t)+Bu(t)-(A_mx_m(t)+B_mr(t))\\ %=Ax(t)-Ax_m(t)+Ax_m(t)-A_mx_m(t)+Bu(t)-B_mr(t)\\ %=Ae(t)+(A-A_m)x_m(t)+Bu(t)-B_mr(t)\\ %\bullet \dot{e}(t)=Ax(t)+Bu(t)-(A_mx_m(t)+B_mr(t))\\ =Ax(t)-A_mx(t)+A_mx(t)-A_mx_m(t)+Bu(t)-B_mr(t)\\ =A_me(t)+(A-A_m)x(t)+Bu(t)-B_mr(t) \end{array} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-89cc966cd9be87d49e9fd6ebe170b765_l3.png)
となります。いま条件
![Rendered by QuickLaTeX.com \displaystyle{(5)\quad \begin{array}{l} (BB^\dag-I)(A-A_m)=0\Leftrightarrow B\underbrace{B^\dag(A-A_m)}_{F}=A-A_m\\ (BB^\dag-I)B_m=0\Leftrightarrow B\underbrace{B^\dag B_m}_{G}=B_m \end{array} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-df20fbdfd610363da80d01758bc5af62_l3.png)
を仮定すると(
は
を満たす疑似逆行列)、制御則
![Rendered by QuickLaTeX.com \displaystyle{(6)\quad u(t)=-Ke(t)-Fx(t)+Gr(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-f7050b5adfe80ffbbfaf2b8daa484516_l3.png)
の下では、誤差方程式は次式となります。
![Rendered by QuickLaTeX.com \displaystyle{(7)\quad \dot{e}(t)=(A_m-BK)e(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-be48f9b3dcbc15d2dd5212babac4a1be_l3.png)
実際、
![Rendered by QuickLaTeX.com \displaystyle{(8)\quad \begin{array}{l} \dot{e}(t)=A_me(t)+(A-A_m)x(t)+Bu-B_mr(t)\\ =A_me(t)+(A-A_m)x(t)+B(-Ke(t)-Fx(t)+Gr(t))-B_mr(t)\\ =A_me(t)+(A-A_m)x(t)-BKe(t)-BB^\dag(A-A_m)x(t)\\ +BB^\dag B_mr(t)-B_mr(t)\\ =(A_m-BK)e(t)-\underbrace{(BB^\dag-I)(A-A_m)}_{0}x(t)+\underbrace{(BB^\dag -I)B_m}_{0}r(t)\\ \end{array} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-4f317f4bc1576f637d5d4f7f2de6f4fc_l3.png)
●以上から、制御則(6)の設計の指針として、望ましいモデル(2)を(1)に対する状態フィードバックと入力変換で得るものとします。すなわち
![Rendered by QuickLaTeX.com \displaystyle{(9)\quad \boxed{\begin{array}{l} A_m=A-BF\\ B_m=BG \end{array}} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-92585a23becf775ced8bb6c351602d9e_l3.png)
ここで
は、
から出力
![Rendered by QuickLaTeX.com \displaystyle{(10)\quad y(t)=Hx(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-58192e0e09b6df2a03e760a3896d628d_l3.png)
までの定常ゲイン
![Rendered by QuickLaTeX.com \displaystyle{(11)\quad %\begin{array}{l} \left\{\begin{array}{l} 0=(A-BF)x(\infty)+BGr(\infty)\\ y(\infty)=Hx(\infty) \end{array}\right. \Rightarrow y(\infty)=\underbrace{-H(A-BF)^{-1}BG}_{I}r(\infty) %\end{array} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-8e77d4b3e0158836cd753d87f3d9f94e_l3.png)
が単位行列となるように、次式で決めます。
![Rendered by QuickLaTeX.com \displaystyle{(12)\quad \boxed{G=-(H(A-BF)^{-1}B)^{-1}} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-434f6a4e743bcdea7f101f2fbcb6e6a6_l3.png)
ちなみに
については、(7)が漸近安定であることが前提となり、望ましいモデル(2)より、追従誤差は速いダイナミックスをもつことが必要であることに注意します。
[2] 誤差方程式(4)すなわち
![Rendered by QuickLaTeX.com \displaystyle{(13)\quad \dot{e}(t)=A_me(t)+(A-A_m)x(t)+Bu(t)-B_mr(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-6ad91252da02cd2ea62701248a4a1297_l3.png)
に対して、スライディングモード制御を適用することを考えます。スイッチング関数を
![Rendered by QuickLaTeX.com \displaystyle{(14)\quad s(t)=Se(t) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-9b5559ce5435bd72ca6ab044adb6d0ae_l3.png)
とするとき、スライディングモード時は
![Rendered by QuickLaTeX.com \displaystyle{(15)\quad Se(t)=0\Rightarrow S\dot{e}(t)=0 }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-73fcde00876bcba20b132d3f771fd946_l3.png)
すなわち
![Rendered by QuickLaTeX.com \displaystyle{(16)\quad S\dot{e}(t)=S(A_me(t)+(A-A_m)x(t)+Bu(t)-B_mr(t))=0 }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-029351fdae1a37b8b0248abb26ca301a_l3.png)
が成り立ち、等価制御は次式となります。
![Rendered by QuickLaTeX.com \displaystyle{(17)\quad u_{eq}(t)=-(SB)^{-1}S(A_me(t)+(A-A_m)x(t)-B_mr(t)) }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-079a1a5d1cb9adb3a574d14766ebb92f_l3.png)
このとき追従誤差のダイナミックスは次式となります。
![Rendered by QuickLaTeX.com \displaystyle{(18)\quad \begin{array}{l} \dot{e}(t)=A_me(t)+(A-A_m)x(t)+Bu(t)-B_mr(t)\\ =A_me(t)+(A-A_m)x(t)\\ +B(-(SB)^{-1}S(A_me(t)+(A-A_m)x(t)-B_mr(t)))-B_mr(t)\\ =(I-B(SB)^{-1}S)(A_me(t)+(A-A_m)x(t)-B_mr(t))\\ =(I-B(SB)^{-1}S)(A_me(t)+BFx(t)-BGr(t))\\ =(I-B(SB)^{-1}S)A_me(t)+\underbrace{(I-B(SB)^{-1}S)B}_{0}(Fx(t)-Gr(t))\\ =\underbrace{(I-B(SB)^{-1}S)A_m}_{A_{eq}}e(t) \end{array} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-75c64f3c493d81d69e2dbd0ed802225e_l3.png)
したがって、スライディングモード制御を適用する場合、全体の制御則は、次式で表されます。
![Rendered by QuickLaTeX.com \displaystyle{(19)\quad { \boxed{\begin{array}{l} u(t)=-Fx(t)+Gr(t)+\underbrace{u_\ell(t)}_{linear\ control}+\underbrace{u_n(t)}_{switching\ component}\\ u_\ell(t)=-\underbrace{(SB)^{-1}(SA_m-\Phi S)}_{L=L_{eq}+L_{phi}}x(t) \quad(\Phi:stable\ matrix)\\ \displaystyle{u_n(t)=-\underbrace{(SB)^{-1}\rho(t,x)}_{L_n}\frac{P_2s(t)}{||P_2s(t)||}\quad(P_2\Phi+\Phi^TP_2=-I)} \end{array}}} }](https://cacsd1.sakura.ne.jp/wp/wp-content/ql-cache/quicklatex.com-48e4d531c3edbe47633bd37e6fe10b22_l3.png)
演習C51…Flipped Classroom
MATLAB |
%cCIP_smcm.m
%-----
clear all, close all
global mc m ell g th0
mc=1; m=0.1; ell=0.2; g=9.8;
ths=0; %input('ths = <0,180> ')/180*pi;
th0=3/180*pi; %input('th(0) = <0,180> ')/180*pi;
%-----
A=[zeros(2,2) eye(2);zeros(2,4)];
A(3,1)=0;
A(3,2)=-3*m*g/(m+4*mc);
A(4,1)=0;
A(4,2)=3*(m+mc)*g/((m+4*mc)*ell);
B=zeros(4,1);
B(3)=4/(m+4*mc);
B(4)=-3/((m+4*mc)*ell);
H=[1 0 0 0];
%-----
lambda=[-0.8*1.5 0.5 -1.5*1.5 1];
nocomp=2;
specpos=rand(4,4);
specent=rand(4,4);
F=vplace2(A,B,lambda,nocomp,specpos,specent)
pl=eig(A-B*F)
%-----
H=[1 0 0 0];
Am=A-B*F;
G=-inv(H*(Am\B));
Bm=B*G;
%-----
Mr=0.5; Mth=3/180*pi;
Tc=1; Tpen=0.25*2*pi*sqrt(2*ell/g);
Q=diag([1/Mr^2,1/Mth^2,Tc^2/Mr^2,Tpen^2/Mth^2]);
S=swflqr(A,B,Q)
%-----
Phi=-0.1;
P2=0.5*inv(-Phi);
Check=P2*Phi+Phi*P2
P2S=P2*S;
Leq=inv(S*B)*S*A;
LPhi=-inv(S*B)*Phi*S;
L=Leq+LPhi;
rho=1;
Ln=inv(S*B)*rho;
%-----
x0=[0;th0*0;0;0];
sim('CIP_smcm_2015a.mdl')
%-----
%eof
|
![](https://cacsd1.sakura.ne.jp/wp/wp-content/uploads/2022/09/cip_smcm.png)