首页

来自SlamCN
Ljjyxz123讨论 | 贡献2017年1月8日 (日) 21:01的版本 泡泡机器人

跳转至: 导航搜索

SLAM 介绍

什么是SLAM

SLAM是Simultaneous Localization and Mapping的缩写,意为“同时定位与建图”。它是指运动物体根据传感器的信息,一边计算自身位置,一边构建环境地图的过程。目前,SLAM的应用领域主要有机器人、虚拟现实和增强现实。其用途包括传感器自身的定位,以及后续的路径规划、场景理解。

随着传感器种类和安装方式的不同,SLAM的实现方式和难度会有很大差异。按传感器来分,SLAM主要分为激光、视觉两大类。其中,激光SLAM研究较早,理论和工程均比较成熟。视觉方案目前(2016)尚处于实验室研究阶段,极少看到实际产品应用。

SLAM研究自1988年提出以来,已经过了近三十年。早期SLAM研究侧重于使用滤波器理论,最小化运动体位姿和地图的路标点的噪声。21世纪之后,学者们开始借鉴SfM(Structure from Motion)中的方式,以优化理论为基础求解SLAM问题。这种方式取得了一定的成就,并且在视觉SLAM领域中取得了主导地位。

  • 激光传感器:激光传感器可以直接获得相对于环境的直接距离信息,从而实现直接相对定位,对于激光传感器的绝对定位及轨迹优化可以在相对定位的基础上进行。
  • 视觉传感器:视觉传感器很难直接获得相对于环境的直接距离信息,而必须通过两帧或多帧图像来估计自身的位姿变化,再通过累积位姿变化计算当前位置。这种方法更类似于直接用里程计进行定位,即视觉里程计(Visual Odometry)。里程计的测量积分后才相当于激光传感器直接获得的定位信息,这就是图优化SLAM框架中的前端。而后端对定位和位姿轨迹的优化本质上与激光传感器的优化相同,都基于最优估计的理论框架进行。

SLAM与视觉里程计(Visual Odometry)

人们有时候会混淆SLAM和视觉里程计的概念。应该说,视觉里程计是SLAM的一个模块,其目的在于增量式地估计相机运动。然而,完整的SLAM还包括添加回环检测和全局优化,以获得精确的、全局一致的地图。

视觉里程计通常作为SLAM系统的前端。它增量式的计算方法能估计邻近帧间的相机运动,但这也意味着邻近帧间的误差会影响之后的轨迹估计,意味着它会随着时间推移,产生漂移。同时,视觉里程计也不含有建图模块。一个完整的SLAM系统会关心相机轨迹和地图的全局一致性,但这也意味着需要更多的计算资源来计算全局的优化。在资源有限、不关心全局路径的场合(如无人机的着陆、短时间控制中),可以考虑只使用视觉里程计,而不必使用完整的SLAM。

SLAM和SfM

视觉SLAM中大量使用了SfM中的方法,如特征点跟踪、捆集优化(Bundle Adjustment)等,以至于许多研究者把它们视为同一个研究领域。然而,尽管方法上很相似,SLAM和SfM的侧重点是不同的。SLAM的应用场合主要在机器人和VR/AR,计算资源有限,需要很强的实时性,故侧重点在于,如何在有限的资源里快速地对相机进行定位。而SfM方法通常是离线的,可以调用大量计算资源进行长时间的计算,侧重于重建出更精确、美观的场景。

主流开源SLAM方案

视觉传感器

  • 稀疏法(特征点):
    • ORB-SLAM(单目,双目,RGBD)[1](ORB-SLAM: a Versatile and Accurate Monocular SLAM System中文翻译)[2]
    • PTAM(单目)[3]
    • MonoSLAM(单目)[4]

激光传感器

参考论文 Steux B, Hamzaoui O E, Steux B. CoreSLAM: a SLAM Algorithm in less than 200 lines of C code[J].
  • flirtlib 提取二维激光数据的感兴趣区域,对二维laser数据做特征检测和描述,代码内置若干特征检测算子和特征描述算子,提供样例代码和数据,包含RANSAC Loop Closure 以及完整的mapping过程 [17]
参考论文 Tipaldi G D, Arras K O. FLIRT - Interest regions for 2D range data.[C]// ieee International Conference on Robotics & Automation. 2010:3616-3622.

视觉(Visual)与IMU融合(VI)

  • Release of OKVIS: Open Keyframe-based Visual Inertial SLAM[18]

后端优化工具

常用数据集

入门资料推荐



    • 关于寻路算法的一些思考系列(翻译Amit Patel的博客[24]
      • 关于寻路算法的一些思考(1):A*算法介绍 [25]
      • 关于寻路算法的一些思考(2):Heuristics 函数 [26]
      • 关于寻路算法的一些思考(3):A*算法的实现[27]
      • 关于寻路算法的一些思考(4):A* 算法的变体 [28]
      • 关于寻路算法的一些思考(5):处理移动中的障碍物[29]
      • 关于寻路算法的一些思考(6):预先计算好的路径的所用空间 [30]
      • 关于寻路算法的一些思考(7):地图表示 [31]
      • 关于寻路算法的一些思考(8):长期和短期目标 [32]
      • 关于寻路算法的一些思考(9):寻路者的移动成本 [33]
      • 关于寻路算法的一些思考(10):最短路径的用户体验 [34]
      • 关于寻路算法的一些思考(11):寻路算法的其他应用 [35]
      • 关于寻路算法的一些思考(12):AI 技术 [36]

泡泡机器人

微信搜索“paopaorobot_slam”微信公众号,或者扫描下面二维码:

  • 公开课程b站主页:[37]

泡泡机器人微信公众号logo1.jpg

相关博客推荐

  • Tombone's Computer Vision Blog, MIT博士后, CMU博士, vision.ai创始人: [81]
  • Alexander Grau's blog, 德国的一个技术发烧友, 博客里有很多关于机器人, SLAM, 传感器等技术方面的个人记录: [82]
  • 李建的个人博客: [83]
  • 刘富强的个人博客: [84] [85]

机器人常用传感器

机器人领域优秀实验室及牛人汇总

Deep Learning for SLAM

近年来Deep Learning的大潮比较火,有很多同学希望了解关于SLAM与Deep Learning结合的工作方向。在这里给出一些比较有参考性的资源,希望对大家有所帮助。

PS友情提示: SLAM可以算作一个系统问题,中间有很多子问题,分别需要不同的算法解决。 Deep Learning是一个用于解决问题的其中一种算法,如果我们不是希望从事机器学习算法研究的话,没有必要较真于是否使用Deep Learning, 而更应该关注怎样做能更好地解决我们面对的问题。


Augmented Reality for SLAM

增强现实是SLAM的一个重要应用,需要高精度的相机姿态和所感知的环境地图。 虚拟现实可以通过SLAM辅助IMU高效获取头盔姿态并刷新。 混合现实与增强现实原理相同。

问题与答复

MediaWiki 相关

请查阅用户指南以获取使用本wiki软件的信息!