カルマンフィルター

カルマンフィルター (英: Kalman filter) は、誤差のある観測値を用いて、ある動的システムの状態を推定あるいは制御するための、無限インパルス応答フィルターの一種である。 カルマンフィルターは、 離散的な誤差のある観測から、時々刻々と時間変化する量（例えばある物体の位置と速度）を推定するために用いられる。レーダーやコンピュータビジョンなど、工学分野で広く用いられる。例えば、カーナビゲーションでは、機器内蔵の加速度計や人工衛星からの誤差のある情報を統合して、時々刻々変化する自動車の位置を推定するのに応用されている。カルマンフィルターは、目標物の時間変化を支配する法則を活用して、目標物の位置を現在（フィルター）、未来（予測）、過去（内挿あるいは平滑化）に推定することができる。 このフィルターはルドルフ・カルマンによって提唱されたが、同様の原理はトルバルド・ティエレとピーター・スワーリングによってすでに開発されていた。カルマンがアメリカ航空宇宙局のエイムズ研究センターを訪問した際、この理論がロケットの軌道推定に有用なことに気づき、のちのアポロ計画で用いられた。 カルマンフィルターは時間領域において、連続時間線形動的システム、もしくは離散化された離散時間線型動的システムに基づいて駆動する。以降に導入される解説は、後者の立場のものである。それらはガウス白色雑音によって励振をうける線形演算子からなるマルコフ連鎖モデルで表現される。より端的にいえば、システムは状態空間モデル (state space model) で表現されるということである。 対象のシステムに定義された「状態 (state)」は、そのシステムの過去の動特性の遷移を保持する役割を果たし、動特性の遷移を保持する線形空間が状態空間として定義される。この空間は実数空間であるため、システムの状態は一般に、任意の次元の状態空間に含まれる実数ベクトルとして与えられる。状態の変化は、現在の状態と、それに付加する雑音の影響と、場合によってはシステムの状態の制御に関与する既知の制御入力の線形結合によって記述される。したがって、状態はシステムの因果性に寄与する存在である。上記の理念は、以下に記述する状態方程式 (state equation) によって表現される。 状態が直接観測できない場合には、システムの出力は一般に状態と観測雑音の線形結合にて観測可能なものとして与えられる。この理念は観測方程式 (observation equation) として、以下に示すような線形モデルで表現される。 カルマンフィルターは、直接システムの状態が観測できない問題に対する状態推定法のひとつであるから、一般的に観測方程式を伴う問題に適用される。 カルマンフィルターは隠れマルコフモデル (hidden Markov model) の類似であると考えることができる。2者の主たる差異は隠れマルコフモデルにおける状態変数が、連続であるか離散であるかである。また、隠れマルコフモデルでは状態変数の未来への変化を任意の分布に従う形式で統計的に与えることができる一方で、カルマンフィルターでは、ガウス分布に従う雑音によって未来の状態変数が統計的に記述される点が異なっている。したがって、カルマンフィルターと隠れマルコフモデルの間には強固な双対性が存在する。ちなみに、カルマンフィルターの導出過程においては、「システムに付随する雑音の性質はガウス分布に従う」という仮定の下に行われるのが一般的であるが、雑音の性質がガウス分布に従わない場合であっても、カルマンフィルターは線形なクラスにおける最適推定値、すなわち線形最小分散推定値を導くことができる点で、汎用性に富んでいるといえる。 唯一に観測可能である、雑音の影響を受けた出力過程に基づいて（制御問題においては、入力も観測可能な過程となる）、カルマンフィルターを用いてシステムの状態を推定するためには、対象のシステムに対して、カルマンフィルターの理念に合致するような状態の遷移（すなわち状態過程）に関するモデルを与えなければならない。これは、時変 (time-variant) な行列 F k {\displaystyle F_{k}} , G k {\displaystyle G_{k}} , H k {\displaystyle H_{k}} , Q k {\displaystyle Q_{k}} , R k {\displaystyle R_{k}} によって特徴付けられる線形方程式として、以下で与えられる。これが状態方程式である。 時刻 k {\displaystyle k} における真のシステムの状態は、１ステップ前の時刻 ( k − 1 ) {\displaystyle (k-1)} の状態をもとに、次のように表現される。 x k = F k x k − 1 + u k + G k w k {\displaystyle {\boldsymbol {x}}_{k}=F_{k}{\boldsymbol {x}}_{k-1}+{\boldsymbol {u}}_{k}+G_{k}{\boldsymbol {w}}_{k}} ここに、 F k {\displaystyle F_{k}} は、システムの時間遷移に関する線形モデル。 u k {\displaystyle {\boldsymbol {u}}_{k}} は制御入力。 G k {\displaystyle G_{k}} は時間遷移に関する雑音 (process noise) モデルの行列で、 w k {\displaystyle {\boldsymbol {w}}_{k}} はその雑音で、共分散行列 Q k {\displaystyle Q_{k}} かつ零平均の多変数正規分布に従う。 w k ∼ N ( 0 , Q k ) {\displaystyle {\boldsymbol {w}}_{k}\sim N(0,Q_{k})} これがシステムの状態の遷移を記述する状態方程式である。 ある時刻 k {\displaystyle k} において、観測量（測定量） z k {\displaystyle {\boldsymbol {z}}_{k}} は、真の（すなわち観測不可能な）状態 x k {\displaystyle {\boldsymbol {x}}_{k}} と、以下のような関係にある。 z k = H k x k + v k {\displaystyle {\boldsymbol {z}}_{k}=H_{k}{\boldsymbol {x}}_{k}+{\boldsymbol {v}}_{k}} ここに、 H k {\displaystyle H_{k}} は状態空間を観測空間に線形写像する役割を担う観測モデルで、 v k {\displaystyle {\boldsymbol {v}}_{k}} は、共分散行列 R k {\displaystyle R_{k}} かつ零平均の多変数正規（ガウス）分布に従うような雑音である（観測雑音 (observation noise) ）。これが観測方程式である。 v k ∼ N ( 0 , R k ) {\displaystyle {\boldsymbol {v}}_{k}\sim N(0,R_{k})} システムの初期条件と雑音 { x 0 , w 1 , . . . , w k , v 1 , . . . , v k } {\displaystyle \{{\boldsymbol {x}}_{0},{\boldsymbol {w}}_{1},...,{\boldsymbol {w}}_{k},{\boldsymbol {v}}_{1},...,{\boldsymbol {v}}_{k}\}} は、互いに統計的に独立であると仮定する。 状態方程式と観測方程式を合わせて、状態空間モデルという。上記の状態空間モデルは時変システムを表現しているが、限定的な場合として添字が k {\displaystyle k} の行列を定数と考えることにより、時不変システム (time-invariant) を表現できる。 多くの実動的システムでは、上記のような状態空間モデルは厳密には適合しないが、カルマンフィルターは雑音の影響を加味した上で設計されているがゆえに、上記のモデルが対象システムに近似的に適合するものと考えられ、これが理由でカルマンフィルターは十分な有用性が認められている。カルマンフィルターは洗練された様々な拡張がなされており、それは以降に述べられる。 カルマンフィルターは、システム（系）の現在の観測量と 1 ステップ前の状態推定値のみから（モデルが制御入力を受ける場合には現在の入力値も用いて）、現在の状態推定値（ろ波推定値）と 1 ステップ先の状態予測値（ 1 段予測値）を与える、反復推定器（反復推定型フィルター）である。例えばローパスフィルターなどの多くのフィルターが周波数領域で設計され、時間領域へ変換されて実演される中で、カルマンフィルターは純粋に時間領域でのみ設計されるフィルターで、その意味で特異な存在であるといえる。カルマンフィルターは基本的に線形なクラスのフィルターであり、システム（系）が無限の過去から駆動し続けていると仮定すると、状態の推定値は、それまでにシステム（系）から観測された観測値の全て（システム（系）が制御入力を受ける場合は入力値の全ても含めて）を用いた線形結合の形で表現される。その意味で、カルマンフィルターは無限インパルス応答フィルターであると解釈できる。反復推定との対応関係は、1 ステップ前の状態推定値が 1 ステップ前までの全ての観測値（入力値も含め）の情報を線形結合の形で保有しているという事実により与えられる。 以降、 x