一、说明
本文档提供了如何将不同版本的 ROS 与不同版本的 Gazebo 结合使用的指南。注意,有时候我们的仿真无法正常启动,或存在莫名奇妙的提示,在我们无所适从的时候,有必要坐下来先看看此文。
我们建议在安装ros_gz之前阅读它。
二、选择 ROS 和 Gazebo 的“正确”版本
如果这是您第一次使用 ROS 和 Gazebo,并且您没有遵循特定说明或教程,我们建议您使用 ROS 和 Gazebo 的最新长期支持 (LTS) 版本,以获得最佳用户体验。ROS 和 Gazebo 版本的后续版本按字母顺序命名,每个 ROS 和 Gazebo 版本的文档都会表明它是否是 LTS 版本。值得注意的是,ROS 的每个版本都与每个 Tier 1 平台的特定版本配合得最好。第一层平台是用于 ROS 和 Gazebo 开发的平台/主机操作系统。所有这些信息都在REP-2000中概述 。
总而言之,最好的用户体验是使用最新的 LTS 版本的 ROS 以及为该版本的 ROS 推荐的第 1 层平台/操作系统。如果您的主机操作系统与第 1 层操作系统不匹配,请考虑在虚拟机中使用第 1 层平台。这种方法的另一个好处是不修改主机操作系统并允许您回滚错误。
在撰写本文时,我们建议新用户安装:
- Ubuntu Jammy 22.04
- ROS 2 Humble Hawksbill
- Gazebo Fortress
三、兼容 ROS 和 Gazebo 组合的总结
该表包括当前支持的所有 ROS 和 Gazebo 版本。所有其他 ROS 和 Gazebo 版本均已终止生命周期,我们不建议继续使用它们。
GZ Citadel (LTS) | GZ Fortress (LTS) | GZ Garden | GZ Harmonic (LTS) | |
---|---|---|---|---|
ROS 2 Rolling | ❌ | ✅ | ⚡ | ⚡ |
ROS 2 Iron | ❌ | ✅ | ⚡ | ⚡ |
ROS 2 Humble (LTS) | ❌ | ✅ | ⚡ | ❌ |
ROS 2 Foxy (LTS) | ✅ | ❌ | ❌ | ❌ |
ROS 1 Noetic (LTS) | ✅ | ⚡ | ❌ | ❌ |
- ✅ - 推荐组合
- ❌ - 不兼容/不可能。
- ⚡ - 可能,但请谨慎使用。ROS 和 Gazebo 的这些组合可以协同工作,但需要付出一些努力。
四、使用旧版本的 ROS 安装 Gazebo
如果您计划使用特定版本的 ROS 并且没有理由使用特定版本的 Gazebo,我们建议在安装时使用 ROS 存储库中提供的默认版本的 Gazebo ros_gz
。以下命令将安装正确版本的 Gazebo 以及ros_gz
Linux 系统上的 ROS 安装。您应该替换${ROS_DISTRO}
为您的 ROS 发行版(例如humble
、rolling
、foxy
等)。
sudo apt-get install ros-${ROS_DISTRO}-ros-gz
此命令将安装推荐用于 ROS 安装的 Gazebo 库。
五、特定 ROS 和 Gazebo 配对
Gazebo 是一个独立的项目,就像 Boost、Ogre 以及 ROS 使用的许多其他项目一样。通常,Gazebo 的最新版本会在每个 ROS 发布周期开始时提供(例如 ROS 2 Humble 的 Gazebo Fortress)。此版本的 Gazebo 被选为该 ROS 发行版的官方 Gazebo 版本,并在 ROS 发行版的生命周期内完全集成、测试和支持。
请注意,所有 Gazebo 库都遵循语义版本控制理念以实现 ABI 稳定性。所有具有相同主编号(gz-sim7_7.0.0
、gz-sim7_7.1.0
、 gz-sim7_7.0.1
、 ...)的 Gazebo 版本都是二进制兼容的,因此可以与给定的 ROS 发行版互换。
5.1安装凉亭(gazebo)
适用于 Ubuntu 的 Gazebo 软件包。
在 Ubuntu 上安装 Gazebo 最简单的方法是使用二进制包。有两个主要存储库托管 Gazebo 模拟器和 Gazebo 库:一个是packages.ros.org
Gazebo 存储库,另一个是名为 packages.osrfoundation.org. 截至撰写本文时,以下主机上提供了以下软件包:
-
ros.org 包
- ROS1 Noetic:凉亭城堡
- ROS2 Foxy:凉亭城堡
- ROS2 银河:凉亭大厦
- ROS2 Humble:凉亭堡垒
- ROS2 铁:凉亭堡垒
- ROS2滚动:Gazebo Fortress(经常变化)
-
packages.osrfoundation.org
-
Gazebo Citadel 凉亭城堡
-
Gazebo Edifice 凉亭大厦
-
Gazebo Fortress 凉亭堡垒
-
Gazebo Garden 凉亭花园
-
Gazebo Harmonic 凉亭谐波
-
这意味着获取osrfoundation.org
Gazebo 二进制包并不严格需要包含存储库,因为它可以从 ROS 存储库安装。
5.2 使用二进制安装安装 ROS 发行版的默认 Gazebo 版本
对于需要运行特定版本 ROS 并希望开箱即用使用所有 Gazebo ROS 相关软件包的用户,建议采用以下方法:
ROS 2 谦虚和 ROS 2 滚动
- ROS 2 Humble 和 ROS 2 Rolling 正式支持 Gazebo Fortress,这意味着 Fortress 是推荐使用的 Gazebo 版本。
- 要安装 ROS 和 Gazebo 的组合,首先安装 ROS,然后安装
ros-humble-ros-gz
和ros-rolling-ros-gz
中的 一个packages.ros.org
。 - 这些软件包将自动安装 Gazebo Fortress 和 ros-gz 桥接器。
ROS 2 银河
- ROS 2 Galicate 目前已结束生命周期,我们不建议使用此版本的 ROS。然而,如果你需要这个版本的 ROS,它官方支持也已结束生命的 Gazebo Edifice。
- 要安装 Gazebo Edifice,只需
ros-galactic-ros-gz
从packages.ros.org
. - 该软件包将自动安装 Gazebo Edifice 和 ros-gz 桥。
ROS 2 狐狸
- ROS 2 Foxy 正式支持 Gazebo Citadel,这意味着 ROS 2 Foxy 推荐的 Gazebo 版本是 Citadel。
- 要使用 Foxy 安装 Gazebo Citadel,只需
ros-foxy-ros-gz
从packages.ros.org
. - 该软件包将自动安装 Gazebo Citadel 和 ros-gz 桥。
ROS 1 意念
- ROS Noetic 官方支持 Gazebo Citadel,这意味着 ROS Noetic 推荐的 Gazebo 版本是 Citadel。
- 要使用 Noetic 安装 Gazebo Citadel,只需
ros-noetic-ros-gz
从packages.ros.org
. - 该软件包将自动安装 Gazebo Citadel 和 ros-gz 桥。
六、在 ROS 2 中使用特定且不受支持的 Gazebo 版本
我们不建议初学者使用这种方法!
要选择与 ROS 发行版官方支持的版本不同的 Gazebo 版本,您必须使用非 ROS 官方 Gazebo 二进制包或 从源代码手动编译 ros_gz(此规则适用于每个使用 Gazebo 库的 ROS 包):
-
使用非ROS官方的ros_gz二进制包: 为Gazebo和ROS的一些组合
packages.osrfoundation.org
提供二进制包,这些组合与官方支持的组合不同。ros_gz
在某些情况下,非官方软件包可能会过时甚至有错误,它们的使用仅供高级用户使用。 -
手动编译ros_gz: Gazebo和ROS的一些组合可以准备一起构建,但没有二进制包,既不在
packages.ros.org
或packages.osrfoundation.org
这两种方法可能还需要您修改 ROS 或 Gazebo 源代码以支持此编译。
6.1 Gazebo Harmonic 与 ROS 2 Iron 或 Rolling(谨慎使用)
Gazebo Harmonic 可与 ROS 2 Iron 和托管在packages.osrfoundation.org
. 这些包与包冲突ros-iron-ros-gz*
(Iron 官方支持 Gazebo Fortress)。
要安装二进制 Gazebo Harmonic/ROS 2 Iron 软件包:
- 按照这些说明 从存储库安装 gz-harmonicpackages.osrfoundation.org 。
ros_gz
从 apt 的非官方二进制包安装:apt-get install ros-iron-ros-gzharmonic
Gazebo Harmonic 可以与 ROS 2 Rolling 一起使用,但 ros_gz需要从源代码编译。
- 按照这些说明 从存储库安装 gz-harmonicpackages.osrfoundation.org 。
- 为 Gazebo Harmonic安装rosdep 规则
- 按照说明
ros_gz
从 colcon 工作区中的源代码进行编译- ROS 2 滚动
- 请务必使用
export GZ_VERSION=harmonic
- 请务必使用
- ROS 2 滚动
6.2 配有 ROS 2 Humble、铁或滚动的凉亭花园(谨慎使用)
Gazebo Garden 可与 ROS 2 Humble 和非 ROS 官方二进制包一起使用packages.osrfoundation.org
。这些包与包冲突ros-humble-ros-gz*
(Humble 官方支持 Gazebo Fortress)。
要安装二进制 Gazebo Garden/ROS 2 Humble 软件包:
- 按照这些说明 从存储库安装 gz-gardenpackages.osrfoundation.org 。
ros_gz
从 apt 的非官方二进制包安装:apt-get install ros-humble-ros-gzgarden
Gazebo Garden 可与 ROS 2 Iron 和托管在packages.osrfoundation.org
. 这些包与包冲突ros-iron-ros-gz*
(Iron 官方支持 Gazebo Fortress)。
要安装二进制 Gazebo Garden/ROS 2 Iron 软件包:
- 按照这些说明 从存储库安装 gz-gardenpackages.osrfoundation.org 。
ros_gz
从 apt 的非官方二进制包安装:apt-get install ros-iron-ros-gzgarden
Gazebo Garden 可以与 ROS 2 Rolling 一起使用,但 ros_gz需要从源代码编译。
- 按照这些说明 从存储库安装 gz-gardenpackages.osrfoundation.org 。
- 为 Gazebo Garden安装rosdep 规则
- 按照说明
ros_gz
从 colcon 工作区中的源代码进行编译- ROS 2 滚动
- 请务必使用
export GZ_VERSION=garden
- 请务必使用
- ROS 2 滚动
6.3 Gazebo Fortress 配备 ROS 2 Galicate 或 ROS 1 Noetic(不推荐)
ros_gz通过从源代码编译,Gazebo Fortress 可以与 ROS 2 Galicate 和 ROS 1 Noetic 一起使用 。
- 按照这些说明 从存储库安装 gz-fortresspackages.osrfoundation.org 。
- 按照说明
ros_gz
从 colcon 工作区中的源代码进行编译- ROS 2 银河
- 请务必使用
export GZ_VERSION=fortress
- 请务必使用
- ROS1意念
- 请务必使用
export GZ_VERSION=fortress
- 请务必使用
- ROS 2 银河
6.4 凉亭大厦(不推荐)
ros_gzGazebo Edifice 目前已停止使用,不建议使用,但是,通过从源代码编译,Gazebo Edifice 可以与 ROS 2 Foxy、ROS 2 Rolling 和 ROS 1 Noetic 配合使用。
- 按照说明 从存储库安装 gz-edifice
osrfoundation.org
- 按照说明
ros_gz
从 colcon 工作区中的源代码进行编译- ROS 2 狐狸
- 请务必使用
export GZ_VERSION=edifice
- 请务必使用
- ROS 2 滚动
- 请务必使用
export GZ_VERSION=edifice
- 请务必使用
- ROS1意念
- 请务必使用
export GZ_VERSION=edifice
- 请务必使用
- ROS 2 狐狸
6.5 使用最新的 Gazebo 源代码进行 Gazebo 发行版
Gazebo 团队通常会向后移植并发布每个受支持的 Gazebo 版本和库的新版本(即:碰撞gz-sim 7.0.0
到 gz-sim 7.1.0
)。这些更新首先托管在packages.osrfoundation.org
存储库中。ROS 存储库osrfoundation.org
经常从存储库同步,但版本可能不同。
获取最新版本的 Gazebo 库和模拟器就像将osrfoundation.org存储库 与 ROS 存储库一起安装一样简单。更新应该完全兼容。
七、 常问问题
7.1 我根本没有使用 ROS,我应该使用哪个版本?
如果您不需要 ROS 支持,推荐的版本是可以 根据您的平台使用osrfoundation.org存储库安装的最新发布版本。
7.2 我想在 ROS 2 中使用 Gazebo Harmonic 或 Gazebo Garden。软件包在哪里?
ros_gz
我们在packages.osrfoundation.org存储库中为以下Gazebo和ROS 2配对提供了二进制包,但这些包不是官方ROS包,这意味着如果相应的ROS 2发行版中有重大更改,将会有一个简短的更新在通过更改重新构建这些包之前存在延迟。安装这些软件包还可能会导致与依赖 Gazebo-classic 的其他 ROS 软件包发生冲突。
凉亭花园 | 凉亭谐波 (LTS) | |
---|---|---|
ROS 2 铁 | ros-iron-ros-gzgarden | ros-iron-ros-gzharmonic |
ROS 2 谦虚 (LTS) | ros-humble-ros-gzgarden |
7.3 在哪里可以找到每个 Gazebo 版本实现的不同功能?
最好的地方是 Gazebo 网页,其中包含 每个 Gazebo 发行版中可用的主要功能的列表。
Gazebo 社区网站上会定期发布一些注释 ,当新版本发布时,也会在那里发布特殊帖子和视频:请参阅 Garden 或 Fortress的示例 。
此外,当浏览不同版本的 Gazebo 时,有一个名为“功能比较”的菜单项,它提供与 Gazebo-Classic 的功能的比较。在Gazebo 文档页面的右上角,可以选择要比较的特定 Gazebo 版本。