【論文】Google Cartographerの論文【ICRA2016】
目次
はじめに
こんにちは.ササキ(@saitosasaki)です.
私は以前Google Cartographer(OSS中でおそらく一番性能の良いグラフベースSLAM)の論文を読んだことがあったので復習のため、(かつどこにも解説スライドや記事が上がってなさそうなので)、まとめをブログに挙げます。
Github
github.com
論文
Real-Time Loop Closure in 2D LIDAR SLAM
予備知識
下記の解説論文を読めば、Cartographerの基礎となるgraph-based slamのことがわかると思います。
移動ロボットの環境認識 —地図構築と自己位置推定 - J-Stage
論文
概要
- 背景と課題
LIDAR-SLAMは、間取り図を取得する効率的な方法である。 地図をリアルタイムで生成して可視化することで、オペレータはキャプチャデータの品質とカバレッジを評価できる。 携帯型キャプチャプラットフォームを構築するには、限られた計算リソースの下で動作する必要がある。 - 提案手法
本論文では、5 cmの解像度でリアルタイムマッピングとループクロージャを実現するアプローチを紹介する。 リアルタイムなループクロージャを達成するために、制約としてスキャン対サブマップの一致を計算するための分岐限定(branch-and-bound)法を使用する。 - 実験
確立された技術と競合することを示すために、提案手法と他のよく知られたアプローチと比較する。
スライド
今回のまとめはスライド形式にしてみました(というか結構前に自分が作ったのを修正しただけなのですが)。 speakerdeck.com
おわりに
スライドでまとめると、論文の直訳ではなく、自分の言葉で書く必要があるので、作るとより理解できてる気がします。発表するにはもうちょいスライドの内容を間引く必要がありますね。あともっとオリジナルの図を入れてわかりやくしたいですね。反省。
実験結果はオーソドックスで特筆することも無さ気なので書いてません。書いたほうがいいんですかね?
表現にいろいろ怒られそうなところはありますが、そのうち直します。…たぶん。
参考にした資料
- 移動ロボットの環境認識 —地図構築と自己位置推定 - J-Stage
- Sparse Pose Adjustment for 2D Mapping,IROS 2010
- B.2.3 分枝限定法 - 株式会社NTTデータ数理システム
- ロボティクスにおける対数オッズについて - MyEnigma
- 自律移動ロボットのためのグリッドマップ作成MATLAB, Pythonサンプルプログラム - MyEnigma
- clamp - cpprefjp C++日本語リファレンス
- Levenberg–Marquardt algorithm - Wikipedia
論文と実装で変更された点
ほんとは別記事で書きたいのですが,とりあえずここに書いときます.
- コスト関数
実装におけるコスト関数.
google-cartographer.readthedocs.io
- sparseという言葉の取り扱い
論文だとグラフがspaerseなのを押し出していて,プログラムの初期のpose graphのプログラム名をsparse_pose_graph としていました.しかし,下記のissueで「pose graphはsparseなグラフなんだからsparseなんてつけるのはpoorだ」と言われて,作成者の方は最初こそ抵抗したものの,結局プログラムや関数名からsparseという言葉は無くなっています.