Joan Solà の論文を参考に、ドローンの自己位置推定を実装する。
Joan Solà, Quaternion kinematics for the error-state Kalman filter
東京大学 航空宇宙工学専攻 土屋研究室の方々による和訳版もある。
Joan Solá著”Quaternion kinematics for the error-state Kalman filter”の日本語翻訳の公開について | 土屋研究室 -東京大学
論文では加速度と角速度を操作量として扱っているが、本稿では状態量として扱っている点に注意されたい。
カルマンフィルタの基礎
- 状態方程式: x = Fx + Gw,
- : 状態
- : 状態の共分散行列
- : 状態遷移モデル
- : ホワイトノイズ
- : ホワイトノイズの共分散行列
- : ノイズモデル
- 観測方程式: ,
- : 観測値
- : 観測行列
- : 観測ノイズ
- : 観測ノイズの共分散行列
予測
現在 の推定値から次の時刻 の推定値は、状態方程式から単純に推定される。
しかし、推定値には真値との誤差があり、推定によって誤差は増大する。
第一項は現在の推定値の誤差による分散で、第二項はプロセスノイズによる分散である。
直感的にわかるように、予測だけのよって状態を推定していては、分散は次々と増大する。
そこで、観測によって推定状態を補正する。
観測
センサ値 が計測された。この値を基に、状態の推定値を補正する。
観測残差を求める。
観測値と、予測されていた観測値の差を表している。
観測残差の分散を求める。
第一項はセンサのノイズに起因する分散で、第二項は予測誤差に起因する分散である。
カルマンゲインを求める。
観測値がどの程度信頼できるかを表している。
更新
カルマンゲインを使って、状態の推定値と、推定値の分散を更新する。
予測値と観測値の「加重平均」をとることで、最も確からしい状態の推定値が得られる。
誤差状態カルマンフィルタ
状態方程式
真の状態 に対する状態方程式を とする。
誤差状態カルマンフィルタでは、真の状態 をノミナル状態 と誤差状態 に分解する。
ここで演算子 は、状態の「自然な足し算」を表す。具体的には、位置に対しては並進(ベクトルの加算)を、姿勢に対しては回転(回転群の積)を意味する。
状態方程式も、ノミナル状態方程式と誤差状態方程式に分解する。
ノミナル状態方程式は、真の状態方程式と同じである。
誤差状態方程式は、ノミナル状態と真の状態の差分である。
誤差状態方程式は、 とみなして線形化できる。
観測方程式
誤差状態カルマンフィルタでは、観測をもとに誤差状態を補正する。
これは連鎖律から求めることができる。
は観測方程式次第、つまりセンサ次第だが、 はモデルの状態ベクトルから自動的に定まる。
状態方程式
| 状態 | ||||
|---|---|---|---|---|
| 位置 | ||||
| 姿勢 | ||||
| 速度 | ||||
| 加速度 | ||||
| 加速度センサバイアス | ||||
| 角速度 | ||||
| 角速度センサバイアス |
ヤコビアン
観測方程式
各種センサをカルマンフィルタで使う方法
IMU
加速度の計測値 = 機体の加速度 + 重力加速度 + バイアス + ノイズ
角速度の計測値 = 機体の角速度 + バイアス + ノイズ
GPS
位置:緯度・経度・高度
速度:NED座標系での速度
姿勢:
カメラオドメトリ
速度・角速度:前のフレームから現在のフレームへの移動量を、機体座標系で出してきます