状態方程式と観測方程式が次のように与えられているとき
(状態方程式)線形カルマンフィルタ(LKF; Linear Kalman Filter)は μt, Σt, ut, yt+1 を入力として、 μt+1, Σt+1を出力する。1ステップのプロセスは以下のとおり。
(観測方程式)
(ノイズ)
(フィルタ分布)
# prediction
(現在の推定値)# update
(現在の誤差行列)
(観測残差)観測を得るごとにPredictionとUpdateを繰り返すことで、現在の状態を推定します。
(観測残差の共分散)
(最適カルマンゲイン)
(更新された現在の推定値)
(更新された現在の誤差行列)
導出は後述(予定)。
例題を。
2次元座標において、あるロボットがt=0に原点を出発して、速度(2,2)で動くとする。ロボットの進路は風などの影響を受け(σx=σy=1)、毎秒ごとに観測できるGPSによる位置座標には計測誤差(σx=σy=2)があるとする。このとき、観測された軌跡から実際の軌跡を推定する。係数は
初期値は
コードは以下。要SciPy。(やってる事自体はSciPyは必須ではないのだけど。)
実行結果は下図。
観測に対してカルマンフィルタによる推定値が、実際の軌跡に近いことがわかります。
No comments:
Post a Comment