gazebo仿真环境搭建+配置+小车运动仿真

2023-05-16

ubuntu版本:20.04

gazebo版本:gazebo11

1.打开gazebo

终端输入“gazebo”或者直接点gazebo软件图标。


 2.前往建筑编辑器

点击上方“Edit” → “Buiding Edit ” 或者快捷键 “Ctrl + B” 进入建筑编辑器。

左边图形界面可以建造墙,添加门、窗、梯子。也可以更改以后墙的颜色和纹理。

3.导入图片

点击左下角“import” ,选择一张户型图导入


点击“Next”,随便选取一段,在左边输入其真实长度后 ,点击“ok”。

4.建造model并保存

做完上述步骤后,右上部分2D视图会出现导入的图片。

点击左边“ Wall ” ,对着房屋轮廓和内部墙壁描边,下方的3D视图会同步显示墙壁信息,全部完成如下所示。

也可以双击2D视图里的墙壁进行详细参数设置。

再按照户型图进行门窗的设置,点击左边的“Window ” 和 “ Door ” ,在相应墙壁位置选择即可。同样,门窗的参数也可以双击修改。

 

全部完成后,就造好了一个像样的住房模型。

点击左上角“File” → “Save” 保存。注意,保存路径为 ./gazebo/models (需要在主目录文件下打开隐藏目录右,在保存路径窗口右键选择“show hidden files”)。再输入你的 Model Name ,点击“Save” 保存成功(保存后再次无法编辑,只能增删模型)。

tips:较低版本的gazebo可能在保存之前,需要提前在主目录文件下打开隐藏目录(右上角选项勾选上或者按“ Ctrl + H ”)进入 ./gazebo/models,创建一个和你的 Model Name 同名的文件夹,再进行保存操作。

5.初始化文件+丰富模型

再次从文件进入 ./gazebo/models/house_2,会有两个文件

右边的model.sdf 就是房屋模型的参数。打开左边的model.config (较低版本gazebo没有该文件,需要自己创建),就可以添加一些模型作者及邮箱、模型简介等信息,之后保存退出即可。


再次打开gazebo ,左上角insert 选项卡里就会找到自己的模型,找到并选择自己刚
才建好的模型放置到右边窗口。

在insert选项下,选择添加自己想要的家具等模型,来丰富自己的world。可以通过上方按钮,来平移、旋转模型选择合适的摆放位置。

点击“File” → “Save world” ,保存到 usr/share/gazebo-11/worlds 下,并命名为house_2.world。

如果出现权限不够的问题,可以先在主目录下创建一个world文件夹(做临时保存用),点击“File” → “Save world” ,在world文件下保存命名为house_2.world。然后通过vim指令,在终端通过sudo vim house_2.world 在目录usr/share/gazebo-11/worlds下 生成house_2.world,并把临时保存的house_2.world里面的代码复制进去,保存退出。

6.配置launch文件

在/opt/ros/noetic/share/gazebo_ros/launch目录下同上使用vim指令创建house_2.launch文件,并添加以下代码:

<?xml version="1.0"?>

<launch>


<!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->

<include file="$(find gazebo_ros)/launch/empty_world.launch">

<arg name="world_name" value="worlds/house_2.world"/>

<arg name="paused" value="false"/>

<arg name="use_sim_time" value="true"/>

<arg name="gui" value="true"/>

<arg name="headless" value="false"/>

<arg name="debug" value="false"/>

</include>


</launch>

保存退出后,终端输入:

roslaunch gazebo_ros house_2.launch

就可以成功启动刚才保存的house_2.launch文件,效果如下。


至此,一个完整的world创建和启动就结束了。

tipsworldlaunch文件也可以统一保存在用户目录下的workspace中,这样就不会有权限问题,但是launch的配置文件需要作一点点修改,需要find到正确的路径,因为运行gazebo默认的world路径是gazebo_ros

7.载入小车并运动观察

在/opt/ros/noetic/share/gazebo_ros/launch目录下继续使用vim指令创建house_2_with_robot.launch文件,把house_2的代码复制进来,并加入小车节点,即加入以下代码:

<!-- 加载机器人模型描述参数 -->

<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_camera.urdf.xacro'" />


<!-- 运行joint_state_publisher节点,发布机器人的关节状态 -->

<node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node>


<!-- 运行robot_state_publisher节点,发布tf -->

<node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" output="screen" >

<param name="publish_frequency" type="double" value="50.0" />

</node>

<!-- 在gazebo中加载机器人模型-->

<node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"

args="-urdf -model mrobot -param robot_description"/> 

将第一个中路径改为自己机器人模型的路径文件即可。

<param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_camera.urdf.xacro'" />

在这里提供两种模型供大家选择,第一种为本文中用到的小车模型,链接如下:

链接: https://pan.baidu.com/s/1guTCa-Nt4y3-xtiHBDlwZg 提取码: x7bx

第二种是turtubot3中小车模型,链接如下,有需要的人自行下载:https://pan.baidu.com/s/1bUjgNsmc83ja7KwL8iPhYw

提取码: 5g4g

完整house_2_with_robot.launch代码如下:

<?xml version="1.0"?>
<launch>

  <!-- We resume the logic in empty_world.launch, changing only the name of the world to be launched -->
  <include file="$(find gazebo_ros)/launch/empty_world.launch">
    <arg name="world_name" value="worlds/house_2.world"/> <!-- Note: the world_name is with respect to GAZEBO_RESOURCE_PATH environmental variable -->
    <arg name="paused" value="false"/>
    <arg name="use_sim_time" value="true"/>
    <arg name="gui" value="true"/>
    <arg name="headless" value="false"/>
    <arg name="debug" value="false"/>
  </include>

    <!-- 加载机器人模型描述参数 -->
    <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find mrobot_gazebo)/urdf/mrobot_with_rplidar.urdf.xacro'" /> 

    <!-- 运行joint_state_publisher节点,发布机器人的关节状态  -->
    <node name="joint_state_publisher" pkg="joint_state_publisher" type="joint_state_publisher" ></node> 

    <!-- 运行robot_state_publisher节点,发布tf  -->
    <node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher"  output="screen" >
        <param name="publish_frequency" type="double" value="50.0" />
    </node>

    <!-- 在gazebo中加载机器人模型-->
    <node name="urdf_spawner" pkg="gazebo_ros" type="spawn_model" respawn="false" output="screen"
          args="-urdf -model mrobot -param robot_description"/> 

</launch>

 

同样通过roslaunch即可启动整个gazebo环境加小车模型。

roslaunch gazebo_ros house_2_with_robot.launch

如果小车上配备了摄像头传感器的话,启动键盘控制节点,控制小车运动,再在终端输入

rqt_image_view

启用rqt工具,选择 /camera/image_raw,就可以实时观看摄像头的画面。

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

gazebo仿真环境搭建+配置+小车运动仿真 的相关文章

  • Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异)

    之前在培训新生的时候 xff0c windows环境下配置opencv环境一直教的都是网上主流的vs studio配置属性表 xff0c 但是这个似乎对新生来说难度略高 虽然个人觉得完全是他们自己的问题 xff0c 加之暑假之后对cmake
  • Spring Aop的使用(含示例)

    介绍 在软件业 xff0c AOP为Aspect Oriented Programming的缩写 xff0c 意为 xff1a 面向切面编程 xff0c 通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术 AOP是OOP的延续
  • 超好用的开发工具-VScode插件EIDE

    EIDE介绍 一款适用于8051 STM8 Cortex M RSCv的单片机开发环境 在 vscode上提供8051 xff0c STM8 Cortex M xff0c RISC V 项目的开发编译烧录等功能 使用文档 xff1a 简介
  • 直流编码电机双闭环(速度+角度)控制

    目录 1 PID框图 2 pid控制器的表达式 3 传感器数据获取 4 硬件设计 5 工程配置 6 软件部分程序配置 7 调参过程记录 本文已更新 xff0c 加上曲线调试 xff0c 更好效果 xff0c 更多内容 xff0c 详情 xf
  • OPENMV配置记录(一)

    文章目录 1 刷写固件2 开始配置openmv3 图像获取与显示4 修改图像 xff0c 获取像素 xff0c 添加元素5 使用图像进行基本操作 颜色追踪6 xff0c 识别码7 模版匹配8 通过比例的方法来求解距离9 组合使用 正好回家带
  • 为什么你的软件编译时没问题,运行时却出错?—— Java 中的异常再复盘

    从开发工具谈起 xff1a 这是我平常用的几个编辑器 记得我刚开始学 C 语言 xff0c 学 Java 的时候 xff0c 还是用 Notepad 43 43 这种文本编辑器写代码 xff0c 老师说是为了打基础 xff0c 加深记忆 后
  • 使用stm32解析富斯i6接收机(IBUS)

    文章目录 1 通信协议解析说明2 驱动程序设计3 实测4 使用串口空闲中断 43 DMA接收5 源码 1 通信协议解析说明 常见的官方遥控器大概如下所示 xff1a 常用的搭配接收机 xff1a 这里需要注意的是 xff1a i6是可以刷十
  • 编码电机PID调试(速度环|位置环|跟随)

    文章目录 1 编码电机认识2 上位机波形显示1 功能介绍2 协议说明 3 速度环调试验证4 位置环调试验证5 实现跟随效果 前面的文章中有讲过编码电机串级PID相关的知识 xff0c 以及一些PID的调试经验 xff0c 这里我最近正好又把
  • 树莓派安装ubuntu mate记录

    文章目录 1 系统下载1 ubuntu下载2 ubuntu mate下载 2 系统安装3 系统使用1 ubuntu系统2 ubuntu mate系统 这个算个失败的记录贴吧 xff0c 这个系统安装过程不太流畅 xff0c 使用起来也有很多
  • 平衡小车的一些常见问题总结

    文章目录 1 基本理论2 直立环速度环串级pid3 代码差异的解释4 转向环 1 基本理论 PID控制 pid控制值对偏差进行比例 xff0c 积分和微分的控制 xff0c 分别是三个部分 xff0c 对应为比例单元 xff0c 积分单元和
  • Ubuntu下tar命令使用详解 .tar解压、.tar压缩

    1 tar参数选项2 tar压缩命令3 tar解压缩命令4 解压安装5 tar bz2解压缩命令6 Linux压缩和解压 bz2文件 bzip2 Linux tar 命令 在Linux平台 xff0c tar是主要的打包工具 tar命令通常
  • 裸机开发之驱动开发

    一 驱动开发的基础理解 在计算中 xff0c 设备驱动程序是一种计算机程序 xff0c 用于操作或控制连接到计算机的特定类型的设备 驱动程序提供了与硬件设备的软件接口 xff0c 使操作系统和其他计算机程序可以访问硬件功能 xff0c 而无
  • STM32HAL库使用ESP8266模块

    ESP8266模块是一个可是实现蓝牙和WiFi一体的模块 xff0c ESP8266 是一个完整且自成体系的 WiFi 网络解决方案 xff0c 能够独立运行 xff0c 也可以作为 slave 搭载于其他 Host 运行 ESP8266模
  • 几种数字传感器介绍(一)————温湿度传感器(HDC1080)

    一 温湿度采集传感器 xff08 HDC1080 xff09 1 简要概述 HDC1080是一种集成温度传感器的数字湿度传感器 xff0c 具有出色的测量精度和超低的功耗 其具有14位测量分辨率 xff0c 相对湿度精度为 2 温度精度为
  • STM32F103xx / STM32F429VET6最小系统原理图

    STM32F429VET6核心板原理图 一 前言 先前使用过的是STM32F1系列 xff0c 只使用和绘制过STM32F103C8T6和STM32F103ZET6的板子 心血来潮想试一下STM32F4系列和F1系列在编程上有什么差别 xf
  • FreeRTOS - 多任务使用要点

    一 临界段应用 1 临界段作用 在程序访问资源时 xff0c 不希望被其他任务或者中断打断 xff0c 这段要执行的代码 xff0c 称为临界代码段 1 1不想被打断访问的资源 xff08 临界段保护 xff09 读取或者修改变量 xff0
  • 项目准备及自我介绍

    项目准备及自我介绍 1 自我介绍 面试官你好 xff0c 我叫XXX xff0c 就读于重庆邮电大学 xff1b 实验室是国家信息无障碍研发中心 xff1b 研究生期间 xff0c 参与两起机器人项目 xff0c 一是基于SLAM的清洁机器
  • 卸载重装Android Studio导入先前的版本,或者是误判SDK installed解决方法。(包含window,mac,Linux)

    我安装了几次Android Studio 之前一直不太稳定 xff0c 特别是想要导入别人的项目时 xff0c 版本不兼容真的会导致很多问题 尤其是他会下载gradle版本 xff0c 花费很长时间占用内存也就罢了 xff0c 更过分的是如
  • gcc编译过程

    gcc编译过程 文章目录 gcc编译过程1 预处理 Preproceessing 2 编译 Compilation 3 汇编 Assembly 4 链接 Linking 一般在windows下编译代码的时候是直接生成了可执行文件 xff0c
  • STM32串口printf调试输出(SSCOM V5.13.1)

    文章目录 1 原理图分析2 配置使能串口USART13 添加代码4 烧录连接显示5 浮点数输出 1 原理图分析 PC与CPU相互通信就是通过USB Type C接口和USB电平转换实现的 我们可以看到 xff0c CPU通过管脚USART1

随机推荐