状態空間解析 戻る
制御工学

状態空間表現・可制御性・可観測性解析

行列A, B, C, Dを入力して可制御性・可観測性を自動判定。固有値のs平面プロット、Ackermannの公式による極配置、閉ループシミュレーション。

システム次数 & プリセット
システム行列
A 行列 (NxN)
B 行列 (Nx1)
C 行列 (1xN)
D (スカラー)
所望閉ループ極 (極配置)
Re部 (カンマ区切り)
例: -2,-3 または -1+2j,-1-2j(虚部対)
計算結果
可制御性ランク
可観測性ランク
開ループ安定性
閉ループ安定性
理論・主要公式

状態空間の基本式

$$\dot{x}= Ax + Bu, \quad y = Cx + Du$$

可制御性行列: $\mathcal{C}= [B \;|\; AB \;|\; A^2B \;|\; \ldots]$

可観測性行列: $\mathcal{O}= [C;\; CA;\; CA^2;\; \ldots]^T$

伝達関数: $H(s) = C(sI-A)^{-1}B + D$

状態空間表現・可制御性・可観測性解析とは

🙋
「可制御性」と「可観測性」って何ですか? 教科書で見たけど、具体的に何ができるようになるのかピンときません。
🎓
大まかに言うと、ロボットや機械を思い通りに動かせるか(可制御)、その内部の状態を外から見て把握できるか(可観測)をチェックするための「健康診断」みたいなものだよ。例えば、このシミュレーターでA, B, C行列を適当に入力して「解析」ボタンを押すと、すぐに「可制御」「可観測」かどうか判定してくれるんだ。
🙋
え、そうなんですか!じゃあ、もし「不可制御」と出たらどうするんですか? そのままでは制御できないということ?
🎓
その通り。でも、そこで終わりじゃないんだ。実務では、制御したいモードだけを抜き出して部分的な制御を考えたりする。このツールの面白いところは、下の「極配置」タブで、希望の応答速度(極の位置)をs平面上でクリックして指定すると、自動で状態フィードバックゲインKを計算してくれるところだよ。ただし、これはシステムが可制御なときだけ使える機能だ。
🙋
なるほど!「オブザーバゲイン」ってのもありますね。これは可観測性と関係あるんですよね? シミュレーター上でどう使えばいいですか?
🎓
鋭いね!オブザーバは、測定できない内部状態を推定する「状態推定器」の設計に必要で、可観測性が条件になる。ツールでは、オブザーバの極(推定の収束速度)をs平面上で設定すると、ゲインLが計算される。最後に「ステップ応答」タブで、フィードバック制御した系と、オブザーバを使った系の応答を比べてみよう。ゲインを変えると応答がどう変わるか、体感できるよ。

物理モデルと主要な数式

状態空間モデルは、システムの動的挙動を一階の連立微分方程式で表現します。これが全ての解析の出発点です。

$$\dot{x}(t) = A x(t) + B u(t), \quad y(t) = C x(t) + D u(t)$$

$x$: 状態ベクトル(内部変数), $u$: 入力ベクトル, $y$: 出力ベクトル, $A$: システム行列(ダイナミクス), $B$: 入力行列, $C$: 出力行列, $D$: 直達行列。

可制御性と可観測性は、以下の行列(可制御性行列$\mathcal{C}$、可観測性行列$\mathcal{O}$)のランク(独立な行・列の数)を調べることで判定します。ここで$n$は状態の次元数です。

$$\mathcal{C}= \begin{bmatrix}B & AB & A^2B & \cdots & A^{n-1}B \end{bmatrix}, \quad \mathcal{O}= \begin{bmatrix}C \\ CA \\ CA^2 \\ \vdots \\ CA^{n-1}\end{bmatrix}$$

$\mathrm{rank}(\mathcal{C}) = n$なら可制御、$\mathrm{rank}(\mathcal{O}) = n$なら可観測。ランクが足りないと、制御や観測できない状態が存在することを意味します。

よくある質問

まずシステム行列Aの固有値と、対応するBやCのモードを確認してください。不可制御・不可観測の原因は、特定のモードが入力や出力と結合していないことです。モデル化の誤りや、物理的に制御・観測が不可能な状態が含まれていないか見直すことを推奨します。
指定した極がシステムの次数より多い場合や、システムが可制御でない場合にエラーが発生します。まず可制御性行列のランクが状態数nと一致するか確認してください。また、極は複素共役対で指定する必要があります。
配置した極が複素平面の左半面にない(実部が正)場合、閉ループ系が不安定になります。極配置の際に全ての極の実部が負であることを確認してください。また、シミュレーションの時間刻みが大きすぎると数値的に発散することもあるため、刻み幅を小さくしてみてください。
原点付近の固有値は応答が非常に遅いモードに対応します。可制御性・可観測性に問題がなくても、極配置でこのモードを左半面に移動させないと、整定時間が長くなります。また、数値誤差で原点と判定される場合があるため、許容誤差の設定を適宜調整してください。

実世界での応用

ロボットアームの制御:複数の関節(状態)を同時に、目標位置へ正確に動かすためにはシステムが可制御である必要があります。また、全ての関節角度にセンサが付いていない場合、オブザーバを設計して角度を推定しますが、そのためには可観測性が必須です。

自動車のアクティブサスペンション:車体の姿勢(ピッチ、ロール)を制御して乗り心地と安定性を向上させます。FEMなどで得られた車体モデルを状態空間表現に変換し、可制御性を確認した上で、状態フィードバックにより最適なダンパ力を計算します。

航空機(飛行制御):飛行機の姿勢(縦揺れ、横揺れ)は複数の状態が強く結合しています。可制御性を満たすように舵面(エルロン、エレベータ)を配置し、パイロットの操作(入力)で全ての姿勢モードを制御できるようにします。

化学プラントのプロセス制御:反応器の温度、圧力、濃度などの状態を、限られた弁やヒーター(入力)で制御し、かつ限られたセンサ(出力)で監視する必要があります。プラントの規模が大きくなるほど、可制御性・可観測性の解析は設計の重要なステップとなります。

よくある誤解と注意点

まず、「可制御/可観測」は「性能が良い」と同義ではないという点を押さえよう。これは「原理的に制御/観測が可能か」という二値の判定だ。例えば、可制御でも極配置で極を-1と-2に置いたら応答は遅いし、-10と-20に置けば速いが制御入力が大きくなりすぎて実現不可能かもしれない。性能はゲイン設計次第だ。

次に、数値計算の限界に注意。このツールも内部で行列のランクを計算しているが、状態数が増えたり、行列が悪条件(ill-conditioned)だと、数学的にはフルランクでも数値計算上はランク落ちと判定されることがある。例えば、極めて近い2つの固有値を持つシステムでは要注意だ。実務では、可制御性/可観測性行列の特異値を見て、「どの程度」可制御/可観測かを評価する(可制御/可観測グラミアン)ことが多い。

最後に、モデルの次元と現実の乖離。ツールに入力するA, B, C行列は、あなたが考えた「モデル」の表現だ。これが現実の物理システムを正確に表していなければ、ツール上で完璧に設計しても実際はうまく動かない。例えば、摩擦やバックラッシュを無視したロボットアームモデルでは、シミュレーションは完璧でも実機は振動するかもしれない。