摘要: 从地图数据的处理中,有粒子滤波器的初始化,以及用Pose初始值初始化滤波器,这就不得不开始看滤波器部分了。 上篇文章,讲到初始化函数pf_alloc、pf_init。在开始说明这些函数前,先了解下粒子滤波器的一些数据结构。 1、粒子滤波器的各种数据结构 滤波器的定义:定义了粒子集pf_sample_ 阅读全文
posted @ 2021-07-14 17:05 水水滴答 阅读(590) 评论(0) 推荐(0) 编辑
摘要: 之前看AMCL只是关注粒子滤波的流程,对于地图数据怎么转换没仔细看。现在有空就简单理理。 1、处理地图数据的入口是函数:handleMapMessage。ROS地图数据转换、粒子滤波器的初始化、创建传感器对象及其模型参数的初始化,均在处理地图数据的时候进行。 void AmclNode::handl 阅读全文
posted @ 2021-07-14 15:03 水水滴答 阅读(349) 评论(0) 推荐(0) 编辑
摘要: uniformPoseGenerator函数中,按均匀分布在地图上随机生成一个位姿。 unsigned int rand_index = drand48() * free_space_indices.size(); //均匀采样drand48(),随机找到一个像素点的序号 std::pair<int 阅读全文
posted @ 2021-07-14 11:48 水水滴答 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 在看AMCL源码中,发现srand函数 srand48(time(NULL)); 表示根据当前系统时间,获取48位运算随机数 需要的头文件 #include <stdlib.h> #include <time.h> [此处内容转自https://blog.csdn.net/cnmilan/artic 阅读全文
posted @ 2021-07-14 11:09 水水滴答 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 在看AMCL源码时,有几处用到函数指针的声明,如下 // Function prototype for the initialization model; generates a sample pose from // an appropriate distribution. typedef pf_ 阅读全文
posted @ 2021-07-14 10:54 水水滴答 阅读(140) 评论(0) 推荐(0) 编辑