Tightly-coupled LiDAR-camera

LiDAR-カメラSLAMシステムは、点群レジストレーションの残差と視覚残差が単一のコスト関数(あるいは単一のフィルタ更新)の中で、共有された1つの状態に対してジョイントに最適化される場合に**タイトカップリング(tightly coupled)であるという。一方、各モダリティが独自にオドメトリを実行し、得られた姿勢推定値だけを後段で(例えばポーズグラフや単純なフィルタで)融合する場合はルースカップリング(loosely coupled)**であるという。

ジョイント問題

タイトカップリングの最適化バックエンドでは、状態 X\mathbf{X}(姿勢、速度、IMUバイアス、場合によってはランドマーク)が、異種の項の和を最小化する。

X=argminX  rIMUΣI2+rvisualΣV2+rLiDARΣL2+rloopΣlp2\mathbf{X}^* = \arg\min_{\mathbf{X}} \; \sum \|\mathbf{r}^{\text{IMU}}\|^2_{\Sigma_I} + \sum \|\mathbf{r}^{\text{visual}}\|^2_{\Sigma_V} + \sum \|\mathbf{r}^{\text{LiDAR}}\|^2_{\Sigma_L} + \sum \|\mathbf{r}^{\text{loop}}\|^2_{\Sigma_{lp}}

ここでLiDAR残差は典型的にはpoint-to-planeまたはpoint-to-lineの距離であり、視覚残差は再投影誤差あるいは光度誤差である。LVI-SAMはこれをGTSAM上のファクターグラフで実現している。フィルタベースの等価な手法では、同じ残差をイタレーティブなカルマン更新に組み込む。FAST-LIVOは両モダリティのヤコビアンを H=[HLiDAR;HVisual]\mathbf{H} = [\mathbf{H}^{\text{LiDAR}}; \mathbf{H}^{\text{Visual}}] として1つの更新にスタックするが、FAST-LIVO2はLiDARスキャンと画像という次元数が大きく異なるものを扱うために、1回のイテレーション内で逐次的に(まずLiDAR、次に中間状態に対して視覚)これらを適用する。

対照的に、ルースカップリングの設計では、LiDARオドメトリと視覚オドメトリを独立に実行し、それぞれの6-DoF姿勢出力だけを融合する。この圧縮こそが、タイトカップリングが回避しようとするものである。

タイト vs ルースの一覧

タイトカップリングルースカップリング
融合対象生の残差(点、ピクセル)6-DoF姿勢推定値(+共分散)
情報の保持完全 — バイアスとの相互相関を保持損失あり — 各モダリティを事前にマージナライズ
モダリティ間の補助共有状態を通じて自動的に発生手作業で設計したインターフェース経由のみ
キャリブレーション誤差への感度高い — 誤差がすべての残差に入り込む低い — サブシステムごとに吸収される
故障の分離デフォルトでは弱い — 外れ値がジョイント状態を汚染する良好 — 故障したオドメトリを無視できる
実装コスト高い低い

なぜ余分な複雑さを受け入れるのか

よくある落とし穴

SLAMにおける意義

VIOでも見慣れたタイト vs ルースの区別は、LiDAR-カメラ融合における最も重要な単一のアーキテクチャ上の軸であり、システムの精度の上限と故障挙動を大きく決定する。主要なLVIシステム(LVI-SAM、R3LIVE、FAST-LIVO2)はいずれもタイトカップリングを目玉機能として掲げており、それらのコスト関数を読むことが、各システムが実際に何を融合しているかを理解する最も速い方法である。

関連ノート