amcl算法问题
2017-10-23 19:09
281 查看
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。
(2)四个参数的含义
(3)Xt代表M个粒子的集合,第5行利用运动模型从旧粒子采样获取新位姿,第6行它的重要性权重依据测量模型设置。
(4)AMCL中最重要的地方就是随机采样概率。(看图说话)
(5)motion_model用的是《概率机器人》这本书第5章的sample_motion_model_velocity
(6)各个参数的作用、
(7)measurement_model用的是《概率机器人》这本书的第6章landmark_model_known_correspondece
(8)算法各部分作用,以及算法的输入输出
定位显示
借用《Probablistic Robotics》书中一个例子,AMCL算法的全局定位的一个过程:白色小圆点代表:真实的机器人位置,红色圈圈代表离自己均值(请仔细对照图,分析过程,收获颇丰)
在进行第一次标记检测时,几乎所有粒子根据这个检测抽取,如图b所示。该步骤对应测量概率的短期平均小于测量概率的长期平均的情况。多次检测后,粒子紧紧环绕早真实的机器人周围,就像d所示,并且短期和长期测量似然平均都将增加。在这个定位阶段,机器人只是跟踪其位置,观察似然相当高,并且只偶尔增加小数量的随机粒子。
当将机器人放置在其他位置时,测量概率下降。在这个新的位置,第一次标记检测还没有触发任何附加粒子,因为平滑估计Wfast仍然很高(e),在新位置进行了几次标记检测后,Wfast比Wslow下降的快,并有更多的随机粒子被加进来(f、g)。最后机器人定位成功。
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- AutoLayout学习常见问题
- 有关Unicode和非Unicode之间的转化问题
- 九度OJ 1254:N皇后问题 (N皇后问题、递归、回溯)
- nutch1.2常见问题解决
- Intellij idea处理Spring MVC单元测试问题
- spring和mybatis整合冲突问题
- Elasticsearch系列05:Elasticsearch集群问题处理
- C++随笔——成员函数的相互调用问题:
- point 问题
- 一、adb-wifi连接注意问题
- php上传2M以上文件限制问题
- hibernate中使用oracle的序列作为主键问题
- iOS 10 配置问题
- 最小生成树的应用--城市高速公路问题
- struts中文参数问题
- C/C++内存存储的几个问题
- 推荐系统中的同现矩阵问题
- 解决python中遇到的乱码问题
- Android控件动态设置style的问题