maplab

Schneider 2018 · 論文

一行要約 — ビジュアル・インエルシャルなマッピングのためのオープンな研究フレームワーク:マルチセッションのマップ統合、オフラインのバッチ最適化、ドリフトのない再ローカライゼーションをROVIOLI(ROVIO with Localization Integration)を中心に構築し、マップを1回の走行ごとの副産物ではなく、永続的かつ操作可能な資産として扱う。

問題

多くのVIOシステムは、単一セッションのローカルマップを生成し、各走行後に破棄してしまう。実運用のデプロイでは、永続的なマップ、事前マップに対する再ローカライゼーションによるドリフトのないグローバルな姿勢推定、異なるロボットや異なる時刻に構築されたマップの統合、そして収集後にマップ全体を改善するオフライン最適化が必要である。論文が指摘するように、既存の解決策は「単一セッションのユースケースに焦点を当てているか、ローカライゼーション機能を欠いているか、あるいはエンドツーエンドのパイプラインを欠いている」——最先端のアルゴリズム、スケーラブルなマルチセッションツール、柔軟なユーザインターフェースを組み合わせた完全なシステムだけが、効率的な研究プラットフォームになりうる。

手法とアーキテクチャ

maplabには2つの主要な部分がある:オンラインフロントエンドROVIOLIオフラインのmaplabコンソール

ROVIOLIはROVIOフィルタをローカライゼーションとマップ構築でラップする。そのモジュール:Feature TrackingはBRISKまたはFREAKキーポイントを検出・追跡し、積分されたジャイロスコープ計測から予測されたウィンドウ内でフレーム間ディスクリプタをマッチングする。LOCモードでは、Frame Localizationが提供されたローカライゼーションマップに対して2D-3Dマッチを確立し、RANSAC内のP3Pでグローバル姿勢TGIk\mathbf{T}_{GI_k}を計算する。これらの生のグローバル姿勢はROVIOに投入され、オドメトリ制約と融合されて、ローカル姿勢TMI\mathbf{T}_{MI}とともにグローバル・ミッション変換TGM\mathbf{T}_{GM}を推定する。Map Builderはすべての出力を同期させてVI-mapにまとめる。2つのモード:VIO(ドリフトするローカル推定でマップを構築)とLOC(さらにドリフトのないグローバル姿勢を追跡)。

VI-map構造。 マップには複数のミッション(セッションごとに1つ)が含まれる。各ミッションはグラフである:頂点は状態推定(姿勢TMIk\mathbf{T}_{MI_k}、IMUバイアス、速度)に加えてキーポイント、バイナリディスクリプタ、追跡情報を保持し、辺(最も一般的にはIMUエッジ)は頂点間の慣性測定値を保持する。ランドマークは複数頂点の観測から三角測量され、最初に観測した頂点に格納される。各ミッションは単一の変換TGMi\mathbf{T}_{GM_i}によってグローバル座標系に固定されるため——セッション全体を整合させるには1つの変換を触るだけでよく、すべての頂点を触る必要はない。姿勢は標準の慣習に従う。

[Ap1]=TAB[Bp1]=[RABApAB01][Bp1]\begin{bmatrix} {}_{A}\mathbf{p} \\ 1 \end{bmatrix} = \mathbf{T}_{AB} \begin{bmatrix} {}_{B}\mathbf{p} \\ 1 \end{bmatrix} = \begin{bmatrix} \mathbf{R}_{AB} & {}_{A}\mathbf{p}_{AB} \\ \mathbf{0} & 1 \end{bmatrix} \begin{bmatrix} {}_{B}\mathbf{p} \\ 1 \end{bmatrix}

マップはProtobufにシリアライズされ、大きなリソース(画像、密な再構成)は別のキャッシュ済みリソースシステムに置かれる。

コンソールアルゴリズム(すべてプラグイン拡張可能、Ceresベース):VIWLS — OKVISに似たコスト項を持つビジュアル・インエルシャル重み付き最小二乗バッチ最適化で、オプションでホイールオドメトリやGPS事前分布を含む;ループクロージャ/ローカライゼーション — 投影されたバイナリディスクリプタに対する逆多重インデックス検索;ポーズグラフ緩和 — 誤ったループクロージャに対してオプションのCauchy損失を用いる;マップスパース化 — ILPベースのランドマーク選択とキーフレーミング;密な再構成 — ステレオブロックマッチング、voxblox TSDF融合、CMVS/PMVS2エクスポート。マルチセッションのワークフローは文字通りコンソールスクリプトである:マップの読み込みと統合、キーフレーミング(kfh)、最適化(optvi)、ミッションのアンカリング、relaxlcoptvi

実験結果

EuRoC(MH2からのローカライゼーションマップをMH1で評価)において:プレーンなROVIOでは位置RMSE 0.178 m、事前マップに対してローカライズするROVIOLIでは0.082 m、完全なVIWLSバッチ最適化後では0.036 m。ORB-SLAM2(ステレオ)はバッチモードで0.084 mを達成するが、リアルタイムモードでは0.464 m / 13.34°である。V2-easy(V2-mediumのローカライゼーションマップを使用)では:0.064 → 0.057 → 0.027 m(ORB-SLAM2のリアルタイムモードは発散)。Intel Xeon E3-1505Mでのタイミング:ROVIOLIはCPU負荷105%で1フレームを44 msで処理するのに対し、ORB-SLAM2は162%で63 msである。マルチセッションのユースケース:ある大学の建物の4セッション(1,000 m超、約463,000ランドマーク)が統合されて一貫した8.2 MBのローカライゼーションマップになる。マップ維持:キーフレーミングとILP要約によりマップは13倍縮小するが、リコールは60%から51%へのわずかな低下にとどまる。大規模デモ:チューリッヒ旧市街の45回のGoogle Tangoセッション——231分、軌跡16.48 km、728万観測を持つ435,000ランドマーク、480 MB——32 GBのデスクトップ上で一晩でアラインされ最適化された。

SLAMにおける意義

maplabは、ビジュアル・インエルシャルマップのライフサイクル全体——構築、オフライン最適化、再ローカライゼーション、セッション・ロボット間の統合——を扱う初の包括的なオープンソースフレームワークであった。これらの機能は以前は独自のAR/ロボティクススタックにのみ存在していた。MAV、飛行機、車、水中ロボット、歩行ロボットで実地検証され、マップ要約、ローカライゼーション、分散マッピングの研究における共通基盤となった。maplab 2.0はこれをマルチロボットとセマンティックマッピングへと拡張した。「多くのセッション、1つのマップ」が問題であり「1回の走行、低ドリフト」ではない場合に学ぶべきものである。

関連ノート