ROS2 与 Gazebo 联合仿真项目模版

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、包含的软件包
  • 二、安装
    • 2.1 安装要求
    • 2.2 作为模板使用
  • 三、用法
    • 3.1 安装依赖项
    • 3.2 构建项目
    • 3.3 source 工作空间
    • 3.4 启动仿真
  • 四、详细用法
    • 4.1 软件包结构
    • 4.2 仿真资源配置
  • 总结

前言

一个集成了 ROS 2 和 Gazebo 模拟器的模板项目。


一、包含的软件包

  • ros_gz_example_description - 保存模拟系统的 sdf 描述和其他文件。

  • ros_gz_example_gazebo - 保存 gazebo 专用代码和配置。也就是说,系统在这里结束。

  • ros_gz_example_application - 保存 ros2 的特定代码和配置。

  • ros_gz_example_bringup - 保存启动文件和高级实用程序。

二、安装

2.1 安装要求

  1. 选择 ROS 和 Gazebo 组合 https://gazebosim.org/docs/harmonic/ros_installation 注意:如果你使用的是 ROS 2 的特定且不支持的 Gazebo 版本,可能需要设置 GZ_VERSION 等环境变量:
bash 复制代码
export GZ_VERSION=garden
  1. 安装必要的工具
bash 复制代码
sudo apt install python3-vcstool python3-colcon-common-extensions git wget

2.2 作为模板使用

直接 Use this template 并在 Github 上创建项目库。

或者先创建一个工作区,然后克隆模板库:

bash 复制代码
mkdir -p ~/template_ws/src
cd ~/template_ws/src
wget https://raw.githubusercontent.com/gazebosim/ros_gz_project_template/main/template_workspace.yaml
vcs import < template_workspace.yaml

三、用法

3.1 安装依赖项

bash 复制代码
cd ~/template_ws
source /opt/ros/<ROS_DISTRO>/setup.bash
sudo rosdep init
rosdep update
rosdep install --from-paths src --ignore-src -r -i -y --rosdistro <ROS_DISTRO>

3.2 构建项目

bash 复制代码
colcon build --cmake-args -DBUILD_TESTING=ON

3.3 source 工作空间

bash 复制代码
. ~/template_ws/install/setup.sh

3.4 启动仿真

bash 复制代码
ros2 launch ros_gz_example_bringup diff_drive.launch.py

四、详细用法

4.1 软件包结构

此时,你的项目中将包含以下软件包:

  • ros_gz_example_application - 保存 ROS 2 的特定代码和配置。即控制、规划或任何高级算法所在的位置。

    ├── CMakeLists.txt

    ├── package.xml

    ├── src

    └── ...

  • ros_gz_example_bringup - 保存启动文件和高级实用程序,是 ROS 与 Gazebo 之间的通信桥梁。任何机器人或硬件的特定配置都放在这里。

    ├── config

    │ ├── ros_gz_example_bridge.yaml

    │ └── diff_drive.rviz

    ├── launch

    └── diff_drive.launch.py

  • ros_gz_example_description - 保存模拟系统的 SDF 描述和任何其他模拟资产。

    ├── hooks

    │ └── ros_gz_example_description.dsv.in

    ├── models

    ├── diff_drive

    ├── model.config

    └── model.sdf

  • ros_gz_example_gazebo - 保存 Gazebo 的特定代码和配置。也就是说,这里是用户自定义世界和自定义系统插件的最终归宿。

    ├── include

    │ └── ros_gz_example_gazebo

    │ ├── BasicSystem.hh

    │ └── FullSystem.hh

    ├── src

    │ ├── BasicSystem.cc

    │ └── FullSystem.cc

    ├── worlds

    └── diff_drive.sdf

4.2 仿真资源配置

仿真资产包括URDF或SDF中的模型或机器人描述、网格和材料文件,以帮助可视化机器人的不同部分,最后将所有这些元素编译到模拟世界的SDF中。Gazebo 提供了几种不同的机制来定位这些资源,并通过 GZ_SIM_RESOURCE_PATH 环境变量来初始化搜索,详情请参见 gz-sim API 中的资源查找。

ROS 和 Gazebo 解析 URI 的方式有所不同,ROS 可以处理 package:// URI,但 SDFormat 默认只支持 model://。现在,libsdformat 可以将 package:// 转换为 model:// URI。因此,可以通过 "安装 "模型目录并将模型路径导出到环境中来加载现有的仿真资产。

这可以使用 DSV 文件中的 colcon 环境钩子(ROS 软件包提供的 shell 脚本)自动完成。无论何时在工作区中生成设置文件,这些环境钩子也会被生成。请参阅在 GZ_SIM_RESOURCE_PATH 中预置模型共享路径的示例,它可以让 Gazebo 使用 model:// URI 从 ROS 软件包中加载模型。


总结

相关推荐
这波不该贪内存的3 小时前
裸机开发VS单片机:架构与实战对比
单片机
工业机器人生命周期管理4 小时前
赢胜智能:五一劳动节快乐
机器人
神一样的老师4 小时前
【兆易创新GD32VW553开发板试用】红外遥控接入天气时钟实战
驱动开发·单片机·嵌入式硬件
xwz小王子6 小时前
Science Robotics最新研究:检索增强操作(RAM)——让机器人真正理解“放在哪儿、怎么放”
机器人
多看多敲多思考7 小时前
华润微CS32ME10 MCU使用教程(2)---CS32ME10之UART串口模块使用
stm32·单片机·嵌入式硬件·mcu
神一样的老师7 小时前
【兆易创新GD32VW553开发板试用】天气时钟设计与调试实战
单片机·嵌入式硬件·物联网
国科安芯7 小时前
核电站仪控与监测系统中抗辐射 MCU 芯片应用研究
单片机·嵌入式硬件·macos·无人机·cocos2d·核电站
黑白园8 小时前
STM32系统时钟由72M修改为36M验证示例
stm32·单片机·嵌入式硬件
LCG元8 小时前
基于ARM7的LCD设计与实现:S3C4510B通用IO口控制液晶模块
stm32·单片机·嵌入式硬件
山后太阳8 小时前
Keil5(MDK-ARM)完整下载安装教程+入门教程:从零搭建STM32开发环境
arm开发·stm32·嵌入式硬件