【ROS机器人】 --- 2-2.slam建图保存

2023-05-16

“山无拦 海无遮!”

  • 前期准备
  • 建图
    • I、运行机器人(gazebo)
    • II、建图文件编写
    • III、配置rviz并保存
      • 1.添加机器人和雷达
      • 2.添加TF
      • 3.地图map
      • 4.保存配置
    • IV、控制运动建图
    • V、保存地图
      • 1. map_server
      • 2. 保存查看
    • VI、发布地图话题
  • 说明

【仿真】:借用之前搭建好摄像头、激光雷达、深度相机等传感器的模型,完成本节slam建图,保存内容。
实现:

  1. 打开gazebo和模型文件(car_move.launch)
  2. 编写gampping运行并打开rviz
  3. 完成rviz配置,启动机器人控制,实现slam建图
  4. 使用map_server保存文件(launch文件)

前期准备

  1. 延用工作空间test2_ws;
  2. 功能包demo5_navigation存放代码;
  3. slam-gampping和rviz代码在demo5_navigation/launch/nav1_slam.launch;
  4. 保存地图的代码在demo5_navigation/launch/nav1_save_map.launch;
  5. rviz配置在demo5_navigation/config/rviz/nav1.rviz;
  6. 自动生成的地图文件保存在demo5_navigation/map文件夹。

建图

首先sudo apt安装gmapping map_server move_base 。
然后新建功能包demo5_navigation,依赖gmapping map_server amcl move_base。

I、运行机器人(gazebo)

执行之前的代码:

roslaunch demo4_urdf_gazebo car_move.launch

作用是在gazebo中打开具有各个传感器功能的机器人。如下图:
gazebo

II、建图文件编写

slam-gmapping。

是一个launch文件,复制官网代码修改, 官网链接
nav1_slam.launch修改之后如下(已经加入了rviz文件打开和配置加载):

<launch>
        <!-- if simulation then true -->
        <param name="use_sim_time" value="true"/>
        <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
        <!-- laser's topic name -->
        <remap from="scan" to="scan"/>
                <!--param list-->
                <!-- 关键坐标系设置 -->
                <param name="base_frame"    value="base_footprint" />
                <param name="map_frame"    value="map" />
                <param name="odom_frame"    value="odom" />

                <param name="map_update_interval" value="5.0"/>
                <param name="maxUrange" value="16.0"/>
                <param name="sigma" value="0.05"/>
                <param name="kernelSize" value="1"/>
                <param name="lstep" value="0.05"/>
                <param name="astep" value="0.05"/>
                <param name="iterations" value="5"/>
                <param name="lsigma" value="0.075"/>
                <param name="ogain" value="3.0"/>
                <param name="lskip" value="0"/>
                <param name="srr" value="0.1"/>
                <param name="srt" value="0.2"/>
                <param name="str" value="0.1"/>
                <param name="stt" value="0.2"/>
                <param name="linearUpdate" value="1.0"/>
                <param name="angularUpdate" value="0.5"/>
                <param name="temporalUpdate" value="3.0"/>
                <param name="resampleThreshold" value="0.5"/>
                <param name="particles" value="30"/>
                <param name="xmin" value="-50.0"/>
                <param name="ymin" value="-50.0"/>
                <param name="xmax" value="50.0"/>
                <param name="ymax" value="50.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"/>
        </node>

        <!-- 坐标系变换发布 -->
        <!-- 关节以及机器人状态发布节点 -->
        <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" />
        <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" />
        <node pkg="rviz" type="rviz" name="rviz" args="-d $(find demo5_navigation)/config/rviz/nav1.rviz"  />
</launch>

运行该文件

roslaunch demo5_navigation nav1_slam.launch

此时打开了空的rviz,如下:
在这里插入图片描述

III、配置rviz并保存

1.添加机器人和雷达

添加robotmodel,laserscan(话题:/scan,size(m)加粗线条,提升查看效果)
laser

2.添加TF

这里打开frames,我们主要观察关键的三个坐标系:base_footprint、map、odom。将其余注释:
tf

3.地图map

添加map,话题订阅/map。

map

4.保存配置

CTR+shift+s,另存为demo5_navigation/config/rviz/nav1.rviz

IV、控制运动建图

控制台键入命令:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py 

然后控制机器人将全图跑完,根据配置可知rviz中每5s刷新一次地图。直到地图完全跑完(建完)。

V、保存地图

1. map_server

位置:demo5_navigation/launch/nav1_save_map.launch
编写launch文件如下:

<launch>
    <arg name="filename" value="$(find demo5_navigation)/map/nav" />
    <node name="map_save" pkg="map_server" type="map_saver" args="-f $(arg filename)" />
</launch>
  • 第一行参数是地图保存到的文件夹。

2. 保存查看

运行:

roslaunch demo5_navigation nav1_save_map.launch

运行/保存完毕控制台会出现done字样。

此时可以看到/map中多了两个文件nav.pgm和nav.yaml,打开一个可执行文件nav.pam(图片)如下
map

对于这两个文件的具体解释:参考.

VI、发布地图话题

编写launch文件,来查看发布我们刚才保存的map。此时可以在rviz中添加map组件查看地图。
pub_map.launch源码:

<launch>
    <!-- 运行地图服务器,并且加载设置的地图-->
    <node name="map_server" pkg="map_server" type="map_server" args="$(find demo5_navigation)/map/nav.yaml"/>
</launch>

说明

对机器人的优化主要体现在,slam_gampping文件中的参数的更改。详见官网。

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

【ROS机器人】 --- 2-2.slam建图保存 的相关文章

  • Orin + SC16IS752+SP3072 SPI转串口485

    文章目录 1 前言 2 修改过程 2 1 sc16is752 芯片 2 1 1引脚说明 2 1 2 设备树配置 2 2 1 源码分析 3 调试 1 前言 Orin 有四路串口 对于多数设备来说已经够用 通过SPI 转串口再转RS485在Or
  • MIPI CSI介绍

    文章目录 1 概述2 MIPI接口的演变2 1 CSI 12 2 CSI 22 3 CSI 32 4 更多关于CSI 3 其他3 1 为什么用MIPI CSI 2代替USB 3 2 MIPI CSI 2的性能亮点3 3 MIPI相机 它是如
  • 车载摄像头概述

    1 车载摄像头概述 SerDes环境 上边的摄像头是德国豪车配备的车载摄像头 我们是从国外网站上买的 为了选择车载摄像头 xff0c 你需要获得关于它的各种信息 首先 xff0c 您需要获取连接器和序列化器制造商名称的信息 xff0c 然后
  • ARM7的三级流水线过程

    看到汇编中很多关于程序返回与中断返回时处理地址都很特别 xff0c 仔细想想原来是流水线作用的效果 所以 xff0c 决定总结学习下ARM流水线 ARM7处理器采用3级流水线来增加处理器指令流的速度 xff0c 能提供0 9MIPS MHz
  • nor flash和nand flash的区别

    NOR 和 NAND 是现在市场上两种主要的非易失闪存技术 Intel 于 1988 年首先开发出 NOR flash 技术 xff0c 彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面 紧接着 xff0c 1989 年 xf
  • UART通信协议

    UART 是用于控制计算机与串行设备的芯片 有一点要注意的是 xff0c 它提供了RS 232C 数据终端设备接口 xff0c 这样计算机就可以和调制解调器或其它使用RS 232C接口的串行设备通信了 作为接口的一部分 xff0c UART
  • stm32f103的IAP升级时,部分APP程序功能丢失,串口中断不起作用,怎么办?

    昨天我用stm32f103做IAP升级 xff0c APP程序是一个LED闪烁和一个串口1收发数据 结果IAP升级后 xff0c 发现APP程序只有LED闪烁但是串口1不行甚至引起死机 这种半死不活的现象是最莫名其妙的 xff0c 它一半在
  • 计算机的启动过程(详细)

    零 boot的含义 先问一个问题 xff0c 启动 用英语怎么说 xff1f 回答是boot 可是 xff0c boot原来的意思是靴子 xff0c 启动 与靴子有什么关系呢 xff1f 原来 xff0c 这里的boot是bootstrap
  • 史上最全Linux面试题(2020最新版)

    出处 xff1a https blog csdn net thinkwon article details 104588679 作者 xff1a ThinkWon 导读 xff1a 本文整理了最新的Linux面试题 xff0c 近3万字 x
  • Endnote中文参考文献格式下载地址(官网)

    Endnote中文参考文献格式官网下载地址 1 下载2 安装 1 下载 今天在写中文论文时 xff0c 发现Endnote里没有中文参考文献格式 上网找了一下有些下载尽然还要币 xff0c 最后看到其实官网里就有GBT7114格式 xff1
  • C++中String类对象的初始化和基本用法

    1 初始化的几种方法和错误案例 首先当然是包含头文件了 xff1a span class token macro property span class token directive keyword include span span c
  • C++中multimap和map容器及使用

    map multimap容器里存放的都是pair模板类的对象 xff0c 而且按照first成员从小到大排序 1 pair模板 pair模板类的定义如下 xff0c 其中有两个成员变量 xff1a first和second xff1a 2
  • Word标题前出现黑块解决办法

    最近Word写文章 xff0c 再次遇到了让人头疼的问题 xff0c 就是自己定义的多级列表 xff0c 某一级前面不显示数字而是一个黑块 之前就遇到过这个问题 xff0c 不知怎么就解决了 再次遇到就懵了 尝试了网上的几种方法 xff0c
  • 从印象笔记无法连接到服务器,到win 10 Eage浏览器无法访问

    昨天电脑上的印象笔记突然无法同步 xff0c 同步的图标上显示了红色的感叹号 按照网上很多的解决方法试了之后都无法解决 印象笔记也重新安装了 xff0c 也退出企图重新登录 xff0c 结果登录界面显示无法连接到服务器 按照官网给出的解决方
  • Crazyflie笔记一:概述开发范围、工具、特点介绍

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v6ho html Crazyflie笔记一 xff1a 概述开发范围 工具 特点介绍 2015 01 04 12 48 31 转载 标
  • Ubuntu16.04如何设置自动休眠时间

    可能有的人觉得 xff0c 虚拟机几分钟没动就自己锁住了 xff0c 再次进入又要输密码非常麻烦 xff0c 那如何设置屏幕关闭时间呢 xff1f 下面就说一说 xff1a 1 打开设置选项 xff0c 在电脑的右上方 2 点击system
  • PX4使用I2C方式添加自定义传感器(1)

    PX4使用I2C方式添加自定义传感器 xff08 1 xff09 前言 毕业设计就是要在PX4上添加一个传感器 xff08 角度传感器 xff09 xff0c 由于板子上的接口数量很少 xff0c 很是宝贵 最后只能选择通过I2C通信方式
  • PX4通过I2C方式添加自定义传感器(2)

    PX4 I2C通信方式传感器驱动分析 xff08 以ets airspeed为例 xff09 1 说明 这篇文章我们就来看看I2C传感器的驱动过程 xff0c 当然里面也有很多东西我不是很理解 xff0c 所以仅谈我领悟的一些东西 我就以e
  • PX4通过I2C方式添加自定义传感器(3)

    添加自定义传感器并实现数据的发送和订阅 1 前期准备 1 1 建立文件夹和相关文件配置 我是在src drivers distance sensor文件夹下操作的 xff0c 当然其他文件夹下都类似 首先建立了两个文件夹angle sour
  • Matlab 同一文件夹下图片批量处理的两种简单方法

    Matlab 同一文件夹下图片批量处理的两种简单方法 最近因为实验中有许多图片需要处理 xff0c 本来的做法是一张张读取图片 xff0c 这是相当麻烦的 xff0c 因为每处理一张图片就需要修改相应的图片名 于是就想着要是可以批量处理就好

随机推荐

  • MATLAB实现图像巴特沃斯滤波、高频增强滤波及直方图均衡化

    1 巴特沃斯滤波器 1 1 基本概念 在图像处理中 xff0c 巴特沃斯滤波器传递函数如下 xff1a 巴特沃斯低通滤波器公式 xff1a 巴特沃斯高通滤波器公式 xff1a 在公式中 xff0c D u v 代表频域当中 xff0c 点
  • 偏最小二乘法PLS和PLS回归的介绍及其实现方法

    1 偏最小二乘法 xff08 PLS xff09 介绍 偏最小二乘法是一种新型的多元统计数据分析方法 xff0c 于1983年由S Wold和C Albano等人首次提出 偏最小二乘法实现了 xff0c 在一个算法下 xff0c 可以同时实
  • 功率放大芯片IR2184介绍

    IR2184引脚定义 xff1a IN一般为脉冲信号 xff0c 即全桥电路中的pwm波信号 xff0c 一般可以通过调节它的占空比来控制智能车电机的转速 SD信号为使能信号 xff0c 高电平有效 xff0c 芯片工作 Vb是高侧浮动电源
  • 为你解读7大类深度CNN架构创新综述(附论文)

    来源 xff1a 机器之心 本文约3000字 xff0c 建议阅读6分钟 本综述将最近的 CNN 架构创新分为七个不同的类别 xff0c 分别基于空间利用 深度 多路径 宽度 特征图利用 通道提升和注意力 深度卷积神经网络 xff08 CN
  • docker 入门 实例

    先决条件 验证是否已经做好准备 docker run hello world 使用Dockerfile定义容器 Dockerfile将在您的容器内定义环境中执行的操作 对网络接口和磁盘驱动器的访问在此内环境内实现虚拟化 xff0c 这将独立
  • HMC5883L磁力计常见问题解答

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v8gj html 本文提供了 HMC5883L 磁力计 的 常见问题的解答 xff0c 本文来自百度文库 xff0c 欢迎交流 xff
  • PX4 Offboard Control with MAVROS--MAVROS(环境搭建)

    需要准备的材料 1 PIXhawk或者Pixracer 2 一个已经安装好ubuntu mate16 04的树莓派3B 3 一根micro USB 数据线 一 安装ROS 1 设置source list sudo sh c 39 echo
  • PX4 Offboard Control with MAVROS--Takeoff(一键起飞)

    警告 xff1a 请先在仿真环境下进行测试 xff0c 能达到预期效果后在进行实际飞行测试 xff0c 以免发生意外 本篇文章只是用作学习交流 xff0c 实际飞行时如出现意外情况作者不予以负责 所需材料 1 PIXhawk或者Pixrac
  • Linux:查看网络信息和网络监控命令。

    ifconfig 该命令用于查看机器挂载的网卡情况 使用方式 ifconfig a 命令输出 可见机器有两个网卡 xff0c 一个时eth0 xff0c 另一个是本地回环虚拟网卡 另外 xff0c iproute2软件包含一个强大的网络配置
  • 胡晓明:“自主研发、共生共存、不碰数据是我们的三条生命线”

    5月23日 xff0c 在云栖大会 武汉峰会上 xff0c 阿里云总裁胡晓明系统阐述了这家公司坚守的三条生命线 坚持自主研发之路 xff0c 拿来主义 盖不出高楼大厦 xff0c 自主研发的云才能走得更远 xff1b 生态是阿里巴巴血液里流
  • 视觉SLAM十四讲

    内部交流 xff0c 写的很乱 xff0c 各路大神不建议观看以免影响思路 1 激光SLAM 激光SLAM相对成熟 xff0c 比如2005年出版的 概率机器人 中就介绍了很多关于激光SLAM的知识 xff0c 在ROS里也能找到许多关于激
  • 推荐几本学习c++的靠谱书

    入门推荐 C 43 43 Primer Plus 第6版 中文版 C 43 43 程序设计经典教程 xff0c 畅销30年的C 43 43 大百科全书 xff0c 零基础自学C 43 43 入门 C 43 43 是在 C 语言基础上开发的一
  • Python进阶书籍经典书有这样三本

    1 Python核心编程 xff08 第3版 xff09 Core Python Applications Programming xff08 3rd Edition xff09 美 Wesley Chun 著 xff0c 孙波翔 xff0
  • PID控制算法 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整

    目录 应用数学公式机器人为例无人机为例PDI总结参考链接 应用 空调的温度控制 无人机的精准悬停 机器人和机械臂的运动系统 飞机和火箭的姿态调整 数学公式 机器人为例 无人机为例 P D I
  • Docker容器图形界面显示(运行GUI软件)的配置方法

    0 环境说明 Ubuntu 16 04 docker 1 35 1 Docker的 可视化 Docker本身的工作模式是命令行的 xff0c 因为主要的使用场景可能是做服务器后端方面的比较多 但有时候我们会有在docker容器里运行一些图形
  • 即时通讯 3

    即时通讯 3 内容待写
  • HMC5883L 磁力计校准

    原文地址 xff1a http blog sina com cn s blog 402c071e0102v8ie html 这里针对 HMC5883L 磁力计 的校准 xff0c 做一个简单讲解 欢迎交流 xff0c 新浪长沙 64 Wal
  • linux下如何编译c++工程项目

    首先 xff0c 你必须 有一 个Linux开发环境 xff0c 这样才能进行C 43 43 开发 笔者用的是安装在虚拟机中的Ubuntu 9 04 xff0c Ubuntu操作系统是没带C 43 43 编译器g 43 43 在连网的情况下
  • 【ROS程序】 --- 4-1. URDF-GAZEBO 文件介绍

    没人天赋异禀 xff0c 介绍两种实现对比发现 gaze中的urdf文件1 碰撞参数设置2 惯性矩阵设置3 颜色设置 介绍 在前边提过的rviz中 xff0c 只负责整体机器人的建模和运动 xff0c 而在gazebo中集成urdf文件则需
  • 【ROS机器人】 --- 2-2.slam建图保存

    山无拦 海无遮 xff01 前期准备建图I 运行机器人 gazebo II 建图文件编写III 配置rviz并保存1 添加机器人和雷达2 添加TF3 地图map4 保存配置 IV 控制运动建图V 保存地图1 map server2 保存查看