Filter-based vs Optimization-based

密結合VIOの中には2つの推定パラダイムが存在する。両者は同じ確率的推論問題を解いているが、どのくらいの頻度で再線形化を行うかが異なる。

フィルタベース(EKF)

フィルタベースの手法(MSCKF, ROVIO, OpenVINS)は、状態ベクトル x\mathbf{x} と共分散 P\mathbf{P} を再帰的に更新しながら保持する:

各計測値は処理される瞬間に一度だけ線形化される。これにより一定時間かつ低遅延の更新が得られる — しかし線形化点は永続的である: 後で推定値が移動しても、すでに取り込まれた情報を再線形化することはできず、累積した線形化誤差はドリフトと(注意しないと)不整合を引き起こす。MSCKFの着眼点は、EKFをウィンドウ状にすること(過去のカメラ姿勢のスライディング集合を状態に保持し、特徴制約を構造レスに適用すること)であった — つまり「フィルタリング」であるVIOも実は密かにウィンドウ化されている。

最適化ベース(スライディングウィンドウBA)

最適化ベースの手法(OKVIS, VINS-Mono, Basalt, ORB-SLAM3)は、直近のキーフレーム状態のスライディングウィンドウを保持し、再投影残差・プレインテグレーションされたIMU残差・マージナリゼーション事前分布からなる結合非線形コストを、Gauss-NewtonまたはLevenberg-Marquardt法で最小化する:

minX  rp2+rIMUΣ12+ρ(rreprojR12)\min_{\mathcal{X}} \; \|\mathbf{r}_p\|^2 + \sum \|\mathbf{r}_{\text{IMU}}\|^2_{\Sigma^{-1}} + \sum \rho\left(\|\mathbf{r}_{\text{reproj}}\|^2_{R^{-1}}\right)

ソルバーの各イテレーションがウィンドウ内のすべての残差を現在の推定値で再線形化するため、線形化誤差はかなり小さく、それに応じて精度も高くなる — その代償として計算コストは高くなる。古い状態はシューア補元によるマージナリゼーションによって事前分布 rp\mathbf{r}_p に圧縮される。これが両パラダイムが接する点である(下記参照)。

比較

フィルタ(EKF)スライディングウィンドウ最適化
線形化計測ごとに1回イテレーションごとに再線形化
コスト低く、一定時間高く、ウィンドウサイズとともに増加
精度良好(通常)より良い
レイテンシ非常に低い(計測ごとに1回の更新)より高い(フレームごとに反復解法)
整合性のための道具初期推定ヤコビアン(FEJ)、観測可能性制約マージナリゼーション事前分布へのFEJ; 非線形因子回復(Basalt); 遅延マージナリゼーション(DM-VIO)
代表的なシステムMSCKF, ROVIO, OpenVINSOKVIS, VINS-Mono, Basalt, ORB-SLAM3

この2系統は見た目より近い

したがって実務上の違いは「再帰的かバッチ的か」ではなく、各設計が計算予算をどこに費やすかである: フィルタは再線形化にほとんど計算を割かず、そのすべてをスループットに費やす; 最適化器は、小さく適切に選ばれたウィンドウを再線形化することで精度を買う。

実務における選択

よくある落とし穴

SLAMにおける意義

これは、視覚SLAMについて研究された古典的な「なぜフィルタなのか?」という問い(Strasdatら)のVIO版である: 固定された計算予算の下では、キーフレームの小さなウィンドウを再線形化する方が、大きな状態をフィルタリングするより優れている。それぞれの側の失敗モード — フィルタの不整合 vs 最適化器のレイテンシ — を知ることで、あるプラットフォームにどのシステムを選ぶべきか、そしてそれらの失敗モードを修正するためにどの論文(FEJ、非線形因子回復、遅延マージナリゼーション)が存在するかが分かる。

関連ノート