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


总结

相关推荐
云卓科技1 小时前
无人机之控制距离篇
科技·安全·机器人·无人机·制造
云卓科技1 小时前
无人机之飞行高度篇
科技·安全·机器人·无人机·制造
开MINI的工科男3 小时前
深蓝学院-- 量产自动驾驶中的规划控制算法 小鹏
人工智能·机器学习·自动驾驶
辰哥单片机设计12 小时前
门磁模块详解(防盗感应开关 STM32)
stm32·单片机·嵌入式硬件·传感器
yrx02030713 小时前
stm32 IIC总线busy解决方法
stm32·单片机·嵌入式硬件
nfgo14 小时前
Apollo自动驾驶项目(二:cyber框架分析)
人工智能·自动驾驶·unix
YHPsophie15 小时前
ATGM331C-5T杭州中科微BDS/GNSS全星座定位授时模块应用领域
经验分享·笔记·单片机·信息与通信·交通物流
Archie_IT15 小时前
【STM32系统】基于STM32设计的SD卡数据读取与上位机显示系统(SDIO接口驱动、雷龙SD卡)——文末资料下载
arm开发·stm32·单片机·嵌入式硬件
辰哥单片机设计16 小时前
1×4矩阵键盘详解(STM32)
stm32·单片机·嵌入式硬件·矩阵·传感器