SLAM简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SLAM简介
1. 关于SLAM
SLAM是同步定位与地图构建(Simultaneous Localization And Mapping)的缩写,最早由Hugh Durrant-Whyte 和 John J.Leonard提出。SLAM主要用于解决移动机器人在未知环境中运行时定位导航与地图构建的问题。
SLAM通常包括如下几个部分,特征提取,数据关联,状态估计,状态更新以及
特征更新等。对于其中每个部分,均存在多种方法。针对每个部分,我们将详细解释
其中一种方法。在实际使用过程中,读者可以使用其他的方法代替本文中说明的方法。这里,我们以室内环境中运行的移动机器人为例进行说明,读者可以将本文提出的方
法应用于其他的环境以及机器人中。
SLAM既可以用于2D运动领域,也可以应用于3D运动领域。这里,我们将仅讨论2D领域内的运动。
2. 机器人平台
在学习SLAM的过程中,机器人平台是很重要的,其中,机器人平台需要可以移动并且至少包含一个测距单元。我们这里主要讨论的是室内轮式机器人,同时主要讨
论SLAM的算法实现过程,而并不考虑一些复杂的运动模型如人形机器人。
在选择机器人平台时需要考虑的主要因素包括易用性,定位性能以及价格。定位
性能主要衡量机器人仅根据自身的运动对自身位置进行估计的能力。机器人的定位精
度应该不超过2%,转向精度不应该超过5%。一般而言,机器人可以在直角坐标系中根据自身的运动估计其自身的位置与转向。
从0开始搭建机器人平台将会是一个耗时的过程,也是没有必要的。我们可以选
择一些市场上成熟的机器人开发平台进行我们的开发。这里,我们以一个非常简单的
自己开发的机器人开发平台讨论,读者可以选择自己的机器人开发平台。
目前比较常见的测距单元包括激光测距、超声波测距、图像测距。
其中,激光测距是最为常用的方式。通常激光测距单元比较精确、高效并且其输
出不需要太多的处理。其缺点在于价格一般比较昂贵(目前已经有一些价格比较便宜
的激光测距单元)。激光测距单元的另外一个问题是其穿过玻璃平面的问题。另外激
光测距单元不能够应用于水下测量。
另外一个常用的测距方式是超声波测距。超生波测距以及声波测距等以及在过去
得到十分广泛的应用。相对于激光测距单元,其价格比较便宜;但其测量精度较低。
激光测距单元的发射角仅0.25°,因而,激光基本上可以看作直线;相对而言,超声波的发射角达到了30°,因而,其测量精度较差。但在水下,由于其穿透力较强,因而,是最为常用的测距方式。最为常用的超声波测距单元是Polaroid超声波发生器。
第三种常用的测距方式是通过视觉进行测距。传统上来说,通过视觉进行测距需
要大量的计算,并且测量结果容易随着光线变化而发生变化。如果机器人运行在光线
较暗的房间内,那么视觉测距方法基本上不能使用。但最近几年,已经存在一些解决
上述问题的方法。一般而言,视觉测距一般使用双目视觉或者三目视觉方法进行测距。使用视觉方法进行测距,机器人可以更好的像人类一样进行思考。另外,通过视觉方
法可以获得相对于激光测距和超声波测距更多的信息。但更过的信息也就意味着更高
的处理代价,但随着算法的进步和计算能力的提高,上述信息处理的问题正在慢慢得
到解决。
这里,我们使用激光测距方法进行距离测量。其可以很容易实现较高的测量精度
并且很容易应用于SLAM中。
3. SLAM的一般过程
SLAM通常包含几个过程,但最终目的【是更新机器人的位置估计信息】。由于
通过机器人运动估计得到的机器人位置信息通常具有较大的误差,因而,我们不能单
纯的依靠机器人运动估计机器人位置信息。在使用机器人运动方程得到机器人位置估
计后,我们可以使用测距单元得到的周围环境信息更正机器人的位置。上述更正过程
一般通过提取环境特征,然后在机器人运动后重新观测特征的位置实现。SLAM的核
心是EKF。EKF用于结合上述信息估计机器人准确位置。上述选取的特征一般称作地标。EKF将持续不断的对上述机器人位置和周围环境中地标位置进行估计。SLAM的
一般过程如下图所示:
当机器人运动时,其位置将会发生变化。此时,
根据机器人位置传感器的观测,提取得到观测信息
中的特征点,然后机器人通过EKF将目前观测到特
征点的位置、机器人运动距离、机器人运动前观测
到特征点的位置相互结合,对机器人当前位置和当
前环境信息进行估计。下图是估计的详细过程。
上图中三角形表示机器人,星号表示路标;机器人首先使用测距单元测量地标相对于机器人的距离和角度。
然后进行开始进行运动,并且到达一个新的
位置,机器人根据其运动方程预测其现在所处于
的新的位置。
在新的位置,机器人通过测距单元重新测
量各个地标相对于机器人的距离和角度,测量
得到的距离和角度与上述预测结果可能并不一
致,因而,上述预测值可能并不是机器人准确
位置。
在机器人看来,通过传感器获得的信息
相对于通过运动方程得到的信息更为准确,
因而,机器人将通过传感器的数据更新对机
器人位置的预测值,如上图中实线三角形所
示(虚线为第一步中通过运动信息预测的机器
人位置)。
经过上述结合直轴,我们重新估计得
到的新的机器人位置如上图实线三角形所
示,但由于测距单元精度有限,因而,此
时,机器人可能实际处于上图点状三角形
位置,但此时估计结果相对于初始预测结
果已经有明显的改善。
4. 测距单元
SLAM的第一步需要通过测距单元获取机器人周围环境的信息。这里,我们以激光测距单元为例。以一个常见的激光测距单元为例,其测量范围可到360°,水平分辨率为0.25°,即激光束的角度为0.25°。其输出如下:
2.98,2.99,
3.00,3.01,3.02,3.49,3.50,...,2.20,8.17,2.21
激光测距单元的输出表示机器人距最近障碍物的距离。如果由于某些原因,激光测距单元无法测量某个特定角度上的安全范围,那么其将返回一个最大值,这里以8.1