1、Gazebo与ROS2环境搭建:安装Gazebo与ROS2 Humble,配置工作环境,验证安装

大家好,我是你们的SLAM课程讲师。今天咱们正式开干第一件事——搭环境。

说实话,我见过太多同学卡在环境搭建这一步。明明代码逻辑没问题,结果跑起来全是报错。嗯,这很正常。我自己刚入行那会儿,光装ROS就折腾了两天。所以这一章,咱们把基础打牢。

1.1 为什么选ROS2 Humble + Gazebo?

先说说选型。ROS2 Humble是2022年的长期支持版本,支持到2027年。Gazebo呢,是机器人仿真领域的老牌选手。两者配合,基本是SLAM入门的标准配置。

你可能会问:为啥不用ROS1?我的建议是——直接上ROS2。ROS1虽然生态成熟,但官方已经宣布停止维护了。你想想看,学一个即将被淘汰的东西,多亏啊。

1.2 系统要求

我个人习惯用Ubuntu 22.04 LTS。为什么?因为ROS2 Humble就是为它量身定做的。其他版本也能装,但坑会多一些。

项目 推荐配置 最低配置
操作系统 Ubuntu 22.04 LTS Ubuntu 22.04 LTS
CPU 4核以上 2核
内存 8GB以上 4GB
显卡 独立显卡(NVIDIA优先) 集成显卡
硬盘 50GB空闲 20GB空闲
⚠️ 注意: 如果你用虚拟机,记得给足内存和CPU。我曾经在2核4G的虚拟机上跑Gazebo,结果卡成PPT。后来加了2核,流畅多了。

1.3 安装ROS2 Humble

好,咱们开始动手。先装ROS2 Humble。整个过程分三步走。

1.3.1 设置软件源

打开终端,一行一行敲。别复制一大段,容易出问题。

sudo apt update
sudo apt install curl gnupg lsb-release
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
💡 小技巧: 如果下载慢,可以换成国内镜像源。我个人习惯用清华源,速度稳定。

1.3.2 安装ROS2 Humble

这里我建议装完整版。虽然占空间,但省心。你想想看,后面用到某个包发现没装,再回头补,多麻烦。

sudo apt install ros-humble-desktop

这个过程大概10-20分钟,取决于你的网速。去泡杯咖啡吧。

1.3.3 配置环境变量

装完以后,需要把ROS2加到环境变量里。不然每次打开终端都要source一遍,烦不烦?

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
✅ 验证安装: 输入 ros2 --version,如果显示 ros-humble 相关版本信息,说明装好了。

1.4 安装Gazebo

Gazebo的安装相对简单。ROS2 Humble默认搭配的是Gazebo 11(现在叫Ignition Fortress)。但咱们课程里用Gazebo Classic,也就是Gazebo 11。

sudo apt install gazebo11
sudo apt install ros-humble-gazebo-ros-pkgs

这里要注意:gazebo-ros-pkgs 是ROS2和Gazebo之间的桥梁。没有它,ROS2就控制不了Gazebo里的机器人。我在项目里吃过这个亏,装完Gazebo就以为完事了,结果跑demo时发现话题都连不上。

1.5 配置工作环境

环境装好了,咱们得建个工作空间。以后所有的代码、模型、配置文件都放这里。

1.5.1 创建工作空间

mkdir -p ~/slam_ws/src
cd ~/slam_ws
colcon build

colcon build 是ROS2的编译工具。第一次运行会创建 build、install、log 三个文件夹。别慌,这是正常的。

1.5.2 配置工作空间环境变量

echo "source ~/slam_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
💡 我的习惯: 我会在 ~/slam_ws/src 里建一个 README.md,记录每个包的作用和依赖。时间久了,你一定会感谢这个习惯。

1.6 验证安装

光说不练假把式。咱们来验证一下环境是否真的搭好了。

1.6.1 验证ROS2

ros2 run demo_nodes_cpp talker

再开一个新终端:

ros2 run demo_nodes_py listener

如果listener能收到talker发的消息,说明ROS2通信正常。

1.6.2 验证Gazebo

gazebo --verbose

Gazebo界面应该能正常打开。如果报错说缺少显卡驱动,那就装一下:

sudo apt install nvidia-driver-535

重启后再试。

1.6.3 验证ROS2 + Gazebo联动

ros2 launch gazebo_ros gazebo.launch.py

如果Gazebo启动后,你用 ros2 topic list 能看到 /clock、/gazebo/link_states 等话题,说明联动成功。

🎯 核心验证点: ROS2能发布话题,Gazebo能接收并驱动仿真。这是后续所有SLAM实验的基础。

1.7 常见问题与避坑

我整理了几个常见问题,都是我在项目里踩过的坑。

  • 问题1:colcon build报错 —— 多半是依赖没装全。试试 rosdep install --from-paths src --ignore-src -r -y
  • 问题2:Gazebo启动黑屏 —— 显卡驱动问题。检查 nvidia-smi 是否正常输出
  • 问题3:ros2 topic list看不到Gazebo话题 —— 确认 ros-humble-gazebo-ros-pkgs 已安装
⚠️ 曾经踩过的坑: 我曾经在Ubuntu 20.04上强行装ROS2 Humble,结果依赖冲突,折腾了一整天。最后老老实实重装了22.04。所以,别跟系统版本较劲。

1.8 本章小结

好,咱们捋一捋今天干了啥:

  • 装了ROS2 Humble
  • 装了Gazebo 11
  • 建了工作空间 slam_ws
  • 验证了ROS2和Gazebo的联动

环境搭好了,后面的事就顺了。下一章咱们开始往Gazebo里放机器人,让它动起来。

可可精品资料库