1、Gazebo与ROS2入门:Gazebo仿真平台简介、ROS2核心概念、环境搭建与验证

各位同学,欢迎来到《Gazebo仿真环境下的地图构建实战》的第一课。

说实话,做机器人开发这么多年,我踩过最大的坑就是——代码写好了,一上真机就炸。不是轮子卡住,就是传感器数据飘得离谱。后来我学乖了,先在仿真里跑一遍。Gazebo就是干这个的。今天咱们就从零开始,把Gazebo和ROS2这对黄金搭档搞清楚。

1.1 Gazebo仿真平台简介

Gazebo是什么?说白了,它是一个高保真的3D机器人仿真器。你可以在里面放一个机器人模型,给它装上激光雷达、摄像头、IMU,然后让它在一个虚拟世界里跑。物理引擎会帮你算碰撞、算摩擦力、算重力——跟真机几乎一样。

Gazebo的核心能力:

  • 物理仿真:支持ODE、Bullet、DART等多种物理引擎。我一般用DART,稳定性好一些。
  • 传感器仿真:激光雷达、深度相机、RGB相机、IMU、GPS……基本你能想到的都有。
  • 环境建模:可以导入真实地图的CAD模型,也可以自己搭积木式建场景。
  • 插件机制:这是最灵活的地方。你可以写C++插件控制任何东西。

重要概念区分:Gazebo和RViz不是一回事。RViz是数据可视化工具,它显示的是传感器数据。Gazebo是数据生成工具,它模拟传感器产生数据。很多新手搞混,嗯,这里要注意。

我个人习惯用Gazebo做三件事:

  1. 算法验证——先跑通再上真机
  2. 极端场景测试——比如黑暗环境、传感器噪声
  3. 多机器人协同——买不起那么多真机,仿真里随便堆

1.2 ROS2核心概念

ROS2是机器人操作系统(Robot Operating System)的第二代。注意,它其实不是真正的操作系统,而是一个分布式通信框架。我刚开始学的时候也困惑过——为什么叫操作系统?后来理解了,它管理的是机器人的软件资源,就像Windows管理电脑硬件一样。

ROS2的四大核心概念:

概念 通俗解释 我踩过的坑
节点(Node) 一个可执行程序,负责单一功能 曾经把所有功能写在一个节点里,调试时想死
话题(Topic) 发布/订阅模式的通信管道 话题名拼写错误,数据发出去没人收
服务(Service) 请求/响应模式,一问一答 服务端没启动,客户端一直等,卡死
动作(Action) 带反馈的长时间任务 导航时用服务做路径规划,结果超时崩溃

你想想看,一个机器人可能有几十个节点同时运行。激光雷达节点发数据,里程计节点算位置,导航节点做决策……它们之间怎么配合?就是靠话题和服务。这就是ROS2的精髓。

我的建议:刚开始学ROS2,先死磕话题(Topic)。80%的通信场景都用话题就够了。服务和动作后面再补。

1.3 环境搭建与验证

好,理论说完了,咱们动手。环境搭建这块,我踩过的坑比走过的路还多。下面给出一套经过验证的流程。

系统要求:

  • Ubuntu 22.04 LTS(推荐,兼容性最好)
  • ROS2 Humble(对应Ubuntu 22.04的版本)
  • Gazebo Fortress(与ROS2 Humble官方匹配)

警告:千万不要混装ROS1和ROS2!我曾经在同一台机器上装了ROS1 Melodic和ROS2 Foxy,结果环境变量打架,折腾了两天才清理干净。如果你必须保留ROS1,用Docker隔离。

安装步骤(精简版):

# 1. 设置编码
sudo locale-gen en_US en_US.UTF-8

# 2. 添加ROS2源
sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

# 3. 安装ROS2 Humble桌面版(包含Gazebo)
sudo apt update
sudo apt install ros-humble-desktop

# 4. 安装Gazebo Fortress
sudo apt install ros-humble-ros-ign

# 5. 设置环境变量
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

验证是否安装成功:

# 验证ROS2
ros2 --version
# 应该输出:ros2 humble

# 验证Gazebo
ign gazebo --version
# 应该输出版本号

# 启动一个简单的仿真
ign gazebo empty.sdf

如果看到Gazebo窗口弹出来,里面有一个空荡荡的世界,恭喜你,环境搭好了。

避坑指南:我曾经在虚拟机里装Gazebo,结果3D加速没开,界面卡成PPT。如果你用虚拟机,务必开启3D加速。物理机安装的话,确保显卡驱动是NVIDIA官方驱动,不是开源的nouveau。

1.4 本章知识体系

下面这张图是我手绘的,把本章的核心逻辑串起来了。你一看就明白Gazebo和ROS2是怎么配合的。

第1章:Gazebo与ROS2入门 - 知识体系 Gazebo仿真平台 • 物理引擎仿真 • 传感器数据生成 • 环境建模与导入 • 插件扩展机制 ROS2核心概念 • 节点(Node) • 话题(Topic) • 服务(Service) • 动作(Action) 环境搭建与验证 • Ubuntu 22.04 • ROS2 Humble • Gazebo Fortress • 安装验证测试 核心工作流程 Gazebo 生成仿真数据 → ROS2 话题发布 → 节点订阅处理 ↓ 算法验证 → 参数调优 → 真机部署 仿真环境越接近真实,真机部署的坑就越少

这张图其实就讲了一件事:Gazebo负责「造数据」,ROS2负责「传数据」,你的算法负责「用数据」。三者缺一不可。

好了,第一章的内容就到这里。记住,环境搭建是基础中的基础。我见过太多人卡在安装这一步就放弃了。别急,慢慢来,每一步都验证通过再往下走。

可可精品资料库