1、Gazebo与ROS2环境搭建:安装Gazebo与ROS2 Humble、验证安装、创建工作空间与功能包

1.1 为什么先搭环境?

做机器人仿真,说白了就是先得把「锅」架好,才能炒菜。

Gazebo是那个「锅」——物理仿真引擎。ROS2是「锅铲」——通信调度系统。两者缺一不可。

我个人习惯,每次新项目第一件事就是重装一遍环境。为什么?因为版本依赖太容易出问题了。你想想看,一个包装错了版本,后面排查起来能让你怀疑人生。

1.2 安装ROS2 Humble

ROS2 Humble是目前最稳定的版本之一。我建议你用Ubuntu 22.04,这是官方推荐的搭配。

直接上命令:

# 设置编码
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

# 添加ROS2源
sudo apt install software-properties-common
sudo add-apt-repository universe

# 添加GPG密钥
sudo apt update && sudo apt install curl -y
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

# 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop
注意: 安装过程大概需要10-15分钟,取决于你的网速。我曾经在学校机房装过一次,网络慢到怀疑人生,后来换了手机热点才搞定。

1.3 安装Gazebo

Gazebo现在和ROS2的集成越来越好了。Humble版本默认搭配的是Gazebo Fortress(也就是Gazebo 11的升级版)。

# 安装Gazebo Fortress
sudo apt install ros-humble-ros-gz

# 验证安装
gz sim --version

嗯,这里要注意:如果你之前装过旧版Gazebo,可能会有冲突。我遇到过好几次,旧版和新版抢端口,导致仿真器打不开。解决办法很简单——把旧版彻底卸载干净。

1.4 验证安装是否成功

装完了别急着高兴,先跑个测试。这是我最喜欢的一步,因为能看到小机器人动起来,成就感满满。

# 打开终端1,启动ROS2节点
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

# 打开终端2,启动监听节点
source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

如果你看到终端2里不断打印出「I heard: Hello World」之类的信息,恭喜你,ROS2通信正常。

再测试Gazebo:

# 启动一个空世界
gz sim empty.sdf

应该会弹出一个3D窗口,里面有个灰色的地面网格。这就对了。

小技巧: 每次打开新终端都要source一下,很烦对吧?我习惯把source命令写到.bashrc里,一劳永逸:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

1.5 创建工作空间与功能包

工作空间,说白了就是你的项目文件夹。ROS2里叫「colcon工作空间」。

# 创建工作空间目录
mkdir -p ~/robot_ws/src
cd ~/robot_ws

# 编译空工作空间(验证环境)
colcon build

第一次编译可能会有点慢,因为要生成一些中间文件。别急,喝杯咖啡。

编译成功后,你会看到build、install、log三个文件夹。嗯,这里有个坑——很多人忘了source install/setup.bash,导致后面找不到自己写的节点。

# 创建功能包(C++版本)
cd ~/robot_ws/src
ros2 pkg create my_robot_bringup --build-type ament_cmake

# 或者Python版本
ros2 pkg create my_robot_bringup --build-type ament_python

我个人习惯用C++写底层驱动,Python写测试脚本。为什么?C++跑得快,Python改得快。你想想看,调试的时候改个参数还要重新编译,多痛苦。

1.6 知识体系总览

下面这张图,是我自己总结的本章核心逻辑。你看一遍,心里就有谱了:

Gazebo与ROS2环境搭建核心流程 Ubuntu 22.04 系统 ROS2 Humble Gazebo Fortress 验证:ros2 run demo / gz sim empty.sdf 创建工作空间:mkdir -p ~/robot_ws/src → colcon build 创建功能包:ros2 pkg create my_robot_bringup

1.7 常见问题与避坑

问题现象 原因 解决办法
ros2命令找不到 没有source环境变量 source /opt/ros/humble/setup.bash
Gazebo启动报错 旧版本冲突或显卡驱动问题 卸载旧版gz,更新显卡驱动
colcon build失败 依赖缺失或Python版本不对 检查依赖包,确保Python3.8+
找不到自己创建的功能包 没有source工作空间 source ~/robot_ws/install/setup.bash

我的经验之谈: 曾经有一次,我花了一整个下午排查Gazebo启动闪退的问题。最后发现是NVIDIA驱动版本太新,和Gazebo的OpenGL渲染不兼容。降级驱动后一切正常。所以,遇到奇怪的问题,先检查驱动和依赖版本。

好了,环境搭好了,工作空间也建好了。接下来你就可以开始写自己的机器人模型和控制器了。记住,基础打牢,后面才跑得快。

可可精品资料库