SLAM FOR DUMMIES 第5-8章 中文翻译

5,SLAM的处理过程

SLAM过程包括许多步骤,该过程的目标是使用环境更新机器人的位置。由于机器人的里程计通常是存在误差的,我们不能直接依赖于里程计。我们可以用激光扫描环境来校正机器人的位置,这是通过从环境中提取特征并不断观察机器人移动来实现的。EKF(扩展卡尔曼滤波器)是SLAM过程的核心。EKF负责基于环境特征对机器人位置进行更新,这些环境特征通常被称为LANDMARK,以下我们统称为地标,关于地标,将在接下来的几章中与EKF一起解释。EKF对机器人位置的不确定性以及在环境中所见的地标的不确定性进行了跟踪。

下图给出了SLAM过程的概要。(1、激光传感器对环境特征(地标)进行提取->数据融合给EKF算法;)

当里程计发生变化时,由于机器人的移动的有一个不确定的误差,因此新的机器人位置将基于里程计的更新数据经过EKF处理进行更新。地标将从机器人所处的新的环境中被提取出来,然后机器人试图将这些地标与之前看到的地标联系起来。重新观察的地标被用来更新机器人在EKF中的位置。以前未见过的地标被添加到EKF中作为新的观测依据,以便以后可以重新观测。所有这些步骤将在接下来的章节中以非常实用的方式解释我们的ER1机器人是如何实现的。需要注意的是,在这些步骤中的任何时刻EKF都将对机器人当前的位置进行估计。

下面的图表将试图更详细地解释这个过程:机器人由三角形表示。星星代表地标。机器人最初用传感器测量地标的位置(用闪电表示的传感器测量)。

图2

-------------------------------------------------------------------------------------------

机器人根据编码器等算出来的里程计数据,认为他自己在如下图3的位置

图3

--------------------------------------------------------------------------------------

同步地,机器人再次使用激光传感器测量地标,算出机器人在图4的位置,但发现这个位置与机器人计步法认为它们应该在的位置不匹配。因此,机器人并不在它根据编码器里程计测算出的图3的位置。

图4

-----------------------------------------------------------------------------------------------------------------------------

由于相比计步法里程计位置,机器人更相信激光传感器,所以现在它利用地标所获得的信息来确定自己的位置点线三角形(机器人最初认为自己的位置由虚线三角形表示)。

图5

-------------------------------------------------------------------------------------------------------------------------------------------

事实上,机器人却在这图6实线三角形。激光传感器也并不完美,因此可以确切的说,机器人无法精确地知道它在哪里。然而,这个激光的传感器估计比仅仅依靠编码器计步法要好。点线三角形表示机器人通过激光传感器认为的位置;这个虚线三角形是计步法里程计告认为的位置;然而EKF算法却不相信他们任何一个是精确地位置,于是他算出了最后一个实线三角形的位置。

图6

 

6,激光数据
        SLAM过程的第一步是获取机器人周围环境的数据。当我们选择使用激光扫描仪时,我们就可以得到激光数据。我们使用的SICK激光扫描仪可以输出一个角度100°或180°测量范围。垂直分辨率为0.25°、0.5°或1.0°,意味着激光测量的区域宽度是0.25°,宽0.5°或1.0°。典型的激光扫描仪输出如下:
2.98,2.99,3.00,2.98,2.99,3.49,3.50,....,2.20,8.17,2.21
激光扫描仪的输出以米表示从右到左的范围。
如果由于某种原因,激光扫描仪不能测出特定角度的确切长度,它将返回一个高值,我们使用8.1作为阈值来判断该值是否为错误的。但是一些激光扫描仪可以配置超过8.1米的测量范围,这里只需要配置为8.1m。最后需要注意的是激光扫描仪数据输出非常快,使用串行端口可以达到11HZ的频率。
与激光扫描仪接口的代码见附录B:SICK LMS200 interface code.
7,里程计数据
        SLAM的一个重要方面是里程计数据。里程计数据的目的是提供一个机器人的大致位置,通过机器人车轮的运动来测量,作为在扩展卡尔曼滤波器中机器人可能在哪里的初步猜测。使用内置的telnet服务器很容易从ER1机器人获得里程数数据。您可以将一个文本字符串发送到特定端口上的telnet服务器,服务器将返回应答。
计步测程数据和激光数据的难点在于正确的获得时间,就是控制两数据同步获取和数据融合。如果以后检索里程计数据,那么某个时刻的激光数据将会过时失效。为了确保它们同时有效,我们可以推断数据。由于运动控制是已知的,所以最容易推断里程计数据。很难预测激光扫描仪的测量结果。如果可以控制返回测量值的时间,那么同时请求激光扫描仪值和测程数据就比较容易了。与ER1接口的代码附录C: ER1 interface code.

8,环境特征(地标)
地标是那些很容易被重新观察并区别于环境的特征形状。就是这些地标被机器人用来分析它在哪里(定位自己)。
类比一下,你的眼睛被蒙起来行走,就能想象这个机器人是如何工作的。如果你被蒙着眼睛在你熟悉的房子里移动,你可能会伸出手触摸物体或拥抱墙壁,这样你就不会迷路了。诸如触摸门框这样的特征事物的感觉可以帮助你估计你在哪里。声呐和激光扫描仪就是的机器人的触觉。
以下是来自不同环境的良好的地标:

图7自由女神像是一个很好的地标,因为它是独一无二的,可以很容易地从不同的环境或地点看到,如陆地、海洋和空气。

 

图8码头上的木柱可能是水下航行器的地标。
正如你所看到的,机器人所使用的地标类型往往取决于机器人所处的环境。
地标应该被可重新探测,例如从不同的位置,从不同的角度都能够被探测出。地标应该足够独特,这样就可以从一个时间帧到另一个时间帧被很容易地探测而不会混淆。换句话说,如果你在稍后的时间重新观察两个地标,你应该很容易就能确定哪个是我们之前见过的那个地标。如果两个地标前后探测起来非常相近,这就比较尴尬了。
一个机器人在环境中给定识别的地标应该足够多,否则没有足够的可见地标的话,机器人可能不得不花更长时间,这样机器人可能会迷路。
如果你决定某物是一个地标它应该是静止的。使用一个人作为地标是一个坏主意。这个标准的原因很简单。如果这个地标并不总是在同一个地方,那么机器人怎么知道这个地标在哪里呢?
怎么利用它来定位呢,关于合适的地标,重点特点如下:
•地标很容易被重新探测。
•不同的地标应该相互区别。
•环境中的地标应该很丰富。
•地标应该是特定固定静止的。

图9在我们的机器人使用的室内环境中,有许多直线和清晰的角。这些都可以用作地标。

 

7.特征提取

根据上述步骤6确定完需要提取的特征后,我们接下来需要从测距单元获得的信息中准确的提取出我们需要的特征。特征提取的方法有很多种,其主要取决于需要提取特征以及测距单元的类型。

这里,我们将以如何从激光雷达得到的信息提取有效特征为例进行说明。这里,我们使用两种典型的特征提取方法,Spike方法和RANSAC方法。

Spike方法使用极值寻找特征。通过寻找测距单元返回数据中相邻数据差距超过一定范围的点作为特征点。通过这种方法,当测距单元发射的光束从墙壁上反射回来时,测距单元返回的数值为某些值;而当发射光束碰到其他物体并反射回来时,此时测距单元将返回另外一些数值;两者将具有较大的差别。如下图所示:

图中红点为根据Spike方法提取到的特征。

 

Spike方法也可以通过下面的步骤实现,对于相邻的三个点A,B,C,分别计算(A-B)与(C-B),然后将两者相加,如果结果超过一定范围,则表示提取到一个特征。

采用Spike方法提取环境特征,需要保证相邻两个激光束照射的物体距离机器人距离之间具有较大的变化,因而,其并不能够适用于光滑环境中的特征提取。

RANSAC(随机采样方法)也可以被用于从激光测距单元返回数据中提取系统特征。其中测距单元返回数据中的直线将被提取为路标。在室内环境中,由于广泛存在墙壁等,因而,在测距单元返回的数据中将存在大量的直线。

RANSAC首先采用随机采样的方法提取测距单元返回数据中的一部分,然后采用最小二乘逼近方法来对上述数据进行拟合。进行数据拟合后,RANSAC方法将会检查测距单元数据在拟合曲线周围的分布情况。如果分布情况满足我们的标准,那么我们就认为机器人看到了一条直线。

在使用EKF估计机器人位置和环境地图时,EKF需要将地标按照距离机器人当前的位置和方位表示出来。我们可以很容易的使用三角几何的方法将提取到的直线转变为固定的特征点,如下图所示:

 

posted @ 2018-07-26 18:09  乡下老农  阅读(594)  评论(0编辑  收藏  举报