当前的开源方案
本文将带着读者去看看现有的SLAM方案能做到怎样的程度。特别地,我们重点关注那些提供开源实现的方案。在SLAM研究领域,能见到开源方案是很不容易的。往往论文中介绍理论只占20%的内容,其他80%都写在代码中,是论文里没有提到的。正是这些研究者们的无私奉献,推动了整个SLAM行业的快速前进,使后续研究者有了更高的起点。在我们开始做SLAM之前,应该对相似的方案有深入的了解,然后再进行自己的研究,这样才会更有意义。
本讲的前半部分将带领读者参观一下当前的视觉SLAM方案,评述其历史地位和优缺点。表1列举了一些常见的开源SLAM方案,读者可以选择感兴趣的方案进行研究和实验。限于篇幅,我们只选了一部分有代表性的方案,这肯定是不全面的。在后半部分,我们将探讨未来可能的一些发展方向,并给出当前的一些研究成果。
方案名称
传感器形式
地址
MonoSLAM
单目
https://github.com/hanmekim/SceneLib2
PTAM
单目
http://www.robots.ox.ac.uk/~gk/PTAM/
ORB-SLAM
单目为主
http://webdiis.unizar.es/~raulmur/orbslam/
LSD-SLAM
单目为主
http://vision.in.tum.de/research/vslam/lsdslam
SVO
单目
https://github.com/uzh-rpg/rpg_svo
DTAM
RGB-D
https://github.com/anuranbaka/OpenDTAM
DVO
RGB-D
https://github.com/tum-vision/dvo_slam
DSO
单目
https://github.com/JakobEngel/dso
RTAB-MAP
双目/RGB-D
https://github.com/introlab/rtabmap
RGBD-SLAM-V2
RGB-D
https://github.com/felixendres/rgbdslam_v2
Elastic Fusion
RGB-D
https://github.com/mp3guy/ElasticFusion
Hector SLAM
激光
http://wiki.ros.org/hector_slam
GMapping
激光
http://wiki.ros.org/gmapping
OKVIS
多目+IMU
https://github.com/ethz-asl/okvis
ROVIO
单目+IMU
https://github.com/ethz-asl/rovio
表1 常用开源 SLAM 方案
MonoSLAM
说到视觉SLAM,很多研究者第一个想到的是A. J. Davison的单目SLAM工作。Davison教授是视觉SLAM研究领域的先驱,他在2007年提出的MonoSLAM是第一个实时的单目视觉SLAM系统[2],被认为是许多工作的发源地。MonoSLAM以扩展卡尔曼滤波为后端,追踪前端非常稀疏的特征点。由于EKF在早期SLAM中占据着明显主导地位,所以MonoSLAM亦是建立在EKF的基础之上,以相机的当前状态和所有路标点为状态量,更新其均值和协方差。
图1所示是MonoSLAM在运行时的情形。可以看到,单目相机在一幅图像当中追踪了非常稀疏的特征点(且用到了主动追踪技术)。在EKF中,每个特征点的位置服从高斯分布,所以我们能够以一个椭球的形式表达它的均值和不确定性。在该图的右半部分,我们可以找到一些在空间中分布着的小球。它们在某个方向上显得越长,说明在该方向的位置就越不确定。我们可以想象,如果一个特征点收敛,我们应该能看到它从一个很长的椭球(相机Z方向上非常不确定)最后变成一个小点的样子。