本文最后更新于:2025年12月11日 上午
Gazebo 是一个功能强大的开源三维机器人仿真器,本文简单介绍相关内容。
简介
Gazebo 是一个功能强大的开源三维机器人仿真器。它允许您在逼真、物理属性准确的虚拟世界中开发、测试和验证机器人算法,而无需依赖实体机器人。它与ROS有着深度的集成,是机器人研究和开发领域的标准工具之一。
Gazebo 是机器人领域的“数字风洞”。它通过提供一个高保真、可重复、可扩展且与ROS深度集成的虚拟实验场,极大地加速了机器人从概念设计到算法开发再到系统测试的整个流程。

主要特点
- 高保真物理仿真:
- 使用 ODE、Bullet、Simbody 或 DART 等物理引擎,精确模拟刚体动力学、碰撞检测、摩擦力和重力。
- 能产生与真实传感器数据极其相似的仿真数据。
- 丰富的机器人模型与环境:
- 拥有一个庞大的官方和社区贡献的模型库,涵盖常见的机器人(如TurtleBot、PR2)、传感器(激光雷达、摄像头、IMU)和日常物品。
- 可以轻松创建复杂的室内外3D环境。
- 先进的图形渲染:
- 使用 OGRE 渲染引擎,提供高质量的照明、阴影和纹理,使仿真可视化效果非常出色。
- 便捷的编程与接口:
- ROS原生支持: 与ROS/ROS2无缝集成,仿真机器人可以通过ROS话题、服务和动作与现实世界的ROS代码通信,实现“代码无缝迁移”。
- 多种API: 提供C++和Python API,用于深度定制和交互。
- 图形化界面: 包含图形界面,用于放置模型、修改环境、启动仿真和实时可视化。
- 强大的传感器仿真:
- 支持多种传感器模型,如单目/双目摄像头、深度相机、2D/3D激光雷达、接触传感器、力扭矩传感器等,其输出数据格式与真实传感器兼容。
- 插件系统:
- 高度模块化,允许用户通过编写插件来控制模型、传感器、世界属性,甚至与外部程序通信。
核心功能与组件
- 世界文件: 一个描述仿真环境的
.world文件,使用SDF格式。它定义了地面、光照、物理引擎参数以及环境中所有模型的位置和属性。 - 模型文件: 使用SDF或URDF格式描述机器人或物体。包含:
- 视觉模型: 外观形状。
- 碰撞模型: 用于物理计算的简化几何体。
- 惯性属性: 质量、质心、转动惯量。
- 关节与传动: 定义运动部件及其约束。
- 传感器插件: 定义附着的传感器及其参数。
- Gazebo客户端: 提供用户图形界面,用于交互式操作和可视化。
- Gazebo服务器: 运行物理仿真和传感器数据生成的核心“引擎”,可以在无图形界面的“无头模式”下运行,适用于批量测试。
典型应用场景
- 算法研发与测试: 在虚拟环境中安全、低成本地开发和测试SLAM、导航、路径规划、运动控制、机械臂抓取等算法。
- 机器人设计验证: 在新机器人硬件制造前,评估其机械设计、传感器布局和控制系统的可行性。
- 机器学习与强化学习: 为机器人AI提供近乎无限的训练数据和可重置的训练环境,是训练自动驾驶汽车、无人机等系统的理想平台。
- 系统集成测试: 在将软件部署到真实机器人之前,进行全系统的集成和压力测试。
- 教育与教学: 为机器人学课程提供无需昂贵硬件即可动手实践的平台。
相关链接
版本信息
针对 Ubuntu 操作系统, 整理自 https://gazebosim.org/docs/latest/getstarted/
| Gazebo 版本 | ROS 版本 | Ubuntu 版本 | Gazebo 支持时间 |
|---|---|---|---|
| Gazebo Jetty LTS | ROS 2 Jazzy | Ubuntu 24.04 Noble | 2025.9 - 2030.9 |
| Gazebo Harmonic LTS | ROS 2 Humble | Ubuntu 22.04 Jammy | 2023.9 - 2028.9 |
| Gazebo Fortress LTS | ROS 2 Humble | Ubuntu 22.04 Jammy | 2021.9 - 2026.9 |
导入和使用自定义机器人模型
在Gazebo中导入和使用自定义机器人模型涉及一系列步骤,下面是根据多个源整理的关键步骤和注意事项:
- 准备网格文件:收集所有必要的3D网格文件,这些文件是构建模型所需的。Gazebo支持的简单形状包括箱子、球体和圆柱体。如果需要更复杂的形状,可以从Google的3D仓库中找到,或者使用Blender或Sketchup等3D建模软件创建自己的网格文件1。Gazebo要求网格文件格式为STL、Collada或OBJ,其中Collada和OBJ是首选格式1。
- 创建模型SDF文件:创建一个简单的模型文件,或者复制一个现有的模型文件。这个文件将描述机器人的结构和动态行为1。你可以从一个非常基本的模型开始,比如一个单位大小的箱形模型,然后逐步扩展和修改它以符合你的需求1。
- 使用模型编辑器:确保Gazebo已安装,启动Gazebo,然后在编辑菜单中转到模型编辑器,或者按Ctrl+M打开编辑器2。在模型编辑器中,你可以创建和编辑模型,包括导入网格文件,创建关节等3。
- 导入网格:准备好网格后,将其导出为Collada文件,然后创建一个简单的world文件来加载和测试网格4。
- 手动启动模型:在bashrc文件中添加模型的路径,以便Gazebo能够找到它。打开终端窗口,输入
gedit ~/.bashrc,然后在文件底部添加以下行:export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/your/model/path5。 - 在Gazebo中启动和使用模型:启动Gazebo并生成你的机器人模型。在屏幕右侧选择你的机器人模型,然后点击屏幕右侧的点并将其拖向左侧以打开隐藏的面板6。
World和Model之间的主要区别
在Gazebo中,"World"是指一个包含物体、环境和物理属性的场景,而"Model"是指场景中的单个对象或机器人。"World"为模拟提供了背景和上下文,包括重力、光照和地形等,而"Model"则是具体的物体,如机器人、建筑或其他实体,它们在"World"中与环境和其他模型互动。简而言之,"World"提供了模拟的环境,而"Model"是在这个环境中运行和交互的实体。
参考资料
文章链接:
https://www.zywvvd.com/notes/study/robotic/simulation/gazebo/gazebo-intr/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付