#Gmapping

本文档详细介绍了如何在ROS Kinetic中使用Gmapping进行SLAM建图,包括安装依赖、创建功能包、配置rviz、编写启动文件、加载地图、控制机器人移动、保存地图以及展示建图效果。通过实践步骤,帮助读者掌握机器人室内定位与建图的基本流程。
摘要由CSDN通过智能技术生成

#Gmapping

开始之前先安装两个功能包,命令如下:

sudo apt-get install ros-kinetic-map-server
sudo apt-get install ros-kinetic-slam-gmapping

注意输完敲回车的时候要输入密码,安装过程中会提示安装此功能包会消耗多少内存,问你是否同意,输入Y就行了(应该小写的也行)。

1.创建⼀个xqrobot_gmapping功能包在这里插入图片描述

在这里插入图片描述

2.配置rviz

1)启动主节点
在这里插入图片描述
2)启动rviz
在这里插入图片描述
3)修改Fixed Frame:将其修改为map
在这里插入图片描述
4)添加地图Map并修改相应参数
在这里插入图片描述
在这里插入图片描述
5)添加RobotModel和LaserScan
在这里插入图片描述
在这里插入图片描述
将LaserScan的Topic设置为/scan,并将szie改为0.03。
在这里插入图片描述
6)在xqrobot_gmapping功能包中新建config目录用于存放.rviz文件
在这里插入图片描述
7)保存配置好的rviz模型
将配置好的rviz模型保存在xqrobot_gmapping下的config⽬录中
在这里插入图片描述
在这里插入图片描述

3.回到工作空间下编译

在这里插入图片描述

4.创建gmapping的启动文件

在这里插入图片描述
将以下代码粘贴到gmapping.launch文件中:

<launch> 
<arg name="scan_topic" default="scan" />  //laser的topic名称,与⾃⼰的激光的topic相对应 
<arg name="set_base_frame" default="base_footprint"/> 
<arg name="set_odom_frame" default="odom"/> 
<arg name="set_map_frame" default="map"/> 
<node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen" clear_params="true"> //启动gampping的节点 
<param name="base_frame" value="$(arg set_base_frame)"/> //设置base_frame坐标为 base_footprint 
<param name="odom_frame" value="$(arg set_odom_frame)"/>/ //设置odom_frame坐标为odom
<param name="map_frame" value="$(arg set_map_frame)"/> //设置map_frame坐标为map
<param name="map_update_interval" value="2.0"/>//地图更新的⼀个间隔,两次scanmatch的间隔,地 图更新也受scanmach的影响,如果scanmatch没有成功的话,是不会更新地图的。
<!-- Set maxUrange < actual maximum range of the Laser -->
<param name="maxUrange" value="12.0"/>
<param name="sigma" value="0.05"/>
<param name="kernelSize" value="1"/>
<param name="lstep" value="0.05"/>//optimize机器⼈移动的初始值(距离)
<param name="astep" value="0.05"/>//optimize机器⼈移动的初始值(⻆度)
<param name="iterations" value="5"/>//icp的迭代次数
<param name="lsigma" value="0.075"/>
<param name="ogain" value="3.0"/>
<param name="lskip" value="0"/>//为0,表⽰所有的激光都处理,尽可能为零,如果计算压⼒过⼤,可 以改成1
<param name="minimumScore" value="50"/>
<param name="srr" value="0.01"/>//以下四个参数是运动模型的噪声参数
<param name="srt" value="0.02"/>
<param name="str" value="0.01"/>
<param name="stt" value="0.02"/>
<param name="linearUpdate" value="1.0"/>//机器⼈移动linearUpdate距离,进⾏scanmatch
<param name="angularUpdate" value="0.2"/>//机器⼈选装angularUpdate⻆度,进⾏scanmatch
<param name="temporalUpdate" value="0.5"/>
<param name="resampleThreshold" value="0.5"/>
<param name="particles" value="40"/>//粒⼦个数
<param name="xmin" value="-10.0"/>
<param name="ymin" value="-10.0"/>
<param name="xmax" value="10.0"/>
<param name="ymax" value="10.0"/>
<param name="delta" value="0.05"/>
<param name="llsamplerange" value="0.01"/>
<param name="llsamplestep" value="0.01"/>
<param name="lasamplerange" value="0.005"/>
<param name="lasamplestep" value="0.005"/>
<remap from="scan" to="$(arg scan_topic)"/>
</node>
</launch>

保存并退出后,在终端中继续输⼊以下指令创建xqrobot_gmapping.launch
在这里插入图片描述
将以下代码粘贴到xqrobot_gmapping.launch文件中:

<launch> 
<!-- 加载机器⼈模型描述参数 xqrobot--> 
<include file="$(find xqrobot_description)/launch/display_xqrobot_gazebo.launch"/><!-- 打开gazebo仿真环境--> 
<include file="$(find xqrobot_gmapping)/launch/gmapping.launch"/><!--启动slam_gmapping节点--> 
<node pkg="rviz" type="rviz" name="rviz" required="true" args="-d $(find xqrobot_gmapping)/config/gmapping.rviz"/> 
</launch>

5.加载地图

1)在学习通章节目录下找到“Gmapping地图”,点进去之后下载“world.tar.gz”压缩包,解压缩后将其复制到xqrobot_description文件夹下,如下图所示:
在这里插入图片描述
或者通过网盘链接下载此压缩包 → world.tar(提取码:6rpa)
2)修改display_xqrobot_gazebo.launch文件
在这里插入图片描述
在这里插入图片描述
将第12行改为以下三行,其余不变。
在这里插入图片描述
供复制:

	<arg name="world_name" value="$(find xqrobot_description)/world/room.world"/> 
	<include file="$(find gazebo_ros)/launch/empty_world.launch"> 
	<arg name="world_name" value="$(arg world_name)" />

6.开始建图

在这里插入图片描述
在这里插入图片描述
打开一个新的终端,运行键盘控制节点,控制机器人移动

lzw08@ubuntu:~$ cd ros_ws
lzw08@ubuntu:~/ros_ws$ source devel/setup.bash
lzw08@ubuntu:~/ros_ws$ roslaunch xqrobot_teleop xqrobot_teleop.launch 

在这里插入图片描述
这里说明一下,按q/z可以增加/减少线速度和角速度,w/x可以增加/减少线速度,e/c可以增加/减少角速度。按“i”前进,按“,”后退,按“u”逆时针旋转(左转),按“o”顺时针旋转(右转)。
在这里插入图片描述

7.保存地图

在这里插入图片描述
在这里插入图片描述

8、效果展示

①gazebo物理仿真环境中截图
在这里插入图片描述
② rviz可视化界面截图
在这里插入图片描述
③ 使用QT可视化工具,查看topic之间的关系

lzw08@ubuntu:~$ rqt_graph 

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
④ 保存建好的地图

rosrun map_server map_saver -f map

在这里插入图片描述
以上的命令只是保存地图的作用,并不会打开。它自动将生成的地图文件(.pgm和.yaml文件)保存在Home目录下,需要手动双击打开才有上图效果~

说明

gazebo模型在我电脑上运行不太稳定,多运行几次就行了。关闭再运行,重复几次,还有那句:export SVGA_VGPU10=0,多运行几次,好像就可以稳定了。附:实践报告六(仅供参考,请勿他用!)

  • 4
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值