カルマンフィルタの基礎

書籍情報

はじめに

信号処理でカルマンフィルタは多くの場面で活用できるので,気になる部分を抜粋する.

フィルタとは

カルマンフィルタは,フィルタリング理論の1種である.1940年代,コルモゴロフとウィナーらが提案した定常時系列を扱う古典的なフィルタリング問題と,カルマンが提案した,状態空間表現を使った,状態推定問題を提案した.

古典的なフィルタリング問題とは,

測定された時系列データの中から,信号成分だけを通し,雑音成分を除去する仕組み(アルゴリズム)を見つけること.ただし,その時刻までの時系列データを用いて信号処理を行う.

カルマンのフィルタリング問題とは,

現時刻までに測定可能な量である時系列データと,場合によっては入力も用いて,ダイナミクスを規定する状態変数の値を推定すること.

また,別の項では,

時系列データy(k)に基づいて,状態x(k)の平均二乗誤差(MSE: Mean Square Error)の最小値を与える推定値,すなわち最小平均二乗誤差推定値(MMSE: Minimum Mean Square Error)を見つけること.

とある.

時系列に対するカルマンフィルタ

カルマンフィルタ問題を記述する上で必要な2つの量を定義する.

  • 事前推定値 (a priori estimate) : \hat{x}^-(k) = \hat{x}(k|k-1)

    時刻k-1までに利用可能なデータに基づいた,時刻kにおけるxの予測推定値を意味する.事前推定値を求める処理を,予測ステップと呼ぶ.

  • 事後推定値 (a posteriori estimate) : \hat{x}(k) = \hat{x}(k|k)

    時刻kまでに利用可能なデータ,すなわちy(k)も用いたxのフィルタリング推定値であり,これが時刻kにおいて求めるべき推定値である.事後推定値を求める処理を,フィルタリングステップと呼ぶ.

参照した書籍には,各ステップを分かり易い図で表しているが,簡易的に記号だけでメモしておく.

  • 予測ステップ

    • 状態推定値 : \hat{x}(k-1) \rightarrow \hat{x}^-(k)
    • 共分散行列 : P(k-1) \rightarrow P^-(k)
  • フィルタリングステップ

    • 状態推定値 : \hat{x}^-(k) + y(k) \rightarrow \hat{x}(k)
    • 共分散行列 : P^-(k) \rightarrow P(k)

線型予測器の構成

線型カルマンフィルタを前提に,最小二乗推定法と同様な,線型予測器によるフィルタリングのモデル化を行っている.

\hat{x}(k) = G(k)\hat{x}^-(k) + g(k)y(k)

上記は,以下の意味を持つ,

事後推定値 = G(k)・事前推定値 + g(k)・最新の観測値

g(k)は,カルマンゲインと呼ばれ,カルマンゲイン,事後推定値,事前推定値,出力予測誤差の関係は,以下の意味を持つ,

事後推定値 = 事前推定値 + カルマンゲイン・出力予測誤差

出力予測誤差とは,\tilde{y}(k) = y(k) - \hat{y}^-(k) で表され,最新の観測地と事前予測値の差である.

カルマンゲインの決定

事前共分散行列P^-(k)を導入して,下記の式で得られる.

\displaystyle g(k) = \frac{P^-(k) c}{c^{T} P^-(k) c + \sigma^{2}_{w}}

分母はスカラー値なので,ばらつきが大きいほど事前共分散行列の成分を小さくするので,観測値の影響が小さくなり,フィードバックを受けにくくなる.

共分散行列の更新

共分散行列の更新は,予測ステップと,フィルタリングステップで各々,事前共分散行列の更新,事後共分散行列の更新を行う.

  • 予測ステップでの共分散行列の更新

    P^-(k) = AP(k-1)A^{T} + \sigma^{2}_{v} b b^{T}

  • フィルタリングステップでの共分散行列の更新

    P(k) = (I - g(k)c^{T}) P^-(k)

カルマンフィルタのアルゴリズム

  • 予測ステップ

    • 事前状態推定値:

      \hat{x}^-(k) = A\hat{x}(k-1)

    • 事前誤差共分散行列:

      P^-(k) = AP(k-1)A^{T} + \sigma^{2}_{v} b b^{T}

  • フィルタリングステップ

    • カルマンゲイン:

      \displaystyle g(k) = \frac{P^-(k) c}{c^{T} P^-(k) c + \sigma^{2}_{w}}

    • 状態推定値:

      \hat{x} = \hat{x}^{-}(k) + g(k)(y(k) - c^{T} \hat{x}^{-}(k))

    • 事後誤差共分散行列:

      P(k) = (I - g(k)c^{T}) P^-(k)