目前单目slam存在初始化的尺度问题和追踪的尺度漂移问题,而双目也存在精度不高和鲁棒性不好的问题。针对这些问题,提出了融合imu的想法。
那么imu的作用是什么呢?
单目
(1)解决初始化尺度问题
(2)追踪中提供较好的初始位姿。
(3)提供重力方向
(4)提供一个时间误差项以供优化
双目
(1)追踪中提供较好的初始位姿。
(2)提供重力方向
(3)提供一个时间误差项以供优化
目前做这方面融合论文很多,但开源的比较少,这里给出几个比较好的开源code和论文
开源code:
(1)imu和单目的数据融合开源代码(EKF)
https://github.com/ethz-asl/rovio
(2)imu和单目的数据融合开源代码
https://github.com/ethz-asl/okvis_ros(非线性优化)
(3)orbslam+imu(立体相机)
https://github.com/JzHuai0108/ORB_SLAM论文:
(1)Keyframe-based visual–inertial odometry(okvis的论文)
(2) IMU Preintegration on Manifold for Efficient Visual-Inertial Maximum-a-Posteriori Estimation(预积分)
(3)Visual-Inertial Monocular SLAM with Map Reuse (orb+imu)
(4)Robust Visual Inertial Odometry Using a Direct EKF-Based Approach(eth的rovio)
(5)On-Manifold Preintegration for Real-Time Visual-Inertial Odometry(gtsam)
由于是初学比较详细看得就是以上5篇,而且自认为还不错的论文。
本人研究的是基于非线性优化的视觉和imu融合的算法研究,那么这里先引出融合的方式:
滤波方法:
(1)紧耦合
(2)松耦合
非线性优化:
(1)紧耦合(本人研究方向)
(2)松耦合
imu'和视觉是怎样融合的呢?
仅仅视觉的时候我们优化的只是重投影误差项:
以上的公式我就不解释了。
而imu+视觉优化的是重投影误差项+imu的时间误差项:
其中imu时间误差项:
其中为:
这里:imu时间误差项要求的主要有5个变量:eR,ev,ep,eb,W。即求(R ,v,p,b,W)
这里先给出一张非线性优化视觉+imu融合的图: