预备条件:

Gazebo Harmonic 和 ROS2 jazzy 安装和测试


正文部分:

ros_gz_project_template 是一个集成了 ROS 2 和 Gazebo 模拟器的模板项目。这个项目结构清晰,便于开发者快速启动基于 ROS 2 和 Gazebo 的机器人模拟开发。

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_学习


简洁指令:

export GZ_VERSION=harmonic

sudo apt install python3-vcstool python3-colcon-common-extensions git wget

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

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>

colcon build --cmake-args -DBUILD_TESTING=ON

. ~/template_ws/install/setup.sh

ros2 launch ros_gz_example_bringup diff_drive.launch.py


修改注意

原:

---
repositories:
  ros_gz_project_template:
    type: git
    url: https://github.com/gazebosim/ros_gz_project_template.git
    version: main
  # Must compile ros_gz from source for combinations that are not officially supported
  ros_gz:
    type: git
    url: https://github.com/gazebosim/ros_gz.git
    version: humble
  sdformat_urdf:
    type: git
    url: https://github.com/ros/sdformat_urdf.git
    version: ros2

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_学习_02

修改为(jazzy):

---
repositories:
  ros_gz_project_template:
    type: git
    url: https://github.com/gazebosim/ros_gz_project_template.git
    version: main
  # Must compile ros_gz from source for combinations that are not officially supported
  ros_gz:
    type: git
    url: https://github.com/gazebosim/ros_gz.git
    version: jazzy
  sdformat_urdf:
    type: git
    url: https://github.com/ros/sdformat_urdf.git
    version: jazzy

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_持续学习_03

当然也可以直接安装。

sudo apt install ros-jazzy-ros-gz ros-jazzy-sdformat-urdf

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_持续学习_04

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_git_05

耐心等待编译完成……

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_git_06

太坑了……ros_gz_bridge这个包把十几年前的老旧笔记本干爆了……

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_持续学习_07

为啥一定要用这种破旧老电脑呢???

主要是没钱……

改变策略,能直接装的deb包,尽量不要自己编译。

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_github_08

这次很快就完成了。

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_笔记_09

试一试?

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_学习_10

ros2 launch ros_gz_example_bringup diff_drive.launch.py

太美好啦^_^

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_学习_11

补充两个包:

sudo apt install ros-jazzy-rqt-robot-dashboard ros-jazzy-rqt-robot-steering

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_git_12

 

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_github_13

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_持续学习_14

 

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_学习_15

  

ros_gz_project_template使用笔记①配置(Gazebo Harmonic ROS2 Jazzy )_持续学习_16


下面是对如何使用 ros_gz_project_template 模板在 GitHub 上创建项目仓库并在本地设置工作空间的中文详细解析:

1. 直接使用模板创建项目仓库

  • 访问 GitHub,并创建一个新的仓库。
  • 在创建新仓库的页面,你会看到一个“使用模板创建”的选项。
  • 点击该选项,并搜索 gazebosim/ros_gz_project_template 仓库。
  • 选择该模板,填写你的新仓库信息(如仓库名、描述、是否公开等),然后点击“创建仓库”。

2. 通过克隆模板仓库到本地工作空间

如果你更喜欢从本地开始,你可以按照以下步骤操作:

准备工作
  • 确保你已经安装了 Git 和 ROS 2。
  • 确定你的 ROS 2 发行版(例如 foxygalactic 等),并在后续步骤中替换 <ROS_DISTRO> 为你的发行版名称。
创建工作空间并克隆模板

bash

# 创建一个新的工作空间目录结构 
mkdir -p ~/template_ws/src 
cd ~/template_ws/src 
# 由于模板仓库中并没有直接的 template_workspace.yaml 文件,这一步假设你已经有了一个这样的文件 
# 或者,你可以跳过 wget 这一步,直接克隆模板仓库 
# git clone https://github.com/你的用户名/你的仓库名.git 
# 假设你已经有了一个 template_workspace.yaml 文件(通常这不是必需的,直接克隆仓库即可) 
# wget https://raw.githubusercontent.com/gazebosim/ros_gz_project_template/main/template_workspace.yaml 
# vcs import < template_workspace.yaml # 注意:这一步通常不是必需的,因为模板已经是一个完整的 ROS 2 工作空间 
# 直接克隆模板仓库 
git clone https://github.com/gazebosim/ros_gz_project_template.git 
# 如果你的仓库名不是 ros_gz_project_template,请确保将上面的 URL 替换为你的仓库 URL

安装依赖

bash

cd ~/template_ws 
source /opt/ros/<ROS_DISTRO>/setup.bash # 替换 <ROS_DISTRO> 为你的 ROS 2 发行版 
sudo rosdep init 
rosdep update 
rosdep install --from-paths src --ignore-src -r -i -y --rosdistro <ROS_DISTRO>

构建项目

bash

colcon build --cmake-args -DBUILD_TESTING=ON
激活工作空间

bash

. ~/template_ws/install/setup.sh
启动仿真

bash

ros2 launch ros_gz_example_bringup diff_drive.launch.py

注意:diff_drive.launch.py 是模板中可能包含的一个示例启动文件,用于启动带有差动驱动系统的机器人模拟。你的模板或项目中可能包含不同的启动文件,因此请根据实际情况替换。

注意事项

  • 确保你的 ROS 2 环境配置正确,包括环境变量和 ROS 2 发行版。
  • 如果模板中的包或依赖项与你的 ROS 2 发行版不兼容,你可能需要修改 package.xml 文件或 CMakeLists.txt 文件中的依赖项。
  • 仿真启动后,你可以使用 gzclient 或 rviz2 查看 Gazebo 中的仿真效果。

后续步骤

  • 根据你的项目需求,修改模板中的 SDF 文件、ROS 2 节点、服务、消息等。
  • 添加新的 ROS 2 包或 Gazebo 插件来扩展你的项目。
  • 编写测试用例以确保你的代码质量。
  • 编写文档以帮助你和其他开发者理解和使用你的项目。

下面是对这个模板项目的详细中文总结:

包介绍(Packages)

  1. ros_gz_example_description
  • 此包包含了模拟系统的 SDF (Simulation Description Format) 描述文件以及其他资源文件。SDF 文件是 Gazebo 用来描述物理世界、机器人模型等的 XML 格式文件。
  1. ros_gz_example_gazebo
  • 该包包含了 Gazebo 特有的代码和配置。这里通常是机器人模型、传感器插件、以及 Gazebo 环境中需要的其他系统(如控制器)的实现。
  1. ros_gz_example_application
  • 此包包含了 ROS 2 特有的代码和配置。这包括 ROS 2 节点、服务、消息定义等,用于处理机器人逻辑、通信等。
  1. ros_gz_example_bringup
  • 该包包含启动文件和高级工具。启动文件(.launch.py 文件)用于一次性启动 ROS 2 节点和 Gazebo 仿真环境,简化了部署流程。

安装

  • 选择合适的 ROS 和 Gazebo 组合:根据你的需求选择合适的 ROS 2 版本和 Gazebo 版本。你可以参考 Gazebo 官方文档中的 ROS 安装指南。
  • 切换分支:如果你使用的是 Gazebo Fortress 版本,需要切换到该模板项目的 fortress 分支;对于 Gazebo Harmonic 及以后的版本,则使用默认的 main 分支。

依赖要求

  • 安装必要工具
  • 使用 apt 安装 Python 3 的 vcstoolcolcon-common-extensionsgit 和 wget。这些工具用于依赖管理、构建项目等。
  • 如果你的 ROS 2 和 Gazebo 版本组合不在官方支持的列表中,你可能需要设置 GZ_VERSION 环境变量来指定 Gazebo 的版本。

使用流程

  1. 克隆仓库:根据选择的分支克隆 ros_gz_project_template 仓库。
  2. 安装依赖:使用 vcstool 和 rosdep 安装项目依赖。
  3. 构建项目:使用 colcon 构建项目。
  4. 运行仿真:使用 ros2 launch 命令运行位于 ros_gz_example_bringup 包中的启动文件,启动 ROS 2 节点和 Gazebo 仿真环境。

注意事项

  • 确保你的 ROS 2 和 Gazebo 版本兼容。
  • 根据你的需求修改 SDF 文件、ROS 2 节点等。
  • 使用 Gazebo 插件或自定义模型时,确保遵循 Gazebo 的开发规范和 ROS 2 的接口标准。

这个模板项目为基于 ROS 2 和 Gazebo 的机器人模拟开发提供了一个良好的起点,使得开发者可以更加专注于机器人逻辑和算法的实现,而不是构建和维护项目结构。


参考链接:

https://github.com/gazebosim/ros_gz_project_template
https://gazebosim.org/docs/latest/ros_gz_project_template_guide/