Ubuntu18.04 ROS melodic环境下,通过Gazebo软件仿真SLAM算法的学习(gmapping/karto/cartographer/hector)

2023-05-16

目录

一 环境场景搭建world

1.下载insert插件(该插件下会提供一些建好的场景,也可不下载)

2.环境搭建(自建)

3.保存环境

4.配置修改

5.启动环境

二 机器人模型URDF

1.模型创建的文件书写规范

2.检查文件格式是否正确

3.启动模型

三 机器人在场景中运动

1.机器人放在场景中

2.为小车装配传感器,执行器

3.让小车在场景中运动

四 仿真二维激光SLAM开源算法gmapping、cartographer、karto、hector



一 环境场景搭建world


1.下载insert插件(该插件下会提供一些建好的场景,也可不下载)

下载存放在主目录下的.gazebo中(通过ctrl+h显示.gazebo文件),命名为models。

2.环境搭建(自建)

通过Edit中的builiding命令,上为二维图,下为三维图。

3.保存环境

通过file中save world as,存放在功能包中的world文件夹下,该路径专门用于存放自制环境world。

4.配置修改

修改启动该环境的launch文件,笔者命名为gazebo_world.launch。修改其中的world为你上一步骤保存的名字。

5.启动环境

搭建好环境后便可以通过launch文件单独启动。(只查看环境)

roslaunch bingda_tutorials gazebo_world.launch

二 机器人模型URDF


1.模型创建的文件书写规范

/<robot>

/<link>(体)颜色/质量/惯性/尺寸/形状/碰撞

/<joint>(关节)<type>(关节活动方式) 需指定parent及child的link来进行连接

对应的解释及使用说明在官网链接:urdf/XML/link - ROS Wiki

2.检查文件格式是否正确

check_urdf mybot.urdf //需要roscd定位在urdf目录下,笔者文件名为mybot.urdf

显示文件及机器人模型正确,并在展示了父子关系

 3.启动模型

(只启动机器人模型在rviz中显示,该步骤只给自己看,没有实际应用意义)

启动之前,确保display_robot.launch文件中textfile的urdf文件名与第一步的文件名字对应。

roslaunch bingda_tutorials display_robot.launch //启动机器人urdf模型,该launch文件关联rviz,在rviz中显示

在rviz中可以查看建模是否正确


三 机器人在场景中运动


1.机器人放在场景中

(1)通过gazebo_robot.launch文件实现,按照书写语法,找到前两节所建立的文件名:

gazebo_world.launch(环境模型launch文件)和mybot.urdf(机器人模型urdf文件)

<launch>
  <include file="$(find bingda_tutorials)/launch/gazebo_world.launch"/>
  <node name="spawn_model"  pkg="gazebo_ros"  type="spawn_model" args="-file $(find bingda_tutorials)/urdf/mybot.urdf -urdf -model robot_description" output="screen" />
</launch>

(2)启动该launch文件。显示机器人已经放在了场景中,但小车无法运动且无传感器。

roslaunch bingda_tutorials gazebo_robot.launch

 虽然urdf文件在rviz中机器人为彩色,但在gazebo中无效不显示颜色,需要按照gazebo的格式。

即.xacro文件来为.urdf文件进行补充。(.xacro文件并不是非用不可,也可以单独在urdf中完成)

 2.为小车装配传感器,执行器

(1)xacro文件

.xacro文件与.urdf文件是相似的,多了开头的include语法,以及结尾的传感器与执行器的添加。

笔者习惯将仿真相关的配置单独放在mybot.gazebo.xacro中,例如雷达的线束,差速控制,imu频率......等,添加的方式通过gazebo中plugin载入的,ROS官网的gazebo有介绍到;将最后所有的配置链接到mybot.xacro中,也就是mybot.xacro纯模型文件包含mybot.gazebo.xacro文件。

 (2)launch文件

在仿真的simulation_robot.launch文件中包含了两个文件链接:

    ——gazebo_world.launch//机器人环境模型——

    ——mybot.xacro//机器人模型及传感器执行器的所有配置——

然后通过XML文件语法——spawn_model  将创建好的机器人加载到环境模型中。

启动模型:

roslaunch bingda_tutorials simulation_robot.launch

可见:小车已经具有了颜色,传感器,电机等。

3.让小车在场景中运动

(1)启动键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自带

PS:若没有下载过键盘控制节点包,可通过以下命令下载:

sudo apt-get install ros-melodic-teleop-twist-keyboard//安装键盘控制节点

(2)开启相机第一人称跟踪视角 :

rqt_image_view

(3) 开启rviz

rviz

rviz选择基坐标odom,添加雷达点云Lasercan中topic为/scan,机器模型model,TF关系。

3个窗口分别是:gazebo,image iew,rviz


四 仿真SLAM开源算法gmapping、cartographer、karto、hector


(1)开启仿真环境:

roslaunch bingda_tutorials simulation_robot.launch //仿真环境+小车(Gazebo 下)

(2)开启gmapping算法:(添加  simulation:=true;此处也可修改为carto....等算法)

roslaunch robot_navigation gmapping.launch simulation:=true //启动SLAM中GMapping算法 true确保时间线的统一

(3)开启rviz界面:

roslaunch robot_navigation slam_rviz.launch  //启动rviz界面

(4)开启键盘控制节点:

rosrun teleop_twist_keyboard teleop_twist_keyboard.py //ros中自带

 此时便可以肆意妄为的在你自己建立的环境中满图跑了,然后便可以看到gmapping的建图效果:

 (5)保存地图

roscd robot_navigation/maps/ //选择目录
rosrun map_server map_saver -f map//保存建好的图指定名称为map

PS:相关功能包下载:

1.放到src目录下的bingda_tutorials功能包

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

Ubuntu18.04 ROS melodic环境下,通过Gazebo软件仿真SLAM算法的学习(gmapping/karto/cartographer/hector) 的相关文章

随机推荐

  • runtime-core.esm-bundler.js:40 [Vue warn]: Vue received a Component which was made a reactive object

    vue3 Vue warn 96 96 96 runtime core esm bundler js 40 Vue warn Vue received a Component which was made a reactive object
  • Prometheus监控k8s

    文章目录 前情提要监控k8s节点监控coreDns服务监控Ingress nginx监控k8s state metrics修改Prometheus的configmap并重载PrometheusGrafana展示监控的数据节点基础信息监控co
  • JDK更换IDEA如何修改

    一 打开idea设置 1 点击file里面的settings 二 取消默认javac编译 2 然后点开 Build Execution Deployment找到里面的compiler xff0c 再点开Java compiler 取消勾选
  • VUE父子传值报错问题

    Avoid mutating a prop directly since the value will be overwritten whenever the parent component re renders Instead use
  • Postman简介及接口测试流程(小菜鸟攻略)

    目录 前言 一 常见接口 二 前端和后端 三 什么是接口测试 四 接口组成 1 接口说明 2 调用url 3 请求方法 xff08 get post xff09 4 请求参数 参数类型 请求参数说明 5 返回参数说明 五 为什么要做接口测试
  • k8s:Pod 基础概念

    目录 一 资源限制 xff0c 二 Pod 的两种使用方式 三 Pod 资源共享 四 底层容器Pause 4 1 Pause共享资源 4 1 1 网络 4 1 2 存储 4 1 3 小结 4 2 Pause主要功能 4 3 Pod 与 Pa
  • Docker-dockerfile

    目录 一 dockerfile概念 二 Docker镜像创建 1 基于现有镜像创建 2 基于本地模板创建 3 基于dockerfile创建 3 1 dockerfile结构 3 2 构建镜像命令 三 dockerfile操作指令 1 ENT
  • windows/linux 下iozone参数详解

    iozone是一个文件系统的benchmark工具 xff0c 可以测试不同的操作系统中文件系统的读写性能 可以测试 Read write re read re write read backwards read strided fread
  • Windows认证Kerberos访问HDFS

    一 Windows认证Kerberos访问HDFS 1 官网下载地址 xff1a http web mit edu kerberos dist 2 安装步骤 默认安装地址 C Program Files MIT Kerberos C Pro
  • 2022(招聘季)linux面试高频题

    大家好 xff0c 今天给大家分享一下2022最新最全的linux面试高频题 xff0c 希望你们喜欢 linux运维工程师在面试的时候经常会被问到各种问题 xff0c 接下来我也会根据自己的经验将面试题整理下来供大家参考 有不同见解的欢迎
  • 自动化测试工具——Selenium详解

    目录 前言 Selenium的几个特点 seleniun组成部分 selenium RC selenium IDE selenium Grid selenium webDriver 那么selenium RC 与webdriver 主要有什
  • Linux命令新建目录mytest并且设置权限

    1 在 usr目录中新建一个目录目录名称 xff1a mytest 并在mytest目录中新建文件net txt 设置文件的属 性为文件属主 u 增加执行权限 xff0c 文件属主同组用户 g 增加写入权限 xff0c 其他用户 o 删除读
  • ubuntu18.04安装realsenseD435驱动

    1 下载编译librealsense master 1 1 更新内核 运行代码 uname r 如果 gt 61 4 4 0 50的版本则ok xff0c 否则需要升级内核 1 2 更新cmake xff08 需要3 6以上版本 xff09
  • 用realsensed435录制数据集并跑orb-slam2

    1 lt 利用ros记录话题 xff0c 获得bag文件 gt 首先launch相机节点 roslaunch realsense2 camera rs camera launch rosbag获得 bag 文件 xxx为 bag文件的命名
  • QT上位机控制stm32,并利用PID控制编码电机旋转

    QT上位机控制stm32 xff0c 并利用PID控制编码电机旋转 由于最近在学习电机控制算法之类的东西 xff0c 看到论文大多使用PID 或以PID衍生的ADRC作为电机的主流控制 xff0c 于是自己也写了一个stm32控制L298N
  • 第十一章 STM32中断应用

    目录 11 1 中断概述 11 1 1 中断的基本概念和原理 11 1 2 STM32中断系统结构和工作原理 11 1 3 中断向量表及存储位置 11 2 中断控制器 11 2 1 NVIC的功能和特点 11 2 2 中断优先级的设置方法和
  • 第十二章 SysTick—系统定时器

    目录 12 1 STM32 SysTick基础知识 12 1 1 什么是SysTick 12 1 2 SysTick的作用和优势 12 1 3 SysTick寄存器及其功能介绍 12 2 STM32 SysTick标准延时函数设计 12 2
  • C语言入门:可变参数

    有时 xff0c 您可能会碰到这样的情况 xff0c 您希望函数带有可变数量的参数 xff0c 而不是预定义数量的参数 C 语言为这种情况提供了一个解决方案 xff0c 它允许您定义一个函数 xff0c 能根据具体的需求接受可变数量的参数
  • linux/clearlinux/ubun开机自动挂载文件配置方法

    开机自动挂载配置文件 etc fstab 以空格或制表位分隔为6列 本例以EXT分区 dev sda6配置自动挂载 xff0c 只跟设备设备名或挂载点即可进行挂载 xff0c 重启后将自动挂载 为交换分区 dev sda8配置自动挂载 xf
  • Ubuntu18.04 ROS melodic环境下,通过Gazebo软件仿真SLAM算法的学习(gmapping/karto/cartographer/hector)

    目录 一 环境场景搭建world 1 下载insert插件 xff08 该插件下会提供一些建好的场景 xff0c 也可不下载 xff09 2 环境搭建 xff08 自建 xff09 3 保存环境 4 配置修改 5 启动环境 二 机器人模型U