カルマンフィルタの気持ちをわかるために
仕事で教える必要が出てきたので、カルマンフィルタの勉強をしています。目標は SLAM (Simultaneous Localization And Mapping) を理解してチューニングしながら使うことです。
実は、カルマンフィルタがちゃんと理解出来れば、SLAM は80%ぐらいは理解したことになりますが、カルマンフィルタをちゃんと理解するのが結構難しい。
「何が分からないのか」と聴くと、「何をやっているのか分からない」という答えが返ってきます。
カルマンフィルタが分からない理由は、いくつかあるような気がしています。
- いきなりイノベーションとかカルマンゲインとか言われてもわけがわからない。
- それぞれの変数が、確率変数なのか、観測なのか、真の値なのかわからない。
- 「不確実性を伝搬する」という気持ちがわからない。
- 行列の微分が分からない。
- なまじ理解しなくてもとりあえず使えるので、理解する必要が無い。
ロボット位置の「ぼんやりとした情報」 $\bar{x}$ と、観測 $y$
別々の情報源を合成する
カルマンゲイン $K$ の決定方法
としてみましょう。もし $\sigma_y^2$ に対して $\sigma_x^2$ が大きい(=観測のほうが信頼できる)ならば、$K$ は大きくなり、推定値は $y$ に近くなります。
誤差分散の最小二乗基準
$K$ の決め方は、まだあります。その一つが「最終的な予測の誤差の分散を最小化する」という基準です。つまり、情報を統合した後の「不確実性=分散」が最小になるように $K$ を調整するという方法です。
そんなことがどうやったら可能なのでしょうか。ここは、ノートにちゃんと式を書いて考えながらやってください。
$ \bar{x}^\prime = (1-K) \bar{x} + K y$
これが カルマンゲイン $K$ の気持ちでした。つまり、$\bar{x}^\prime$ (情報を統合したあとの予測)は、$\bar{x}$ と $y$ との信頼度を元に決まる、というものです。今、真の値は $x$ ですので、予測値 $\bar{x}^\prime$ との誤差は、
$ \bar{x}^\prime –x = (1-K) \bar{x} + Ky -x$
です。今、$y=x+w_y$ だったことを思い出すと、
$ \bar{x}^\prime –x = (1-K) (\bar{x}-x) + Kw_y$
になります。この分散を計算するには、少し確率変数の知識が必要ですが、$\bar{x}$ と$w_y$ は独立ですので、右辺の分散は単に足し算になって、
$ \mathbb V[ \bar{x}^\prime –x ] = (1-K)^2 \mathbb V[\bar{x}-x] + K^2 \mathbb V[w_y]$
です。$\mathbb V[\cdot]$ は、分散を表します。$\bar{x}$ の分散は $\sigma_x^2$, $w_y$ の分散は $\sigma_y^2$ でした。左辺を ${\sigma_x^2}^\prime$と書くことにすると
${\sigma_x^2}^\prime = (1-K)^2 \sigma_x^2 + K^2 \sigma_y^2$
となります。今やりたいのは左辺の分散を最小にすることですので、右辺を $K$ で微分してゼロと置くと・・・
$ \displaystyle K_{optimal} = \frac{\sigma_x^2}{\sigma_x^2 + \sigma_y^2} $
先ほどと全く同じカルマンゲインが出てきました。これが、「最適カルマンゲイン」と呼ばれるものです。
最適カルマンゲインを使った予測値
この最適カルマンゲインを使った予測値は、今までの式を使って
$ \displaystyle \mathbb E[\bar{x}^\prime] = \frac{ \sigma_y^2 \mathbb E[\bar{x}] + \sigma_x^2 y}{\sigma_x^2 + \sigma_y^2}= \frac{ \sigma_y^2 \mu_x+ \sigma_x^2 y}{\sigma_x^2 + \sigma_y^2}$
となります。式を見ると、見事に $\bar{x}$ と $y$ の信頼度に応じて、値が調整されるようになっています。$\sigma_y^2$ が小さい場合は?またその逆の場合は?等を考えてみてください。
また、予測値の分散は、
$\displaystyle {\sigma_x^2}^\prime = \frac{\sigma_x^2\sigma_y^2}{\sigma_x^2 + \sigma_y^2} \leq \sigma_x^2 $
で、$\bar{x}$, $y$ のそれぞれの分散よりもより小さくなっています。これは、2つの情報を統合したことで、より信頼性の高い情報になった、ということを示しています。
SLAMの理解に向けて
カルマンフィルタのコアであるカルマンゲインの気持ちと、その導出方法(天下り的なものと、誤差の分散の最小化)を説明しました。
カルマンフィルタの基本的なアイデアはこれだけです。これに加え、普通は
- プロセスノイズが加わる場合
- 多次元の場合
- 非線形の場合 (Extended Kalman Filter, Unscented Kalman Filter)
とカルマンフィルタの講座は進みますが、今回は SLAM を理解するのが目的です。SLAM の本質は
- 観測が相対的に与えられること
- 予測するものが、マップとロボットの位置の2つあること
です(僕はそう思ってます)。上で説明したカルマンフィルタに加わる要素はこれだけで、カルマンゲインもマップとロボットで2つ出てきますが、ほとんど同じ条件で最適カルマンゲインを求めることが可能です。
No comments:
Post a Comment