ESC
输入关键词搜索文章标题和内容

Gazebo Sim 机器人物理仿真:ROS2 Jazzy 入门到实践

本文由 linuxROS 整理发布,首发于 linuxros.cn,转载请注明出处。

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,就是完整的机器人仿真开发环境!

版权声明

作者linuxROS
协议本作品采用 CC BY-NC-SA 4.0 许可协议:署名-非商业性使用-相同方式共享
关注欢迎关注微信公众号 linuxROS,获取更多机器人 / 嵌入式 / Linux 干货
返回首页