Gazebo Sim 机器人物理仿真:ROS2 Jazzy 入门到实践
导读:Gazebo Sim 是 ROS2 的物理仿真引擎,能在电脑里模拟机器人、传感器和环境,让你不用硬件就能测试机器人算法!本文从原理到实战,配合 TurtleBot3,带你一步步上手!
一、原理图解
1.1 什么是 Gazebo Sim?
Gazebo Sim = 机器人物理仿真器(Gazebo 的新一代版本)
| 类比 | 作用 |
|---|---|
| 飞行模拟器 | 在虚拟环境测试,摔不坏 |
| 游戏引擎 | 物理规律真实,像现实世界 |
Gazebo Sim 的两大核心:
- 物理引擎:重力、碰撞、摩擦、力反馈
- 传感器仿真:激光雷达、摄像头、IMU,还带噪声模拟
1.2 Gazebo Sim 与 RViz 的区别
| 工具 | 作用 | 关系 |
|---|---|---|
| Gazebo Sim | 生成数据 | 数据源 |
| RViz | 显示数据 | 显示器 |
1.3 Gazebo vs Gazebo Sim
| 版本 | 特点 |
|---|---|
| Gazebo (Classic) | 旧版,基于 ROS1,命令为 gazebo |
| Gazebo Sim | 新版,基于 ROS2,命令为 gz sim,物理引擎更强 |
注意:在 ROS2 Jazzy 中,使用的是 Gazebo Sim,不是旧版的 Gazebo Classic!
二、TurtleBot3 机器人说明
2.1 为什么选 TurtleBot3?
TurtleBot3 是 ROS2 官方推荐的入门机器人,三个型号:
burger:轻量、简单,适合本文waffle:搭载更多传感器waffle_pi:基于树莓派
2.2 TurtleBot3 仿真架构
三、安装与启动
3.1 环境要求
- Ubuntu 24.04 + ROS2 Jazzy
- 建议内存 ≥ 4GB,磁盘 ≥ 20GB
3.2 安装 TurtleBot3 仿真包
sudo apt update
sudo apt install -y \
ros-jazzy-turtlebot3-gazebo \
ros-jazzy-turtlebot3-msgs \
ros-jazzy-turtlebot3-description \
ros-jazzy-gz-sim-vendor
3.3 启动 TurtleBot3 仿真
source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
第一次启动会下载模型,请耐心等待!
四、Gazebo Sim 界面详解
4.1 主界面布局
| 区域 | 名称 | 作用 |
|---|---|---|
| 中间 | 3D 场景窗口 | 显示仿真世界 |
| 左上侧 | 工具栏 | 基本几何体、光源、选择工具 |
| 左下角 | 播放控制 | 播放/暂停/重置仿真 |
| 右侧 | World 面板 + Entity Tree | 物理引擎、场景参数、物体列表 |
4.2 工具栏说明
工具栏包含以下功能按钮:
- 选择工具:选择场景中的物体
- 基本几何体:添加立方体、圆柱、球体、平面等
- 光源工具:添加光源
- 画笔工具:在场景中绘制
- 相机工具:添加相机视角
- 网格切换:切换网格显示
4.3 World 面板说明
World 面板包含以下核心参数:
| 参数 | 说明 |
|---|---|
| Render Engine Server Headless | 渲染引擎配置 |
| Gravity | 重力参数(默认 -9.8 m/s²) |
| Physics Collision Detector | 碰撞检测引擎(ode) |
| Physics Engine Plugin | 物理引擎插件(gz-physics-dartsim-plugin) |
| Atmosphere | 大气环境参数 |
| Physics Solver | 物理求解器(DantzigBoxedLcpSolver) |
| Scene | 场景配置 |
4.4 Entity Tree 说明
Entity Tree 列出了场景中的所有物体:
| 实体名 | 说明 |
|---|---|
default |
默认场景 |
ground_plane |
地面 |
turtlebot3_world |
仿真世界模型 |
sun |
光源 |
burger |
TurtleBot3 机器人 |
五、完整实操:从启动到控制机器人
5.1 启动仿真流程
第一步:设置环境变量
来自 linuxros.cn · linuxROS
source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
第二步:启动 Gazebo Sim
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
截图位置3:Gazebo Sim 加载完成后的界面
(此处插入:Gazebo Sim 完全加载的截图)
等 Gazebo Sim 完全加载:地面、太阳、机器人都出现,才算好!
5.2 验证话题数据
新开一个终端,看发布的话题:
source /opt/ros/jazzy/setup.bash
ros2 topic list
应该看到:
/scan:激光雷达/odom:里程计/cmd_vel:控制指令
5.3 键盘控制机器人
新开第三个终端:
source /opt/ros/jazzy/setup.bash
ros2 run turtlebot3_teleop teleop_keyboard
按提示操作:
w:前进s:后退a:左转d:右转q/z:加速/减速空格:停止
截图位置4:Gazebo Sim 中 TurtleBot3 移动时的截图
(此处插入:机器人移动时的截图)
5.4 同时启动 RViz 看可视化
新开终端:
source /opt/ros/jazzy/setup.bash
rviz2
RViz 配置方法见第一篇文章,两边一起看效果更好!
六、进阶:自定义仿真场景
6.1 Gazebo Sim 可用的仿真世界
TurtleBot3 包中还有这些世界可选:
| Launch 文件名 | 场景特点 |
|---|---|
turtlebot3_world.launch.py |
默认空世界 |
turtlebot3_house.launch.py |
室内户型 |
turtlebot3_dqn_stage1.launch.py |
强化学习训练场景 |
6.2 启动 house 场景
source /opt/ros/jazzy/setup.bash
export TURTLEBOT3_MODEL=burger
ros2 launch turtlebot3_gazebo turtlebot3_house.launch.py
截图位置5:Gazebo Sim 中的 turtlebot3_house 场景
(此处插入:TurtleBot3 在室内户型中的截图)
七、常见问题解决
| 问题 | 解决 |
|---|---|
| 第一次启动很慢 | 正常,Gazebo Sim 在下载模型,后续会缓存 |
| 机器人不移动 | 检查 teleop_keyboard 终端是否有焦点 |
| 报错缺包 | 再安装一次:sudo apt install ros-jazzy-turtlebot3-gazebo ros-jazzy-gz-sim-vendor |
| 窗口标题显示 Gazebo Sim | 这是新版 Gazebo 的正常显示,不是旧版 Gazebo Classic |
八、总结
Gazebo Sim 让你无需真实硬件就能:
- 安全测试导航算法
- 调试感知模块
- 验证控制逻辑
配合 RViz,就是完整的机器人仿真开发环境!