下記のエントリでSLAMの勉強をしているという話をしましたが,論文&本読みだけだとなかなか具体的なイメージが湧いてこないので,ソースコード も引っ張ってきて勉強することにしました.で,題材には下記の2つを使おうと思います.
daily-tech.hatenablog.com
GMapping
皆様ご存知,ROSのデフォルトマッピング アルゴリズム として使われているGMappingです.実装のベースとなる論文は,,,,
論文
Improving Grid-based SLAM with Rao-Blackwellized Particle Filters by Adaptive Proposals and Selective Resampling
著者:Giorgio Grisetti, Cyrill Stachniss, Wolfram Burgard
実装
で,ROSのコンパイル 済パッケージとして使っている人がほとんどだと思うんですが,コンパイル 済のバイナリでは何も勉強できないので,ソースコード をてにいれる必要があります.実装はROSのラッパー部分とアルゴコアの2つに分かれていて,下記からダウンロードできます.
実行結果
下記,今年のつくばチャレンジ確認コースに対してGMappingを使ってマッピング した様子です.
VIDEO youtu.be
Google Cartographer
もうひとつはGoogle のチームが開発・保守しているCartographerです.
論文
Real-Time Loop Closure in 2D LIDAR SLAM
著者:Wolfgang Hess, Damon Kohler, Holger Rapp, Daniel Andor
実装
こちらもソースコード を下記からてにいれます.
実行結果
下記,今年のつくばチャレンジ確認コースに対してCartographerを使ってマッピング した様子です.
VIDEO youtu.be
う〜ん.Cartographerのほうが正しくマッピング できるはずなんですが,GMappingのほうがこのデータに関しては綺麗にマッピング できました.おそらく,毎サイクルLidarのデータをつかって最適化計算しているので,ロボットに対するLidarの設置位置精度がかなりシビアなのと,路面の傾きがあるとよろしくないのかと思います.
ということで,ここからは両方のアルゴリズム に関して技術的詳細に突っ込んでいきます.