SLAM for Dummies 全文总结

转载请注明出处:https://blog.csdn.net/q_z_r_s/article/details/84311010

机器感知
一个专注于SLAM、三维重建、机器视觉等相关技术文章分享的公众号
公众号:机器感知

SLAM for Dummies 全文总结

1. Introduction

本文的目的是介绍针对移动机器人的SLAM教程。有很多论文是关于SLAM的,对于此领域的新手而言,这可能需要花费很多时间去理解实现SLAM所涉及的intricacies。因此本文希望在呈现此领域时尽量保持需要最少的先决条件。当你读完本文之后,相信你也可以实现一个基本的SLAM。

SLAM实现方法很多,首先就是可使用的硬件很多,其次SLAM与其说是一个算法,不如果它更像一个概念(concept)。SLAM涉及的步骤很多,不同的步骤又可以用不同的算法来实现。大部分时候我们针对这些不同的步骤阐述一个单一的方法,但为了进一步阅读,提示其他可能的方法。

写这篇文章的动机主要是保住我们自己去更好的理解SLAM,俗话说:能把别人教懂了,才是真的懂了(英语原文不是这样的,我临时编的^_^)。另一个原因是,现存的很多关于SLAM的论文都是偏向理论的,而且主要关注的是SLAM某一个小领域上的创新,当然这也是这些论文的初衷所在。本文的目的是希望能更偏向于实践,且简单、基本的SLAM算法,这可以成为一个去更好的理解SLAM的开始(这句话翻译的自己读着都别扭)。对于了解SLAM的同学,我们将展现一个完整的、使用用EKF的SLAM解决方案。完整并不意味着完美,意思是我们会涉及实现SLAM的所有基本步骤。值得注意的是,SLAM问题并没有完全被决解,此领域依然有很多值得研究的地方。

为了方便大家,这里提供了所有代码,所以只需要下载、编译、安装到硬件中运行即可。

2. 关于SLAM

SLAM这个术语是Simultaneous Localization And Mapping的缩写形式。最初由Hugh Durrant-Whyte 和 John J. Leonard[7] 基于 Smith, Self and Cheeseman [6]早期的工作研发的。Durrant-Whyte 和 Leonard 刚开始的时候称其为SMAL,但后来改了。SLAM关注的问题是使用移动机器人在未知环境建图,同时使用此地图在此环境中进行导航

SLAM有很多部分组成: Landmark extraction, data association, state estimation, state update and landmark update(保持原文)。每一个小部分都有很多方法来解决,我们将展示每部分的例子,这也说明某些部分是可以使用新的方法来实现的·······SLAM可以应用的2D和3D运动中,我们这里只考虑2D运动。

3.硬件

机器人:里程计、相机、机器人控制系统、激光扫描仪、声纳。

4. SLAM步骤
5. 激光数据
6. 里程计数据

提供机器人大致的位置,里程计的输出当作EKF的初始估计值;里程计数据和激光数据需要时序对应,为了解决时序不匹配,可以在相同的时间点对其中一个数据进行插值。对里程计进行插值是最容易的,因为控制是已知的。而激光下一次的测量是多少很难预测。

7. 路标
  • 所谓路标:是那些容易被再次观测到的且明显跟环境不一样的特征。
  • 决定让机器人识别的路标点应该足够多,否则机器人会走丢。
  • 路标点应该是静止的,选择人为路标点是很糟糕的想法,原因很明显,如果路标点不在同一个地方,机器人如何确定给定的路标点在哪里呢?(路标点在哪都不知道,又何来的估计自己的位置呢?)
  • 适合作为路标点的关键点应具有以下特性:
    • 容易被再次观测到
    • 明显区别于其他的关键点
    • 数量要多
    • 需要是静止的
8. 路标点提取

使用激光扫描仪的基本路标点提取算法:Spikes 和 RANSAC。

9. 数据关联

数据关联问题是将来自不同扫描时间观测到的路标点进行相互匹配,也指那些被重新观测到的路标点。现在我们顶一个一个数据关联策略来解决这个问题。假设使用一个数据库来存储先前看到的路标点,此数据库初始情况下通常为空。第一个规则:只有当一个路标点被观测到N次时才认为这是一个有价值的路标点,这可以消除提取到比较糟糕的路标点的情况。

  1. 当获得一次新的激光扫描时,使用路标提取算法提取所有可见的路标点

  2. 关联所提取的路标点到数据库中存储的最近的路标点

  3. 验证所关联的路标点是否有效

    a. 如果路标点对通过验证,这意味着观测到了同一个路标点

    b. 如果关联验证无效,就添加为一个新的路标点

在使用最近的数据库中的路标点关联路标点时,此方法被称作最近邻法,最简单的就是计算欧氏距离。

验证方法基于一个事实:EKF给出了一个路标点的观测的不确定性的边界。因此,我们决定一个观测到的路标点是否和数据库中的某个路标点匹配时,通过检测这个路标点是否在这个不确定度之内来决定。此不确定度可以通过可视化来显示,也就是众所周知的error ellipse。可以通过设置一个常量 λ \lambda λ,如果满足下式则关联此路标点:

v i T S i − 1 v i ≤ λ (1) v_i^T S_i^{-1} v_i \leq \lambda \tag1 viTSi1viλ(1)

其中, v i v_i vi 为新息, S i S_i Si 为定义在EKF章节中的新息的协方差矩阵。

10. EKF

EKF通过里程计数据和路标点观测来估计机器人的状态,当机器人被给定一个完美的地图时,EKF通常用来做状态估计,因为这里不需要地图更新。在SLAM和状态估计EKF中,矩阵是不一样的,而且很难辨别是如何实现的,这是因为从没有人提及过这些。我们将逐一讲解。大部分EKF是标准形式的,一旦矩阵设置好了,它就只剩下一些公式了。

SLAM可以分为三个步骤

  • 使用里程计数据更新当前状态估计
  • 根据重新观测到的路标点更新被估计的状态
  • 把新的路标点添加当前状态中

SLAM中的矩阵

  • 系统状态矩阵X
  • 协方差矩阵P
  • 卡尔曼增益K
  • 测量模型的雅可比矩阵H
  • 预测模型的雅可比矩阵A
  • SLAM特有的雅可比矩阵 J x r J_{xr} Jxr J z J_z Jz
  • 过程噪声QW
  • 测量噪声RV
11. 最后备注

本文所呈现的SLAM是一个非常非常基本的SLAM,有很大的改进空间,还有很多方面没有涉及到,例如回环检测的问题。这个SLAM也可以结合到占用栅格中。

12. 参考文献
  1. Koenig, Likhachev: Incremental A* (D*)
  2. Bosse, Newman, Leonard, Soika, Feiten, Teller: An ATLAS framework
  3. Roy: Foundations of state estimation (lecture):
  4. Zunino: SLAM in realistic environments:
    http://www.nada.kth.se/utbildning/forsk.utb/avhandlingar/lic/020220.pdf
  5. Welch, Bishop: An introduction to the Kalman Filter:
  6. Smith, Self, Cheesman: Estimating uncertain spatial relationships in robotics
  7. Leonard, Durrant-Whyte: Mobile robot localization by tracking geometric beacons:
  8. Se, Lowe, Little: Mobile Robot Localization and Mapping using Scale-Invariant Visual
    Landmarks:
    http://www.cs.ubc.ca/~se/papers/ijrr02.pdf
  9. SICK, industrial sensors:
    http://www.sick.de
  10. Evolution Robotics
    http://www.evolution.com
  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值