蒙特卡洛定位算法

概述

蒙特卡罗本地化(MCL)算法来估计机器人的位置和方向。该算法使用环境,范围传感器数据,和测距传感器数据的一个公知的地图。要了解如何构造一个对象,并使用这种算法,见monteCarloLocalization.

本地化机器人中,MCL算法使用粒子滤波来估计其位置。颗粒代表可能的状态中的机械手的分布。每个粒子代表一个可能的机器人的状态。颗粒会聚围绕一个位置如在环境中的机器人移动并感测使用一系列传感器的环境的不同部分。机器人运动是利用测距传感器感测到。

粒子在这个过程中更新:

  1. 粒子根据姿态的变化和指定的运动模型进行传播,MotionModel.

  2. 这些颗粒被指定基于接收到所述范围传感器读数为每个粒子的似然性的权重。该读取根据您指定的传感器模型SensorModel.

  3. 根据这些权重,机器人状态估计提取基于粒子的权重。该组具有最高权重的颗粒被用于估计机器人的位置。

  4. 最后,根据指定的粒子重新采样ResamplingInterval.重新采样调整粒子位置,并改善通过调整使用的颗粒的数量的性能。它是用于调整变化和保持有关用于估计机器人状态的颗粒的关键特征。

该算法输出估计姿态和协方差。这些估计的平均值和颗粒的最高加权集群的协方差。对于连续跟踪,在循环中重复传播颗粒这些步骤,评估其可能性,并获得最佳状态估计。

有关粒子过滤器的一般应用程序的更多信息,请参见粒子滤波工作流程.

状态表示

使用定位算法时,目标是估计系统的状态。对于机器人应用程序,这个估计状态通常是一个机器人姿态。为monteCarloLocalization对象,你指定这个姿态为一个三元素向量。这个姿势对应于X-Y位置,[X Y]和角取向,THETA.

在MCL算法基于对环境和系统的指定运动模式的传感器输入估计这三个值。从使用的输出monteCarloLocalization对象包括姿势,这是对状态的最好估计[X Y的2θ值。粒子以初始姿态分布,InitialPose,或使用全局本地化进行统一采样。位姿的计算方法是,一旦根据测量结果对最高权重的粒子群进行校正,该粒子群的平均位姿。

该图显示了最高的加权集群,最终机器人姿态显示了样品颗粒为绿色。与MCL算法和测量校正的多次迭代,所述颗粒收敛到机器人的真实位置。然而,它是可能的粒子簇可以有假的估计高的权重,并汇聚在错误的位置。如果出现了错误的衔接,由MCL算法更新重置重新采样粒子InitialPose.

粒子的初始化

当你第一次创建monteCarloLocalization算法,指定最小和最大的粒子限制使用ParticleLimits属性。较高数量的粒子增大了粒子收敛于实际位置的可能性。然而,较低的粒子数是更快。颗粒的数量动态地调整基于颗粒簇的权重的范围内。这种调整有利于减少粒子的数量随着时间的推移这样的定位可以更有效地运行。

颗粒分布

粒子必须在指定的分布范围内采样。要初始化状态空间中的粒子,可以使用初始姿态或全局定位。使用全局定位,您可以在预期的状态空间(从地图你的属性SensorModel对象)。在默认的MCL对象中设置GlobalLocalization属性真正.

制程= monteCarloLocalization;恢复期。GlobalLocalization = true;

全局定位要求横跨状态空间有效样品颗粒较大数量的粒子。更多的粒子增加的实际状态成功融合的可能性。这种大的分布极大地降低初始性能直至颗粒开始会聚并且可以减少粒子数。

默认情况下,全球定位设为.如果没有全局本地化,则必须指定InitialPoseInitialCovariance性能,这有助于本地化颗粒。使用这个初始姿势,颗粒更紧密地围绕估计状态分组。颗粒的紧密分组,您可以使用它们的数量较少,并增加了速度和第一迭代过程的跟踪精度。

这些图片是从本地化TurtleBot使用蒙特卡罗定位这个例子演示了如何在TurtleBot中使用MCL算法®在一个已知的环境中。

重采样粒子和更新的姿态

为了持续定位你的机器人,你必须重新采样粒子并更新算法。使用UpdateThresholdResamplingInterval属性来重采样和更新的估计状态发生时控制。

UpdateThreshold是定义在机器人姿态的最小变化的三元素向量,[X Y的2θ,触发更新。超过这个最小触发更新,使物体改变一个变量返回一个新的状态估计。在机器人姿态的这种变化是基于所述测距,这是在所述对象的功能形式指定。调这些阈值根据你的传感器性能和你的机器人的运动。随机噪声或比你的阈值的微小变化可能引发不必要的更新,并影响你的表现。该ResamplingInterval属性定义触发粒子重采样的更新次数。例如,一个重采样间隔2在重采样每隔更新。

重采样粒子的好处是,你更新有助于最终估计可能位置。重新取样重新分布按权重和演变粒子颗粒基础上,运动模型.在此过程中,具有较低重量的颗粒被消除,帮助颗粒收敛到机器人的真实状态。颗粒的数量动态地改变,以提高速度或跟踪。

该算法的性能取决于正确的重采样。如果颗粒被广泛地分散和机器人的初始姿态是未知的,则该算法维持高的颗粒数。作为对真实位置的算法收敛,它减少了粒子的数量,并且增加的性能的速度。你可以调整你的ParticleLimits属性来限制用于帮助性能的最小和最大颗粒。

运动与传感器模型

用于MCL算法的运动和传感器模型是类似于StateTransitionFcnMeasurementLikelihoodFcn对于功能stateEstimatorPF中描述的对象粒子滤波参数.对于MCL算法,这些模型更适合于机器人定位。调用该对象后,要更改MotionModel要么SensorModel性质,必须先调用释放在你的对象。

传感器型号

默认情况下,monteCarloLocalization使用一个likelihoodFieldSensor对象作为传感器模型。该传感器模型包含的参数特定于所使用,2-d的地图信息对机器人环境中的距离传感器,和测量噪声特性。该传感器模型使用与范围的测量的参数来计算给定所述机器人的当前位置的测量的可能性。如果没有这些参数理,一些测量误差可以歪斜的状态估计或增加重量上不相关的颗粒。

距离传感器的特性如下:

  • SensorPose-距离传感器相对于机器人位置的姿态。此位姿用于将范围读数转换为机器人坐标系。

  • SensorLimits- 最小和最大范围限制。这些范围之外的测量不计入似然性计算。

  • NumBeams-用于计算似然的光束数。您可以通过减少使用的光束数量来提高性能速度。

范围测量也知道放弃错误的读数由于系统噪音或其他环境干扰。为了考虑传感器误差,指定这些参数:

  • MeasurementNoise-测量噪声的标准偏差。此偏差适用于范围读数,并解释与传感器的任何干扰。根据来自距离传感器的信息设置此值。

  • RandomMeasurementWeight- 随机测量的概率权。设置随机测量的概率很低。默认值是0.05。

  • ExpectedMeasurementWeight- 对于期望测量的概率重量。设置期望测量结果的可能性很高。默认值是0.95。

传感器模型还将机器人环境的地图存储为占用网格。使用binaryOccupancyMap指定您的地图与已占用和空闲空间。将地图中的任何未知空间设置为空闲位置。将它们设置为空闲位置可以防止算法将检测到的对象与地图的这些区域进行匹配。

您还可以指定MaximumLikelihoodDistance,这限制了区域用于搜索的障碍。的价值MaximumLikelihoodDistance是用于似然计算的距离最近的障碍物的最大距离。

运动模型

机器人定位的运动模型有助于预测重新采样时粒子随时间的演变。它是机器人运动学的一种表示。MCL算法默认包含的运动模型是基于里程的微分驱动运动模型(odometryMotionModel)。如果没有运动模型,预测下一个步骤是比较困难的。重要的是要知道你的系统的功能很重要,这样的定位算法可以计划颗粒分布,以获得更好的状态估计。一定要考虑用来测量测距轮编码器或其它传感器错误。该系统中的错误定义了颗粒分布的传播。

您可以指定根据你的机器人作为四个元素的矢量的运动预期错误,噪声.这四种元素被指定为在标准偏差的权重[1]

  • 旋转误差由于旋转运动

  • 由平动引起的转动误差

  • 平移误差由于平移运动

  • 平移误差由于旋转运动

对于差分驱动器的机器人中,当从起始姿势到最终姿势的机器人的移动,在姿态的变化可以作为处理过的:

  1. 旋转到最终位置

  2. 在一条直线翻译到最终位置

  3. 旋转的目标取向

假设这些步骤,您可以直观的错误在旋转和平移效果。在你的可能位置的初始旋转产生的错误是摊开在围绕最后一个位置的C形。

大型平移误差导致的可能的位置是摊开各地直接线到最终位置。

在这两个平移和旋转较大误差可能导致更广泛的扩展位置。

此外,旋转误差影响最终姿势的方向。了解这些效果可以帮助您在定义高斯噪声噪声财产MotionModel对象,用于您的特定应用程序。如图所示,每个参数并不直接控制色散,并且可以随着机器人的配置和几何形状而变化。此外,当机器人在你的环境中导航时,多个姿势的改变会在许多不同的步骤中增加这些错误的影响。通过精确定义这些参数,粒子被适当地分布,从而为MCL算法提供足够的假设,从而找到对机器人位置的最佳估计。

参考

[1]特龙,塞巴斯蒂安,和Dieter福克斯。概率机器人。第3版。马萨诸塞州剑桥:麻省理工学院出版社,2006年第136页。

也可以看看

||

相关话题