状態空間 可観測性シミュレーター 戻る
制御工学

状態空間 可観測性シミュレーター

2次の線形時不変系 ẋ=Ax+Bu, y=Cx について「測定できる出力 y だけから内部状態 x をすべて知れるか」を判定するツールです。システム行列 A とセンサ行ベクトル C を変えると、可観測行列 O=[C;CA] の行列式とランクがリアルタイムで分かり、状態推定が成立する設計を探せます。

パラメータ設定
システム行列 A
2次系のダイナミクス A = [[a11,a12],[a21,a22]]
a11
a12
a21
a22
出力行ベクトル C
センサが状態をどう測るか y = C·x = c1·x1 + c2·x2
c1
c2
0 にすると状態 x2 を直接は測らない設定
計算結果
可観測行列の行列式 det
ランク
CA成分1
CA成分2
可観測性
|det|
可観測行列の行ベクトル — C と CA の張る平面

原点から伸びる2本の矢印が可観測行列の行 C(青)と CA(橙)。一次独立なら平面全体を張り(緑網掛け=可観測)、平行になると不可観測方向が赤で示されます。

det(𝒪) の c2 依存性
可観測行列の行ベクトル成分
理論・主要公式

$$\mathcal{O}=\begin{bmatrix}C \\ CA\end{bmatrix},\qquad \text{可観測}\iff \operatorname{rank}\mathcal{O}=n$$

可観測行列 𝒪 と可観測性の判定条件。C:出力行ベクトル、A:システム行列、n:状態次数(ここでは n=2)。フルランクなら出力 y から状態 x をすべて再構成できる。

$$CA=\bigl[\,c_1a_{11}+c_2a_{21},\;\; c_1a_{12}+c_2a_{22}\,\bigr]$$

2次系での CA 行ベクトルの成分。出力行 C に A を右から掛けたもので、𝒪 の2行目になる。

$$\det\mathcal{O}=c_1\,CA_2-c_2\,CA_1$$

2×2 可観測行列の行列式。これが 0 でなければランク2でフルランク、可観測。n 次系では 𝒪=[C;CA;CA²;…;CAⁿ⁻¹] と積み上げる。可観測性は可制御性の双対であり、(A,C) の可観測性は (Aᵀ,Cᵀ) の可制御性に等しい。

可観測性とは

🙋
「可観測性」って言葉、制御の授業で出てきたんですけど…正直よく分かりません。何が「観測できる」んですか?
🎓
ざっくり言うと「センサで測れる出力 y だけを見て、システムの中身(内部状態 x)が全部分かるか?」という性質だよ。例えばドローンの姿勢制御を考えてみて。本当は角度も角速度も知りたいけど、ジャイロは角速度しか測らないことがある。それでも数式上、出力の履歴から角度まで全部復元できるなら「可観測」。復元できない方向が残るなら「不可観測」なんだ。
🙋
なるほど。じゃあ「可観測かどうか」ってどうやって判定するんですか?感覚じゃなくて、ちゃんと計算で出るんですよね?
🎓
そう、可観測行列 𝒪 を作ってランクを見るんだ。出力の行ベクトル C を1行目、それに A を掛けた CA を2行目に積む。2次系なら 𝒪=[C;CA] という2×2行列になる。このランクが状態の次数 n(ここでは2)と同じならフルランクで可観測。左のスライダーで c2 をいじってみて。det(𝒪) が0をまたぐ瞬間にランクが2から1に落ちて、判定が「不可観測」に変わるのが見えるよ。
🙋
右のキャンバスに矢印が2本出てますね。これは C と CA のことですか?平行になると赤くなる…
🎓
その通り。あの2本は可観測行列の「行ベクトル」を絵にしたものだ。C と CA が違う向きを向いていれば、2本で平面全体を張れる=独立した情報が2つ取れる=可観測。でも2本が同じ直線に乗ってしまうと(平行になると)、本質的に1方向の情報しか取れていない。その「見えない方向」が赤で出る。det(𝒪) はちょうど、この2本が作る平行四辺形の符号付き面積なんだよ。面積が0なら潰れている、というわけ。
🙋
不可観測になってしまったら、もう手の打ちようがないんですか?
🎓
いや、いくつか手はある。一番直接的なのはセンサを足して C を変えること。例えば c2 を 0 から 0.5 にするだけで、x2 の情報が出力に混ざって可観測に戻ることが多い。設計でセンサを増やせないなら、せめて「不可観測なモードが安定しているか(=可検出か)」を確認する。発散するモードが不可観測だと、オブザーバでもカルマンフィルタでも絶対に推定が破綻するから、これは死活問題なんだ。
🙋
よく「可制御性」とセットで習いますけど、可観測性とはどういう関係なんですか?
🎓
この2つは「双対(そうつい)」と呼ばれる、コインの裏表の関係なんだ。可制御性は「入力でどの状態にも持っていけるか」、可観測性は「出力からどの状態も読めるか」。数式的には、可観測行列 [C;CA;…] は、A を転置した双対系の可制御行列とぴったり一致する。だから片方の判定アルゴリズムをもう片方にそのまま流用できる。オブザーバ設計が状態フィードバック設計の「鏡像」になっているのも、この双対性のおかげなんだよ。

よくある質問

可観測性とは、測定できる出力 y(t) の有限時間の履歴だけから、システムの内部状態 x(t) をすべて一意に再構成できる性質のことです。状態空間モデル ẋ=Ax+Bu, y=Cx に対し、可観測行列 O=[C;CA;…;CAⁿ⁻¹] のランクが状態次数 n に等しいとき、その系は可観測であると言います。可観測でない系には、どんなセンサ配置でも出力に一切影響を与えない「不可観測な状態方向」が存在します。
2次系では、出力行ベクトル C=[c1,c2] と、それに A を右から掛けた行ベクトル CA を縦に積み重ねて O=[C;CA] という2×2行列を作ります。CA=[c1·a11+c2·a21, c1·a12+c2·a22] です。この O の行列式が det(O)=c1·CA[1]−c2·CA[0]。det(O) がゼロでなければランクは2(フルランク)で可観測、ゼロなら2つの行 C と CA が一次従属でランクが落ち、不可観測になります。
可制御性は「入力でどの状態にも到達できるか」、可観測性は「出力からどの状態も読み取れるか」を表す、互いに双対な概念です。可観測行列 O=[C;CA;…] は、双対系(A→Aᵀ, B→Cᵀ)の可制御行列とちょうど一致します。つまり (A,C) の可観測性は (Aᵀ,Cᵀ) の可制御性と等価で、片方の判定法をもう片方に転用できます。
不可観測な系では、状態空間内に出力 y へまったく現れない「不可観測部分空間」が存在します。そこに含まれる状態(例えば内部で発散しているモード)は、出力をいくら測ってもオブザーバやカルマンフィルタで推定できません。実機では、その方向にセンサを追加するか、C を設計し直すか、不可観測なモードが安定(可検出)であることを確認する必要があります。

実世界での応用

オブザーバ(状態推定器)の設計:モータの回転角はエンコーダで測れても、角速度や負荷トルクは直接測れないことがよくあります。ルーエンベルガ・オブザーバを設計して未測定の状態を推定するには、まず系が可観測であることが大前提です。可観測でなければオブザーバの極をどこにも置けず、推定誤差が収束しません。本ツールのランク判定は、オブザーバを組む前の最初のサニティチェックになります。

カルマンフィルタとセンサフュージョン:自動運転車の自己位置推定や航空機の慣性航法では、複数のノイズの乗ったセンサから状態を推定します。カルマンフィルタが安定して収束するには、系が可観測(少なくとも可検出)であることが必要です。GPSが一時的に途切れる状況などは「一部の状態が一時的に不可観測になる」状況として解析でき、その間にフィルタの推定がどれだけ劣化するかを見積もれます。

センサ配置の決定:大型構造物のモニタリングや化学プラントの温度・濃度推定では、「どこに何個センサを置けば内部状態を全部読めるか」が設計課題になります。候補となる C 行列ごとに可観測行列のランクを計算し、フルランクになる最小限のセンサ構成を選びます。本ツールで c1・c2 を動かすのは、まさにこのセンサ選定のミニチュア版です。

モデル低次元化と現代制御の教育:可観測かつ可制御な部分(最小実現)だけを残してモデルを縮約する際にも可観測性が使われます。また大学の制御工学では、可観測行列・可制御行列・双対性は必修テーマです。手計算で det(𝒪) を求めた後、本ツールで答え合わせをしたり、パラメータを連続的に動かしてランクが落ちる「特異な配置」を体感したりするのに役立ちます。

よくある誤解と注意点

まず多いのが、「可観測性はシステムの A だけで決まる」という誤解です。可観測性は A と C の組 (A,C) で決まる性質であり、出力行列 C をどう選ぶか——つまりどの状態をどう測るか——に強く依存します。同じプラント A でも、c2 を 0 にした瞬間に不可観測になることが本ツールで確認できます。逆に「不可観測だから設計が悪い」とも限りません。センサを1個追加して C を変えれば可観測に戻せる場合が多く、可観測性は「プラントの欠陥」ではなく「センサ設計の問題」として捉えるべきです。

次に、「det(𝒪) がゼロに近いだけならほぼ可観測だから問題ない」という油断。理論上は det(𝒪)≠0 なら可観測ですが、det(𝒪) が極端に小さい系は「ほぼ不可観測」で、実用上は深刻です。可観測グラミアンの最小特異値が小さいと、わずかな測定ノイズが状態推定に巨大な誤差として増幅されます。本ツールは |det| を表示していますが、実機では「可観測か否か」の二択だけでなく、可観測性の“強さ”(条件数や特異値)まで見るのが定石です。

最後に、「可観測でないと制御できない」という思い込み。可観測性と可制御性は別物です。不可観測な系でも、不可観測なモードがすべて安定(=可検出)であれば、出力フィードバックで安定化できます。逆に、可制御だが不可観測なモードが発散していると、その状態は推定も観測もできないまま発散します。実務では「可観測」より弱い「可検出(detectability)」、「可制御」より弱い「可安定(stabilizability)」という条件で十分なケースも多く、何が本当に必要かを見極めることが重要です。

使い方ガイド

  1. システム行列Aの4要素(a11、a12、a21、a22)をスライダーまたはテキスト入力で設定。各パラメータの範囲指定で感度分析が可能
  2. 出力行列Cは標準形[1 0]を固定。可観測行列O=[C; CA]が自動生成され、行列式と階数をリアルタイム計算
  3. 可観測性判定:2次システムでrank(O)=2かつdet(O)≠0なら完全可観測。状態推定器(オブザーバ)設計が可能と判定

具体的な計算例

DCモーター制御系でA=[[0,1],[-10,−3]]、C=[1,0]を設定。CA=[-10,-3]となり、可観測行列O=[[1,0],[−10,−3]]のdet(O)=−3≠0、rank=2。完全可観測と判定され、ルーエンバーグオブザーバ設計で極配置[-5,-8]を実現可能。一方A=[[0,1],[0,−2]]ではCA=[0,−2]となり、det(O)=0で可観測性失。角速度が測定不可となるため、エンコーダ追加が必須。

実務での注意点