预备条件:
Gazebo Harmonic 和 ROS2 jazzy 安装和测试-CSDN博客
正文部分:
ros_gz_project_template
是一个集成了 ROS 2 和 Gazebo 模拟器的模板项目。这个项目结构清晰,便于开发者快速启动基于 ROS 2 和 Gazebo 的机器人模拟开发。
简洁指令:
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
修改为(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
当然也可以直接安装。
sudo apt install ros-jazzy-ros-gz ros-jazzy-sdformat-urdf
耐心等待编译完成……
太坑了……ros_gz_bridge这个包把十几年前的老旧笔记本干爆了……
为啥一定要用这种破旧老电脑呢???
主要是没钱……
改变策略,能直接装的deb包,尽量不要自己编译。
这次很快就完成了。
试一试?
ros2 launch ros_gz_example_bringup diff_drive.launch.py
太美好啦^_^
补充两个包:
sudo apt install ros-jazzy-rqt-robot-dashboard ros-jazzy-rqt-robot-steering
下面是对如何使用 ros_gz_project_template
模板在 GitHub 上创建项目仓库并在本地设置工作空间的中文详细解析:
1. 直接使用模板创建项目仓库
- 访问 GitHub,并创建一个新的仓库。
- 在创建新仓库的页面,你会看到一个“使用模板创建”的选项。
- 点击该选项,并搜索
gazebosim/ros_gz_project_template
仓库。 - 选择该模板,填写你的新仓库信息(如仓库名、描述、是否公开等),然后点击“创建仓库”。
2. 通过克隆模板仓库到本地工作空间
如果你更喜欢从本地开始,你可以按照以下步骤操作:
准备工作
- 确保你已经安装了 Git 和 ROS 2。
- 确定你的 ROS 2 发行版(例如
foxy
、galactic
等),并在后续步骤中替换<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)
- ros_gz_example_description:
- 此包包含了模拟系统的 SDF (Simulation Description Format) 描述文件以及其他资源文件。SDF 文件是 Gazebo 用来描述物理世界、机器人模型等的 XML 格式文件。
- ros_gz_example_gazebo:
- 该包包含了 Gazebo 特有的代码和配置。这里通常是机器人模型、传感器插件、以及 Gazebo 环境中需要的其他系统(如控制器)的实现。
- ros_gz_example_application:
- 此包包含了 ROS 2 特有的代码和配置。这包括 ROS 2 节点、服务、消息定义等,用于处理机器人逻辑、通信等。
- 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 的vcstool
、colcon-common-extensions
、git
和wget
。这些工具用于依赖管理、构建项目等。 - 如果你的 ROS 2 和 Gazebo 版本组合不在官方支持的列表中,你可能需要设置
GZ_VERSION
环境变量来指定 Gazebo 的版本。
- 使用
使用流程
- 克隆仓库:根据选择的分支克隆
ros_gz_project_template
仓库。 - 安装依赖:使用
vcstool
和rosdep
安装项目依赖。 - 构建项目:使用
colcon
构建项目。 - 运行仿真:使用
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/