VO vs SLAM
Visual Odometry (VO) は連続フレームからローカルで逐次的なカメラ運動を推定する:フレーム間で特徴をマッチングまたは追跡(あるいはdirect法では測光誤差を最小化)し、相対姿勢を推定し、その推定値を連結する。VOには大域的な地図という概念がなく、ループ閉じ込みを行うこともできない――そのためドリフトは無制限に蓄積する。長いループの後で出発点に戻っても、純粋なVOの軌跡は閉じない。
Visual SLAM はVOに大域的整合性の仕組みを付加する:
- ローカルなスライディングウィンドウを超えて存続する永続的な大域地図(ランドマーク/キーフレーム)であり、古いランドマークの再観測を可能にする;
- ループ閉じ込み――すでに地図化されたエリアの再訪――を検出する場所認識;
- ループが検出された際に蓄積されたドリフトを再分配する大域的最適化(ポーズグラフ最適化または大域バンドル調整);
- 通常はリローカリゼーションも含む:追跡失敗後に地図から姿勢を復元する。
簡潔な比較:
| 観点 | VO | SLAM |
|---|---|---|
| 範囲 | ローカル(直近フレームのウィンドウ) | 大域(全軌跡+地図) |
| ドリフト | 無制限に増大 | ループ閉じ込みで補正される |
| 地図 | なし、または一時的なローカル地図 | 永続的、再利用可能 |
| コスト | 低く、有界 | より高く、地図サイズに応じて増大 |
| 障害からの復帰 | 迷子になったら終わり | 地図に対してリローカライズ |
VOパイプラインが実際に行うこと
具体的には、特徴ベースのVOイテレーションは次のようになる――これはあらゆる特徴ベースSLAMシステムの追跡スレッドでもあるため、内在化しておく価値がある。
- 新しいフレームで特徴を検出/追跡する(FAST/ORB検出、または前フレームからのKLT追跡)。
- 前フレームとの関連付け:記述子マッチング、または追跡済みの対応関係で、RANSACによって枝刈りする。
- 相対姿勢を推定する:2D-2Dマッチからの基礎行列(初期化)、あるいはローカルに三角測量された3D点に対するPnP(定常状態)。
- 推定された運動から新しい点を三角測量し、ローカルな3D構造を維持する。
- ローカルな精緻化:直近数フレーム/キーフレームにわたる小規模なバンドル調整(ウィンドウBA)。
Direct VOはステップ1-3を測光アライメントで置き換える:姿勢(および画素ごとの深度)に関して、フレーム間の画素輝度誤差を最小化し、明示的な対応関係をスキップする。いずれにしても、出力は相対姿勢の連鎖である――そしてステップ3以降のすべての段階は、ドリフトを排除するのではなく、遅らせるために存在する。
対応する評価指標:**RPE(相対姿勢誤差)**は固定された距離/時間オフセットにわたる姿勢増分の誤差を測る――ドリフト率、つまりVOの正直なスコアである。**ATE(絶対軌跡誤差)**は推定値をグラウンドトゥルースに位置合わせした後の大域的な位置誤差を測る――ループが閉じたかどうかに支配される、SLAMのスコアである。RPEは優秀だがATEが悪いシステムは、大域的整合性を欠いた良好なオドメータである。逆はノイジーなフロントエンド上での強力なループ閉じ込みを示唆する。
その境界はスペクトルである
DSOとSVOはVOシステムであり、LDSOは「DSO+ループ閉じ込み」、すなわち同じフロントエンドがSLAMへと昇格したものである。ORB-SLAMの追跡スレッド単体は本質的にVOシステムであり、ローカルマッピングとループ閉じ込みのスレッドこそがそれをSLAMにしている。VIOでは同じ区別がオドメトリ(MSCKF、VINSのフロントエンド)対地図再利用を伴うフルSLAM(ORB-SLAM3、ループ閉じ込みを有効にしたVINS-Mono)として現れる。
どちらが必要かはエンジニアリング上の判断である。短期的な自己運動だけが重要な場合(例:コントローラへの入力、ドローンの安定化)、VOの有界な計算量と単純さが勝る。ロボットが場所を再訪する場合、長時間動作する場合、あるいは事前地図に対して自己位置推定を行わなければならない場合はSLAMが必要である――無制限のドリフトを止められるのはそれ以外にない。
よくある落とし穴
- カテゴリを越えてATEを比較する:ループの多いシーケンスでVOシステムをATEで評価する(あるいはSLAMシステムをRPEだけで評価する)ことは、それぞれの設計意図を読み誤らせる。論文がどの指標とどのアラインメント(単眼の場合、6DoF対7DoF)を報告しているかを確認すること。
- ループ閉じ込みが無償だと思い込む:VOをSLAMへ昇格させると、場所認識データベース、検証ロジック、大域最適化、そして――重要なことに――新たな障害モード(誤ったループ)が追加される。ロバストなVOは実運用では脆弱なSLAMを上回ることがある。
- 無制限の地図増大:「とにかく全部保持する」SLAMは長時間の運用で劣化する。キーフレームの間引きと地図管理はSLAM契約の一部であり、任意の追加機能ではない。
- リローカリゼーション ≠ ループ閉じ込み:どちらも場所認識を用いるが、リローカリゼーションは既存の地図に対する追跡を復元するものであり、ループ閉じ込みは地図を変形させる制約を追加するものである。両者を混同するとシステム設計の議論が混乱する。
SLAMにおける意義
この区別は分野全体を整理する。研究対象となるほぼすべてのシステムは、VO/オドメトリ手法か、あるいはVOのコアの周りに地図管理・場所認識・大域最適化を包んで構築されたSLAMシステムのいずれかである。ある論文がどちらの主張をしているか(ローカルな精度か大域的整合性か)を知ることで、どのベンチマークが重要か――VOにはRPE、SLAMにはループ閉じ込みを伴うATE――そしてその障害モードが何になるかが分かる。