SLAM_Gmapping建图

1、Gmapping简介

优点:Gmapping可以实时构建室内地图,在构建小场景地图所需的计算量较小且精度较高。

缺点:随着场景增大所需的粒子增加,因为每个粒子都携带一幅地图,因此在构建大地图时所需内存和计算量都会增加。因此不适合构建大场景地图。并且没有回环检测,因此在回环闭合时可能会造成地图错位,虽然增加粒子数目可以使地图闭合但是以增加计算量和内存为代价。

image-20231218203929783

2、程序功能说明

小车连接上代理,运行程序,rviz中会显示建图的界面,用键盘或者手柄去控制小车运动,直到建完图。然后运行保存地图的指令保存地图。

3、查询小车信息

3.1、启动并连接代理

RISC-V小车成功开机后,需要临时关闭掉自启动程序防止冲突(详情查看《0.开机自启动和临时关闭》),打开终端输入以下指令打开代理,连接成功如下图所示,

image-20240507165339617

注:如果卡在前面两条log,可以按一下小车上的复位按键,这是因为第二次连代理需要重置一下。

3、启动程序

首先启动小车处理底层数据程序,终端输入,

image-20240507185534062

输入指令启动rviz可视化建图

image-20240507185649617

此时还没运行建图节点,所以没有数据。接下来运行建图节点,终端输入,

image-20240507185818214

然后运行手柄控制或者键盘控制,二选一,终端输入,

然后控制小车,缓慢的走完需要建图的区域,建图完毕后,输入以下指令保存地图,终端输入,

image-20240507185955735

会保存一个命名为yahboom_map的地图,这个地图保存在,

会有两个文件生成,一个是yahboom_map.pgm,一个是yahboom_map.yaml,看下yaml的内容,

5、查看节点通讯图

终端输入,

image-20240125193219729

如果一开始没有显示,选择【Nodes/Topics(all)】,然后点击左上角的刷新按钮。

6、查看TF树

终端输入,

image-20240507190527346

运行完毕后,会在终端的目录下生成两个文件分别是.gv和.pdf文件,其中的pdf文件就是TF树。

image-20240125193245956

 

7、代码解析

这里只说明建图的map_gmapping_launch.py,这个文件路径是,

map_gmapping_launch.py

这里启动了一个launch文件-slam_gmapping_launch和一个发布静态变换的节点-base_link_to_laser_tf_node。详细看下slam_gmapping_launch,该文件位于,

slam_gmapping.launch.py,

这里启动了slam_gmapping的节点,加载了slam_gmapping.yaml参数文件,该文件位于(以配套虚拟机为例),

slam_gmapping.yaml