対象システムが構造的不確かさをもつ場合に有効なロバスト制御法。 今回はSISOシステムのみ取り上げるが、MIMOにも拡張可能。 詳しくはJ. E. Slotine, W. Li, “Applied Nonlinear Control”, 1991を参照。
仮定
次のシステムを制御したいとする。 $$x^{(n)} = f({\bf x}) + b({\bf x})u$$ ここで、${\bf x}=[x \ \dot x \cdots x^{(n-1)}]^T$は状態ベクトル, $u$はスカラーの入力である。 また、$f$は不確かさを含む関数であるとする。 具体的には、我々は推定値$\hat f$のみを知ることができるものとし、これらの関数はある既知の関数$F({\bf x})$に対して $$\left|\hat f-f\right|\le F$$ を満たすとする。$b$もまた $$0 < b_{min} \le b \le b_{max}$$ の不確かさを持つとし、我々が知ることのできる値は推定値 $$\hat b = (b_{min} b_{max})^{1/2}$$ のみであるとする。
問題
${\bf x}$を望ましい状態${\bf x}_d=[x_d \ \dot x_d \cdots x^{(n-1)}_d]$に追従させる$u$を設計せよ。 ただし、望ましい状態${\bf x}_d$は${\bf x}_d(0) = {\bf x}(0)$を満たすとする (テクニカルな仮定。ここでは説明しない) 。
導出
まずは簡単なシステムで
簡単のため$b$についての不確かさを一旦無視して$b({\bf x}) = 1$とし、対象システムは簡単な二次系 $$\ddot x = f({\bf x}) + u$$ であるとする。 また、これ以後、$\tilde{\bf x} := {\bf x}-{\bf x}_d$と定義する。 もしある正数$\lambda$を設計したうえで、状態フィードバック $$u = -\hat f({\bf x}) + \ddot x_d - \lambda \dot{\tilde{x}}$$ を生成すると、閉ループ系は $$\ddot{\tilde{x}} = - \lambda \dot{\tilde{x}}$$ と計算でき、$\dot{\tilde{x}}\rightarrow 0$すなわち${\bf x}\rightarrow{\bf x}_d$を満たす。 ただし、この結果が成り立つのは、$f$が不確かさを含まない (すなわち$\hat f=f$が成り立つ) ときであり、推定値が真値と一致しない場合はこの限りでない。
この問題を解決するために、突然だが、切り替え関数 $$s({\bf x},t)=\left( \frac{d}{dt} + \lambda \right)^{n-1}\tilde x$$ を定義する。 ただし今考えているシステムは二次系なので、切り替え関数は $$s=\left( \frac{d}{dt} + \lambda \right)\tilde x$$ となる。 この定義のもと、先ほどの入力 $$\hat u = -\hat f({\bf x}) + \ddot x_d - \lambda \dot{\tilde{x}}$$ に対して、十分大きな$k>F$を設計し、追加の入力 $$u = \hat u - k \ \text{sgn}(s)$$ を生成すると、$f$が不確かさを含む場合でも、うまく制御できることがわかっている。
なぜうまくいくのか
順を追って説明しよう。
まず、先ほど定義した切り替え関数$s({\bf x}, t)$に対して、不変集合 $$S(t) = \{{\bf x} \ | \ s({\bf x}, t) = 0 \}$$ を定義する。 この集合の名前を切り替え超平面と呼ぶ。 すると、制御目標を満たす軌道${\bf x} \equiv {\bf x}_d$は切り替え超平面の元になる。 すなわち $${\bf x}(t) \in S(t), \ \forall t$$ を満たす。
このことは、$n$次元ベクトル$\tilde{\bf x}\equiv 0$を考える問題を、スカラー値$s=0$を考える問題に帰着できることを意味する。
具体的には、もし${\bf x}$が$S$の外に存在するときに、その中に押し込むような入力$u$を生成できれば、制御目標は達成できたと言える。
また、もしそのような入力を生成できた場合の$s$の挙動は
$$\frac{1}{2}\frac{d}{dt}s^2\le-\eta |s|$$
を満たすと考えられる ($\eta$は正の定数) 。
これまた唐突に現れた式だが、リヤプノフ関数$V(s) = s^2$を設計したうえでの、原点の指数安定性を考えていると思えば自然に感じられる。
この不等式の名前を切り替え条件 (sliding condition、正確な和訳不明) と呼ぶ。
数値例に戻ろう。 切り替え条件の左辺を計算すると、 $$\frac{1}{2}\frac{d}{dt}s^2 = \dot s s = \left(f-\hat f - k \ \text{sgn}(s) \right)s = \left(f - \hat f \right)s - k|s|$$ が成り立つ。 ここで$\eta = k-F>0$を定義すると $$\frac{1}{2}\frac{d}{dt}s^2\le-\eta |s|$$ が成り立ち、先に与えた入力によって切り替え条件が満たされていることがわかる。
以上が、設計した入力が制御目標を達成できる理由である。
少し難しいシステムで
つぎに、$b({\bf x})$の不確かさを改めて考える。すなわち、対象システムは $$\ddot x = f({\bf x}) + b({\bf x})u$$ である。 今、先と同様の $$\hat u = -\hat f({\bf x}) + \ddot x_d - \lambda \dot{\tilde{x}}$$ を考えたうえで、制御入力を以下で与える。 $$u = \hat b^{-1} \left(\hat u - k \ \text{sgn}(s) \right). $$ ただし、先ほどと違う箇所として、$k$は $$k \ge \beta(F+\eta) + (\beta-1)\left|\hat u\right|$$ を満たすよう定める。 ここで$\beta:=(b_{max} / b_{min})^{1/2}$である。 詳細は省くが、計算してみると、この入力のもと切り替え条件が満たされていることが確認できる。
一般の場合
実は、今回参考にした書籍には、一般の場合 $$x^{(n)} = f({\bf x}) + b({\bf x})u$$ の制御法が明確に示されていなかった。 もっと正直に言うと、それっぽい箇所はあるのだが、自分の理解が追いつかなかった。 これまでの議論のアナロジーでなんとかなるっぽいので、また時間があるときに勉強し直して、追記できればいいと思う。
まとめ
もとのシステムの状態${\bf x}$の安定性を、切り替え関数の出力値$s$の安定性に置き換え、リヤプノフの安定性を考えるというのがポイント。
実装のうえでは、$\text{sgn}$関数によるチャタリングが発生してしまうので、閾値をあらかじめ設計するなどの工夫が必要。
付け焼き刃の知識で何か間違ってるかもしれないので、その点ご了承ください。