スイッチング関数(1)
[1] 状態方程式とスイッチング関数は次の標準形をとるように座標変換されていると仮定します。
これに対して、座標変換
を行って、次式を得ます。
ここで、、すなわち、状態が超平面内に拘束されているとすると
となって、の振る舞いはによって決まります。一方、の振る舞いは
によって決まります。これは
に対する安定化状態フィードバック
による閉ループ系とみなすことができます。
したがって、が安定行列となるようにスイッチング関数を選ぶためには、(8)に対する状態フィードバックによる安定化問題を解けばよいことが分かります。
[2] そこで、次の2次形式評価関数を最小にするようにを決定する方法が提案されています。
これは、恒等式
を用いて
より
と書けます。ここで、(8)と(6)をそれぞれ
と書き直してみますと、次のような最適化制御問題の定式化ができていることがわかります。すなわち
を2次系式評価関数
を最小にするように
を求める問題です。この解は、リッカチ方程式
を解いて
を求め、次式からを決めればよいことがわかります。
演習C31…Flipped Classroom
スイッチング関数決定プログラムswflqrを用いて、図1の台車駆動型倒立振子を安定化する次のSMC則を求めよ。
図1 台車駆動型倒立振子
MATLAB |
%cCIP_smc1.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);
C=diag([100 180/pi])*eye(2,4);
%-----
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.5;
Ln=inv(S*B)*rho;
%-----
x0=[0;th0;0;0];
sim('CIP_smc_2015a.mdl')
%-----
%eof
|
Note C31 スイッチング関数決定プログラム1
Edwards and Spurgeon によって、(19)、(20)、(21)から、スイッチング関数の行列を求めるプログラムswflqrが開発されています。
MATLAB |
%test_swflqr.m
%-----
clear all, close all
A=[0 1 0;
0 0 1;
0 0 0];
B=[0;
0;
1];
%-----
Q=eye(3,3);
S=swflqr(A,B,Q)
%-----
%eof
|