美文网首页
从简入深VIO开发日记

从简入深VIO开发日记

作者: 5d5cc29c8d90 | 来源:发表于2017-09-30 19:56 被阅读193次

          为了兴趣,为了把计算机视觉的基础打牢,从现在开始打算以日记的形式,记录自己学习视觉slam的过程,希望自己在两个月内搭建一套属于自己的SLAM框架。也希望以此来交到更多做slam的同行朋友,互相学习。

    综述

          在开始写自己的框架之前,先总结一下自己研究过的开源SLAM框架,看看各有什么优缺点,看能不能结合各家之所长,实现一套既能保证实时性又具有鲁棒性的SLAM系统。

          然后再来复习一下SLAM基础知识,包括图优化,EKF,BA,IMU预积分等等的关键概念以及它们的数学推导,以及基于图优化的SLAM和基于EKF的SLAM框架的比较。

          最后设计一个VIO框架(Vision-Inertial Odometry)实时性要求:(PC上100HZ左右)鲁棒性要求:(在场景纹理不丰富或者快速运动、纯旋转以及动态物体遮挡的情况下不跟丢,甚至恢复真实相机位姿)

    ORBSLAM

          稀疏特征点法里面经典之作,是基于关键帧和图优化的实时SLAM系统,在PC上可以实现30HZ的帧率,但是在手机上运行的效率不高。整个SLAM框架分为Tracking,Mapping,LoopClosing,Viewing四个线程。

          Tracking线程负责初始化、每帧图像的特征点提取以及跟踪,关键帧的提取,还包含跟踪失败后的Relocalization 即重定位。

          Mapping线程负责维护地图中的三维点云,以及关键帧和covisibility graph(表示关键帧之间关系的图,节点是关键帧的位姿,如果关键帧之间用线相连,代表有共同的特征点)主要过程包括三角化关键帧之间的匹配特征点,冗余三维点的剔除,冗余KeyFrame的剔除。LoopClosing主要负责回环检测以及监测到回环之后进行的整体优化。Viewing线程负责SLAM过程可视化,包括点云、关键帧、Pose Graph,相机实时位姿的可视化

          ORB_SLAM的创新点是用ORB这种点特征来做图像跟踪和匹配以及回环检测和重定位,这种特征是使用二值化描述子,在单目纯视觉SLAM里面鲁棒性很强。特征匹配,提取特征速度快(使用汉明距离)而且受光照的影响也不大。作者离线训练了一个ORB二值词汇树(Binary Vocabulary Tree),可以不用暴力搜索,而仅仅搜索在 vocabulary tree 中属于相同节点的特征。当需要匹配两个集合内的 ORB 特征点时(在大批量点中进行搜索)比如寻找新的三角化匹配特征点和闭环检测和重定位时用这种方法去搜索。

          值得一提的是,ORB_SLAM跟踪相机位姿时,需要绝对满足图像重投影误差,即满足重投影误差的点需要大于一定的阈值,一旦小于阈值就会跟踪失败。这一点造成orbslam的鲁棒性变差,在快速移动的情况,或者特征不丰富的场景很容易跟踪失败。

    参考文献:

    [1] Raúl Mur-Artal, J. M. M. Montiel and Juan D. Tardós.ORB-SLAM: A Versatile and Accurate Monocular SLAM System.IEEE Transactions on Robotics,vol. 31, no. 5, pp. 1147-1163, 2015. (2015 IEEE Transactions on RoboticsBest Paper Award).

    [2] Dorian Gálvez-López and Juan D. Tardós.Bags of Binary Words for Fast Place Recognition in Image Sequences.IEEE Transactions on Robotics,vol. 28, no. 5, pp. 1188-1197, 2012.

    VINS

    相关文章

      网友评论

          本文标题:从简入深VIO开发日记

          本文链接:https://www.haomeiwen.com/subject/ibrnextx.html