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


总结

相关推荐
hairenjing11236 小时前
使用 Mac 数据恢复从 iPhoto 图库中恢复照片
windows·stm32·嵌入式硬件·macos·word
IT B业生8 小时前
51单片机教程(六)- LED流水灯
单片机·嵌入式硬件·51单片机
一枝小雨8 小时前
51单片机学习心得2(基于STC89C52):串口通信(UART)
单片机·嵌入式硬件·51单片机
IT B业生9 小时前
51单片机教程(一)- 开发环境搭建
单片机·嵌入式硬件·51单片机
u01015265810 小时前
STM32F103C8T6学习笔记2--LED流水灯与蜂鸣器
笔记·stm32·学习
袁牛逼11 小时前
电话语音机器人,是由哪些功能构成?
人工智能·自然语言处理·机器人·语音识别
海绵波波10711 小时前
Webserver(4.8)UDP、广播、组播
单片机·网络协议·udp
好想有猫猫11 小时前
【51单片机】串口通信原理 + 使用
c语言·单片机·嵌入式硬件·51单片机·1024程序员节
云卓科技12 小时前
无人车之路径规划篇
人工智能·嵌入式硬件·算法·自动驾驶
TsingtaoAI12 小时前
2024.10|AI/大模型在机器人/自动驾驶/智能驾舱领域的最新应用和深度洞察
机器人·自动驾驶·ai大模型·具身智能·智能驾舱