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 软件包中加载模型。


总结

相关推荐
hsjiasb2 小时前
FreeRTOS学习(二十六)——动态内存管理heap_1到heap_5
stm32·单片机·学习·学习笔记·freertos
LCG元3 小时前
STM32+ESP8266+MQTT 物联网气象站:从零搭建温湿度远程监测系统(附完整源码)
stm32·物联网·struts
M-Robots echo4 小时前
M-CLAW,面向具身智能的机器人任务编排开发框架
机器人·ros·鸿蒙·开源社区·m-robots
FakeOccupational5 小时前
【电路笔记 STM32】Cortex-M7 内核上的数据缓存(D-Cache)结构+MPU+DMA&Cache+STM32CubeMX配置
笔记·stm32·缓存
Axis tech5 小时前
无标记点动作捕捉 vs 惯性动作捕捉:专业从业者需要了解这些要点
科技·机器人
M-Robots echo6 小时前
王成录:机器人产业下一个十年,拼的是 “系统级智能化” 而非单点算法堆叠
机器人·ros·鸿蒙·开源社区·m-robots·王成录
殷忆枫6 小时前
基于K210与STM32的智能垃圾分类与物联网监管系统
stm32·物联网·分类
周洲08306 小时前
STM32 GPIO 外部中断深度解析:边沿触发 / 电平触发、NVIC 优先级配置、中断嵌套实战
stm32·单片机·嵌入式硬件
LCG元7 小时前
STM32F103 CAN 总线通信实战:标准库双机通信与过滤器配置精讲
stm32·单片机·嵌入式硬件
zlinear数据采集卡7 小时前
D223的PWM电机控制:6路独立脉冲+加减速算法深度解析
arm开发·stm32·嵌入式硬件·算法·fpga开发·架构