カルマンフィルタ
誤差が正規分布であると考えられるときに現在の状態と誤差分布を求めることができる. ここでは構成法にのみ注目する. 詳しい解説についてはWikipediaか関連書籍を読むとよい.
利用するために必要な定式化
とりあえず決めなければならないことは, 状態ベクトル と計測ベクトル の構成である.
それができたら,状態方程式を構成する.
は入力ベクトル,は誤差ベクトルである. だが,ここで注目すべきはは誤差項なので計算に直接は関わらないこと. 決めなければいけないのはの共分散行列である.
i.e. はの誤差共分散行列.
次に計測方程式を構成する. 現在の状態から計測値を求めるということに注意.単なる推定の逆になっている. ここでもは誤差項なので決めなくてよい. の共分散行列を決める.
i.e. はの誤差共分散行列.
まとめると,カルマンフィルタでするべきことは,
- とを決める.ついでにも決める.
- との関係からを決める.
- との関係からを決める.
- との関係からを決める.
- の構成要素からを決める.
- の構成要素からを決める.
肝はとをどう決めるかである. 適当な値を入れても計算はできるが簡単に発散する. むやみに小さな値を入れても発散する. うまいこと調整するといい.
アルゴリズム
一時刻前の状態を ,共分散をとすると,
拡張カルマンフィルタ
カルマンフィルタはすべてが線形でないと構成できない. 拡張カルマンフィルタは線形化を施すことで非線形に拡張したもの.
利用するために必要な定式化
まずは状態方程式と計測方程式を立てる.カルマンが非線形なだけだから問題ないはず. すなわち状態方程式と計測方程式はそれぞれ次のようになる.
ここで問題なのは状態関数と計測関数のヤコビアンを求める必要があること. 場合によっては超難しいが高校数学を駆使すればできなくもない. あとはMathematicaを使おう.ただし最初から使うと泥沼化しかねないので注意.
拡張カルマンフィルタですべきことは,
- 基本的にはカルマンのときと一緒だが,
- の代わりにを決める.
- の代わりにを決める.
- のに関するヤコビアンを求める.
- のに関するヤコビアンを求める.
アルゴリズム
カルマンフィルタの一部をに直しただけ.
補足
- カルマンフィルタ,拡張カルマンフィルタは長いのでKF,EKFと略されることが多い.
- 誤差が正規分布にのっとらない場合は素直にパーティクルフィルタを使おう.
参考文献
- Thrun et. al.: "確率ロボティクス" , 毎日コミュニケーションズ , 2007.