マップマージ

マップマージとは、異なるロボット(あるいは同一ロボットの異なるセッション)が構築したサブマップを、1つの一貫した大域マップに整合させる処理である。各ロボットは自身の任意の座標系でSLAMを開始する。マージによって、分断されたローカルマップの集まりが1つの共有表現に変わる。

標準的なパイプライン

  1. アンカーを見つける。 ロボット間閉ループ(場所認識+幾何学的検証)が、異なるマップのキーフレーム間の相対ポーズ制約を提供する。1つの検証済み閉ループがあれば2つのフレームを関係付けるのに十分であり、複数あれば整合の条件がより良くなる。
  2. マップ間変換を推定する。 マッチしたキーフレームから、2つのマップフレーム間の変換を計算する――両マップがメトリック(ステレオ、RGB-D、VIO)の場合はSE(3)\mathrm{SE}(3)、単眼マップをマージする場合でスケールが異なる場合は(スケールを加えた)Sim(3)\mathrm{Sim}(3)である。推定には、マッチした特徴に対するPnPまたは基礎行列法、あるいは共有ランドマークの3D-3D整合を用いる。
  3. データを融合する。 一方のマップを他方のフレームに変換し、重複するコンテンツをマージする。両方のロボットから観測された共可視ランドマークは統合され、キーフレームデータベースと共可視性/ポーズグラフは結合され、閉ループのエッジは通常のグラフエッジになる。
  4. 共同で最適化する。 マージされたグラフに対してポーズグラフ最適化またはバンドル調整を実行し、整合誤差が接合部に集中するのではなく両方の軌跡に分散されるようにする。分散システムではこの段階は分散最適化であり、集中型システムではサーバーがグローバルBAを実行する。

整合の数学

両方のマップで観測された共有ランドマークによるNN個の対応する3D点のペア{piqi}\{\mathbf{p}_i \leftrightarrow \mathbf{q}_i\}が与えられたとき、マップ間変換は次の閉形式最小二乗整合である。

mins,R,tipi(sRqi+t)2,\min_{s,\,\mathbf{R},\,\mathbf{t}} \sum_i \left\| \mathbf{p}_i - (s\,\mathbf{R}\,\mathbf{q}_i + \mathbf{t}) \right\|^2,

これはHorn/Umeyama法によって解かれる。重心を引き、相関行列のSVDを取ってR\mathbf{R}を得て、分散の比からssを復元し(SE(3)\mathrm{SE}(3)の場合はs1s \equiv 1)、重心からt\mathbf{t}を得る。この方法を対応点についてのRANSACに包んだものが、ステップ2の主力手法である。2D観測しか得られない場合(単眼)は、一方のマップのランドマークを他方のキーフレームに対してPnPを行うか、基礎行列分解を行うことで、同じ役割を果たす。

一方のマップフレームは基準(「ゲージ」)として選ばれなければならない――典型的には、古いマップ、より大きなマップ、あるいはサーバーの正準フレームがその座標系を保持し、もう一方のマップがそれに変換される。

重複を適切に融合する

整合後、重複領域は2重に存在する。これをうまくマージすることが重要である。

設計上の考慮事項と落とし穴

SLAMにおける意義

マップマージは、協調が実際に成果を上げる場所である――NN個の部分的でドリフトしたマップを、単一のロボットでは達成できないほどのカバレッジと閉ループを持つ1つのマップに変換する。マップ間変換、重複ランドマークの融合、共同最適化という同じ概念は、マルチセッションマッピング、事前マップへの再局在化、AR・自動運転向けのクラウドソースマッピングにも繰り返し現れる。

関連ノート