#Gmapping

2023-05-16

#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,多运行几次,好像就可以稳定了。附:实践报告六(仅供参考,请勿他用!)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

#Gmapping 的相关文章

随机推荐

  • 【数据结构与算法】(JAVA版)递归,迷宫问题的解决

    递归 递归需要遵守的规则 xff1a span class token number 1 span span class token punctuation span 执行一个方法时 xff0c 就在JVM栈中开辟一块内存 xff0c 用于
  • socket编程十三:send()/recv()和write()/read():发送数据和接收数据

    在 Linux 和 Windows 平台下 xff0c 使用不同的函数发送和接收 socket 数据 xff0c 下面我们分别讲解 Linux下数据的接收和发送 Linux 不区分套接字文件和普通文件 xff0c 使用 write 可以向套
  • 【数据结构与算法】(JAVA版)8大排序算法带图文解说,选择排序,冒泡排序,插入排序,希尔排序,快速排序,归并排序,基数排序,堆排序

    排序算法 常见排序列表 xff1a 1 冒泡排序 xff08 Bubble Sorting xff09 span class token keyword package span span class token namespace que
  • 【数据结构与算法】(Java)二分法查找,插值查找,斐波那契查找,哈希表应用场景:员工信息管理在内存中

    查找算法 有序表查找 二分法查找 span class token keyword package span span class token namespace dataStructure span span class token pu
  • ubuntu 20.04 | 设置默认 python、pip(软连接)并换源

    ubuntu 20 04 设置默认python pip xff08 软连接 xff09 并换源 PythonPip1 安装pip32 建立软连接3 更换pip源4 更新pip5 卸载pip6 使用pip6 1 pip安装软件包6 2 pip
  • JavaWeb实现简单登录功能

    创建一个web项目 xff0c 配置好Tomcat xff0c java环境 xff0c 并部署到idea中 xff0c 安装好MySQL并导入jar包 mysql connector的jar包 jquery的js包 servlet api
  • telnet是什么

    Telnet是远程连接服务 xff0c 它工作于tcp ip协议的应用层 telnet命令通常用来远程登录 是Internet远程登陆服务的标准协议和主要方式 它为用户提供了在本地计算机上完成远程主机工作的能力 在终端使用者的电脑上使用te
  • 头文件与库文件的区别

    一 头文件与库文件的区别 头文件一般而言 xff0c 是申明和定义 库文件是已经编译好的二进制代码 这个二进制代码可以是动态的 xff0c 如 so xff1b 也可以是静态的 xff0c 如 a 如果是动态的 xff0c 则最后生成的程序
  • C++入门 vector的使用 + 进阶【模拟实现】

    目录 基本接口函数介绍迭代器空间容量增删查改迭代器失效问题探讨 vector模拟实现reserve迭代器空间容量删除insert析构函数vector拷贝构造函数拷贝赋值运算符 基本接口函数介绍 函数名功能vector xff08 重点 xf
  • C++11:继承

    目录 继承的基本概念 继承方式 基类和派生类对象赋值转换 切片 继承中的作用域 派生类的四个成员函数 xff1a 构造函数 拷贝构造函数 赋值重载 析构函数 静态成员 继承与友元 多继承 菱形继承 多继承的指针偏移问题 组合 继承的基本概念
  • socket编程二十六:基于UDP的服务器端和客户端

    前面的文章中我们给出了几个 TCP 的例子 xff0c 对于 UDP 而言 xff0c 只要能理解前面的内容 xff0c 实现并非难事 UDP中的服务器端和客户端没有连接 UDP 不像 TCP xff0c 无需在连接状态下交换数据 xff0
  • 下载高清电影的必须收藏的网站

    下载高清电影的必须收藏的网站 Posted 2012 12 06 分类 生活范儿 电影 生活范儿 电影 CHD 虽然蓝光推出 xff0c 但是高清已经势不可挡 xff0c 动辄几G甚至几十G一部的电影冲击着我们的视觉 xff0c 也考验着我
  • 电赛总结|电赛注意事项

    电赛总结 赛前 1 准备模块非常重要 如果没有提前准备模块 xff0c 在赛中也是在想尽办法买模块 xff0c 只是花更多的钱和运费等 xff0c 也不会去自己搭 所以赛前一定要准备模块 常见模块 降压模块 xff0c 升压稳压模块 xff
  • Putty使用教程

    Putty作为免费且开源的老牌 SSH 客户端 xff0c PuTTY 经常用于 Windows 下连接管理远程服务器 为方便刚接触 VPS 的新手参考使用 xff0c 本文配合截图介绍 PuTTY 的基础用法及一些设置技巧 xff0c 希
  • #Python实现话题的发布与订阅

    Python实现话题的发布与订阅 首先我们的先了解ROS文件系统的基本框架 xff0c 如下图所示 xff1a 由上图可知 xff0c py文件放在工作包里面的scripts文件夹内 xff0c 所以 xff0c 整活 xff01 1 在工
  • #创建自定义topic

    创建自定义topic 前面我们学了用C 43 43 和Python创建发布者与订阅者 xff0c 这次我们创建自定义的话题 xff0c 其实同C 43 43 实现topic差不多 xff0c 都是编写 cpp文件 步骤有点多且繁琐 xff0
  • #使用TF实现海龟机器人跟随

    使用TF实现海龟机器人跟随 昨天粗略地讲解了一会儿TF变换 xff0c 用的是ROS系统中自带的功能包实现小海龟跟随的功能 xff08 具体见 初识TF变换 xff09 今天我们将用自己编写节点的方式实现小海龟跟随的功能 xff0c 并且
  • #创建虚拟机器人URDF模型

    创建虚拟机器人URDF模型 题外话 xff1a 作业发布已有一两天了 xff0c 之所以今天才编辑这篇博客 xff0c 是因为我也遇到问题了 xff0c 现在以及解决了 xff08 小细节 xff1a 创建功能包之前先编译工作空间确保里面已
  • # gazebo 仿真

    gazebo 仿真 1 给 base link 添加惯性 xff0c 碰撞以及 gazebo 属性 在路径xqrobot description urdf xacro 件夹下新建 件夹 gazebo xff0c 并在 gazebo 件下创建
  • #Gmapping

    Gmapping 开始之前先安装两个功能包 xff0c 命令如下 xff1a sudo apt span class token operator span get install ros span class token operator