重要VSLAM系统

主流的VSLAM

特征点法:MonoSLAM(2003-2007)、PTAM(2007-2008)、ORB-SLAM(2014-2015)

直接法:DTAM(稠密直接法,2011)、LSD-SLAM(稀疏直接,2013-2014)、DSO(LSD改进,稀疏直接VO,2016)

半直接:特征点和直接法混合:跟踪一些关键点,然后像直接法那样进行块匹配。SVO(半直接视觉里程计, 2014)

RGBD稠密法:DTAM(ICCV 2011)、Kinect Fusion(2011)、Kintinous(2012-2014)、DVO-SLAM(IROS 2013)、RGB-D SLAM V2(2014)、Elastic Fusion(2015)、InfiniTAM v3(2017)、BundleFusion(2017)

后端优化:g2o、ceres、GTSAM

数据集:RGB-D SLAM Dataset and Benchmark、KITTI Vision Benchmark Suite、The EuRoC MAV Dataset等。

主流开源方案对比

MonoSLAM(2003-2007)

2007年,A.J.Davison教授提出的第一个实时的单目视觉SLAM系统。

扩展卡尔曼滤波为后端,以相机当前状态和所有路标点为状态量,更新其均值和方差。

追踪前段非常稀疏的特征点。(Shi-Tomasi角点)

缺点:

  • 应用场景很窄
  • 路标数量有限
  • 特征点稀疏非常容易丢失
  • 开发已经停止

PTAM(2007-2008)

2007年,Klein等人提出。基于FAST角点。

论文中提出的关键帧以及多线程处理思想成为之后视觉slam标配;甚至能够实时运行在手机上。不少AR是基于ptam的;

前端线程(Tracking):通过匀速运动模型预测当前帧方位,搜索FAST角点,并根据匹配关系优化帧方位,若跟踪失败开始重定位,跟踪成功则判断是否满足关键帧条件。
后端线程(Mapping):沿极线匹配不同关键帧之间的图像特征点,通过三角化恢复三维位置,并对所有关键帧和三维点运行BA。

特点:
1、提出并实现了跟踪和建图过程的并行化,首次区分出前后端的概念。
2、第一个使用非线性优化,引入了关键帧机制:把几个关键图像串起来,然后优化其轨迹和地图。
3、PTAM同时是一个增强现实软件:根据估计的相机位姿,可以在虚拟的平面上放置虚拟物体。

优点:

  • 跟踪和建图的并行化
  • 第一个使用非线性优化。
  • 同时是一个增强现实的软件

缺点:

  • 缺乏回环检测和重定位
  • 场景小,跟踪容易丢失

ORB-SLAM(2014-2015)

2015年,代表着主流的特征点SLAM的一个高峰,属于稀疏建图。

ORB-SLAM2:支持单目,双目,RGB-D相机

三线程的SLAM方案:
Tracking线程:对新来的图像提取ORB特征点,并与最近的关键帧进行比较,计算特征点的位置并粗略估计相机位姿;
Local Mapping线程:求解BA问题,包括局部空间内的特征点和相机位姿;
Loop Closing (and Full BA)线程:对全局的地图与关键帧进行回环检测,消除累计误差,优化只有相机位姿组成的位姿图。

优点:

  • 支持单目,双目,RGB-D。良好的泛用性。
  • 围绕ORB特征进行计算,包括视觉里程计和回环检测的ORB字典。ORB特征:不像SIFT和SURF那样费时,相比Harris角点又具有良好的旋转和缩放不变性;ORB提供描述子,在大范围运动时能进行回环检测和重定位;
  • 单目具有自动选择系统初始化方案:基于对极几何还是基于单应性;双目和RGBD的初始化很快,且原地不动就能完成。
  • 关键帧的选取:先用宽松的判断条件加入新的关键帧和三维点以保证后续帧的鲁邦跟踪,再删除冗余关键帧和不稳定三维点以保证BA效率和精度。
  • 回环检测是亮点,但要加载很大的ORB字典。
  • 创新式地使用了三个线程:实时跟踪的Tracking,局部BA(小图),全局Pose Graph的回环检测和优化(大图)。
  • 围绕特征点进行了不少的优化。保证了特征点的均匀分布,在优化位姿时使用了一种循环优化4遍以得到更多正确匹配的方法,比PTAM更为宽松的关键帧选取策略。

优点:
1、在静态环境下定位准确,系统非常稳定, 单目和双目版本都可以达到实时;
2、代码可读性强,易扩展, 网上也有实现和imu融合的版本。

缺点:

  • 每副图像计算一遍ORB特征,非常耗时。
  • 三线程结构也给CPU带来了较重的负担,移植到嵌入式设备上有一定的困难。
  • 建图为稀疏特征点,没有开放存储和读取地图后进行重新定位的功能。
  • 稀疏特征点地图只能满足定位要求,无法提供导航,避障,交互等功能,因此仅用ORB-SLAM来处理定位问题太重量级。
  • 对动态物体很敏感,有动态物体时非常容易跟踪失败;
  • 纯旋转也容易丢失。

LSD-SLAM(2013-2014)

2014年,J.Engle等人提出。标志着单目直接法的成功应用,将直接法应用到了半稠密的单目SLAM中。

LSD-SLAM:支持单目,双目,RGB-D相机

1、提出了地图梯度与直接法的关系,以及像素梯度与极线方向在稠密重建中的角度关系;
2、在CPU上实现了实时半稠密场景的重建;
3、具有回环检测功能;
4、一些技巧保证追踪的实时性与稳定性:
在极线上等距离取5个点,度量其SSD;深度估计时,首先用随机数初始化深度,在估计完后又把深度均值归一化以调整尺度;度量深度不确定性时,不仅考虑三角化的几何关系,还考虑了极线与深度的夹角,归纳成一个光度不确定项;关键帧之间的约束使用了相似变换群及与之对应的李代数显式表达出尺度,在后端优化中可以将不同的尺度的场景考虑进来,减小尺度漂移现象。

优点:

  • 直接法是针对像素进行的。有创见地提出了像素梯度与直接法的关系,以及像素梯度与极线方向在稠密重建中的角度关系。
  • 在CPU上实现了实时半稠密场景的重建。
  • 不是利用单个像素,而是在极线上等距离取5个点,度量其SSD。用了很多精妙的手段来保证追踪的实时性和稳定性。
  • 直接法的优点:对特征缺失区域不敏感

缺点:

  • 对相机内参和曝光非常敏感
  • 在相机快速运动时容易丢失
  • 没有基于直接法的回环检测。因此必须依赖于特征点方法来进行回环检测,尚未摆脱特征点的计算。

SVO(Semi-direct Visual Odoemtry,半直接视觉里程计)(2014)

2014年,Forster等人提出。基于稀疏直接法的视觉里程计。特征点和直接法混合:跟踪一些关键点(角点,没有描述子),然后像直接法那样将关键点周围4×4的小块进行块匹配,来估计相机自身的运动。

SVO 2.0 2016年:
C. Forster, Z. Zhang, M. Gassner, M. Werlberger, and D. Scaramuzza.
SVO 2.0: Semi-direct visual odometry for monocular and multicamera
systems. TRO, 2016.

优点:

  • 速度极快。在PC平台上能达到每秒100多帧,后续的SVO 2.0能达到每秒400帧。
  • 非常适用于无人机,手持AR/VR设备这些计算平台受限场合的定位
  • 创新之处:提出了深度滤波器的概念,并推导了基于均匀-高斯混合分布的深度滤波器,用于关键点的位置估计,并使用了逆深度作为参数化形式。
  • 代码清晰易读

缺点:

  • 目标应用平台是无人机的俯视相机,相机运动主要为水平和上下移动,所以在平视相机中表现不佳。如单目初始化时使用了分解H矩阵,需要假设特征点位于平面上;在关键帧选择时,使用了平移量作为确定新的关键帧的策略,而没有考虑旋转量。
  • 为了速度和轻量化,舍弃了后端优化和回环检测,基本没有建图功能。
  • 位姿估计存在累计误差,丢失后不太容易进行重定位,所以SVO只是个VO,误差大。

DSO(直接稀疏VO,2016)

DSO [13]是LSD-SLAM的作者Jakob Engel放出的另一个大杀器,从其展示的实验结果看,无论是robustness,或是accuracy,或是计算速度,都完爆LSD-SLAM和ORB-SLAM。

DSO:单目

慕尼黑工业大学(TUM)计算机视觉实验室发布的一个稀疏直接法的视觉里程计。

后端使用一个由若干个关键帧组成的滑动窗口。除了维护这个窗口中的关键帧与地图点外,还会维护与优化相关的结构。特别地,这里指Gauss-Newton或Levenburg-Marquardt方法中的Hessian矩阵和b向量(仅先验部分)。

提出了光度标定,认为对相机的曝光时间、暗角、伽马响应等参数进行标定后,能够让直接法更加鲁棒。对于未进行光度标定的相机,DSO也会在优化中动态估计光度参数。

优点:可以生成相当稠密的点云,速度在正常运行的时候很快

缺点:
1、对场景光照要求高,要求尽量保持曝光时间的稳定
2、不是个完整的SLAM,它没有回环检测、地图重用、丢失后的重定位。
3、初始化部分也比较慢,当然双目或RGBD相机会容易很多。
4、代码可扩展性比较差

DSO在准确性,稳定性和速度上都比LSD好。LSD的优势在于回环检测。

DTAM(ICCV 2011)

DTAM is a system for real-time camera tracking and reconstruction which relies not on feature extraction but dense, every pixel methods.

直接法的鼻祖,稠密法;

MLM(ICRA 2016)

单目稠密,CPU实时

code-slam(CVPR 2018)

帝国理工2018CVPR论文,基于深度学习的单目Dense SLAM

soft-slam

双目slam,精度和速度比orb-slam好

RGB-D

一起做RGB-D SLAM

qianyi.info这个网站上找robust reconstruction

BundleFusion(2017)

BundleFusion:RGB-D相机
TOG 2017

斯坦福大学、微软研究院和德国mpii共同开发的BundleFusion:实时全局一致的3D重建,使用动态表面重新整合技术。

InfiniTAM v3(2017)

InfiniTAM–github

InfiniTAM an open source, multi-platform framework for real-time, large-scale depth fusion and tracking, released under an Oxford University Innovation Academic License.

InfiniTAM v3在2017年8月中旬出的,几乎代表行业最高水准。实现可以考虑基于InfiniTAM v3,源码很适合学习,二次开发。用于网格重构。

InfiniTAM是基于voxel hashing基础上做的。
先对voxel hashing介绍,
参考文献:”Real-time 3D Reconstruction at Scale using Voxel Hashing”

Elastic Fusion(2015)

Facebook Reality Labs的Thomas Whelan博士开发

RGB-D SLAM V2(2014)

DVO-SLAM(IROS 2013)

TUM的基于RGBD camera的Dense VO和SLAM方法

Kintinous(2012-2014)

Kinect Fusion(2011)

帝国理工(ICL)和和微软研究院

kinect fusion:kinectfusion是微软研究院利用kinect进行三维重建的项目,深入了解该算法及其实现可以为3D重建的kinect类应用提供一定的参考。该项目本身需要比较强大的CUDA显卡支持实现实时重建。