SLAMのお勉強②−1 ~GMapping vs Google Cartographer

下記のエントリで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つに分かれていて,下記からダウンロードできます.

アルゴコア

github.com

ROSラッパー

github.com

実行結果

下記,今年のつくばチャレンジ確認コースに対してGMappingを使ってマッピングした様子です.
youtu.be

Google Cartographer

もうひとつはGoogleのチームが開発・保守しているCartographerです.

論文

Real-Time Loop Closure in 2D LIDAR SLAM
著者:Wolfgang Hess, Damon Kohler, Holger Rapp, Daniel Andor

実装

こちらもソースコードを下記からてにいれます.

アルゴコア

github.com

ROSラッパー

github.com

実行結果

下記,今年のつくばチャレンジ確認コースに対してCartographerを使ってマッピングした様子です.
youtu.be


う〜ん.Cartographerのほうが正しくマッピングできるはずなんですが,GMappingのほうがこのデータに関しては綺麗にマッピングできました.おそらく,毎サイクルLidarのデータをつかって最適化計算しているので,ロボットに対するLidarの設置位置精度がかなりシビアなのと,路面の傾きがあるとよろしくないのかと思います.

ということで,ここからは両方のアルゴリズムに関して技術的詳細に突っ込んでいきます.