最近阅读了VIO中的一些论文,在这里做个汇总方便以后查阅,如有问题欢迎指正。

一、背景

VIO(Visual Inertial Odometry)视觉惯导里程计,VINS(Visual Inertial Navigation System)的一个分支。用Visual+IMU的方法估计6DOF位姿,同时解决由于单目相机不能估计feature的实际尺度问题。在无人车,无人机定位导航,AR等方面都有着重要应用。

纯相机的SLAM具有一下问题,这里只列出与IMU相比的缺点:

  • 单目相机只能得到feature的相对尺度,不能得到绝对尺度,因此不能用于导航。
  • 当物体移动过快,Camera会出现运动模糊,尤其是卷帘快门相机(rolling shutter)。本领域大佬加州大学河滨分校Mourikis(MSCKF的作者,其导师是明尼苏达大学的大佬)专门针对rolling shutter提出了一个VIO系统,“Vision-aided inertial navigation with line features and a rolling-shutter camera”(IROS. 2015)
  • 对于V-SLAM一般只使用30Hz,但是IMU的频率可达几百Hz,手机上的IMU可以达到200Hz。

但是IMU也具有如下缺点:

  • 对于民用级别IMU,如手机上使用的IMU,或者车载千元级别的IMU,都会出现drift,随着时间的累计误差会越来越大,手机上的IMU可能几秒误差就变得非常离谱。
  • IMU没有Camera可以充分利用环境信息的优点

由以上信息可以看出,Camera和IMU的优点和缺点具有互补性,因此进行融合会使系统具有更强的稳定性和鲁棒性。

二、Camera+IMU的一些问题

由于Camera和IMU的频率不同,因此也带来很多问题。

1.最好的情况。Camera和IMU各自的频率一致,而且时间戳能够对齐。

2.可以接受的情况。Camera和IMU各自的频率一致,但是时间戳有一定偏差。现在很多论文提出在线标定可以解决这种问题。

3.最糟糕的情况。Camera和IMU各自的频率不一致,不能进行融合。

而且,二者要进行融合随之带来的就是初始化变量的增加,VSLAM初始化的变量为相机初始状态的旋转和平移,即R和t。但是VIO系统要初始化变量就多出Camera和IMU之间的外参(R和t),系统的初始速度和IMU的bias,初始化重力方向。

三、IMU测量模型

IMU内部包含陀螺仪和加速度计,可以测量移动物体的加速度和角速度。

b是IMU的bias,是IMU误差来源的一部分,满足随机游走模型(b的导数是高斯分布)。在知道加速度和加速度信息之后可以通过运动学公式积分的到旋转,位姿和速度信息(P,v,q)。

但是在以上积分过程中q是t时刻到世界坐标系的旋转,这样随着线性化点的变化,所有的状态都需要重新进行积分,运算量大大增加,因此在2012年提出了预积分模型,现在的VIO系统都在使用这个理论,同时在《On-Manifold Preintegration for Real-Time Visual-Inertial Odometry》文章介绍了流行预积分模型,详细介绍了预积分的数学理论。

i和j是Camera相邻的两个关键帧,在两个关键帧对IMU进行预积分,然后和相机信息进行融合。

基于关键帧思想的VIO首先是ETH在2015年IJRR上的OKVIS这篇文章提出,《Keyframe-based visual-inertial odometry using nonlinear optimization》,代码也开源了。https://github.com/ethz-asl/okvis

四、紧耦合和松耦合(Tightly-coupled vs. Loosely-coupled)

1.松耦合

所谓松耦合就是Camera和IMU自己玩自己的,互相不干预,在得到各自的信息之后再进行融合,这块研究不多,具体可参考ETH这篇文章。《Inertial Aided Dense & Semi-Dense Methods for Robust Direct Visual Odometry》

2.紧耦合

现在用的最多的就是紧耦合

左图是纯视觉SLAM的示意图,右图是加了IMU之后的示意图,IMU和Camera之间的信息互相约束,在进行误差传递时,需要计算相机误差相对于IMU各个状态的雅克比矩阵。

五、基于滤波和优化的VIO

1.滤波

在视觉SLAM中,现在大家几乎都在用基于优化的思想,很少有用滤波方法了。但是在VIO中,基于滤波和优化的思想还没有分出胜负。基于滤波的VIO最先提出的就是Mourikis在2007年提出的MSCKF(传说用在Google Tango上的方法),《A multi-state constraint Kalman filter for vision-aided inertial navigation》,这是在EKF-SLAM基础上进行改进的,同时这篇文章首次提出了滑动窗口的概念,只不过当时叫做FIFO。

左图是EKF-SALM的基本思想,只要相机来一帧图像,就把相机观测到的feature加入到状态向量中,这样带来问题就是随着系统时间的增加,计算复杂度变得越来越大。

中间的图像时基于关键帧的思想,不像EKF-SLAM一样使用相机的所有帧信息,而是根据一些规则挑选出相机关键帧,只考虑相机关键帧的信息,以降低复杂度。

右图是MSCKF的思想,不在使用相机帧所观测到的feature作为系统信息,而是提出了滑动窗口概念,系统维护一个固定数量帧信息的窗口,同时使用窗口帧共同观测到的feature作为运动约束来估计物体的位姿,相比前两种情况大大减少了系统的复杂度。

Mourikis的学生李明阳在2012年对MSCKF进行了改进,提出了MSCKF2.0,《High-Precision, Consistent EKF-based Visual-Inertial Odometry》,主要对MSCKF的可观测性问题进行了改进。

在2018年宾夕法尼亚大学的Kumar(香港科技大学沈绍劼的老师,不要问我沈绍劼是谁,我是不会告诉你他的学生秦通在读博期间提出了VIns-mono,不要问我秦通是谁,华为200W年薪的那个人)提出了双目版本的MSCKF,《Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight》,代码也开源了,https://github.com/KumarRobotics/msckf_vio

2.优化

基于滤波的VIO与现在VSLAM用的优化方法大同小异,都是优化一个cost fuction。

然后用ceres,g2o,因子图等方法进行优化。

代表作现在最火热的就是沈绍劼老师团队在2017年开源的Vins-mono,https://github.com/HKUST-Aerial-Robotics/VINS-Mono为咱们国人感到骄傲!论文也发表在2018的IEEE Transactions on Robotics(TRO)上《VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator》。

Vins-mono的总体框架

最后,这些论文真的值得一看

特拉华大学的黄国全老师在ICRA2019发表的VINS综述总结的真的太棒了,本文中很多也是出自这篇文章。

《Visual-Inertial Navigation: A Concise Review》

https://github.com/PaoPaoRobot/ICRA2019-paper-list  ICRA2019的所有论文这里都有,感谢泡泡机器人做的工作

Optimization

  1. S. Leutenegger, S. Lynen, M. Bosse, R. Siegwart, and P. Furgale. “Keyframe-based visual-inertial odometry using nonlinear optimization”(IJRR, 2015)
  2. S. Shen, N. Michael, and V. Kumar. “Tightly-coupled monocular visual-inertial fusion for autonomous flight of rotorcraft MAVs”.(ICRA, 2015)
  3. T. Qin, P. Li, and S. Shen. “VINS-Mono: A Robust and Versatile Monocular Visual-Inertial State Estimator”. (TRO, 2018)

Filter

  1. N. Trawny and S. I. Roumeliotis. Indirect Kalman Filter for 3D Attitude Estimation.(介绍基础知识的一本好资料)
  2. A. I. Mourikis and S. I. Roumeliotis. “A multi-state constraint Kalman filter for vision-aided inertial navigation.(ICRA, 2007)
  3. M. Li and A. I. Mourikis. “Improving the Accuracy of EKF-based Visual-Inertial Odometry”.(ICRA 2012)
  4. M. Li and A. Mourikis. “High-Precision, Consistent EKF-based Visual-Inertial Odometry”(IJRR 2013)
  5. Ke Sun, Vijay Kuma. “Robust Stereo Visual Inertial Odometry for Fast Autonomous Flight”.(RAL, 2018)
  6. P. Geneva, K. Eckenhoff, and G. Huang. “A Linear-Complexity EKF for Visual-Inertial Navigation with Loop Closures”(ICRA, 2019)

文章出现的图片来自于网上和论文,如有侵权联系我会及时修改。原创文章,写作不易,转载标明出处。

视觉惯导里程计VIO综述相关推荐

  1. 【点云论文速读】基于优化的视觉惯导里程计与GPS的紧耦合的融合方案

    转载自:https://mp.weixin.qq.com/s/Y-h7eto1Zc_Mkzlh653vpg [点云论文速读]基于优化的视觉惯导里程计与GPS的紧耦合的融合方案 原创 dianyunPC ...

  2. CodeVIO:紧耦合神经网络与视觉惯导里程计的稠密深度重建(ICRA2021 Best Paper Finalist)...

    作者丨左家星@知乎 来源丨https://zhuanlan.zhihu.com/p/382746788 编辑丨3D视觉工坊 大家好!在这篇文章里我将为大家简要介绍我们在ICRA2021上发表的论文&q ...

  3. 一:Tixiao Shan最新力作LVI-SAM(Lio-SAM+Vins-Mono),基于视觉-激光-惯导里程计的SLAM框架,环境搭建和跑通过程

    一:前言介绍 LVI-SAM是Tixiao Shan的最新力作,Tixiao Shan是Lego-loam(基于激光雷达里程计的SLAM框架)和Lio-sam(基于惯性-雷达紧耦合的SLAM框架)的作 ...

  4. LIO-PPF:通过增量平面预拟合和跟踪的快速激光雷达惯导里程计

    点云PCL免费知识星球,点云论文速读. 文章:LIO-PPF: Fast LiDAR-Inertial Odometry via Incremental Plane Pre-Fitting and S ...

  5. FAST-LIO2:快速直接的激光雷达与惯导里程计

    点云PCL免费知识星球,点云论文速读. 文章:FAST-LIO2: Fast Direct LiDAR-inertial Odometry 作者: Wei Xu∗1 , Yixi Cai∗1 , Do ...

  6. LIO-SAM: 紧耦合的激光与惯导里程计方案

    点云PCL免费知识星球,点云论文速读. 标题:LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping 作者 ...

  7. LVI-SAM:使用SAM的激光-视觉-惯导紧耦合里程计

    转载自:https://mp.weixin.qq.com/s/MlN-0BD9rAdJwsVco7TRlg LVI-SAM:使用SAM的激光-视觉-惯导紧耦合里程计 原创 泡泡机器人 泡泡机器人SLA ...

  8. 计算机视觉方向简介 | 视觉惯性里程计(VIO)

    VIO-SLAM Visual-Inertial Odometry(VIO)即视觉惯性里程计,有时也叫视觉惯性系统(VINS,visual-inertial system),是融合相机和IMU数据实现 ...

  9. 视觉惯性里程计 VIO

    视觉惯性里程计 VIO - Visual Inertial Odometry 视觉−惯性导航融合SLAM方案 视觉惯性SLAM专栏 VINS技术路线与代码详解 VINS理论与代码详解0--理论基础白话 ...

最新文章

  1. html5日期转long
  2. C语言----项目构建Make,Automake,CMake
  3. pyplot.plot画图turtouil
  4. 判断接收的数据中是否有中文
  5. 关于Basware的使用随想
  6. java switch小程序,小程序自定义switch组件
  7. 2011.10.17百度面试题
  8. client intended to send too large body
  9. python模块导入_Python模块及其导入
  10. 算法导论 算法_算法导论
  11. java 双向链表_23张图!万字详解「链表」,从小白到大佬
  12. PHP header函数的用法辨析,有点意思
  13. 阿里腾讯都在做的可视化大屏,我用这工具里的100个模板实现了
  14. NHibernate初学者指南(15):使用LINQ to NHibernate提供程序查询数据
  15. iOS 使用ZipArchive压缩文件
  16. SPSS入门教程——土壤主成分优劣分析
  17. 2019,我们被“黑”科技薅过的羊毛?
  18. 批量重命名文件夹中的文件(python)
  19. 高仿绚丽彩虹悬浮音乐播放器html5源码
  20. Imu_heading源码阅读(三)——Ransac_fitline部分

热门文章

  1. 保留状态的秘密 - 深入了解Java备忘录模式(Memento Pattern)
  2. 小明和小强都是张老师的学生,张老师的生日是M月N日,2人都知道张老师的生日 是下列10组中的一天,张老师把M值告诉了小明,把N值告诉了小强,张老师问他们知道他的生日是那一天吗?
  3. Flink SQL高效Top-N方案的实现原理
  4. Segments(计算几何基础)
  5. README 模板分享
  6. [BZOJ]4644: 经典傻逼题
  7. php析构方法怎么用,如何使用php析构方法
  8. 微软服务器系统ssd,在UCS B200 M5上安装带M.2 SSD的操作系统(VMware、Windows)
  9. Allegro PCB转换成PADS方法
  10. 玄星幻月003-PDF文件转图片并将图片拆分