状態空間の基本式
$$\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, Dを入力して可制御性・可観測性を自動判定。固有値のs平面プロット、Ackermannの公式による極配置、閉ループシミュレーション。
$$\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$
状態空間モデルは、システムの動的挙動を一階の連立微分方程式で表現します。これが全ての解析の出発点です。
$$\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$なら可観測。ランクが足りないと、制御や観測できない状態が存在することを意味します。
ロボットアームの制御:複数の関節(状態)を同時に、目標位置へ正確に動かすためにはシステムが可制御である必要があります。また、全ての関節角度にセンサが付いていない場合、オブザーバを設計して角度を推定しますが、そのためには可観測性が必須です。
自動車のアクティブサスペンション:車体の姿勢(ピッチ、ロール)を制御して乗り心地と安定性を向上させます。FEMなどで得られた車体モデルを状態空間表現に変換し、可制御性を確認した上で、状態フィードバックにより最適なダンパ力を計算します。
航空機(飛行制御):飛行機の姿勢(縦揺れ、横揺れ)は複数の状態が強く結合しています。可制御性を満たすように舵面(エルロン、エレベータ)を配置し、パイロットの操作(入力)で全ての姿勢モードを制御できるようにします。
化学プラントのプロセス制御:反応器の温度、圧力、濃度などの状態を、限られた弁やヒーター(入力)で制御し、かつ限られたセンサ(出力)で監視する必要があります。プラントの規模が大きくなるほど、可制御性・可観測性の解析は設計の重要なステップとなります。
まず、「可制御/可観測」は「性能が良い」と同義ではないという点を押さえよう。これは「原理的に制御/観測が可能か」という二値の判定だ。例えば、可制御でも極配置で極を-1と-2に置いたら応答は遅いし、-10と-20に置けば速いが制御入力が大きくなりすぎて実現不可能かもしれない。性能はゲイン設計次第だ。
次に、数値計算の限界に注意。このツールも内部で行列のランクを計算しているが、状態数が増えたり、行列が悪条件(ill-conditioned)だと、数学的にはフルランクでも数値計算上はランク落ちと判定されることがある。例えば、極めて近い2つの固有値を持つシステムでは要注意だ。実務では、可制御性/可観測性行列の特異値を見て、「どの程度」可制御/可観測かを評価する(可制御/可観測グラミアン)ことが多い。
最後に、モデルの次元と現実の乖離。ツールに入力するA, B, C行列は、あなたが考えた「モデル」の表現だ。これが現実の物理システムを正確に表していなければ、ツール上で完璧に設計しても実際はうまく動かない。例えば、摩擦やバックラッシュを無視したロボットアームモデルでは、シミュレーションは完璧でも実機は振動するかもしれない。