gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现

gmapping功能包订阅机器人的深度信息、IMU信息和里程计信息,同时完成一些必要参数的配置,即可创建完成基于概率的二维栅格地图(机器人地图一般分为三种类型:栅格地图,拓扑地图,特征地图)。gmapping功能包基于openslam社区的开源SLAM算法,相关链接:openslam

一、话题和服务

二、参数

在这里插入图片描述

三、坐标变换

下面是来自与一篇博客的学习笔记:tf坐标系转换(gmapping)

在这里插入图片描述

对于gmapping来说,一般坐标系就是map,odom,base_link,base_laser坐标系。

   map:地图坐标系,顾名思义,一般设该坐标系为固定坐标系(fixed frame),一般与机器人所在的世界坐标系一致

   odom:里程计坐标系,这里要区分开odom topic,这是两个概念,一个是坐标系,一个是根据编码器(或者视觉等)计算的里程计。 但是两者也有关系,odom topic 转化得位姿矩阵是odom–>base_link的tf关系。这时可有会有疑问,odom和map坐标系是不是重合的?可以很肯定的告诉你,机器人运动开始是重合的。但是,随着时间的推移是不重合的,而出现的偏差就是里程计的累积误差。那map–>odom的tf怎么得到?就是在一些校正传感器合作校正的package比如gmapping会给出一个位置估计(localization),这可以得到map–>base_link的tf,所以估计位置和里程计位置的偏差也就是odom与map的坐标系偏差。所以,如果你的odom计算没有错误,那么map–>odom的tf就是0(最后一句话是不是有点问题)

   base_footprint:坐标系原点base_link在2d平面(一般为地面)的投影
   base_link:一般位于tf tree的最根部,物理语义原点,一般表示机器人中心,为相对机器人的本体的坐标系
   base_laser:激光雷达的坐标系,与激光雷达的安装点有关,其与base_link的tf为固定的
 
这些坐标系之间的关系有些是静态的、有些是动态的。比如当机器人底盘移动的过程中,机器人底盘与世界的相对关系map->base_footprint就会随之变化;而安装在机器人底盘上的激光雷达、imu这些传感器与机器人底盘的相对关系base_footprint->base_laser_link、base_footprint->imu_link就不会随之变化。