融合方式概述
同SLAM發展過程類似,視覺融合IMU問題也可以分成基於濾波和基於優化兩大類。
同時按照是否把圖像特征信息加入狀態向量來進行分類,可以分為松耦合和緊耦合兩大類。
一.基於濾波的融合算法
1.1 松耦合
松耦合將視覺傳感器和 IMU 作為兩個單獨的模塊,兩個模塊均可以計算得到位姿信息,然后一般通過 EKF 進行融合。
可參考的算法有ethz的Stephen Weiss的ssf和msf
1.2 緊耦合
緊耦合則是指將視覺和 IMU 得到的中間數據通過一個優化濾波器進行處理,緊耦合需要把圖像特征加入到特征向量中,最終得到位姿信息的過程。由於這個原因,系統狀態向量最終的維度也會非常高,同時計算量也很大。
可參考的算法有MSCKF,ROVIO
二.基於優化的融合算法
2.1 松耦合
基於松耦合優化的工作不多,這里只給出一篇文章作為參考:
Inertial Aided Dense & Semi-Dense Methods for Robust Direct Visual Odometry
2.2 緊耦合 https://blog.csdn.net/qq_18661939/article/details/53574981
提到基於優化的緊耦合,就不得不提okvis了,主體思想是建立一個統一的損失函數同時優化視覺與IMU的位姿,用到了sliding window的思想。(這方面博主也需要再深入研究一下)
可參考 OKVIS, 以及港科大剛剛開源的 VINS-Mono
code
(1)imu和單目的緊耦合濾波方法
https://github.com/ethz-asl/rovio
(2)imu和單目的緊耦合非線性優化方法
- https://github.com/ethz-asl/okvis
https://github.com/ethz-asl/okvis_ros
- https://github.com/HKUST-Aerial-Robotics/VINS-Mono
- orbslam+imu
- 官網: http://webdiis.unizar.es/~raulmur/orbslam/ ----ORB_SLAM與ORB_SLAM2的區別
- 解決初始化很慢的問題 ORB_SLAM2
- orbslam2代碼解析