入出力線形化 (フィードバック線形化) とは
非線形システムに、非線形性を打ち消すような入力を加える事で、閉ループ系を線形化する制御法。 安定化が目的ではないので、得られた線形システムに対して線形制御法を適用する必要がある。
利点として
- 通常の(ヤコビアンを用いる)線形化と違って、近似を用いない
欠点として
- システムの動特性を全て知っていなければならない
- その動特性は正方、入力アフィンという形をしていなければならない (拡張可能)
- 線形化のために大きな入力を加えるため、入力飽和などのあるシステムに適用しづらい
などが挙げられる。
入出力線形化
#仮定
今、制御対象が以下の動特性に従うとする。 $$\dot x = f(x) + g(x)u\ y=h(x)$$ $x(t) \in R^n, u(t) \in R^m, y(t) \in R^m$はそれぞれ状態、入力、出力を表す。 $f:R^n\rightarrow R^n$および$g: R^n\rightarrow R^{n\times m} $については特になにも仮定しないが、$h: R^n\rightarrow R^m$は必要回数分だけ微分可能だとする。
このシステムは入力に対してアフィンな形をしているため、そのまま入力アフィン (input-affine, control-affine) と呼ばれる。 入力アフィンシステムは、機械システムなどによくみられる、非常に重要なクラスらしい。
また、今回入力と出力の次元は同じと仮定している。 このことをシステムは正方 (square) であるという。
#線形化制御器
今、 $$u = C(x,v)$$ を設計することで、与えられた非線形システムを$v$から$y$に対して線形にすることを考える。
この問題に対して、いきなりだが制御器$u$を、下記で与えてみよう。 $$u = L_gh^{-1}(x)(-L_fh(x) + v)$$ ここで、Lie微分と呼ばれる記法 $$L_fh(x) = \frac{\partial h}{\partial x} f(x)\ L_gh(x) = \frac{\partial h}{\partial x} g(x)$$ を用いた。
ここで$L_gh(x)$が可逆でなければならないという問題があるのだが、今はとりあえず無視して、生成した入力を、与えられたシステムに突っ込んでみることにする。 すると $$\dot y = \frac{\partial h}{\partial x}\dot x = \frac{\partial h}{\partial x} (f(x) + g(x)u) = v$$ という式が得られる。 これは、$v$から$y$に対して線形な形をしているので、目標が達成できたと言える。
#$L_gh(x)$が可逆でない場合
$L_gh(x)$が可逆でないとはどういうことか。
以下、簡単のためにSISOシステム ($m=1$) を考える。 この場合、$L_gh(x)$が可逆でないとは、$\frac{\partial h}{\partial x} g(x)=0$となることである。 このとき、 $$\dot y = \frac{\partial h}{\partial x}f(x)$$ となり、$u$によって非線形項を打ち消す入力を加えることができないことがわかる。
そこで、$y$を必要回数分だけ微分して、$L_gh$が可逆になるまで続けることにする。
試しに$\dot y$もう一度を微分してみると、
$$\ddot y = L_f^2h(x) + L_gL_fh(x)u$$
が得られる。
ここで、Lie微分の便利なルールである、
$$L_f^2h(x) = L_fL_fh(x) = \frac{\partial (L_fh(x))}{\partial x}f(x)$$
という記法を用いた。
ここで、$L_gL_fh(x)=0$ならもう一度微分、それがダメなら更にもう一度、というように、ひたすら微分を繰り返していき、やがて
$$y^{(n)} = L_f^nh(x) + L_gL_f^{n-1}h(x)u$$
が得られたとする。これに対して
$$u = L_gL_f^{n-1}h^{-1}(x) ( -L_f^nh(x) + v ) $$
と入力を与えれば、
$$y^{(n)} = v$$
となり、システムは$v$から$y$に対して線形になる。
ただし、$L_gh(x)$の可逆性は当然ながらそのときの状態$x$に依存するため、機械システムの場合、これについてはあまり気にしなくてもいいらしい。 よって、以後$L_gh(x)$は可逆であるとする。
#追従問題
ここで、望ましい軌道$y_d(t)$が与えられたとしよう。
つぎの我々の目的は適切な制御器
$$u = C(x,y_d)$$
を設計することで、出力$y$を$y_d$に追従させることである。
このことは追従誤差$e(t):=y_d(t)-y(t)$を零にする制御問題と言ってもいい。
さて、制御器$u$を、下記で与えてみよう。 $$u = L_gh^{-1}(x)(-L_fh(x) + \dot y_d + v)$$
ここで、$v$は補助的な入力であり、後でちゃんと設計する。
生成した入力を、与えられたシステムに突っ込んでみると
$$\dot y = \frac{\partial h}{\partial x}\dot x
= \frac{\partial h}{\partial x} (f(x) + g(x)u)
= \dot y_d +v$$
という式が得られる。
これは
$$\dot e = -v$$
と等価である。
さて、追従誤差$e$を零にするために、正定行列$K$を用意して
$$v = Ke$$
と$v$を設計してやれば、追従誤差は零に収束していくはずである。
こうして、適切な制御器 $$u = L_gh^{-1}(x)(-L_fh(x) + \dot y_d + K(y_d-h(x)))$$ を設計できた。
#零ダイナミクス
さて、入出力関係が線形化できたわけだが、その間、状態$x$はどのように振る舞うのだろうか。 試しに$\dot x$を計算していくと $$\dot x = f(x) + g(x)u = f(x) + g(x)(L_gh^{-1}(x)(-L_fh(x) + v)) = (I - g L_gh^{-1} \frac{\partial h}{\partial x})f(x) + gL_gh^{-1}(x)v$$ が得られる。 ここで、 $$\dot x = (I - g L_gh^{-1} \frac{\partial h}{\partial x})f(x)$$ を零ダイナミクスと呼ぶ。
注意すべきことは、今$u$によって制御されている追従誤差$e$の次元$m$と、状態の次元$n$に対して、$m\le n$の関係が成り立つことである。 これが意味することは、出力から不可観測な状態が不安定になりうるということである。 そのため、入出力線形化を実装するにあたっては、零ダイナミクスが安定かどうかを予め判断しておくことが求められる (零ダイナミクスの安定性は、入出力線形化のための十分条件であり、必要条件ではない) 。
まとめ
数値例とか後で追加したい。