SLAM入门之发展

方案 时间 传感器 地址
MonoSLAM 2007 单目 https://github.com/hanmekim/SceneLib2
PTAM 2007 单目 http://www.robots.ox.ac.uk/~gk/PTAM/
ORB-SLAM 2015 单目 http://webdiis.unizar.es/~raulmur/orbslam/
ORB-SLAM2 2016 单目/双目/RGB-D https://github.com/raulmur/ORB_SLAM2
LSD-SLAM 2014 单目 http://vision.in.tum.de/research/vslam/lsdslam
SVO 2014 单目 https://github.com/uzh-rpg/rpg_svo
RTAB-MAP 2014 RGB-D/双目 https://github.com/introlab/rtabmap
DSO 2016 单目 https://github.com/JakobEngel/dso
DVO 2013 RGB-D https://github.com/tum-vision/dvo_slam
DTAM 2012 RGB-D https://github.com/anuranbaka/OpenDTAM
RGBD-SLAM-V2 2012 RGB-D https://github.com/felixendres/rgbdslam_v2
Elastic Fusion 2015 RGB-D https://github.com/mp3guy/ElasticFusion
OKVIS 2015 多目+IMU https://github.com/ethz-asl/okvis
ROVIO 2015 单目+IMU https://github.com/ethz-asl/rovio
  • MonoSLAM

    • A. J. Davison 在 2007 年提出的 MonoSLAM 是第一个实时的单目视觉 SLAM 系统
    • MonoSLAM 以扩展卡尔曼滤波为后端(以相机的当前状态和所有路标点为状态量,更新其均值和协方差。),追踪前端非常稀疏的特征点(且用到了主动追踪技术)。
    • MonoSLAM 存在诸如应用场景很窄,路标数量有限,稀疏特征点非常容易丢失的情况。
  • PTAM

    • Parallel Tracking and Mappin,2007 年, Klein 等人提出。是视觉SLAM 发展过程中的重要事件。
    • PTAM 提出并实现了跟踪与建图过程的并行化。这是视觉 SLAM 中首次区分出前后端的概念。
    • PTAM 是第一个使用非线性优化,而不是使用传统的滤波器作为后端的方案。它引入了关键帧机制:我们不必精细地处理每一个图像,而是把几个关键图像串起来,然后优化其轨迹和地图。
    • PTAM 同时是一个增强现实软件,演示了酷炫的 AR 效果。是早期的结合 AR 的 SLAM 工作之一。
    • 存在着明显的缺陷:场景小,跟踪容易丢失等等。这些又在后续的方案中得以修正。
  • ORB-SLAM

    • 它提出于 2015 年,是现代 SLAM 系统中做的非常完善,非常易用的系统之一
    • 支持单目、双目、 RGB-D 三种模式。
    • 整个系统围绕 ORB 特征进行计算,包括视觉里程计与回环检测的 ORB 字典。体现出 ORB 特征是现阶段计算平台的一种优秀的效率与精度之间的折衷方式。
    • ORB 的回环检测是它的亮点。优秀的回环检测算法保证了 ORB-SLAM 有效地防止累计误差,并且在丢失之后还能迅速找回。
    • ORB-SLAM 创新式地使用了三个线程完成 SLAM:实时跟踪特征点的 Tracking 线程,局部 Bundle Adjustment 的优化线程(Co-visibility Graph,俗称小图),以及全局 Pose Graph 的回环检测与优化线程(Essential Graph 俗称大图)
    • ORB-SLAM 围绕特征点进行了不少的优化。
    • ORB-SLAM 也存在一些不足之处。我们必须对每张图像都计算一遍 ORB 特征,非常耗时,对 CPU 带来了较重的负担。建的图为稀疏特征点,无法提供导航、避障、交互等诸多功能。
      SLAM入门之发展_第1张图片
  • LSD-SLAM

    • Large Scale Direct monocular SLAM, J. Engle 等人于 2014 年提出。LSD-SLAM 则标志着单目直接法在 SLAM 中的成功应用。
    • 核心贡献,是将直接法应用到了半稠密的单目SLAM 中。它不仅不需要计算特征点,还能构建半稠密的地图——这里半稠密的意思主要是指估计梯度明显的像素位置。
    • LSD-SLAM 的直接法是针对像素进行的。作者有创见地提出了像素梯度与直接法的关系,以及像素梯度与极线方向在稠密重建中的角度关系。
    • LSD-SLAM 在 CPU 上实现了半稠密场景的重建。
    • LSD-SLAM既有直接法的优点(对特征缺失区域不敏感),也继承了直接法的缺点。对相机内参和曝光非常敏感,并且在相机快速运动时容易丢失。由于目前并没有在直接法基础实现的回环检测方式, LSD-SLAM 必须依赖于特征点方法进行回环检测,
  • SVO

    • Semi-direct Visual Odoemtry ,由 Forster 等人于 2014 年提出的一种基于稀疏直接法的视觉里程计。
    • 半直接在原文的意思,是指特征点与直接法的混合使用: SVO 跟踪了一些关键点(角点,没有描述子),然后像直接法那样,根据这些关键点周围的信息,估计相机运动以及它们的位置。SVO 使用了关键点周围的 4×4 的小块进行块匹配,估计相机自身的运动
    • SVO 的最大优势是速度极快。在作者后续工作 SVO2.0 中,速度更达到了惊人的 400 帧每秒。这使得 SVO 非常适用于计算平台受限的场合,例如无人机、手持 AR/VR 设备的定位。
    • SVO 提出了深度滤波器的概念,并推导了基于均匀——高斯混合分布的深度滤波器。将这种滤波器用于关键点的位置估计,并使用了逆深度作为参数化形式,使之能够更好地计算特征点位置。
    • 由于目标应用平台为无人机的俯视相机,考虑到视野内的物体主要是地面,而且相机的运动主要为水平和上下的移动, SVO 的许多细节是围绕这个应用设计的,使得它在平视相机中表现不佳。 SVO 在单目初始化时,使用了分解 H 矩阵而不是传统的 F 或 E 矩阵的方式,这需要假设特征点位于平面上。该假设对俯视相机是成立的,但对平视相机通常是不成立的,可能导致初始化失败。在关键帧选择时,使用了平移量作为确定新的关键帧的策略,而没有考虑旋转量。这同样在无人机俯视配置下是有效的,但在平视相机中则会容易丢失。
    • SVO 舍弃了后端优化和回环检测部分,也基本没有建图功能,位姿估计必然存在累计误差,而且丢失后不太容易进行重定位。称它为一个 VO。
  • RTAB-MAP

    • Real Time Appearance-Based Mapping ,是 RGB-D SLAM 中比较经典的一个方案。
    • 它实现了 RGB-D SLAM 中所有应该有的东西:基于特征的视觉里程计、基于词袋的回环检测、后端的位姿图优化以及点云和三角网格地图。 RTAB-MAP 更适合作为 SLAM 应用而非研究使用。
  • 视觉 + 惯导 SLAM

    • IMU 虽然可以测得角速度和加速度,但这些量都存在明显的漂移,使得积分两次得到的位姿数据非常不可靠。对于短时间内的快速运动, IMU 能够提供一些较好的估计。
    • 相比于 IMU,相机数据基本不会有漂移。当运动过快时,(卷帘快门的)相机会出现运动模糊,或者两帧之间重叠区域太少以至于无法进行特征匹配,所以纯视觉 SLAM 非常害怕快速的运动。
      • IMU使在相机数据无效的那段时间内还能保持一个较好的位姿估计
      • 相机数据可以有效地估计并修正 IMU 读数中的漂移,使得在慢速运动后的位姿估计依然有效。
    • 当图像发生变化时,本质上我们没法知道是相机自身发生了运动,还是外界条件发生了变化,所以纯视觉 SLAM 难以处理动态的障碍物。而 IMU 能够感受到自己的运动信息,从某种程度上减轻动态物体的影响。
    • 目前 VIO 的框架已经定型为两大类:松耦合(Loosely Coupled)和紧耦合(Tightly Coupled)
      • 松耦合是指, IMU 和相机分别进行自身的运动估计,然后对它们的位姿估计结果进行融合。
      • 紧耦合是指,把 IMU 的状态与相机的状态合并在一起,共同构建运动方程和观测方程,然后进行状态估计。紧耦合理论分为基于滤波和基于优化的两个方向。
      • 在 VIO 中,由于 IMU 的数据频率非常高,对状态进行优化需要的计算量就更大,因此VIO 领域目前仍处于滤波与优化并存的阶段。在纯视觉 SLAM 中,优化方法已经占了主流。
  • 语义 SLAM

    • SLAM 另一个大方向就是和深度学习技术进行结合。
    • 语义帮助 SLAM。传统的物体识别、分割算法往往只考虑一个图,而在 SLAM 中我们拥有一台移动的相机。如果我们把运动过程中的图片都带上物体标签,就能得到一个带有标签的地图。另外,物体信息亦可为回环检测、 BA 优化带来更多的条件。
    • SLAM 帮助语义。物体识别和分割都需要大量的训练数据。要让分类器识别各个角度的物体,需要从不同视角采集该物体的数据,然后进行人工标定,非常辛苦。而SLAM 中,由于我们可以估计相机的运动,可以自动地计算物体在图像中的位置,节省人工标志的成本。如果有自动生成的带高质量标注的样本数据,能够很大程度上加速分类器的训练过程。
  • 基于线/面特征的 SLAM

  • 动态场景下的SLAM

  • 多机器人的 SLAM

视觉 SLAM 经过了三个大时代:提出问题、寻找算法、完善算法。
我们目前正处于第三个时代,面对着如何在已有的框架中进一步改善,使视觉 SLAM 系统能够在各种干扰的条件下,稳定地运行。

你可能感兴趣的:(SLAM)