カルマンフィルター
p ( z k | Z k − 1 ) = ∫ p ( z k | x k ) p ( x k | Z k − 1 ) d x k {\displaystyle p({\boldsymbol {z}}_{k}|{\boldsymbol {Z}}_{k-1})=\int p({\boldsymbol {z}}_{k}|{\boldsymbol {x}}_{k})p({\boldsymbol {x}}_{k}|{\boldsymbol {Z}}_{k-1})d{\boldsymbol {x}}_{k}}
は、全確率を 1 にするための因子であまり重要ではない。
他の確率分布関数も
p ( x k | x k − 1 ) = N ( F k x k − 1 , G k Q k G k T ) {\displaystyle p({\boldsymbol {x}}_{k}|{\boldsymbol {x}}_{k-1})=N(F_{k}{\boldsymbol {x}}_{k-1},G_{k}Q_{k}G_{k}^{\textrm {T}})}
p ( z k | x k ) = N ( H k x k , R k ) {\displaystyle p({\boldsymbol {z}}_{k}|{\boldsymbol {x}}_{k})=N(H_{k}{\boldsymbol {x}}_{k},R_{k})}
p ( x k − 1 | Z k − 1 ) = N ( x ^ k − 1 , P k − 1 ) {\displaystyle p({\boldsymbol {x}}_{k-1}|{\boldsymbol {Z}}_{k-1})=N({\hat {\boldsymbol {x}}}_{k-1},P_{k-1})}
と書ける。
カルマンフィルターは最小平均二乗誤差(minimum mean-square error: MMSE)推定値を与える。すなわち、更新後の誤差の推定値は
x k − x ^ k | k {\displaystyle {\boldsymbol {x}}_{k}-{\hat {\boldsymbol {x}}}_{k|k}}
であり、このベクトルの大きさの二乗の期待値 E ( | x k − x ^ k | k | 2 ) {\displaystyle \mathrm {E} (|{\boldsymbol {x}}_{k}-{\hat {\boldsymbol {x}}}_{k|k}|^{2})} を最小にするような推定値を与える。これは、更新後の共分散 Pk|k のトレースを最小とすることと同じである。上の式を展開して、
MMSE を導くゲインは、Pk|kのトレースを最小にするから、 必要条件として、Kkによる行列微分は下記が成立しなければならない。
x k | k − 1 a = [ x ^ k | k − 1 T E ( v k T ) ] T {\displaystyle {\boldsymbol {x}}_{k|k-1}^{a}=[{\hat {\boldsymbol {x}}}_{k|k-1}^{\textrm {T}}\quad \mathrm {E} ({\boldsymbol {v}}_{k}^{\textrm {T}})\ ]^{\textrm {T}}}
P k | k − 1 a = [ P k | k − 1 0 0 R k ] {\displaystyle P_{k|k-1}^{a}={\begin{bmatrix}&P_{k|k-1}&&0&\\&0&&R_{k}&\end{bmatrix}}}
シグマ点 2L+1 個は、付け加えた項から計算される。ここに L は付け加えた状態項の次元である。
もし、予測手続きも unscented カルマンフィルターで行われていたならば、以下のような変形も可能である。
χ k | k − 1 := [ χ k | k − 1 E ( v k T ) ] T ± ( L + λ ) R k a {\displaystyle \chi _{k|k-1}:=[\chi _{k|k-1}\quad \mathrm {E} ({\boldsymbol {v}}_{k}^{\textrm {T}})\ ]^{\textrm {T}}\pm {\sqrt {(L+\lambda )R_{k}^{a}}}}
ここに、
このフィルターはルドルフ・カルマンによって提唱されたが、同様の原理はトルバルド・ティエレとピーター・スワーリングによってすでに開発されていた。カルマンがアメリカ航空宇宙局のエイムズ研究センターを訪問した際、この理論がロケットの軌道推定に有用なことに気づき、のちのアポロ計画で用いられた。
ここまでは線形の仮定が成り立つ系をとりあつかってきたが、実際の系の多くは非線形である。時間発展モデルも観測モデルもどちらも非線形になりうる。
カルマンフィルターは、システム(系)の現在の観測量と 1 ステップ前の状態推定値のみから(モデルが制御入力を受ける場合には現在の入力値も用いて)、現在の状態推定値(ろ波推定値)と 1 ステップ先の状態予測値( 1 段予測値)を与える、反復推定器(反復推定型フィルター)である。例えばローパスフィルターなどの多くのフィルターが周波数領域で設計され、時間領域へ変換されて実演される中で、カルマンフィルターは純粋に時間領域でのみ設計されるフィルターで、その意味で特異な存在であるといえる。カルマンフィルターは基本的に線形なクラスのフィルターであり、システム(系)が無限の過去から駆動し続けていると仮定すると、状態の推定値は、それまでにシステム(系)から観測された観測値の全て(システム(系)が制御入力を受ける場合は入力値の全ても含めて)を用いた線形結合の形で表現される。その意味で、カルマンフィルターは無限インパルス応答フィルターであると解釈できる。
Λ ~ k = C ~ k Λ ~ k + 1 C ~ k T + H k T S k − 1 H k {\displaystyle {\tilde {\Lambda }}_{k}={\tilde {C}}_{k}{\tilde {\Lambda }}_{k+1}{{\tilde {C}}_{k}}^{\mathrm {T} }+{H_{k}}^{\mathrm {T} }{S_{k}}^{-1}H_{k}}
C ~ k ≜ ( I − K k H k ) T F k + 1 T {\displaystyle {\tilde {C}}_{k}\triangleq \left(\mathrm {I} -K_{k}H_{k}\right)^{\mathrm {T} }{F_{k+1}}^{\mathrm {T} }}
λ ~ k ≜ P k | k − 1 − 1 λ k {\displaystyle {\tilde {\boldsymbol {\lambda }}}_{k}\triangleq {P_{k|k-1}}^{-1}{\boldsymbol {\lambda }}_{k}}
Λ ~ k ≜ P k | k − 1 − 1 Λ k P k | k − 1 − 1 {\displaystyle {\tilde {\Lambda }}_{k}\triangleq {P_{k|k-1}}^{-1}\Lambda _{k}{P_{k|k-1}}^{-1}}