融合方式概述
同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代码解析