视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

SLAM:同时定位与地图构建

  1. 机器人和计算机视觉领域的基本问题

    • 在未知环境中定位自身方位并同时构建环境三维地图
  2. 应用广泛:

    • 增强现实、虚拟现实
    • 机器人、无人驾驶

SLAM常用的传感器

  1. 红外传感器: 较近距离感应,常用与扫地机器人
  2. 激光雷达: 单线、多线等
  3. 摄像头: 单目、双目、多目等
  4. 惯性传感器(英文叫IMU,包括陀螺仪、加速度计等): 智能手机标配

SLAM运行结果

  1. 设备根据传感器信息

    • 计算自身位置(在空间中的位置和朝向)
    • 构建环境地图(稀疏或者稠密的三维点云)

SLAM系统常用框架

自2007年PTAM之后,现在的SLAM方法基本上都采用了并行跟踪和建图框架,一般包含以下几个部分:
* 输入: 可以是RGB图像、深度图,甚至IMU测量值
* 前台线程: 根据传感器数据进行跟踪求解,实时恢复每个时刻设备的位姿势
* 后台线程: 对三维点云和关键帧的位姿进行局部或全局优化,减少误差累积,同时对场景进行回环检测
* 输出:设备实时位姿和三维点云。

视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

SfM & Visual SLAM

  1. Structure from Motion和Visual SLAM的区别
    SfM可以分为离线和实时的,而实时的SfM其实就是Visual SLAM。

  2. Visual SLAM**主要采用摄像头传感器**,
    * 根据摄像头的数目可以分为单目摄像头、双目摄像头和多目摄像头等
    * Visual SLAM也在结合其它一些传感器,比如廉价IMU、GPS和一些深度摄像头来做到更加鲁棒的SLAM

  3. 以视觉为主的SLAM技术的优势:

    • 硬件成本低廉
    • 小范围内定位精确度较高
    • 无需预先布置场景

Visual SLAM 主要挑战

Visual SLAM已经有几十年的历史,虽然理论上趋向成熟,但在复杂环境下的落地还面临着诸多挑战,比如:
1. 如何处理循环回路序列和多视频序列,如何闭合回路,消除误差累积
2. 如何高效高精度地处理大尺度场景
3. 如何处理动态场景
* 传统的SLAM假设场景是静止的,摄像头是运动
4. 如何处理快速运动和强旋转
* 摄像头快速运动,拍摄的照片模糊
* 摄像头快速旋转

我们课题组的工作

  1. ENFT-SFM:Efficient Non-Consecutive Feature Tracking for Robust SFM
  2. 单目SLAM系统
    1. ENFT-SLAM:ENFT-based Large-Scale Monocular SLAM
      • 能在大尺度场景下实时运行
    2. RDSLAM:Robust Monocular SLAM in Dynamic Environments
    3. RKSLAM:Robust Keyframe-based Monocular SLAM for Augmented Reality
  3. RGB-D SLAM: RKD-SLAM: Robust Keyframe-based Dense SLAM with an RGB-D Camera
    • RKSLAM与深度相机的融合方法

ENFT-SFM: Efficient Non-Consecutive Feature Tracking for Robust SFM

  1. 非连续特征轨迹匹配:可以大大增加关键帧间特征点的匹配数目,为后端增加足够多的约束,大大减少跟丢的情况
  2. 基于自适应分段的集束调整: 将长序列分成若干序列进行后端优化,大大加快优化速度
  3. ENFT-SLAM: ENFT-based Large-Scale Monocular SLAM 是ENFT-SFM的实时化方法

动态场景SLAM的主要问题:

  1. 场景逐渐在改变

    • 左边的例子,人在移动书本,过了几十秒所有的书本的位置都发生了变化,这对传统的SLAM来说是非常难处理的
  2. 可能有大量的错误匹配

    • 动态元素还会导致大量的错误匹配,这对实时稳定的SLAM求解来说也是非常困难的

视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

  1. 视点改变造成的遮挡

  2. 运动物体造成的遮挡

    • 会给稳定的SLAM带来挑战

视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

基于关键帧的SLAM与基于滤波器的SLAM的区别

现在Visual SLAM技术方法主要分为两类,一个是keyframe-based SLAM,另一个是filtering-based SLAM。2012年Andrew Davison等人写了一篇文章对这两个方法进行了比较,得出这样的结论:keyframe-based SLAM比filtering-based SLAM在精度上、效率和扩展性上具有更好的性能。但是keyframe-based SLAM也有缺点,一般对强旋转比较敏感。当然,快速运动、运动模糊、特征不够丰富等情况对于这两类方法都很有挑战性

具体内容参见H. Strasdat, J. Montiel, and A. J. Davison. Visual SLAM: Why filter? Image and Vision Computing, 30:65-77, 2012

视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

Visual-Inertial SLAM

  1. 使用IMU数据提高SLAM的鲁棒性
    1. 基于滤波的方法
      • MSCKF, SLAM in Project Tango
    2. 基于非线性优化的方法
      • OKVIS
  2. 没有真是IMU数据的情况下,能否工作?
    • Visual-Inertial SLAM方法广泛应用于机器人领域,这类方法使用IMU数据来提高鲁棒性。但是,在没有真实IMU数据的情况下,能否借鉴一些Visual-Inertial的方法来将SLAM做得更好呢?
    • RKSLAM就是解决了这个问题

视觉SLAM技术及其应用(章*--复杂环境下的鲁棒SfM与SLAM)

Visual SLAM技术的发展趋势

  1. 缓解特征依赖

    • 基于边的跟踪
    • 直接图像跟踪或半稠密跟踪
    • 结合机器学习和先验/语义信息
  2. 稠密三维重建

    • 单/多目实时三维重建
    • 基于深度相机的实时三维重建
    • 平面的表达和模型自适应简化
  3. 多传感器融合

    每个传感器都有优点和局限性,IMU误差累计快,GPS精度不高,目标是将各个传感器融合在一起,结合IMU、GPS、深度相机、光流计、里程计

未来的工作展望

  1. 协同SLAM
  2. 稠密SLAM
  3. 场景分析和理解
  4. 在VR、AR、机器人和无人驾驶领域进行应用