Gazebo 机器人三维物理仿真平台
Gazebo 是由 Open Robotics(前身为 Willow Garage 和 OSRF)开发的开源 3D 机器人仿真软件。作为目前业界最流行的机器人仿真平台之一,它被广泛应用于学术研究、工业开发以及各类机器人竞赛中。
核心能力
物理仿真引擎
这是 Gazebo 的基石,支持多种后端以满足不同需求:
- ODE(Open Dynamics Engine):默认引擎,擅长刚体动力学。
- Bullet:适合软体动力学及复杂碰撞检测。
- Simbody:提供生物力学级别的精确仿真。
- DART:基于广义坐标的高效动力学方案。
3D 图形渲染
底层采用 OGRE(Object-Oriented Graphics Rendering Engine),能呈现高质量的 3D 可视化效果。支持逼真的光照、阴影、材质和纹理配置,同时允许用户自定义多摄像头视角以观察传感器数据。
传感器仿真
平台内置了丰富的传感器模型,包括:
- 摄像头:RGB 及深度相机。
- 激光雷达:2D/3D 激光扫描。
- IMU(惯性测量单元)、GPS、气压计、磁力计。
- 接触传感器、力/力矩传感器。
- 其他如 RFID、超声波传感器等。
机器人模型支持
- SDF(Simulation Description Format):Gazebo 原生的 XML 格式,用于描述机器人、环境及物理属性。
- URDF(Unified Robot Description Format):ROS 标准格式,可通过插件转换为 SDF。
- 内置模型数据库(Gazebo Model Database),包含数千种预置模型供直接使用。
软件架构
整体架构分层清晰,便于扩展与调试:
┌─────────────────────────────────────┐
│ 用户界面层 (GUI) │
│ (场景视图、模型编辑器、插件面板) │
├─────────────────────────────────────┤
│ 仿真引擎层 (Server) │
│ (物理引擎、传感器管理、世界状态管理)│
├─────────────────────────────────────┤
│ 通信层 (Transport) │
│ (基于 Google Protobuf 的发布/订阅) │
├─────────────────────────────────────┤
│ 物理引擎层 │
│ (ODE/Bullet/Simbody/DART) │
└─────────────────────────────────────┘
版本演进
| 版本 | 发布时间 | 主要特性 |
|---|---|---|
| Gazebo Classic (1.x-11.x) | 2002-2022 | 基于 OGRE 1.x,与 ROS 深度集成 |
| Ignition Gazebo (2020-2022) | 2020-2022 | 模块化架构,支持云端仿真 |
| Gazebo Sim (gz-sim) | 2022-至今 | 全新架构,Ignition 的延续,支持 ROS 2 |
| Gazebo Harmonic | 2023 | LTS 版本,长期支持至 2028 年 |
注意:Gazebo Classic(11.x)已于 2025 年 1 月停止维护,官方推荐迁移至 Gazebo Sim (Ignition)。
与 ROS 的集成
Gazebo 与 ROS(Robot Operating System) 实现了无缝对接,是机器人开发的标准组合。
ROS 1(配合 Gazebo Classic)
- 使用
gazebo_ros_pkgs提供接口。 - 支持话题发布/订阅、服务调用及插件机制。
ROS 2(配合 Gazebo Sim)
- 使用
ros_gz(原ros_ign)进行桥接。 - 底层通过
gz-transport和 ROS 2 的 DDS 通信。 - 提供了更好的实时性和分布式仿真支持。
典型应用场景
在实际项目中,我们通常利用 Gazebo 解决以下问题:
- 算法验证:在仿真环境中安全测试导航、感知、控制算法。
- 硬件在环仿真(HIL):与真实硬件联调,降低风险。
- 多机器人仿真:支持大规模集群协同仿真。
- 强化学习训练:提供 Gym 接口,加速 AI 模型训练。
- 竞赛平台:如 DARPA 机器人挑战赛、RoboCup 等赛事常用工具。
安装方式
Ubuntu(推荐)
# Gazebo Sim (最新版)
sudo apt install gz-harmonic
# 或 Gazebo Classic(已停止维护)
sudo apt install gazebo11
源码编译
支持 Linux、macOS 和 Windows(实验性)。编译前需准备以下依赖:
- OGRE 3D 渲染引擎
- 物理引擎(ODE/Bullet 等)
- Qt5/Qt6(GUI 库)
- protobuf、Boost 等基础库
优缺点分析
| ✅ 优点 | ❌ 缺点 |
|---|---|
| 开源免费,社区活跃 | 学习曲线较陡峭 |
| 物理仿真精度高 | 大规模场景性能有限 |
| 与 ROS 生态深度集成 | 图形渲染不如商业软件(如 Isaac Sim) |
| 支持多种物理引擎 | 文档有时滞后于版本更新 |
| 丰富的模型库和插件 | 多机器人仿真时通信延迟 |

