RTAB-Map
Labbé 2019 · 論文
一行要約 — RGB-D、ステレオ、LiDARをサポートするメモリ管理型・マルチセンサ対応のオープンソースSLAMライブラリであり、境界時間内で動作するループクロージング検出により大規模、長期、マルチセッション運用を可能にする。
問題
長時間のSLAMは常に増大する地図を蓄積し、保存されたすべての場所を走査するループクロージング検索もそれに伴って増大する — 最終的にはリアルタイム制約に違反する。数時間、数日、あるいは複数セッションにわたって動作するロボットにとって、ループクロージングは探索期間に関係なく境界された時間内で動作しなければならない。それとは別に、実世界のロボットは多様なセンサ構成を搭載している(屋外向けのステレオ、屋内向けのRGB-D、2D/3D LiDAR、車輪オドメトリ)が、ほとんどの研究システムは単一の構成のみをサポートし、カメラのみまたはLiDARのみのデータセットでベンチマークされていたため、視覚とLiDARの比較 — さらには実運用への展開 — は困難であった。
手法とアーキテクチャ
RTAB-Mapは、オドメトリを外部の置き換え可能な入力として扱うグラフベースのSLAMノードである。地図はグラフであり、各ノードはオドメトリポーズ、圧縮された生のセンサデータ、視覚単語、局所占有格子を固定検出レートで生成して保存する。リンク(近傍、ループクロージング、近接)はグラフ最適化を制約する剛体変換を保持する。
- 差し替え可能なオドメトリフロントエンド: 組み込みの視覚オドメトリはFrame-To-Frame(F2F)またはFrame-To-Map(F2M)で動作する。GFTT特徴(BRIEF記述子、F2Mでは最近傍距離比マッチング、F2Fではオプティカルフロー)、探索窓を絞るための等速運動予測、PnP RANSACによる動き推定、その後の局所バンドル調整。LiDARオドメトリはlibpointmatcherを介したScan-To-ScanまたはScan-To-Map ICP(点対点または点対平面)で動作する。外部ソース(車輪、VIO、ORB-SLAM2のトラッカー、LOAM)も同様に接続でき、複数の残差を1つの推定に融合することができる(書籍的な定式化):
- STM → WM → LTMのメモリ管理: 新しいノードは短期記憶(Short-Term Memory)バッファに入り、その後固定サイズの作業記憶(Working Memory、WM)に入る。ループクロージング検索に参加するのはWMのみであるため、検出コストは地図全体のサイズに関係なく となる。リハーサル機構はノードに重みを付け(視覚的に類似した連続ノードはそのノードの重みを増加させる)、更新時間が固定閾値を超えると、最も古く最も重みの低いWMノードが長期記憶(Long-Term Memory、LTM)に転送され、ループクロージングによってある場所のグラフ近傍がLTMからWMに戻される。
- ベイズ的な見え方ベースのループクロージング: 特徴はインクリメンタルなbag-of-wordsボキャブラリに量子化される。tf-idf尤度が、現在のノードがWM内の場所を再訪しているのか、新しい場所であるのかを推定するベイズフィルタを更新する。仮説が閾値を超えると、変換は視覚オドメトリと同じPnP動き推定で計算され、スキャンが利用できる場合はICPで洗練される。
- 近接検出: グラフ上で近いノード(探索深さが限定されているため、計算量は有界に保たれる)はICPスキャン整合によってマッチングされる — これは、カメラがループを閉じられない状況、たとえば通路を逆方向に走行している際の位置特定に役立つ。
- ループ拒否を伴うグラフ最適化: TORO、g2o、またはGTSAM(デフォルト)がポーズグラフを最適化する。最適化されたリンクの変換が並進分散の設定倍率を超えて変化した場合、新しいループ/近接リンクは拒否される — これは誤った場所認識に対する防御である。
- 実用的な出力とマルチセッション: OctoMap、2D占有格子、点群の出力は、ROSナビゲーションスタック向けに直接組み立てられる。起動時、新しいセッションはそれ自身の地図を開始し、過去のセッションへのループクロージングはマップ間の変換を計算し、グラフを統合する。
実験結果
Journal of Field Robotics論文では、KITTI、TUM RGB-D、EuRoC、MIT Stata Center PR2データセットでRTAB-Mapの視覚およびLiDAR構成を評価している。KITTI(ATE、単一CPUコア)では、LiDAR S2Sがシーケンス00で平均オドメトリ時間82msに対して1.0m、ステレオF2Mが82msで1.0mを達成する。ORB-SLAM2ベースのオドメトリはRTAB-Map内で最も正確な視覚バリアント(11シーケンス中9で最良のATE、11シーケンス中10で最良の並進誤差)だが、1コアあたりフレームあたり100msを超える。高速道路のシーケンス01はモダリティのトレードオフを露呈する。LiDARオドメトリはひどくドリフトする(S2Sで24.0m、幾何的に疎なスキャンからのピッチが不良)のに対し、ステレオF2Mは遠方の視覚特徴を利用して4.7mに達する。KITTIオドメトリのリーダーボードでは、RTAB-Map(F2M、ステレオ)は並進1.26% / 回転0.0026deg/mを記録し、ORB-SLAM2(1.15% / 0.0027)やLSD-SLAM(1.20% / 0.0033)に近く、LOAMは0.61%である。元のIROS 2014メモリ管理論文では、数千の場所を持つ地図でも、フレームあたり700ms未満の一定のループクロージング処理時間が示され、JFR版ではマルチセッションマッピングと、地図が成長してもオンライン運用をリアルタイムに保つメモリ管理が実証されている(完全な計算性能の研究については論文を参照)。
SLAMにおける意義
RTAB-Mapは、実践的なロボティクスにおいて最も広く導入されているSLAMシステムの1つである。境界時間内のループクロージング、ほぼすべての一般的なセンサ構成のサポート、すぐに使えるROS統合の組み合わせにより、専門家でなくても最小限の設定で信頼できるマッピングを動作させることができる。研究プロトタイプではなく実際のロボットに堅牢でフル機能のSLAMスタックが必要な場合の頼れる選択肢であり、そのメモリ管理設計は今も長期SLAMのスケーラビリティに対する参照的アプローチである。
関連ノート
- RGBD-SLAM-V2
- Visual Place Recognition (VPR)
- Pose graph optimization
- ORB-SLAM2
- LOAM
- Robust pose-graph optimization — RTAB-Mapの拒否テストが対処しているのと同じ偽ループ問題