随笔分类 - AMCL
摘要:1、退化现象,随着滤波迭代次数的增加,大部分粒子的权重会变得很小,只有很少的粒子具有较大的权重。 2、退化现象会造成:1)后验概率只由少数几个权重较大的粒子表示,大多粒子对后验概率密度贡献接近于0 2)造成计算资源的浪费,使大量的计算浪费在对状态估计贡献甚微的粒子点上。 3、减少退化现象:1)增加粒
阅读全文
摘要:因为去年读过一次AMCL的源码,那时候读的时候,并不能完全理解某些模块,如map,求粒子簇的这块内容,所以再看的时候,是以地图为切入点看的,然后就是pf。这两部分弄差不多了,再重头开始整理下流程。 1、从main函数中的new AmclNode()开始 AmclNode::AmclNode() :
阅读全文
摘要:在看AMCL过程中,对坐标转移的关系不太清晰,整理下: 1、tf2::Transform map_pose = latest_tf_.inverse() * odom_pose_tf2;表示的是: void AmclNode::savePoseToServer() { // We need to a
阅读全文
摘要:上一章讲粒子滤波的初始化时,说到初始化kd tree以及插入节点。这一章,单独讲kdtree在这里面的应用。 其实这部分代码之前也看过,但是迷迷糊糊。后来刷了一些二叉排序树的题后,又回头看这部分代码,理解也清晰了很多。 基本上就是一个多维度的二叉排序树。划分的维度由Pose的坐标(x,y,theta
阅读全文
摘要:从地图数据的处理中,有粒子滤波器的初始化,以及用Pose初始值初始化滤波器,这就不得不开始看滤波器部分了。 上篇文章,讲到初始化函数pf_alloc、pf_init。在开始说明这些函数前,先了解下粒子滤波器的一些数据结构。 1、粒子滤波器的各种数据结构 滤波器的定义:定义了粒子集pf_sample_
阅读全文
摘要:之前看AMCL只是关注粒子滤波的流程,对于地图数据怎么转换没仔细看。现在有空就简单理理。 1、处理地图数据的入口是函数:handleMapMessage。ROS地图数据转换、粒子滤波器的初始化、创建传感器对象及其模型参数的初始化,均在处理地图数据的时候进行。 void AmclNode::handl
阅读全文
摘要:整理内容来自:http://wiki.ros.org/amcl 1、AMCL订阅的节点: scan (sensor_msgs/LaserScan):激光数据 tf (tf/tfMessage):各种转移矩阵,如laser_scan->base_link;base_link->odom initial
阅读全文