amcl理解
前言
首先这是我的第一篇博文,我希望以我的理解为每一个学习ROS的爱好者提供帮助,同时我也是作为一个初学者的身份,希望各路前辈能够驻足交流一下经验。如果有理解不当的地方希望指出。

正文
AMCL(adaptive Monte Carlo Localization)自适应蒙特卡洛定位 ,源于MCL算法的一种升华,一种提高。那么为什么要从MCL上升至AMCL呢?
那么我们谈谈MCL算法,蒙特卡洛定位适用于局部定位和全局定位两类问题,尽管它相对的年轻,但是已经成为定位领域中的主流算法。MCL以目前的形式解决了全局定位问题,但无法从机器人绑架或全局定位失败中恢复过来。当位置被获取时,其他地方的不正确粒子会逐渐消失。在某种程度上,粒子只能“生存”在一个单一的姿势附近,如果这个姿势恰好不正确,算法就无法恢复。.
这个问题是非常重要的,实际上任何随机算法,就想蒙特卡洛算法,在重采样步骤中可能意外的丢弃所有正确位姿附近的粒子。当粒子数很小(M=50)。并且,当粒子扩散到整个比较大的体积(如全局定位过程)时,这个问题的重要性就能充分的显示。当然这个问题已经解决了,AMCL的提出正是对这个问题的一个解决方法。AMCL算法在机器人遭到绑架的时候,会随机的注入粒子(injection of random particles)。相对MCL算法,AMCL算法正是多了一个“A”” ,那么这个"A"是什么?“”A“”是adaptive 自适应的缩写,但是个人觉得将"A"理解为Augmented(增加的)更为合适。
理清了MCL和AMCL的区别,那么我们看一下AMCL具体是怎么执行的。请看下面个人做的PPT截图。(请仔细看ppt内容,有相对的知识可以剖析,文字不做过多介绍)
(1)MCL算法和AMCL算法的区别:
AMCL算法增加了短期和长期的指数滤波器衰减率αslow,αfast,换句话说MCL中αslow,αfast为0,AMCL中的不为0。