目前的研究方向可以總結為在濾波算法中實現高精度,在優化算法中追求實時性.當加入IMU后,研究方向分為松耦合和緊耦合,松耦合分別單獨計算出IMU測量得到的狀態和視覺里程計得到的狀態然后融合,緊耦合則將IMU測量和視覺約束信息放在一個非線性優化函數中去優化.緊耦合的框架使得IMU數據可以對視覺里程計進行矯正,同時視覺里程計信息也可以矯正IMU的零偏,因此一般認為緊耦合的定位精度較高.個人認為松耦合和濾波融合的方法類似,緊耦合則主要基於非線性優化.
IMU融合后可以處理視覺失效的情況,例如光照變化,遮擋,模糊,快速運動;同時視覺也可以對IMU的本質誤差零偏(漂移)進行很好的估計.
視覺和IMU融合目前主要基於三類方法,在設計時,主要考慮精確度和計算量的平衡.
1. 濾波
- 狀態向量只包含當前狀態.由於線性化誤差和計算能力的限制,通常只能構建很少的landmark/mappoint.或者創建structureless的狀態向量(將landmark/mappoint邊緣化),典型代表為MSCKF.
- 邊緣化是將舊狀態融合進當前狀態的先驗中,濾波方法主要的缺陷也就存在於邊緣化過程中:首先當前測量的structure信息需要延遲處理,降低當前狀態的更新精度,其次邊緣化對線性化近似和外點(outlier)都比較敏感,容易造成濾波器狀態失准.(這里有很多坑,還不太理解).
2. Fixed-Lag Smoothing
- 也就是滑動窗口優化(Sliding Window Optimization).狀態向量包含隨時間滑動的窗口內多個狀態.但是也需要將舊狀態邊緣化到高斯先驗中.因此在濾波算法中存在的邊緣化問題,這里都存在.
- 但是由於采用了多個狀態的窗口,狀態估計更精確,同時可以建立魯棒的優化代價函數,降低外點對狀態估計的影響.
- 狀態向量中可以加入測量的structure,但是太多strcuture會造成高斯先驗矩陣是稠密的,通常會想辦法減少structure的數量.
3. Full Smoothing
- 也就是batch non-linear least-squares或者全局優化,狀態向量包含所有相機位姿和strcuture信息,做大規模的非線性優化.顯然是最精確的方法,雖說稀疏性降低了計算量,但是依然比濾波大.主要工作集中於降低計算量.
- 可以采用只優化關鍵幀,以及將優化放在獨立線程中.
- 最新的研究采用因子圖,增量式地根據測量更新部分狀態,典型代表為iSAM.
- 當引入IMU后,由於IMU頻率通常在100Hz-1kHz量級,無法每次IMU測量都更新狀態向量.通常的做法是在關鍵幀之間對IMU進行積分,初始狀態由上一幀狀態提供,根據IMU的微分運動方程,積分出當前狀態,再將視覺測量引入更新.
- 然而,由於優化過程中上一幀的狀態是會變化的,這樣積分的初始狀態改變了,需要重新算積分,為了避免每一次優化調整后都需要重復計算IMU積分,利用預積分preintegration將相對運動約束再參數化.
參考: