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

2019 年 6 月 16 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货


VIO-SLAM


Visual-Inertial Odometry(VIO)即视觉惯性里程计,有时也叫视觉惯性系统(VINS,visual-inertial system),是融合相机和IMU数据实现SLAM的算法,根据融合框架的不同又分为松耦合紧耦合

其中VO(visual odometry)指仅视觉的里程计,T表示位置和姿态。松耦合中视觉运动估计和惯导运动估计系统是两个独立的模块,将每个模块的输出结果进行融合。



紧耦合则是使用两个传感器的原始数据共同估计一组变量,传感器噪声也是相互影响的。紧耦合算法比较复杂,但充分利用了传感器数据,可以实现更好的效果,是目前研究的重点。

相机和IMU的缺点及互补性


相机和IMU融合有很好的互补性。首先通过将IMU 估计的位姿序列和相机估计的位姿序列对齐可以估计出相机轨迹的真实尺度,而且IMU 可以很好地预测出图像帧的位姿以及上一时刻特征点在下帧图像的位置,提高特征跟踪算法匹配速度和应对快速旋转的算法鲁棒性,最后IMU 中加速度计提供的重力向量可以将估计的位置转为实际导航需要的世界坐标系中。


随着MEMS器件的快速发展,智能手机等移动终端可以便捷地获取IMU数据和摄像头拍摄数据,融合IMU 和视觉信息的VINS 算法可以很大程度地提高单目SLAM 算法性能,是一种低成本高性能的导航方案,在机器人、AR/VR 领域得到了很大的关注。

 算法流程


整个流程图可以分解为五部分:数据预处理、初始化、局部非线性优化、回环检测和全局优化。

各个模块的主要作用是:

图像和IMU数据预处理:对于图像,提取特征点,利用KLT金字塔进行光流跟踪,为后面仅视觉初始化求解相机位姿做准备。对于IMU,将IMU数据进行预积分,得到当前时刻的位姿、速度、旋转角,同时计算在后端优化中将要用到的相邻帧间的预积分增量,及预积分的协方差矩阵和雅可比矩阵。

初始化:初始化中,首先进行仅视觉的初始化,解算出相机的相对位姿;然后再与IMU预积分进行对齐求解初始化参数。

局部非线性优化:对应流程图中滑动窗口的视觉惯导非线性优化,即将视觉约束、IMU约束放在一个大目标函数中进行优化,这里的局部优化也就是只优化当前帧及之前的n帧的窗口中的变量,局部非线性优化输出较为精确的位姿。

回环检测:回环检测是将前面检测的图像关键帧保存起来,当再回到原来经过的同一个地方,通过特征点的匹配关系,判断是否已经来过这里。前面提到的关键帧就是筛选出来的能够记下但又避免冗余的相机帧(关键帧的选择标准是当前帧和上一帧之间的位移超过一定阈值或匹配的特征点数小于一定阈值)。

全局优化:全局优化是在发生回环检测时,利用相机约束和IMU约束,再加上回环检测的约束,进行非线性优化。全局优化在局部优化的基础上进行,输出更为精确的位姿。

算法核心


局部优化会用到边缘化,仅用局部优化精度低,全局一致性差,但是速度快,IMU利用率高;仅用全局优化精度高,全局一致性好,但是速度慢,IMU利用率低;两者侧重点不同,所以将两者结合,可以优势互补。

因此小编设计实验采用局部优化和全局优化融合的方法


局部优化是滑动窗口内相机帧的优化,全局优化是所有关键帧的优化,两者结合会产生边缘帧冲突的问题,因为局部优化会固定滑动窗口边缘帧,而全局优化发生回环检测的时候则会固定回环起点的帧。这里的改进就是采用相对的位姿边缘化,即边缘化以后的点是相对于它上一时刻关键帧的位姿而不是全局的位姿,这样局部优化边缘化相对位姿(关键帧),扔给全局优化整体优化。局部边缘化和全局边缘化的结合部分是关键帧。

相对边缘化可以具体解释为,相对边缘化的参考坐标系不再是世界坐标系,而是与当前帧共视且距离最近的一个关键帧的相机系(设为第k0帧)。视觉约束可以表示为:

区别于绝对边缘化的视觉约束


实验结果与总结



实验一:无人机数据集上的实验

数据集采用了欧盟机器人挑战数据集(EuRoC)。EuRoC 数据集使用 Asctec  Firefly 六旋翼飞行器在仓库和房间采集数据,数据集中包括以20Hz采集的相机图像和200Hz的IMU数据,以及运动真值

实验结果如下:



实验结果可见,融合优化的轨迹和真实轨迹很接近,而仅使用局部优化的定位结果误差不断累积。


实验二:车载数据上的实验

该车载数据是在北京市朝阳区某小区采集的,在数据采集阶段,车辆以5km/h 到 30km/h 的速度行驶,一共行驶2271m。

实验结果如下:



实验结果可见,融合优化后的定位结果明显优于仅使用局部优化的定位结果,融合优化中误差得到及时修正。

参考文献


  1. J. Delmerico. A Benchmark Comparison of Monocular Visual-Inertial OdometryAlgorithms for Flying Robots. 2018. ICRA

  2. T. Qin. VINS-Mono: A robust and versatile monocular visual-inertial state estimator. arXivpreprint arXiv: 1708.03852, 2017.

  3. N. Trawny. Indirect KalmanFilter for 3D Attitude Estimation. 2005.

  4. Sola. Quaternion kinematics for error-state kalmanfilter. 2017.

  5. K. Eckenhoff. Decoupled, Consistent Node Removal and Edge sparsificationfor graph-based SLAM. 2016.

  6. G. Sibley. Sliding window filter with application to planetary landing.  2010.

  7. S. Leutenegger. Keyframe-Based Visual-Inertial SLAM Using Nonlinear Optimization. 2015.

  8. H. Liu. ICE-BA: Incremental, consistenand efficient bundle adjustment for visual-inertial slam. 2018. CVPR.

  9. H. Liu. Robust keyframe-based dense SLAM with an RGB-D camera. 2017.

学术交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、算法竞赛、图像检测分割、人脸人体、医学影像、自动驾驶、综合等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~

推荐阅读

从零开始一起学习SLAM | 为什么要学SLAM?

从零开始一起学习SLAM | 学习SLAM到底需要学什么?

从零开始一起学习SLAM | SLAM有什么用?

从零开始一起学习SLAM | C++新特性要不要学?

从零开始一起学习SLAM | 为什么要用齐次坐标?

从零开始一起学习SLAM | 三维空间刚体的旋转

从零开始一起学习SLAM | 为啥需要李群与李代数?

从零开始一起学习SLAM | 相机成像模型

从零开始一起学习SLAM | 不推公式,如何真正理解对极约束?

从零开始一起学习SLAM | 神奇的单应矩阵

从零开始一起学习SLAM | 你好,点云

从零开始一起学习SLAM | 给点云加个滤网

从零开始一起学习SLAM | 点云平滑法线估计

从零开始一起学习SLAM | 点云到网格的进化

从零开始一起学习SLAM | 理解图优化,一步步带你看懂g2o代码

从零开始一起学习SLAM | 掌握g2o顶点编程套路

从零开始一起学习SLAM | 掌握g2o边的代码套路

从零开始一起学习SLAM | ICP原理及应用

SLAM初识

SLAM技术框架

惯性导航系统简介

视觉里程计:起源、优势、对比、应用

视觉里程计:特征点法之全面梳理

SLAM领域牛人、牛实验室、牛研究成果梳理

我用MATLAB撸了一个2D LiDAR SLAM

可视化理解四元数,愿你不再掉头发

IMU标定 | 工业界和学术界有什么不同?

汇总 | VIO、激光SLAM相关论文分类集锦

SLAM中VIO的优势及入门姿势

汇总 | 3D机器学习资源汇总

视觉SLAM技术综述

研究SLAM,对编程的要求有多高?

深度学习遇到SLAM | 如何评价基于深度学习的DeepVO,VINet,VidLoc?

新型相机DVS/Event-based camera的发展及应用

视觉SLAM关键方法总结

现在开源的RGB-D SLAM有哪些?

详解 | SLAM回环检测问题

干货总结 | SLAM 面试常见问题及参考解答

谭平:从相机标定到SLAM,极简三维视觉六小时课程视频

汇总 | SLAM、重建、语义相关数据集大全

吐血整理 | SLAM方向国内有哪些优秀的公司?


从零开始学习三维视觉核心技术SLAM,扫描查看介绍,3天内无条件退款

学习切忌单打独斗,一个良好的学习圈子能够帮助你快速入门,交流讨论才能少走弯路,快速进步!


最新AI干货,我在看  

登录查看更多
63

相关内容

基于视觉的三维重建关键技术研究综述
专知会员服务
154+阅读 · 2020年5月1日
3D目标检测进展综述
专知会员服务
186+阅读 · 2020年4月24日
专知会员服务
84+阅读 · 2019年12月13日
计算机视觉方向简介 | 多视角立体视觉MVS
计算机视觉life
14+阅读 · 2019年10月10日
【泡泡图灵智库】协同视觉-惯性SLAM
泡泡机器人SLAM
28+阅读 · 2019年9月6日
【泡泡图灵智库】Visual SLAM: 为什么要用BA(ICRA)
泡泡机器人SLAM
50+阅读 · 2019年7月11日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
112+阅读 · 2019年3月3日
【泡泡一分钟】视觉(-惯性)里程计定量轨迹评估教程
泡泡机器人SLAM
34+阅读 · 2019年1月27日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
【紫冬分享】移动机器人视觉里程计综述
中国科学院自动化研究所
11+阅读 · 2018年10月31日
Arxiv
99+阅读 · 2020年3月4日
Structure Aware SLAM using Quadrics and Planes
Arxiv
4+阅读 · 2018年8月13日
Arxiv
5+阅读 · 2018年4月30日
VIP会员
相关资讯
计算机视觉方向简介 | 多视角立体视觉MVS
计算机视觉life
14+阅读 · 2019年10月10日
【泡泡图灵智库】协同视觉-惯性SLAM
泡泡机器人SLAM
28+阅读 · 2019年9月6日
【泡泡图灵智库】Visual SLAM: 为什么要用BA(ICRA)
泡泡机器人SLAM
50+阅读 · 2019年7月11日
【泡泡读者来稿】VINS 论文推导及代码解析(一)
泡泡机器人SLAM
112+阅读 · 2019年3月3日
【泡泡一分钟】视觉(-惯性)里程计定量轨迹评估教程
泡泡机器人SLAM
34+阅读 · 2019年1月27日
视觉SLAM技术综述
计算机视觉life
25+阅读 · 2019年1月4日
【紫冬分享】移动机器人视觉里程计综述
中国科学院自动化研究所
11+阅读 · 2018年10月31日
Top
微信扫码咨询专知VIP会员