VO vs SLAM

Visual Odometry (VO) は連続フレームからローカルで逐次的なカメラ運動を推定する:フレーム間で特徴をマッチングまたは追跡(あるいはdirect法では測光誤差を最小化)し、相対姿勢を推定し、その推定値を連結する。VOには大域的な地図という概念がなく、ループ閉じ込みを行うこともできない――そのためドリフトは無制限に蓄積する。長いループの後で出発点に戻っても、純粋なVOの軌跡は閉じない。

Visual SLAM はVOに大域的整合性の仕組みを付加する:

簡潔な比較:

観点VOSLAM
範囲ローカル(直近フレームのウィンドウ)大域(全軌跡+地図)
ドリフト無制限に増大ループ閉じ込みで補正される
地図なし、または一時的なローカル地図永続的、再利用可能
コスト低く、有界より高く、地図サイズに応じて増大
障害からの復帰迷子になったら終わり地図に対してリローカライズ

VOパイプラインが実際に行うこと

具体的には、特徴ベースのVOイテレーションは次のようになる――これはあらゆる特徴ベースSLAMシステムの追跡スレッドでもあるため、内在化しておく価値がある。

  1. 新しいフレームで特徴を検出/追跡する(FAST/ORB検出、または前フレームからのKLT追跡)。
  2. 前フレームとの関連付け:記述子マッチング、または追跡済みの対応関係で、RANSACによって枝刈りする。
  3. 相対姿勢を推定する:2D-2Dマッチからの基礎行列(初期化)、あるいはローカルに三角測量された3D点に対するPnP(定常状態)。
  4. 推定された運動から新しい点を三角測量し、ローカルな3D構造を維持する。
  5. ローカルな精緻化:直近数フレーム/キーフレームにわたる小規模なバンドル調整(ウィンドウ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が必要である――無制限のドリフトを止められるのはそれ以外にない。

よくある落とし穴

SLAMにおける意義

この区別は分野全体を整理する。研究対象となるほぼすべてのシステムは、VO/オドメトリ手法か、あるいはVOのコアの周りに地図管理・場所認識・大域最適化を包んで構築されたSLAMシステムのいずれかである。ある論文がどちらの主張をしているか(ローカルな精度か大域的整合性か)を知ることで、どのベンチマークが重要か――VOにはRPE、SLAMにはループ閉じ込みを伴うATE――そしてその障害モードが何になるかが分かる。

ハンズオン

関連ノート