1. 自由研究
  2. Menu表示


ディジタルサーボと非線形制御問題を扱い、いくつかの例題を解いていこうと思います。

1、最適1型サーボ系

熱制御(最適レギュレータ) で扱った制御対象を考えてみます。すでに最適レギュレータのフィードバックゲインは求めてあります。センサー(サーミスタ)特性が非線形なので、実際にはこのままでは使えません。サーミスタのリニアライズは別の手段行うことを前提にします。
計算式はこちらの文献もを参考にしました。


参考文献1のp99〜を参考に
  x[i+1] = Ax[i]+bu[i]
  y[i] = cx[i]
 このときの最適1型サーボゲインは
  [h,k] = [fA , fB+I ][A-I , B ; C , 0]-1
  fは最適レギュレータのフィードバックゲイン
  制御則は
   u[i] = -hx[i] + kz[i];
   z[i+1] = z[i] + (Yr - y[i]);
   
   *************では 計算プログラムです ********************
   A B C Fは熱制御(最適レギュレータ)
   で求めた値を使います。F=f Fd=h Kd=kです。
 A=
  0.9997050  0.0975314
  -0.0058519  0.9509393 
 B=
   0.0049175
   0.0975314
 C=
   1 0
 F=
   0.88019  1.20637
      
   Fd Kdは下記の計算で求めものを記載しておきます。
 Fd=
   17.973  10.598
 Kd = 0.94019
  *************実際の計算はここから********************
Ad = A
Bd = B
Cd = C

[n m]=size(Bd);

ABC=[Ad-eye(n) Bd;Cd zeros(m)];
FSD=[F*Ad F*Bd+eye(m)]*inv(ABC);
Fd=FSD(:,1:n)
Kd=FSD(:,n+1:m+n)
ft=2;
dt=0.01;
N=ft/dt;
u=0.0;
x=[0;0];
z=0.0;
y = Cd*x;
Yr=10;
for i=1:N
   u = -Fd*x + Kd*z;
   zn =z + ( Yr -y);
   xn = Ad*x + Bd*u;
   y = Cd*x;
   x=xn;
   z=zn;
   timo(i)=i*dt;
   yout1(i,1)=x(1);
end
figure(6);
subplot(2,1,1);
plot(timo,yout1);
title('Fig.1 LQI step response')
xlabel('time');
 

LQILQI

LQI(Linear Quadratic Integral Control)ステップ応答です。

オブザーバー併合型
オブザーバーを使うとどうなるでしょうか。
熱制御(最適レギュレータ)で求めたオブザーバーの値を使用します。

 参考文献1のp74〜を参考に
 xo[i+1] = Axo[i] + Bu[i] + l*(y[i]-cxo[i]) 
 l=
  0.050644
  0.019790
  である。 
 %***********************************************
%1型最適サーボ + オブザーバー
%***********************************************
Ad = A
Bd = B
Cd = C

[n m]=size(Bd);
ABC=[Ad-eye(n) Bd;Cd zeros(m)];
FSD=[F*Ad F*Bd+eye(m)]*inv(ABC);
Fd=FSD(:,1:n)
Kd=FSD(:,n+1:m+n)

ft=10;
dt=0.1;
N=ft/dt;
%初期値
u=0.0;
xo=[0;0];%推定値 Observer
z=0.0;
x=[0;0];%実測
y=Cd*x;
Yr=10;%目標値

for i=1:N
	u = -Fd*xo + Kd*z;
	zn =z + ( Yr -y);
	xno = Ad*xo+Bd*u+l*(y-Cd*xo);%Observer
	xn=Ad*x+Bd*u;%制御対象モデル
	x=xn;
	xo=xno;
	y=Cd*xn;%制御対象の出力
	z=zn;

	timoo(i)=i*dt;
	youtt(i,1)=x(1);
end

figure(6);
subplot(2,1,2);
plot(timoo,youtt);
title('Fig.2 LQI+ Observer step response')
xlabel('time');

LQ2LQI+Observer

fig1は前掲のLQI(Linear Quadratic Integral Control)ステップ応答です。
fig2はLQI+オブザーバーのステップ応答です
ほぼ同じような特性が得られています。

2、非線形フィードバック

制御対象が微分可能であることを前提に議論されています。参考文献(3)によると、非線形フィードバックにより非線形補償を行います。リニアライズするといったほうがわかりやすいかもしれませんが、その後は通常の線形制御理論を使えばよいとのことです。ロボットの場合、良くつかわれていそうです。

3、外乱オブザーバーによる線形化

外乱オブザーバーも外乱入力が微分方程式であらわせることを前提にしています。その後オブザーバーを適用しています。
ここでは、問題を簡単にしながら外乱オブザーバーによる線形化を確認してみます。非線形特性を外乱とみなしています。
よく見かける外乱オブザーバのブロック図において、外乱を省略し、その代わりに制御対象を非線形とします。
この非線形要素が線形化できるか確認してみます。(2011.1.2)

ブロック図

制御対象はy=x+x^3 の非線形要素
入力はsin波
フィルタQはノイズ等を増幅して発振する場合や、位相補償の意味で入れてあります。ここでは一次遅れのフィルタとしていますが、シミュレーションでは効果は無いようですが入れてあります。

外乱オブザーバ

Fig.3-1は制御対象の特性です。入力xに対して x+x^3(3乗)の非線形要素です。
Fig.3-2において青色はReference入力、赤色は制御しない場合の制御対象出力です。
出力(赤色)が入力(青色)に一致するように、外乱オブザーバで制御するのがここでの目標です。

外乱オブザーバ

Fig.3-3 青色は制御出力、赤色はerror(誤差=制御出力y-Reference入力)で、誤差はほとんど見えなくなってます。よく制御されて、線形化がうまくいっている様子です。
Fig.3-4 オブザーバ内部の信号です。フィルターQの前後の信号です。青色はフィルターの後、赤色はフィルター前の信号です。(重なっているようで、見づらくて区別ができませんが、フィルタを入れると若干位相が遅れてきます。)

clear;
max=201;
step=1/((max-1)/2);

in=zeros(1,max);
diff=zeros(1,max);
y=zeros(1,max);

x=-1:step:1;
ref=sin(x*pi); #Reference入力(目標値)
y3=x+x.^3; #非線形制御対象
yout=ref+ref.^3; #オブザーバ無しの制御対象出力

for n=1:max
	in(n)=ref(n)+diff(n);
	y(n)=in(n)+in(n).^3;	
	diff1(n)=in(n)-y(n);
	diff(n+1)=0.01*diff(n)+0.99*diff1(n);#Qフィルター
endfor

figure(1)
subplot(2,1,1)
plot(x,y3)
axis([-1 1 -2 2])
grid 'on'
title('Fig.3-1 input/output characteristic, Controlled object')
xlabel('in(X)') 
ylabel('out(Y)') 

subplot(2,1,2)
n=1:1:max-1;
plot(n,ref(n),"b",n,yout(n),"r")
grid 'on'
title('Fig.3-2 Blue=Reference input:ref(sin signal),Red=non controlled output') 
xlabel('time') 

figure(2)
subplot(2,1,1)
n=1:1:max-1;
plot(n,y(n),"b",n,y(n)-ref(n),"r")
grid 'on'
title('Fig.3-3  Blue=controlled output:y , Red=error signal(y-ref) ')
xlabel('time') 

subplot(2,1,2)
n=1:1:max-1;
plot(n,diff(n),"b",n,diff1(n),"r")
grid 'on'
title('Fig.3-4 Blue=filtered diff output, Red=non filtered diff output') 
xlabel('time') 

4、MIMO制御システム(多変数制御理論)とMIMO無線の比較

 無線通信ではMIMO(多入力多出力系)技術が用いられ、無線LANやLTEの電送容量が飛躍的に増大しています。制御技術分野では、かなり前にMIMO技術が完成しています。MIMO無線と比較しながら参考文献を眺めていきたいと思います。(手元に古い本がありますので振り返ってみます。)

【MIMO無線の場合】

 代表的なMIMO無線方式として特異値分解(SVD)によるMIMO無線があります。
SVD方式は特異値分解による受信信号行列の対角化による受信信号分離です。MIMO制御の非干渉化と同じく対角化ですが、MIMO制御の場合のように状態ベクトルのフィードバックはありません。
 またチャネル応答は、通信信号の中に埋め込まれたパイロット信号を用いて、インパルス応答から常時求めています。チャネル応答は常時変動している(特に移動体無線)事を前提に設計されています。

(簡単に書くと下記のようになります。)
 チャンネル応答行列Hを次の様に特異値分解します。(参考文献(6))
  H=Vr・Λ・Vt H
 説明を簡単にするため、送信アンテナ数と受信アンテナ数をN(同じ)とすれば、
ΛはNxNの対角行列となり、Vtを送信重み、VrHを受信重みとし、Uを送信信号行列とすれば
  U=Vt・S
 受信信号は
  X=H・U=H・Vt・Vr・S
 さらに、受信側で受信重みVrHを受信信号に掛けてやれば
  Y=VrH・X=VrH・H・VtH・Vt=VrHVr・Λ・Vt H・Vt・S
となり、VrH・Vr=I、VtH・Vt=Iであるので、結局
  Y=Λ・S
となります。Λは対角行列なのでN個の信号を分離受信できるという方式です。

このWebサイトにもでMIMO無線の計算例があります。

【MIMO制御(多変数制御)の場合】

参考文献(4)のP314-315や参考文献(1)のp99〜を参考に
多変数制御では
@積分動作を主制御とする制御系へ指定通りの固有値を付与する(極配置)
A多変数制御ループを完全に分離する-非干渉制御

が課題となります。
 1型最適レギュレータは積分器をもちますが、極指定ではなく、重みQ,Rで出力波形を決めますので@に相当することは可能と思えます。
 またA制御ループの完全分離(非干渉制御)も可能であることは経験的にわかっていたようです。
 では、どのような条件のときに非干渉制御が可能かどうなのでしょうか。研究の結果、
「最小位相系に対して、最適レギュレータの極限的性質を用いて非干渉化を達成できる。」
(参考文献(5))ということが分かっているようです。

参考文献(5)。
評価関数Qを無限大にする極限状態は実際には不可能であるから、実現できる範囲で極大にして近似的に非干渉化することになる。

参考文献
(1)美多、原、近藤 共著「基礎ディジタル制御」、昭和63年 コロナ社
(2)
Octaveによる制御系の解析と設計
(3)美多、大須賀 共著「ロボット制御工学入門」 1989年 コロナ社
(4)高橋安人「システムと制御 下」 1978年 岩波書店
(5)鈴木亮一「最適レギュレータと状態推定器の極限的性質を用いた多変数系の非干渉制御に関する研究」博士論文1999-03
(6)神谷幸弘「MATLABによるディジタル無線通信技術」、2008年、コロナ社