SLAM for Dummies SLAM初学者教程
A Tutorial Approach to Simultaneous Localization and Mapping 一本关于实时定位及绘图(SLAM)的入门指导教程
目录
1. 目录
2. 简介
3. 关于SLAM
4. 硬件
-机器人
-距离量测设备
5. SLAM处理过程
6. 雷达数据
7. 里程计数据
8. 地标
9. 地标提取
SPIKE地标
RANSAC
多种策略
10. 数据结合
11. EKF扩展科尔曼滤波
过程简介
矩阵(系统状态:X,协方差矩阵:P,卡尔曼增益:K,测量模型的雅克比矩阵:H,预测模型的雅克比矩阵:A,SLAM特殊雅克比矩阵:Jxr和Jz,处理过程噪声:Q和W,测量噪声:R和V)
第一步:使用里程计数据更新当前状态
第二步:通过重观测地标更新状态
第三步:添加新的地标到当然状态
12. 最终评语
13. 参考
14. 附录A:坐标转换
15. 附录B:SICK LMS 200 接口代码
16. 附录C:ER1 接口代码
17. 附录D:地标提取代码
2. 简介
本文档的目的是为了简要介绍移动机器人的SLAM。读了本文章你应该能够实施SLAM了。SLAM可以通过许多方式得到实施。有很多的硬件可供选择。SLAM更像是一个概念而非一个单独的算法。SLAM涉及很多步骤,而这些步骤又可以使用不同的算法得到实施。在大多数情况下我们针对各个步骤各自只解释一个方法,但隐含地读者可以通过更多的阅读得到还有其他可能的方法来实现它们。
写这篇文章的目的是帮助我们自己理解它。一个人能够通过讲解更好地理解这个知识。而且当前的SLAM文章大都太理论化而且大多数只集中在SLAM的各个小领域,不够总结性。因此,本文的目的便是实用而且集中在一个小的而且是基本的SLAM算法上,从而可以作为一个出发点更好地理解SLAM这个概念。对于在SLAM方面有一些背景知识的人来说,我们这里提供了一个完整基于EKF(扩展卡尔曼滤波器)算法的解决方案。当然我们并不能保证这个解决方案完美,我们只是说能够覆盖所有所需要的基本步骤,从而使实施能够启动并且运行。另一方面需要注意的是SLAM还没有被完全解决,在该领域还有很多研究在进行。
为了更容易实现所有的代码均提供了下载,所以只需要下载下来,编译,安装到硬件上(SICK牌雷达扫描器,ER1牌机器人),然后执行程序;即插即用。我们使用了Microsoft Visual Studio C#语言编写的代码,在.net framework v.1.1下编译的。大部分代码都是非常直观的,几乎可以当成伪代码阅读,所以转换成其他的语言或平台应该来说是非常容易的。
3. 关于SLAM
术语SLAM是Simultaneous Localization And Mapping的缩略词。它是关于解决使用移动机器人创建一个未知环境的地图,同时使用该地图在该环境中导航。
SLAM包括多个组成部分;地标提取,数据融合,状态估计,状态更新,和地标更新。每个小部分都有多种方法来解决。我们将展示各个部分的实例。这也意味着某些部分是可以使用新方法替代它们的。作为一个实例我们将展示两种不同的方法来解决地标提取问题,并对不同的方法进行评论。观点就是你能够使用我们的方法并且使用你针对这些算法自己的新奇方法扩展它。我们决定集中精力在一个室内环境移动机器人上。你可以选择改变这些算法以使得它可以用在不同的环境中。
SLAM可以使用在2D和3D运动中。我们这里只考虑2D运动。
如果读者已经熟悉了SLAM的话这将是有用的。有很多好的简介比如参考[6][4]。知道一点EKF算法也很有帮助。有很多介绍比如参考[3][5]。有一点背景知识总是有帮助的,因为这会让你更容易地理解本教程,但是并不严格要求你去理解这些。
4. 硬件
机器人的硬件是非常重要的。要做SLAM需要一个移动机器人和一个距离测量器。我们这里使用的移动机器人是滚轮室内机器人。该文档集中主要在SLAM的软件使用,并不探究机器人复杂的运动模型(比如机器人是如何运动的)比如人型机器人,自动水下设备,无人机,奇怪的滚轮构造机器人等。
我们这里介绍一些常用的用于移动机器人SLAM的基本的测量设备。
机器人
需要考虑的重要的参数有易用、可量距和价格适中。
可量距性决定了机器人能否通过滚轮的转动很好地估计它的自身位置。机器人不应该有超过2cm/米、2度/45度的误差。典型的机器人驱动器允许机器人报告它的笛卡尔坐标系统下的(x,y)位置,并且报告机器人当前的轴承/航向。
当然可以从头开始建机器人。但是这将会是很耗时的,但也是一个学习的过程。但是很可以买一个现成的机器人了,像Real World Interface或者像Evolution Robotics ER1 robot。RW1并不在各处售卖,但是通常在世界各地的许多计算机实验室中可以见到。但RW1机器人有众所周知的测距差的毛病。这增加了预测当前位置的困难,让SLAM更加难做。这里我们使用了ER1。这个又小又便宜。它作科研使用只需要200美元,做私人使用需要300美元。它带有一个摄像头和一个机器人控制系统。我们已经在附录以及网站上提供了非常基本的驱动器。