状態オブザーバ

状態オブザーバ…Homework

[1] 状態フィードバックは、すべての状態変数の変化を捉えてフィードバックするので、この意味で最強の手段ですが、一般には絵に描いた餅ですと言ったら驚くでしょうか?これは実際にはすべての状態変数にセンサを配置できるわけではないからです。でもちょっと待ってください。状態方程式が分かっているのですから、これを計算機内で解いてやれば良いのではないでしょうか?そのアイデアを図1に示します。

図1 状態オブザーバの考え方(1)

いま制御対象の状態空間表現を

\displaystyle{(1)\quad \left\{\begin{array}{l} \dot{x}(t)=Ax(t)+Bu(t),\ x(0)\ne0\\ y(t)=Cx(t) \end{array}\right. }

とします。これを計算機で解きますが、その状態と出力を区別して

\displaystyle{(2)\quad \left\{\begin{array}{lll} \dot{\hat{x}}(t)=A\hat{x}(t)+Bu(t),\ \hat{x}(0)=0\\ \hat{y}(t)=C\hat{x}(t) \end{array}\right. }

で表します。(2)から(1)の第1式どうしを辺々引くと

\displaystyle{(3)\quad \frac{d}{dt}(\hat{x}(t)-x(t))=A(\hat{x}(t)-x(t)),\ \hat{x}(0)-x(0)\ne0 }

を得ます。ここでAが安定行列でない限り

\displaystyle{(4)\quad \hat{x}(t)-x(t)\rightarrow 0\quad (t\rightarrow\infty) }

とはなりません。

そこで、図2に示すような工夫が行われました。

図2 状態オブザーバの考え方(2)

(2)の状態方程式に次のような補正項を加えます。

\displaystyle{(5)\quad \dot{\hat{x}}(t)=A\hat{x}(t)+Bu(t)-H(C\hat{x}(t)-y(t)),\ \hat{x}(0)=0 }

すなわち

\displaystyle{(6)\quad \boxed{\dot{\hat{x}}(t)=(A-HC)\hat{x}(t)+Bu(t)+Hy(t),\ \hat{x}(0)=0} }

ここで、Hは適合するサイズを持つ行列です。(6)から(1)の第1式どうしを辺々引くと

\displaystyle{(7)\quad \frac{d}{dt}(\hat{x}(t)-x(t))=(A-HC)(\hat{x}(t)-x(t)),\ \hat{x}(0)\ne0 }

を得ます。ここでA-HCが安定行列であるとすると

\displaystyle{(8)\quad \hat{x}(t)-x(t)\rightarrow 0\quad (t\rightarrow\infty) }

が成り立ちます。すなわち(6)の状態\hat{x}(t)は、制御対象の状態x(t)を漸近的に推定することができます。A-HCが安定行列である(6)を状態オブザーバ、行列Hオブザーバゲインと呼びます。

さて、任意の正方行列Xに対して\det X=\det X^Tであることに注意して

\displaystyle{(9)\quad \left.\begin{array}{lll} \det(\lambda I_n-A+HC)&=&\det(\lambda I_n-A+HC)^T\\ &=&\det(\lambda I_n-A^T+C^TH^T) \end{array}\right. }

が成り立ちます。これからA-HCを安定行列とするためには、状態方程式

\displaystyle{(10)\quad \boxed{\dot{w}(t)=A^Tw(t)+C^Tv(t)} }

に対する状態フィードバック

\displaystyle{(11)\quad \boxed{v(t)=-H^Tw(t)} }

による閉ループ系が

\displaystyle{(12)\quad \dot{w}(t)=(A^T-C^TH^T)w(t) }

となるので、これを安定化する(12)を求めて、オブザーバゲインHを決定すればよいことが分かります。

状態方程式(10)をもつ物理系は存在せず、双対システムと呼ばれる仮想的なシステムであり、このシステムに対する状態フィードバック(11)の設計を通して、状態オブザーバの設計ができることになります。

[2] モータの状態方程式

\displaystyle{(13)\quad \left[\begin{array}{c} \dot{\theta}(t)\\ \dot{\omega}(t) \end{array}\right]= \underbrace{ \left[\begin{array}{cc} 0 & 1 \\ 0 & -\frac{1}{T_m} \end{array}\right] }_{A} \left[\begin{array}{c} \theta(t)\\ \omega(t) \end{array}\right]+ \underbrace{ \left[\begin{array}{c} 0\\ \frac{1}{K_ET_m} \end{array}\right] }_{B} u(t) }

と出力方程式

\displaystyle{(14)\quad y(t)= \underbrace{ \left[\begin{array}{cc} 1 & 0 \end{array}\right] }_{C} \left[\begin{array}{c} \theta(t)\\ \omega(t) \end{array}\right] }

に対する状態オブザーバ

\displaystyle{(15)\quad \left[\begin{array}{c} \dot{\hat{\theta}}(t)\\ \dot{\hat{\omega}}(t) \end{array}\right] =(A-HC) \left[\begin{array}{c} \hat{\theta}(t)\\ \hat{\omega}(t) \end{array}\right] +Bu(t)+Hy(t) }

を、A-HCの固有値が

\displaystyle{(16)\quad \lambda'_1=\lambda'_2=-\alpha\frac{1}{T_m}\ (\alpha>1) }

となるようにオブザーバゲインHを求めます。ここでは

\displaystyle{(17)\quad \det(\lambda I_2-A+HC)=(\lambda+\alpha\frac{1}{T_m})^2 }

における係数比較から直接求めてみます。

\displaystyle{(18)\quad A-HC= \left[\begin{array}{cc} 0 & 1 \\ 0 & -\frac{1}{T_m} \end{array}\right] - \left[\begin{array}{cc} h_1 \\ h_2  \end{array}\right] \left[\begin{array}{cc} 1 & 0 \end{array}\right] = \left[\begin{array}{cc} -h_1 & 1 \\ -h_2 & -\frac{1}{T_m} \end{array}\right] }

を(17)に代入して

\displaystyle{(19)\quad \begin{array}{l} \det \left[\begin{array}{cc} \lambda+h_1 & -1 \\ h_2 & \lambda+\frac{1}{T_m} \end{array}\right]\\ =(\lambda+h_1)(\lambda+\frac{1}{T_m})+h_2\\ =\lambda^2+(h_1+\frac{1}{T_m})\lambda+h_1\frac{1}{T_m}+h_2\\ =\lambda^2+2\alpha\frac{1}{T_m}\lambda+(\alpha\frac{1}{T_m})^2\\ \end{array} }

ここで係数比較により次式を得ます。

\displaystyle{(20)\quad \begin{array}{l} h_1=\frac{2\alpha-1}{T_m}\\ h_2=(\alpha\frac{1}{T_m})^2-h_1\frac{1}{T_m}=(\alpha\frac{1}{T_m})^2-\frac{2\alpha-1}{T_m}\frac{1}{T_m}=\frac{(\alpha-1)^2}{T_m^2} \end{array} }

これらから定まるオブザーバゲインHを用いて、状態オブザーバは次式のように構成されます。

\displaystyle{(21)\quad \begin{array}{l} \left[\begin{array}{c} \dot{\hat{\theta}}(t)\\ \dot{\hat{\omega}}(t) \end{array}\right] =\underbrace{ \left[\begin{array}{cc} -\frac{2\alpha-1}{T_m} & 1 \\ -\frac{(\alpha-1)^2}{T_m^2} & -\frac{1}{T_m} \end{array}\right] }_{A-HC} \left[\begin{array}{c} \hat{\theta}(t)\\ \hat{\omega}(t) \end{array}\right] +\underbrace{ \left[\begin{array}{c} 0\\ \frac{1}{K_ET_m} \end{array}\right] }_{B}u(t)\\ + \underbrace{\left[\begin{array}{c} \frac{2\alpha-1}{T_m} \\ \frac{(\alpha-1)^2}{T_m^2} \end{array}\right] }_{H}y(t) \end{array} }

次図はT_m=0.01K_E=0.05の下で、\alpha=1.2,1,8と変えたとき、状態オブザーバが真の状態を推定する様子をシミュレーションしています。

図3 状態推定の例

演習 A41…Flipped Classroom

次のコードを用いて図3のグラフを描け。

MATLAB
%a41.m
%-----
 clear all, close all
 Tm=0.01; KE=0.05;
 A=[0 1; 0 -1/Tm]; B=[0;1/Tm/KE]; C=[1 0];
 sys=ss(A,B,eye(2,2),[]);
 t=0:0.001:0.05;
 u=ones(1,length(t));
 x0=[1;10];
 x=lsim(sys,u,t,x0);
%-----;
 alpha=1.2
 p=[-1/Tm*alpha -1/Tm*alpha];
 H=sf(A',C',p); H=H'
%  h1=-(1-2*alpha)/Tm; h2=(1-alpha)^2/Tm^2;
%  H=[h1;h2]
 Aob=A-H*C; 
 err1=ss(Aob,[],eye(2,2),[]);
 xob0=[0;0];
 e1=initial(err1,-x0,t);
%----- 
 alpha=1.8
 p=[-1/Tm*alpha -1/Tm*alpha];
 H=sf(A',C',p); H=H' 
%  h1=-(1-2*alpha)/Tm; h2=(1-alpha)^2/Tm^2;
%  H=[h1;h2]
 Aob=A-H*C; 
 err2=ss(Aob,[],eye(2,2),[]);
 xob0=[0;0];
 e2=initial(err2,-x0,t);
%-----  
 subplot(121),plot(t,x(:,1),t,x(:,1)+e1(:,1),t,x(:,1)+e2(:,1)), 
 legend('theta','apha=1.2','alpha=1.8'), grid
 subplot(122),plot(t,x(:,2),t,x(:,2)+e1(:,2),t,x(:,2)+e2(:,2)), 
 legend('omega','apha=1.2','alpha=1.8'), grid
%----- 
 function F=sf(A,B,p)
   n=size(A,1); r=eig(A);
   a=[1 -r(1)]; for i=2:n, a=conv(a,[1 -r(i)]); end, a=a(n+1:-1:2);
   b=[1 -p(1)]; for i=2:n, b=conv(b,[1 -p(i)]); end, b=b(n+1:-1:2);
   X=zeros(n,n); for i=1:n, X(i,1:n-i+1)=[a(i+1:n) 1]; end
   Y=B; for i=2:n, Y=[B A*Y]; end
   F=real((b-a)/X/Y);
 end
%-----
%eof
SCILAB
coming soon

[3] n次系

\displaystyle{(1)\quad \left\{\begin{array}{l} \dot{x}(t)=Ax(t)+Bu(t),\ x(0)\ne0\\ y(t)=Cx(t) \end{array}\right. }

に対する状態フィードバックu=-Fxは、状態オブザーバを用いて、次のように実施されます。

\displaystyle{(22)\quad \left\{\begin{array}{l} \dot{\hat{x}}(t)=(A-HC)\hat{x}(t)+Hy(t)+Bu(t)\\ u(t)=-F\hat{x}(t) \end{array}\right. }

すなわち

\displaystyle{(23)\quad \boxed{\left\{\begin{array}{l} \dot{\hat{x}}(t)=(A-HC-BF)\hat{x}(t)+Hy(t)\\ u(t)=-F\hat{x}(t) \end{array}\right.} }

これをオブザーバベースコントローラと呼びます。ここで、A-BFA-HCは安定行列ですが、A-HC-BFが安定行列と限らないことに注意してください。また、

\displaystyle{(24)\quad e(t)=\hat{x}(t)-x(t) }

とおくとき、オブザーバベースコントローラは次式でも表せることに注意してください。

\displaystyle{(25)\quad \boxed{\left\{\begin{array}{l} \dot{e}(t)=(A-HC)e(t)\\ u(t)=-F(x(t)+e(t)) \end{array}} }

さて、オブザーバベースコントローラ(23)による閉ループ系は次式となります。

\displaystyle{(26)\quad \left[\begin{array}{c} \dot{x}(t) \\ \dot{\hat{x}}(t) \end{array}\right]= \left[\begin{array}{cc} A & -BF \\ HC & A-HC-BF \end{array}\right] \left[\begin{array}{c} x(t) \\ \hat{x}(t) \end{array}\right] }

ここで、座標変換

\displaystyle{(27)\quad \left[\begin{array}{c} x(t) \\ e(t) \end{array}\right]= \left[\begin{array}{cc} I & 0 \\ -I & I \end{array}\right] \left[\begin{array}{c} x(t) \\ \hat{x}(t) \end{array}\right] }

を行うと、

\displaystyle{(28)\quad \left[\begin{array}{cc} I & 0 \\ -I & I \end{array}\right] \left[\begin{array}{cc} A & -BF \\ HC & A-HC-BF \end{array}\right]\\ = \left[\begin{array}{cc} A-BF & -BF \\ 0 & A-HC \end{array}\right] \left[\begin{array}{cc} I & 0 \\ -I & I \end{array}\right] }

に注意して、閉ループ系の状態方程式として、次式を得ます。

\displaystyle{(29)\quad \boxed{\left[\begin{array}{c} \dot{x}(t) \\ \dot{e}(t) \end{array}\right]= \underbrace{ \left[\begin{array}{cc} A-BF & -BF \\ 0 & A-HC \end{array}\right] }_{A_{CL}} \left[\begin{array}{c} x(t) \\ e(t) \end{array}\right]} }

したがって、A_{CL}の固有値は、A-BFA-HCの固有値からなり、オブザーバベースコントローラによる閉ループ系は漸近安定であることが分かります。このことは状態フィードバックゲインFの設計は状態オブザーバゲインHの設計とは独立して行ってよいことを意味しており、大変重要な性質(分離定理)として知られています。