Visual Odometry @ 大清水公園

前回の投稿から、ほぼほぼ一ヶ月。。。ちょっとサボり気味になってしまいました。。。
7/8の試走会に向けて、大清水公園のマップ作成をしていました。車輪速センサで生成したオドメトリをベースにZEDとSGBMで生成した測距データを二次元に投影することでOGMを
作ろうとしていたんですが、車輪速センサベースのオドメトリだとどうしてもドリフトの影響が大きくなってしまい、耐えられませんでした。

ということで、
1. Visual Odometry でオドメトリを生成し、そのデータをベースにOGMを作成する。
2. 1で精度が足りてない場合、バンドル調整やSLAMを使う。

という2つのアプローチでマップの精度改善に取り組むことに決めたのですが、Visual Odometryが当初思っていたより難しく、ちょっと時間がかかってしまいました。
ベースとなるコードは下記のリンクで、(OpenCV, FAST Feature, Optical Flow Tracking)ソースコードもシンプルだったので簡単に作れるかと思っていたのですが、
E行列の推定にカメラの位置移動が必要で(単純回転だと方程式が退化してしまう。)あることを知らずにずっとハマってました。

Avi Singh's blog

結果としては下記の通りで、緑線が車輪速センサベースの自己位置推定結果、赤線がVisual Odometryの自己位置推定結果でドリフトの影響が取りのぞけました。
明日からは赤線をベースにステレオの測距データを投影します。試走会一回目(7/8)まであと2週間。。。ちょっと自律走行させるとこまでは間に合わなさそうですが。。。
諦めずがんばります。。。

f:id:rkoichi2001:20170626073302p:plain