ros小车实现slam_gmapping建图

news2024/12/24 20:50:58

    ros小车2d建图,如果有雷达,那么使用gmapping方式建图,其实就一个命令,启动建图程序,它默认会启动小车,之后,我们通过手柄或者键盘控制小车就可以有地图产生,然后就需要保存地图,新手上路,不免出现很多问题。

    我这里是轮趣科技WHEELTEC的一款ros教育机器人,根据官方给的示例,在turn_on_wheeltec_robot/launch下面就有一个mapping.launch的启动文件,默认使用的是gmapping建图方式,直接启动该文件即可。

<launch>
  <arg name="mapping_mode"  default="gmapping" doc="opt: gmapping,hector,cartographer,karto"/>
  
  <!-- 是否在建图时开启导航 默认不开启 仅在rrt自主建图时同时进行-->
  <arg name="navigation" default="false"/>
  <arg name="odom_frame_id"  default="odom_combined"/>

  <!-- turn on lidar开启雷达  -->
  <include file="$(find turn_on_wheeltec_robot)/launch/wheeltec_lidar.launch" />

  <!-- 启动APP一键保存地图功能  -->
  <node pkg="world_canvas_msgs" type="save" name="save_map" />

  <!-- 开启gmapping建图算法  -->
  <group if="$(eval mapping_mode == 'gmapping')">
  <include file="$(find turn_on_wheeltec_robot)/launch/include/algorithm_gmapping.launch" />
  <!-- 开启机器人底层相关节点  -->
  <include file="$(find turn_on_wheeltec_robot)/launch/turn_on_wheeltec_robot.launch">
    <arg name="navigation" value="$(arg navigation)"/>
    <arg name="is_cartographer" value="false"/>
    <arg name="odom_frame_id"   value="$(arg odom_frame_id)"/>
  </include>
  </group>
  <!-- // 后面其他建图方式省略-->
</launch>
roslaunch turn_on_wheeltec_robot mapping.launch

    不出意外,就出现红叉叉:

    ERROR: cannot launch node of type [gmapping/slam_gmapping]: gmapping 

    解决办法就是安装ros-melodic-gmapping,ros-melodic-move-base。

apt install ros-melodic-gmapping ros-melodic-move-base

    再重新启动不报错了,但是我们打开rviz查看地图,没有显示地图,我们点击Add,添加Map,Topic选择/map,又出现新的告警:

Status Warn: no map received 

    这个警告呢,主要是雷达的问题,这里启动成功,查看topic都有,/map,/scan,而且rviz中LaserScan显示正常,通过 rostopic echo /scan没有任何输出,就是雷达启动失败。

     根据网上的资料,是因为雷达型号默认设置错误。在文件turn_on_wheel_robot/launch/wheeltec_lidar.launch中根据实际情况设置合适的型号。我这里默认是default = "ls_M10P_uart",实际上我的雷达型号是N10,所以这里修改default="ls_N10"

    雷达型号,一般在雷达上有标识:

    再次启动,雷达启动正常,打印信息如下所示:

    对比前面启动失败的情况,正常启动之后,Initialised lslidar x10 without error 后面还多了雷达初始化信息。 启动失败的时候,是没有这些信息的。

    接着可以测试雷达数据,命令行运行 rostopic echo /scan,就会输出很多点位信息。

    这个时候rviz里面就显示正常了:

    运行一段时间之后,可以保存地图,如下所示,直接在turn_on_wheeltec_robot/map2目录下保存:

rosrun map_server map_saver -f WHEELTEC

    生成的文件有pgm,yaml格式。 

    正常gmapping建图,就两个命令,一个启动建图 roslaunch turn_on_wheeltec_robot mapping.launch和一个保存地图 rosrun map_server map_saver -f WHEELTEC。但是新手常常会遇到很多奇怪的问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/902832.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【高级IO】- 五种 IO 模型 | 多路转接 - select

IO的基本概念 I/O&#xff08;Input / output&#xff09;就是输入和输出&#xff0c;在冯诺依曼体系中&#xff0c;将数据从输入设备拷贝到内存叫做输入&#xff0c;将数据从内存拷贝到输出设备叫做输出。 对文件进行的读写操作本质就是一种IO&#xff0c;文件IO对应的外设就…

【2023最新爬虫】爬取知乎任意问题下的全部回答

老规矩&#xff0c;先上结果&#xff1a; 爬取了前200多页&#xff0c;每页5条数据&#xff0c;共1000多条回答。&#xff08;程序设置的自动判断结束页&#xff0c;我是手动break的&#xff09; 共爬到13个字段&#xff0c;包含&#xff1a; 问题id,页码,答主昵称,答主性别,…

【Python】json文件的读取

文章目录 1. json简介2.json的使用规范3.json文件的书写4.json文件的读取 1. json简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;常用于将结构化数据进行传输和存储。它基于JavaScript语法&#xff0c;但可以被多种编程…

玩机搞机----面具模块的组成 制作模块

root面具相信很多玩家都不陌生。早期玩友大都使用第三方卡刷补丁来对系统进行各种修复和添加功能。目前面具补丁代替了这些操作。今天的帖子了解下面具各种模块的组成和几种普遍的代码组成。 Magisk中运行的每个单独的shell脚本都将在内部的BusyBox的shell中执行。对于与第三方…

(排序) 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 ——【Leetcode每日一题】

❓剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 难度&#xff1a;简单 输入一个整数数组&#xff0c;实现一个函数来调整该数组中数字的顺序&#xff0c;使得所有奇数在数组的前半部分&#xff0c;所有偶数在数组的后半部分。 示例&#xff1a; 输入&#xff1a;nums [1…

绘制原型图的常用工具之墨刀

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于OA项目的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.墨刀是什么 二.墨刀的作用 三.墨刀界…

opencv-手势识别

# HandTrackingModule.py import cv2 import mediapipe as mpclass HandDetector:"""使用mediapipe库查找手。导出地标像素格式。添加了额外的功能。如查找方式&#xff0c;许多手指向上或两个手指之间的距离。而且提供找到的手的边界框信息。"""…

【MySQL】JSON 格式字段处理

MySQL 5.7 版本后已支持 JSON 格式&#xff0c;这虽是 MySQL 的一小步&#xff0c;但可以说是程序开发的一大步&#xff0c;再也不用将 JSON 内容塞到 VARCHAR 类型字段了&#xff0c;程序设计也会变得更加灵活。网上大多只针对JSONObject 对象类型&#xff0c;本文也将详解 JS…

Linux网络服务之iptables防火墙工具

I P T A B L E S 一、防火墙简介1.1 netfilter1.2 firewalld和iptables 二、iptables工具简述2.1 定义2.2 三种报文流向2.3 iptables的表、链结构&#xff08;非常重要&#xff09;2.3.1 "四表" ----- 规则表2.3.2 "五链" ----- 规则链 三、iptables配置3.…

适合低成本兼职的十个职业,做得好可能比上班挣得还多

这个年头干点什么兼职或者副业比较合适的&#xff0c;其实做兼职和副业就那么几条原则&#xff1a;最好是轻资产或者不投入资金&#xff0c;因为这个年代是现金流和储蓄为王&#xff0c;不能乱投资&#xff0c;一旦出了差错&#xff0c;更是雪上加霜。还有就是最好在网络上做兼…

对话音视频牛哥:开发RTSP|RTMP直播播放器难不难?难在哪?

我关注的播放器指标 好多开发者跟我交流音视频相关技术的时候&#xff0c;经常问我的问题是&#xff0c;多久可以开发个商业级别的RTMP或RTSP播放器&#xff1f;你们是怎样做到毫秒级延迟的&#xff1f;为什么一个播放器&#xff0c;会被你们做到那么复杂&#xff1f;带着这些…

一文详解4种聚类算法及可视化(Python)

在这篇文章中&#xff0c;基于20家公司的股票价格时间序列数据。根据股票价格之间的相关性&#xff0c;看一下对这些公司进行聚类的四种不同方式。 苹果&#xff08;AAPL&#xff09;&#xff0c;亚马逊&#xff08;AMZN&#xff09;&#xff0c;Facebook&#xff08;META&…

裴蜀定理-拓展欧几里得算法--夏令营

题目 知识点 1.裴蜀定理&#xff1a; 欧几里得算法gcd辗转相除法 拓展欧几里得算法exgcd裴蜀定理 2.证明&#xff1a; 3.. 代码&#xff1a; int exgcd(int a, int b, int& x, int& y) {if (!b){x 1, y 0;return a;}int d exgcd(b, a % b, y, x);y - a / b * x;…

rabbitMq安装后无法启动可视化页面http://localhost:15672处理

本次安装环境信息&#xff1a; 系统&#xff1a;win10 64位专业版 erlang&#xff1a;otp_win64_23.0 rabbitMQ&#xff1a;rabbitmq-server-3.8.5 安装rabbitMQ需要依赖erlang语言环境&#xff0c;所以需要我们下载erlang的环境安装程序。 一、下载安装程序 rabbitMQ安装…

Lombok 同时使用 @Data 和 @Builder 的巨坑,千万别乱用!

1、Lombok 使用演示 Lombok 使⽤同时使⽤ Data 和 Builder &#xff0c;构建无参构造器报错&#xff01;编译不通过。如下图&#xff1a; Lombok 使⽤ Data 可以自动⽣成⽆参构造和类⾥⾯所有属性的 getter/setter ⽅法。可以简化我们代码的开发。&#xff08;IDEA 需要安装 L…

Redis主从复制搭建

Redis主从复制搭建 Redis虽然拥有非常高的性能&#xff0c;但是在实际的生产环境中&#xff0c;使用单机模式还是会产生不少问题的&#xff0c;比如说容易出现 单机故障&#xff0c;容量瓶颈&#xff0c;以及QPS瓶颈等问题。通常环境下&#xff0c;主从复制、哨兵模式、Redis…

从关键新闻和最新技术看AI行业发展(2023.6.23-7.9第二期) |【WeThinkIn老实人报】

Rocky Ding 公众号&#xff1a;WeThinkIn 写在前面 【WeThinkIn老实人报】是WeThinkIn的全新栏目&#xff0c;旨在整理&挖掘AI行业的关键新闻和最新技术&#xff0c;同时Rocky会对这些关键信息进行解读&#xff0c;力求让读者们能从容跟随AI科技潮流。也欢迎大家提出宝贵的…

中国大学生服务外包创新创业大赛丨借 AI 之力,助“记账”难题

一、中国大学生服务外包创新创业大赛 赛事介绍 中国大学生服务外包创新创业大赛&#xff0c;是响应国家关于鼓励服务外包产业发展、加强服务外包人才培养的相关战略举措与号召&#xff0c;举办的每年一届的全国性竞赛。 大赛均由中华人民共和国教育部、中华人民共和国商务部…

08.SpringBoot请求相应

文章目录 1 请求1.1 Postman1.2 简单参数1.2.1 原始方式1.2.2 SpringBoot方式1.2.3 参数名不一致 1.3 实体参数1.3.1 简单实体对象1.3.2 复杂实体对象 1.4 数组集合参数1.4.1 数组1.4.2 集合 1.5 日期参数1.6 JSON参数1.7 路径参数 2 响应2.1 ResponseBody注解2.2 统一响应结果…

RHCE——二、时间服务器

时间服务器 一、时间服务器1、重要性2、Linux的系统时钟以及硬件时钟3、NTP网络时间协议4、Chrony介绍 二、chrony安装与配置1、安装2、Chrony配置文件分析3、实验3.1 实验13.2 实验2 三、chronyc命令1、查看时间服务器&#xff1a;2、chronyc sources输出分析3、其它命令4、常…