#Gmapping

news/2024/4/16 3:01:10

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


http://www.ppmy.cn/news/641265.html

相关文章

EdgeGallery — MEP — APIs

目录 文章目录 目录MEP APIGW Admin APIMEP APIGW Proxy APIMEP AuthMEP ServerMEP APIGW Admin API 查看 APIGW Admin API 是否启用:$ netstat -lpntu | grep 844 tcp 0 0 192.168.1.232:8443 0.0.0.0:* LISTEN 17752/docker-proxy tcp …

MedSegDiff

MedSegDiff: Medical Image Segmentation with Diffusion Probabilistic Model 摘要 第一个基于DPM的通用医学图像分割任务模型为了提高医学图像分割中DPM的分步区域注意&#xff0c;提出了动态条件编码方法&#xff0c;为每一步采样建立状态自适应条件进一步提出了特征频率分…

什么是 Mage

标题 1. 什么是 Mage1.1. 什么是 gradle1.2. 什么是 Gitea1.3. 什么是 JRuby1.4. 什么是 packetbeat 1. 什么是 Mage Mage 是基于 golang 开发的, 类似 make/rake 的工具, 我们可以使用 golang 代码编写类似 make 的功能。 1.1. 什么是 gradle Gradle 是一个基于 Apache Ant…

MAGE~

来自 MIT 和谷歌的研究人员提出了一种全新的框架MAGE&#xff0c;同时在图像识别和生成两大任务上实现了 SOTA。统一框架MAGE&#xff1a;表征学习超MAE&#xff0c;无监督图像生成超越 Latent Diffusion 识别和生成是人工智能领域中的两大核心任务&#xff0c;如果能将二者合并…

EdgeGallery — MECM — 系统架构

目录 文章目录 目录MECM 系统架构 MECM 系统架构 APPO&#xff08;Application Orchestrator&#xff09;&#xff1a;APPO 用于完成 App Life Cycle Management 的 App Rules Management 的编排工作、Edge Cloud Capabilities 的采集工作、Edge Cloud Resource Manager 的管理…

什么是GEMM?该怎么去学习GEMM?

什么是GEMM&#xff1f; 它的英文全称是 GEneral Matrix to Matrix Multiplication (通用矩阵的矩阵乘法)&#xff0c;Gemm在神经网络的计算中占据很重要的位置。 它代表全局矩阵到矩阵的乘法&#xff0c;它本质上完全按照它在tins上所说的那样&#xff0c;将两个输入矩阵乘法在…

剑指 Offer 33: 二叉搜索树的后序遍历序列

这道题运用的后序遍历一个很重要的性质&#xff1a;最后一个值是根节点&#xff0c;并且二叉搜索树的性质使得右子树的数全都大于左子树。 这里有三个重要的地方&#xff0c; 第一个是当Start值大于等于End&#xff08;即为只有一个节点时&#xff0c;此时已经满足条件&#xf…

Vue 时间转换

文章目录 将秒转换成简单时间格式方式一 表格渲染方式二 js转换 将时间转换为字符串方式一 年、月、日、时、分、秒、星期等信息方式二 返回多久之前的时间 将秒转换成简单时间格式 方式一 表格渲染 element-ui 表格为例&#xff0c;duration 单位为秒 <el-table-column …

佘太地纯的前世今生

佘太地纯的前世今生 &#xff08;一&#xff09;. 酒的诞生&#xff0c;被先祖视为对神明的供品 自古以来&#xff0c;我们的祖先就有“酒是天上酒星所造”的说法&#xff0c;据专家们考证&#xff0c;阴山岩刻中有凹型圆坑&#xff0c;这是古先人群用来盛酒祭天所为。这些约…

【银行对公业务】

2020 年授信政策解读与交流 2020 年 1 月 17 日 2020 年度授信政策 二、总体原则 &#xff08;一&#xff09; 服务实体原则。 新增资源和存量盘活要向实体产业增配。支持科创企业、制造业高质量发展&#xff0c;服务先进制造业和现代服务业深度融合。择优支持一批区域性特色产…

从里面学到的关于过去的经验 前篇

一个聋子看别人放炮仗。他就很奇怪&#xff1a;好好的一个花纸卷&#xff0c;怎么说散就散了&#xff1f; 数据科学家思维模型提醒你 注意一个区别&#xff1a;通过 直觉来进行决策&#xff0c;和通过 数据来进行决策的区别。 其实&#xff0c;假设你就是一个聪明的政府干部&…

举支付以纳万象,行普惠以厚民生

普惠服务社会&#xff0c;方便大众 随着2013年国家正式提出“发展普惠金融&#xff0c;鼓励金融创新&#xff0c;丰富金融市场层次和产品”&#xff0c;“普惠金融”的概念逐渐走入了大众的视野。作为能够有效、全方位地为社会所有阶层和群体提供服务的金融体系&#xff0c;如何…

Sparse Fuse Dense: 向高质量的深度补全3D目标检测迈进

点云的稀疏性&#xff1a;在远距离和遮挡区域提供的信息较差&#xff0c;导致难以生成精确的3D边界框。 出现了多模态融合。 图像和点云的不同表示方式使得它们难以融合&#xff0c;导致性能不佳。 论文提出了一种新颖的多模态框架SFD&#xff08;Sparse Fuse Dense&#xf…

用友NC uapjs RCE漏洞复现(CNVD-C-2023-76801)

0x01 产品简介 用友NC是一款企业级ERP软件。作为一种信息化管理工具&#xff0c;用友NC提供了一系列业务管理模块&#xff0c;包括财务会计、采购管理、销售管理、物料管理、生产计划和人力资源管理等&#xff0c;帮助企业实现数字化转型和高效管理。 0x02 漏洞概述 用友NC及N…

见证微信小程序之火热

火热的小程序 2016年1月11号&#xff0c;张小龙在公开演讲中首次透露微信将推出应用号。 2016年9月22号凌晨&#xff0c;朋友圈传出了应用号内测的消息&#xff0c;开始刷屏。 9月22号白天&#xff0c;微信小程序&#xff08;应用号&#xff09;在网络上炸锅了&#xff0c;朋…

win10微信卡顿_终于找到Win10卡顿病根了!看完秒懂

新酷产品第一时间免费试玩,还有众多优质达人分享独到生活经验,快来新浪众测,体验各领域最前沿、最有趣、最好玩的产品吧~!下载客户端还能获得专享福利哦! 本文来自太平洋电脑网 我们知道Win10自带了杀毒方案Windows Defender,但这在提高安全性的同时,在某些场景也带来了…

小程序访问本地服务器拒绝访问,文件夹拒绝访问的原因与解决办法

一般来说遇到文件夹拒绝访问主要是由于病毒或者管理者权限不够导致的 下面分别自己介绍下&#xff1a; ⒈)电脑中病毒导致文件夹拒绝访问 通常某些顽固病毒文件喜欢隐藏在某些文件夹当中&#xff0c;如果电脑中病毒后&#xff0c;就可能破坏管理权限&#xff0c;导致访问文件夹…

PHP laravel 微信 JsApi 支付详细过程

1 &#xff1a;下载微信支付 sdk&#xff08;php&#xff09;&#xff0c;下载地址 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter11_1 下载完成之后&#xff0c;我是直接解压将整个 sdk文件夹放到根目录下的 verdor 目录中&#xff0c;然后将 sdk 文件夹下 exam…

ThinkPHP5整合微信支付

首先在extend目录新建一个文件夹建立如下脚本&#xff1a; WxPayApi.php 脚本如下&#xff1a; <?phpnamespace LjWxPay;require_once "WxPayConfig.php";/*** Class WxPayApi* package LjWxPay* 微信支付API*/class WxPayApi{/**** 统一下单 公众号* $openId 用…

微信小程序 wx.request封装

参考链接&#xff1a; &#xff08;1&#xff09;详解微信小程序网络请求接口封装 https://blog.csdn.net/zyplll/article/details/112272324 &#xff08;2&#xff09;微信小程序 wx.request 的封装 https://www.wxapp-union.com/portal.php?modview&aid3660 &#xff0…
最新文章