SLAM是Simultaneous Localization and Mapping的缩写,意为“同时定位与建图”。slam说白就一句话:同时解决精确定位和环境绘制问题。首先是开场白,这项技术同时解决定位和环境绘制的问题:定位是一种精确的定位,包含机器位置、朝向、高度,不同于GPS;环境绘制例如使用SLAM,可以进一步恢复出三维,例如我们绕着城市拍一圈,就可以重建出三维城市的地图。
SLAM是智能机器和增强混合现实的关键技术,用商业的话来说就是『刚需』。SLAM可以使用各种各样的传感器信息:从图像、多图像、深度信息、GPS、IMU、乃至车轮齿轮转了几圈,都可以作为SLAM的输入信息来达到目的。
如果SLAM技术加上各式各样的深度学习+识别技术,可以理解为一个智能机器具备了学习陌生环境、解决自己『在哪儿』,还通过识别解决了『这是什么』的两个基本问题。能解决这两个基本问题的软件算法,就像是智能机器的『大脑』一样,具备了一定程度的学习和反馈的基础。有了这样的基础,我们才能使机器更『聪明』的看懂这个世界,并进一步向我们所期待的反馈方式去开发更高层的功能。
主流开源SLAM方案
视觉传感器:
稀疏法(特征点):
ORB-SLAM(单目,双目,RGBD)[1](ORB-SLAM: a Versatile and Accurate Monocular SLAM System中文翻译)[2]
PTAM(单目)[3]
MonoSLAM(单目)[4]
半稠密法:
LSD-SLAM(单目,双目,RGBD)[5]
SVO(单目, 仅VO)[6]
稠密法:
DTAM(RGBD): Paper: [7] Open source code:[8]
Elastic Fusion(RGBD): Open source code:[9]
Kintinous(RGBD):Open source code: [10]
DVO: Open source code: [11]
RGBD-SLAM-V2: Open source code: [12]
RTAB-MAP: Code: [13]
其他
ScaViSLAM: Open source code [14]
激光传感器:
Hector SLAM[15]
Gmapping [16]
视觉(Visual)与IMU融合(VI)
Release of OKVIS: Open Keyframe-based Visual Inertial SLAM[17]
工具
g2o:[18]
ceres: [19]
入门资料推荐
关于Computer Vision
CMU computer vision 入门课件推荐(第16-19章关于visual odometry方面的基础知识推导非常清晰)。
Multiple View Geometry
Daniel Cremers的MVG课程视频。百度云分享链接
An Invitation to 3D Computer Vision
关于SLAM(状态最优估计)
State Estimation for Robotics, SLAM入门教材吐血推荐,对深入理解SLAM实质非常有帮助,下载链接:[20]
Probabilistic Robotics
附slam评价:
monoslam那套现在很少人用了,我推荐几个目前比较好的
1. PTAM:虽然很老了,但是在较小场景的计算效率和稳定性还是目前最好的之一,之前metaio和point cloud都是基于PTAM改的
2. ORB-SLAM:基于PTAM改的比较成功的,稳定性非常好,但效率比较低,很多思想很好
3. LSD-SLAM:近年来非常火的SLAM路线,能恢复半稠密三维,但目前的实现不太好,效率也不高
4. OKVIS:最近两个SLAM最强的SLAM组ICL和ETH合作的,能融合IMU,算法框架非常好,但同样实现很挫
5. SVO:特征跟踪部分做的很好,对特征不是特别敏感,而且效率非常高,但SLAM部分做得不太好,可以它的特征跟踪部分单独抽出来用