Gazebo 完整指南(适配你的 WSL2 + Ubuntu22.04 + ROS2 Humble + ROSMASTER M1 小车)

先分清关键版本(最容易踩大坑!)

两大产品线不兼容,插件、模型代码不能混用

  1. Gazebo Classic(经典版,Gazebo 11) ROS2 Humble 官方原生配套,亚博、Turtlebot3 等绝大多数国内小车教程全部基于这个版本。 命令:gazebo
  2. Gazebo Sim(新版,曾名 Ignition Gazebo,Harmonic/Fortress) 全新重构架构,命令:gz sim旧小车 URDF/SDF 插件大量不兼容,不推荐现在使用

场景首选:Gazebo Classic 11

一、WSL2 Ubuntu22.04 + Humble 一键安装 Gazebo Classic

ROS2 Humble 官方桥接包,不需要额外添加 gazebo 源,直接 apt 安装

bash

运行

# 核心:Gazebo <-> ROS2通信桥接包(必须)
sudo apt install -y ros-humble-gazebo-ros-pkgs ros-humble-gazebo-ros2-control

# 可选:常用控制器(差速底盘、舵机、激光雷达仿真必备,小车仿真强烈建议装)
sudo apt install -y ros-humble-ros2-control ros-humble-ros2-controllers ros-humble-gazebo-ros2-demo

二、基础启动测试

新开终端,先加载 ROS 环境

bash

运行

source /opt/ros/humble/setup.bash

# 方式1:直接空世界启动gazebo
ros2 launch gazebo_ros gazebo.launch.py

✅ 正常弹出 Gazebo 仿真窗口 = 安装成功

Gazebo 两大进程概念(理解仿真架构)

  1. gzserver:物理仿真引擎(计算碰撞、里程计、传感器数据,无界面,可以后台无头运行)
  2. gzclient:可视化图形窗口(仅显示画面,关掉不影响仿真运算)

三、WSL2 高频图形问题【重中之重】

Windows11 自带 WSLg,理论开箱显示,但经常出现黑屏、极其卡顿、无法启动

方案 A:临时软件渲染(立刻解决黑屏,牺牲帧率)

启动 Gazebo 前执行:

bash

运行

export LIBGL_ALWAYS_SOFTWARE=1

ros2 launch gazebo_ros gazebo.launch.py

方案 B:永久写入配置(推荐)

bash

运行

echo "export LIBGL_ALWAYS_SOFTWARE=1" >> ~/.bashrc
source ~/.bashrc

高配显卡想要 WSL GPU 硬件加速,需要升级 WSL Mesa 驱动,复杂度高;调试小车仿真优先使用软件渲染保证稳定。

四、与ROSMASTER M1 小车开发结合思路

两条开发路线:

路线 1:纯仿真开发(电脑 WSL 内)

  1. 编写 M1 小车 URDF 模型(底盘、云台舵机、激光雷达 / 相机)
  2. 在 Gazebo 加载模型,使用/cmd_vel控制仿真底盘
  3. 手柄遥控仿真车辆,算法调试完成后,再下载到真实小车

优势:不怕撞车、不需要实体硬件,快速验证导航 / 避障算法

路线 2:虚实结合(不推荐)

仿真数据和实体小车互通,DDS 网络配置复杂,新手优先纯仿真。

五、常用基础命令

bash

运行

# 仅启动仿真引擎(无头模式,无GUI,服务器批量仿真用)
ros2 launch gazebo_ros gzserver.launch.py

# 单独启动图形界面
gzclient

# 彻底杀掉所有gazebo进程(卡死时救命)
killall -9 gzserver gzclient

六、国内网络坑:Gazebo 模型加载缓慢 / 加载失败

首次打开左侧 Insert 模型库,需要联网下载官方模型,国内经常超时卡住。 解决方法:离线模型包

bash

运行

# 创建模型目录
mkdir -p ~/.gazebo/models
# 网上下载完整gazebo model库解压放入该目录

七、Gazebo 与 Rviz2 区别(不要混淆!)

表格

工具 定位 作用
Gazebo 物理仿真器 虚拟世界,模拟小车运动、碰撞、虚拟相机 / 雷达,生成仿真传感器数据
Rviz2 可视化工具 只展示话题数据(真实小车 / Gazebo 仿真输出的数据都能看),没有物理仿真能力

典型工作流:

Gazebo(虚拟小车)发布 /cmd_vel/scan激光数据 → Rviz2 查看机器人状态、雷达点云

八、常见报错排查清单

  1. gazebo command not found 没有 source ROS 环境:source /opt/ros/humble/setup.bash
  2. 窗口黑屏、灰色画面 使用上面 LIBGL_ALWAYS_SOFTWARE=1 开启软件渲染
  3. 模型加载后小车不受控制 URDF 缺少 gazebo 插件(差速驱动插件),无法接收/cmd_vel指令
  4. Gazebo 启动 CPU 占用 100% WSL 软件渲染常态;减少场景物体、关闭多余光源降低负载
Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐