自己位置推定
自己位置推定したい
自己位置推定
ロボットの自分の位置を推定する技術
SLAMは地図を作製しながら自己位置を推定する技術であるが、以下のような理由により、自己位置推定だけ行うことが好ましいと考えている
- ロボコンのフィールドは予め公表されているため、地図を作成する必要はない
- ロボットが、かなり高速で移動するため、地図を作成できない 様々なセンサを融合することで位置を推定する
センサは2種類に分けられる
内界センサ
- IMU(ジャイロセンサと加速度センサ)やオドメーター(計測輪とエンコーダー)、GPSなどはロボット本体の情報を計測するため、内界センサと呼ばれる
外界センサ
- カメラやLiDAR、超音波センサなどは外界の情報を取得するため、外界センサと呼ばれる
カルマンフィルタ(Kalman Filter)
Kalman Filter(KF)の目的は'''複数の情報を統合し、より精度の高い推定値を計算すること'''にある
カルマンフィルタの概要を知るには[https://www.youtube.com/embed/zVAq_3HClGs '''裏口からのカルマンフィルタ入門''']がわかりやすい
カルマンフィルタについてお勉強したい人は[https://inzkyk.xyz/kalman_filter/ '''Python で学ぶベイズフィルタとカルマンフィルタ''']がおすすめ
カルマンフィルタはかなり完璧な理論であるにもかかわらず、ただ実装して使用してもうまくいかない場合がある
これには以下のような仮定から離れてしまうからである
- 「モデルは線形である」
- 「センサ値に遅延がない」
- 「センサノイズは白色ガウス分布である」
- 「外れ値はない」
●線形化
扱うモデルが線形ではない場合は通常のKFは適用できない
Extended KFやUnscented KF, Particle Filterなどを使用すれば非線形も扱える
とはいえ、ただ近似しているだけである
Extended KFはオイラー法、Unscented KFはUnscented変換を用いることで線形近似を行っている
Particle Filterはモンテカルロ法によって乱数近似を行っている
●遅延補償
センサ値の取得時間や計算時間の遅延を補償する必要がある
Augmented EKFやAugmented UKFなどを使用すれば遅延を考慮できる
Augmented KFは、推定する要素を拡張することで同時推定する
時間方向に拡張することで遅延を考慮できるようになる
また高速で移動する場合、LiDARのように1度に全データを持ってこれない場合は、全点群の取得時間の差が問題となる
これは、点群の距離と取得時間をうまく使うことで補償する必要がある

●ノイズ推定
温度変化やフィールド環境、タイヤのすれ具合などの推定しにくいノイズが問題になる場合もある
外乱オブザーバーのような動的な補償をかけてあげることで、予測不能なノイズに対応する必要がある
●外れ値除去
KFなどは確率的自己位置推定であり、確率論をもとにあくまでも未来を推定する技術であるため、外れ値などの外乱は大きな問題となる
外乱を取り除く方法はいくつかあるが、TIER Ⅳではマハラノビス距離の信頼区間に閾値を設けるなどして外れ値を取り除いているらしい
数値積分
カルマンフィルタのモデルの近似などは数値積分を使用する
そもそも、ロボットなどの現実物体について考える場合は、学校でおべんきょしてきたような解析的な解法は使用できない場合が多い
離散的にしか観測できないからである
身近なところでいえば、PIDのI制御なども数値積分である
数値積分には様々な種類がある
- オイラー法
- モンテカルロ法
- ルンゲ・クッタ法
- アダムス・バッシュフォース法
- アダムス・モルトン法 ほかにも、ルンゲクッタの亜種は数えきれないほど存在する
基本的には微分方程式を数値的に解く方法として研究されている
オイラー法
参考
[1] TIER Ⅳ Tech Blog https://tech.tier4.jp/entry/2021/08/04/160000