基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

这篇具有很好参考价值的文章主要介绍了基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

博客地址:https://www.cnblogs.com/zylyehuo/

gazebo小车模型创建及仿真详见之前博客

gazebo小车模型(附带仿真环境) - zylyehuo - 博客园

gazebo+rviz 仿真 - zylyehuo - 博客园

参考链接

Autolabor-ROS机器人入门课程《ROS理论与实践》

成果图

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

step1: 准备工作

安装必要工具包+创建工作包

  • 安装 gmapping 包(用于构建地图): sudo apt install ros-melodic-gmapping
  • 安装地图服务包(用于保存与读取地图):sudo apt install ros-melodic-map-server
  • 安装 navigation 包(用于定位以及路径规划):sudo apt install ros-melodic-navigation
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

创建文件夹及文件

按下图结构在 nav_demo 下依次创建

文件夹: config(也可按照步骤之后创建)、map(也可按照步骤之后创建)、launch

文件:nav01_slam.launch、nav02_map_save.launch、nav03_map_server.launch

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

/home/yehuo/mycar_ws/src/nav_demo/launch/nav01_slam.launch

<launch>
    <!-- 仿真环境下,将该参数设置为true  -->
    <param name="use_sim_time" value="true"/>
    <!-- gmapping  -->
    <node pkg="gmapping" type="slam_gmapping" name="slam_gmapping" output="screen">
      <!-- 设置雷达话题  -->
      <remap from="scan" to="scan"/>

      <!-- 关键参数:坐标系 -->
      <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 pkg="joint_state_publisher" name="joint_state_publisher" type="joint_state_publisher" />
    <node pkg="robot_state_publisher" name="robot_state_publisher" type="robot_state_publisher" />

    <node pkg="rviz" type="rviz" name="rviz" />
    <!-- 可以保存 rviz 配置并后期直接使用-->
    <!--
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find my_nav_sum)/rviz/gmapping.rviz"/>
    -->
</launch>

step2: 仿真环境运行 + SLAM建图

(1)编译+启动 gazebo 仿真环境

source ./devel/setup.bash 

roslaunch mycar environment.launch
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

(2)启动 rviz

source ./devel/setup.bash

roslaunch nav_demo nav01_slam.launch
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

(3)启动键盘控制节点

rosrun teleop_twist_keyboard teleop_twist_keyboard.py _speed:=0.3 _turn:=0.5
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

(4)在 rviz 中显示仿真环境

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

(5)保存 rviz 设置

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

(6)通过键盘控制机器人运动

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

每隔 5s 更新一次地图

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

step3: 保存地图(在step2基础上,不要关闭之前程序)

/home/yehuo/mycar_ws/src/nav_demo/launch/nav02_map_save.launch

<launch>
    <arg name="filename" value="$(find nav_demo)/map/nav" />
    <node name="map_save" pkg="map_server" type="map_saver" args="-f $(arg filename)" />
</launch>

在 nav_demo 下新建文件夹 map

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

新建终端,保存地图

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
source ./devel/setup.bash

roslaunch nav_demo nav02_map_save.launch
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

/home/yehuo/mycar_ws/src/nav_demo/map/nav.yaml 文件解释

# 1、声明地图图片资源的路径
image: /home/yehuo/mycar_ws/src/nav_demo/map/nav.pgm

# 2、地图刻度尺单位是 米/像素
resolution: 0.050000

# 3、地图的位姿(按照右手坐标系,地图右下角相对于 rviz 中原点的位姿)
# 值1:x方向上的偏移量
# 值2:y方向上的偏移量
# 值3:地图的偏航角度(单位:弧度)
origin: [-50.000000, -50.000000, 0.000000]

# 地图中的障碍物判断:
# 最终显示结果:白色是可通行区域,黑色是障碍物,蓝灰是未知区域
# 判断规则:
# 1、地图中的每个像素都有取值 [0,255]       255:白色       0:黑色
# 2、根据像素值计算一个比例:        p   = (255 - 像素值)/  255       ==>   0:白色    1:黑色
# 3、判断是否是障碍物, p > occupied_thresh        就是障碍物
#                    p < free_thresh            就无障碍物

# 4、占用阈值
occupied_thresh: 0.65

# 5、空闲阈值
free_thresh: 0.196

# 6、取反(1:黑的区域变白的,白的区域变黑的)
negate: 0

step4: 读取地图

/home/yehuo/mycar_ws/src/nav_demo/launch/nav03_map_server.launch

<launch>

    <!-- 设置地图的配置文件 -->
    <arg name="map" default="nav.yaml" />

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

</launch>

读取地图

source ./devel/setup.bash

roslaunch nav_demo nav03_map_server.launch
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

显示读取的地图

打开一个新的终端,启动 rviz文章来源地址https://www.toymoban.com/news/detail-443764.html

  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真
  • 基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真

到了这里,关于基于Gazebo搭建移动机器人,并结合SLAM系统完成定位和建图仿真的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ros2机器人在gazebo中移动方案

    很重要的地方:使用虚拟机运行Ubuntu的时候,需要关闭”加速3D图形“的那个选项,否则gazebo无法正常显示。 In this tutorial we will learn how to move our robot. We will use the robot we built in the Build your own robot tutorial. You can download the robot from here. You can also find the finished world of this tutoria

    2024年01月16日
    浏览(18)
  • 移动机器人激光SLAM导航(五):Cartographer SLAM 篇

    参考 Cartographer 官方文档 Cartographer 从入门到精通 1.1 前置条件 推荐在刚装好的 Ubuntu 16.04 或 Ubuntu 18.04 上进行编译 ROS 安装:ROS学习1:ROS概述与环境搭建 1.2 依赖库安装 资源下载完解压并执行以下指令 https://pan.baidu.com/s/1LWqZ4SOKn2sZecQUDDXXEw?pwd=j6cf 1.3 编译 本文只编译 cartographer

    2024年02月21日
    浏览(23)
  • Ubuntu18.04 Turtlebot2机器人移动控制 Rviz Gazebo仿真实现

    操作系统为ubuntu18.04 安装ROS Melodic Turtlebot2,很多大佬分享了详细的安装过程,在这里就不多赘述,安装遇到问题多百度,大部分都是可以解决的。 前期学习了赵虚左老师的ROS入门课程,结合Turtlebot2资料这里方便大家打开,放的创客制造的文档,也推荐大家去看官方文档 首先

    2023年04月25日
    浏览(27)
  • 【ROS2机器人入门到实战】Gazebo仿真环境搭建

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 本节我们要在Gazebo中建立一个测试的环境,其实也很简单,利用

    2024年02月05日
    浏览(22)
  • 11.机器人系统仿真搭建gazebo环境、仿真深度相机、雷达、RGB相机

    目录 1 gazebo仿真环境搭建 1.1  直接添加内置组件创建仿真环境 1.2 urdf、gazebo、rviz的综合应用 2 ROS_control 2.1 运动控制实现流程(Gazebo) 2.1.1 已经创建完毕的机器人模型,编写一个单独的 xacro 文件,为机器人模型添加传动装置以及控制器 2.1.2 将此文件集成进xacro文件 2.1.3 修改

    2024年02月04日
    浏览(28)
  • Realitykit结合Speech实现语音控制AR机器人移动(完整代码)

    利用Apple最新的Realitykit搭配ARkit实现虚拟物体的放置,结合内置的Speech库实现语音的识别功能,将语音内容转为文本内容,从而让机器进行运动。 大体思路: 1、配置并启动ARkit环境。 2、构建Entity实体。可以用Apple官方的CreatingAPhotogrammetryCommandLineApp的代码文档来生成.usdz文件

    2023年04月22日
    浏览(21)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真

    一、创建工作空间          二、下载wpr_simulation源码 git clone https://github.com/6-robot/wpr_simulation.git 三、编译 ~/catkin_make  目录下catkin_make source devel/setup.bash 四、运行 roslaunch wpr_simulation wpb_simple.launch 启动另一个终端,执行: rosrun rqt_robot_steering rqt_robot_steering 鼠标改变速度和角

    2024年01月20日
    浏览(23)
  • Gazebo机器人仿真

    本文基于 B站冰达机器人Gazebo教程,针对在仿真过程中出现的问题提出相应解决办法。 目标 : 设计出一台具备激光雷达、IMU和相机的机器人仿真模型用于相关实验。 获取实验功能包: 克隆完成后在工作空间路径下编译功能包 安装其他依赖 获取gazebo模型库: 自制实验场景

    2024年02月16日
    浏览(19)
  • 机器人Gazebo仿真应用

      Gazebo是一个优秀的功能强大开源物理环境仿真平台,具备强大的物理引擎,高质量的图形渲染等优异优点,可在机器人和周围环境加入多种物理属性,对机器人传感器信息通过插件形式加入仿真,并以可视化的方式进行显示。通过终端命令“roscore”启动ROS,重新打开一个终

    2024年02月04日
    浏览(26)
  • 在gazebo仿真环境中加载多个机器人

    单个机器人的各项仿真实验都基本完成,也实现了远程控制,接下来主要对多机器人编队进行仿真实验,在进行多机器人编队控制前,先要在gazebo仿真中加载多个机器人。 在gazebo中添加多个机器人需要写或修改launch文件,通过在网上翻看别人的代码,大致明白了调用gazebo仿真

    2024年04月27日
    浏览(19)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包