C32 積分動作


積分動作導入による追従制御…Homework

[1] 制御対象

\displaystyle{(1)\quad \begin{array}{l} \dot{x}(t)=Ax(t)+Bu(t)\\ y(t)=Cx(t)\\ (x(t)\in{\rm\bf R}^n, u(t)\in{\rm\bf R}^m, y(t)\in{\rm\bf R}^p, m=p) \end{array} }

の出力を、次のコマンド

\displaystyle{(2)\quad \begin{array}{l} \dot{r}(t)=\Gamma(r(t)-r_c)\\ (r(t),r_c\in{\rm\bf R}^m) \end{array} }

に追従させることを考えます(\Gammaは安定行列)。そのために、積分動作

\displaystyle{(3)\quad \begin{array}{l} \dot{x}_r(t)=r(t)-y(t)\\ (x_r(t)\in{\rm\bf R}^m) \end{array} }

を考え、次の拡大系を構成します((1)は標準形であることを仮定)。

\displaystyle{(4)\quad \begin{array}{l} \left[\begin{array}{c} \dot x_r(t)\\ \dot x(t) \end{array}\right] = \left[\begin{array}{c|cc} 0 & -C_1 & -C_2\\\hline 0 & A_{11} & A_{12} \\ 0 & A_{21} & A_{22} \end{array}\right] \left[\begin{array}{c} x_r(t)\\ x(t) \end{array}\right] + \left[\begin{array}{c} 0\\\hline 0\\ B_2 \end{array}\right] u(t) + \left[\begin{array}{c} I_p \\\hline 0 \\ 0 \end{array}\right] r(t) \end{array} }

これを、次のように分割します。

\displaystyle{(5)\quad \begin{array}{l} \left[\begin{array}{c} \dot x_1(t)\\ \dot x_2(t) \end{array}\right] = \left[\begin{array}{cc|c} 0 & -C_1 & -C_2\\ 0 & A_{11} & A_{12} \\\hline 0 & A_{21} & A_{22} \end{array}\right] \left[\begin{array}{c} x_1(t)\\ x_2(t) \end{array}\right] + \left[\begin{array}{c} 0\\ 0\\\hline B_2 \end{array}\right] u(t) + %\underbrace{ \left[\begin{array}{c} I_p \\ 0 \\\hline 0 \end{array}\right] %}_{} r(t)\\ (x_1(t)\in{\rm\bf R}^n, x_2(t)\in{\rm\bf R}^m) \end{array} }

動的システムの振る舞いが閉じ込められる超平面は {\cal S}=\{x:Sx=S_rr\}としますが、r=0の場合のスイッチング関数として、次式を考えます。

\displaystyle{(6)\quad s(t)= \underbrace{ \left[\begin{array}{cc} S_1 & S_2 \\ \end{array}\right] }_{S} \underbrace{ \left[\begin{array}{c} x_1(t)\\ x_2(t) \end{array}\right] }_{x(t)} = \underbrace{S_2 \left[\begin{array}{cc} M & I \\ \end{array}\right] }_{S} \underbrace{ \left[\begin{array}{c} x_1(t)\\ x_2(t) \end{array}\right] }_{x(t)} \ (M=S_2^{-1}S_1) }

(5)に対して、座標変換

\displaystyle{(7)\quad \underbrace{ \left[\begin{array}{c} x_1(t)\\ s(t) \end{array}\right] }_{x'(t)} = \underbrace{ \left[\begin{array}{cc} I & 0 \\ S_1 & S_2 \\ \end{array}\right] }_{T_s} \underbrace{ \left[\begin{array}{c} x_1(t)\\ x_2(t) \end{array}\right] }_{x(t)}\\ \Leftrightarrow \underbrace{ \left[\begin{array}{c} x_1(t)\\ x_2(t) \end{array}\right] }_{x(t)} = \underbrace{ \left[\begin{array}{cc} I & 0 \\ -S_2^{-1}S_1 & S_2^{-1} \\ \end{array}\right] }_{T_s^{-1}} \underbrace{ \left[\begin{array}{c} x_1(t)\\ s(t) \end{array}\right] }_{x'(t)} }

を行って、次式を得ます。

\displaystyle{(8)\quad %\underbrace{ \left[\begin{array}{c} \dot x_1(t)\\ \dot s(t) \end{array}\right] %}_{\dot{x}'(t)} = %\underbrace{ \left[\begin{array}{cc} \bar{A}_{11} & \bar{A}_{12} \\ S_2\bar{A}_{21} & S_2\bar{A}_{22}S_2^{-1} \\ \end{array}\right] %}_{T_sAT_s^{-1}} %\underbrace{ \left[\begin{array}{c} x_1(t)\\ s(t) \end{array}\right] %}_{x'(t)} + \left[\begin{array}{cc} 0\\ S_2B_2 \end{array}\right] u(t) + \left[\begin{array}{cc} B_r \\ S_1B_r \end{array}\right] r(t) }

\displaystyle{(9)\quad \begin{array}{l} \bar{A}_{11}= \left[\begin{array}{cc} 0 & -C_1 \\ 0 & A_{11} \end{array}\right] -\left[\begin{array}{c} -C_2\\ A_{12} \end{array}\right]M\\ \bar{A}_{12}= \left[\begin{array}{c} -C_2\\ A_{12} \end{array}\right]S_2^{-1}\\ \bar{A}_{21}=M \left[\begin{array}{cc} 0 & -C_1 \\ 0 & A_{11} \end{array}\right] + \left[\begin{array}{cc} 0 & A_{21} \end{array}\right] -A_{22}M\\ \bar{A}_{22}=M \left[\begin{array}{c} -C_2\\ A_{12} \end{array}\right] +A_{22}\\ B_r=\left[\begin{array}{cc} I_p \\ 0 \end{array}\right] \end{array} }

以下では、\bar{A}_{11}が安定行列となるようにスイッチング関数が選ばれていると仮定します。

このとき、SMC則

\displaystyle{(10)\quad { u(t)=\underbrace{u_\ell(t)}_{linear\ control}+\underbrace{u_n(t)}_{switching\ component}} }

を、2次安定性

\displaystyle{(11)\quad { \begin{array}{lll} V(s)=(s(t)-S_rr(t))^TP_2(s(t)-S_rr(t))&\\ \Rightarrow \dot{V}(s)\le -(s(t)-S_rr(t))^T(s(t)-S_rr(t))&(t\le t_s)\\ V(x_1)=x_1^T(t)P_1x_1(t)&\\ \Rightarrow \dot{V}(x_1)\le -x_1^T(t)Q_1x_1(t)&(t> t_s) \end{array}} }

が成り立つように決定します(P_1>0, P_2>0, Q_1>0)。

[2] 可到達性の検討 (t\le t_s)

等価制御は、(8)においてr=0の場合

\displaystyle{(12)\quad \begin{array}{l} s(t)=0\Rightarrow\dot{s}(t)=0\\ \Rightarrow 0=S_2\bar{A}_{21}x_1(t)+S_2\bar{A}_{22}S_2^{-1}s(t)+S_2B_2u(t)\\ \Rightarrow u_{eq}(t)=-\underbrace{(S_2B_2)^{-1}}_{(SB)^{-1}} \underbrace{\left[\begin{array}{cc} S_2\bar{A}_{21} & S_2\bar{A}_{22}S_2^{-1} \\ \end{array}\right]x'(t)}_{SAx(t)}} \end{array} }

のように得られます。(10)の第1項u_\ellは、この等価制御をベースして、\dot{s}(t)-S_r\dot{r}(t)=0を満足させるように

\displaystyle{(13)\quad { \begin{array}{l} u_\ell(t)=-\underbrace{(S_2B_2)^{-1}}_{(SB)^{-1}} \underbrace{(\left[\begin{array}{cc} S_2\bar{A}_{21} & S_2\bar{A}_{22}S_2^{-1} \\ \end{array}\right]x'(t)-\Phi s(t))}_{(SA-\Phi S)x(t)}}\\ -(S_2B_2)^{-1}(\Phi S_r+S_1B_r)r(t)+(S_2B_2)^{-1}S_r\dot{r}(t) \end{array}} }

のように構成します(\Phiは安定行列)。このとき閉ループ系は次式で与えられます。

\displaystyle{(14)\quad \begin{array}{l} \left[\begin{array}{c} \dot{x}_1(t)\\ \dot{s}(t)-S_r\dot{r}(t) \end{array}\right] = \left[\begin{array}{cc} \bar{A}_{11} & \bar{A}_{12} \\ 0 & \Phi \\ \end{array}\right] \left[\begin{array}{c} x_1(t)\\ s(t)-S_rr(t) \end{array}\right] + \left[\begin{array}{c} B_rr(t)\\ S_2B_2u_n(t) \end{array}\right] \end{array} }

すなわち

\displaystyle{(15)\quad \begin{array}{l} \dot{x}_1(t)=\bar{A}_{11}x_1(t)+\bar{A}_{12}(s(t)-S_rr(t))+B_rr(t)\\ \dot{s}(t)-S_r\dot{r}(t)=\Phi (s(t)-S_rr(t))+S_2B_2u_n(t) \end{array} }

ここで、\Phiは安定行列なので

\displaystyle{(16)\quad \begin{array}{l} P_2\Phi+\Phi^TP_2=-I \end{array} }

を満たすP_2>0を選ぶことができます。これを用いて

\displaystyle{(17)\quad { u_n(t)=-(S_2B_2)^{-1}\rho(u_\ell,y)\frac{P_2(s(t)-S_rr(t))}{||P_2(s(t)-S_rr(t))||}} }

と選びます(\rho>0)。このとき次式が成り立ちます。

\displaystyle{(18)\quad \begin{array}{l} \dot{V}(s)=2(s(t)-S_rr(t))^TP_2(\dot{s}(t)-S_r\dot{r}(t))\\ =2(s(t)-S_rr(t))^TP_2 (\Phi (s(t)-S_rr(t))-\rho(u_\ell,y)\frac{P_2(s(t)-S_rr(t))}{||P_2(s(t)-S_rr(t))||})\\ =(s(t)-S_rr(t))^T(P_2\Phi+\Phi^TP_2)(s(t)-S_rr(t))\\ +2(s(t)-S_rr(t))^TP_2(-\rho(u_\ell,y)\frac{P_2(s(t)-S_rr(t))}{||P_2(s(t)-S_rr(t))||})\\ \le -||s(t)-S_rr(t)||^2-2\rho(u_\ell,y)||P_2(s(t)-S_rr(t))||\\ \le -||s(t)-S_rr(t)||^2 \end{array} }

[3] スライディングモードの検討 (t> t_s)

\bar{A}_{11}は安定行列なので

\displaystyle{(19)\quad \begin{array}{l} P_1\bar{A}_{11}+\bar{A}_{11}^TP_1=-Q_1<0 \end{array} }

を満たすP_1>0を選ぶことができます。

\displaystyle{(20)\quad \begin{array}{l} \dot{V}(x_1)=2x_1^T(t)P_1\dot{x}_1(t)\\ =2x_1^T(t)P_1( \bar{A}_{11}x_1(t)+\bar{A}_{12}\underbrace{(s(t)-S_rr(t))}_{0}+B_rr(t))\\ =x_1^T(t(P_1\bar{A}_{11}+\bar{A}_{11}^TP_1)x_1(t)+2x_1^T(t)P_1B_rr(t)\\ =-x_1^T(t)Q_1x_1(t)+2x_1^T(t)P_1B_rr(t)\\ \le -\sigma_n^2(Q_1)x_1^T(t)x_1(t)+2||x_1^T(t)P_1||\,||B_rr(t)||\\ \le -\sigma_n^2(Q_1)||x_1(t)||^2+2\sqrt{x_1^T(t)P_1^2x_1(t)}\,||r(t)||\\ \le -\sigma_n^2(Q_1)||x_1(t)||^2+2\sqrt{\sigma_1^2(P_1^2)x_1^T(t)x_1(t)}\,||r(t)||\\ = -\sigma_n^2(Q_1)||x_1(t)||^2+2\sigma_1^2(P_1)||x_1(t)||\,||r(t)||\\ = -\sigma_1^2(P_1)||x_1(t)||(\frac{\sigma_n^2(Q_1)}{\sigma_1^2(P_1)}||x_1(t)||-2||r(t)||) \end{array} }
したがって

\displaystyle{(21)\quad||r(t)||<\frac{1}{2}\frac{\sigma_n^2(Q_1)}{\sigma_1^2(P_1)}||x_1(t)|| \Rightarrow \dot{V}(x_1)<0 }

演習…Flipped Classroom

MATLAB
%cCIP_smci.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); 
 A0=A; B0=B; 
 H=[1 0 0 0];
 A=[0 -H ;
    zeros(4,1) A0];
 B=[0; B0];
 CM=[1 0 0 0;
     0 1 0 0];
 Gamma=-5; 
%-----
 lambda=[-0.8 0.5 -1.5 1];
 nocomp=2;
 specpos=rand(4,4);
 specent=rand(4,4);
 S=swfvpl(A,B,lambda,nocomp,specpos,specent)      
 SS=S;
 F=(SS*B)\(SS*A)
 eig(A-B*F)
%-----
[nn,mm]=size(B);
 S1=SS(:,1:nn-mm);
 S2=SS(:,nn-mm+1:nn);
 Br=eye(nn-mm,mm);
 B2=B(nn-mm+1:nn,:); 
 Lambda=S2*B2;
 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=2;
 Ln=inv(S*B)*rho;
%-----
 Sr=0;
 Lr=inv(Lambda)*(Phi*Sr+S1*Br)
 Ldr=inv(Lambda)*Sr
 Ln=0.1*inv(Lambda)
%-----
 x0=[0;th0*0;0;0];
 sim('CIP_smci_2015a.mdl')
%-----
%eof
SCILAB