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

大家好,我是你们的机器人工程讲师。今天咱们正式开始《从零搭建Gazebo仿真机器人》的第一课。

说实话,环境搭建这一步,看着简单,但坑是真不少。我当年刚入行时,光装ROS就折腾了两天,最后发现是源没配对。嗯,咱们今天就把这事一次搞定。

1.1 为什么选ROS2 Humble + Gazebo?

先说说我的选择逻辑。ROS2 Humble是长期支持版(LTS),到2027年才结束维护。我个人习惯用LTS版本,稳定,不会突然变脸。Gazebo呢,现在主流是Gazebo Classic(也就是Gazebo 11)和Gazebo Ignition。咱们课程用Gazebo Classic,因为生态成熟,教程多,你遇到问题搜起来方便。

核心组合: Ubuntu 22.04 + ROS2 Humble + Gazebo 11

这个组合经过大量验证,我团队内部项目也一直用这套。

1.2 安装Ubuntu 22.04

如果你已经有Ubuntu 22.04系统,直接跳过这步。没有的话,建议装双系统或者用虚拟机。我个人推荐直接装双系统,性能好,不折腾。

为什么是22.04?因为ROS2 Humble官方只支持这个版本。你装20.04或者24.04,后面会有一堆兼容性问题。别问我怎么知道的——我曾经在24.04上硬装Humble,结果依赖冲突到怀疑人生。

1.3 安装ROS2 Humble

好,咱们开始动手。打开终端,按顺序执行以下命令。

1.3.1 设置语言环境

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
export LANG=en_US.UTF-8

这一步很多人会忽略。但如果不做,后面编译时可能出现乱码错误。我吃过这个亏,所以现在每次都先跑一遍。

1.3.2 添加ROS2源

sudo apt install software-properties-common
sudo add-apt-repository universe
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
sudo apt update

小技巧: 如果下载ros.key时网络慢,可以手动下载后放到对应目录。我有时在公司内网就这样操作。

1.3.3 安装ROS2 Humble桌面版

sudo apt install ros-humble-desktop

这个包包含了ROS2的核心功能、可视化工具(rviz2)、以及Gazebo的ROS接口。大概2-3GB,下载时间取决于你的网速。喝杯咖啡等一等。

1.3.4 安装开发工具

sudo apt install ros-dev-tools
sudo apt install python3-colcon-common-extensions

colcon是ROS2的编译工具,后面咱们会频繁用到。先装上,省得到时候手忙脚乱。

1.4 配置工作环境

安装完只是第一步。你得让系统知道「ROS2在哪」。说白了就是设置环境变量。

1.4.1 自动source脚本

echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc

每次打开新终端,ROS2的环境变量就会自动加载。我习惯把这句话加在.bashrc末尾,省事。

注意: 如果你同时装了ROS1和ROS2,千万别把两个source写在一起。它们会冲突。我见过有人把两个都加进去,结果终端一开就报错。

1.4.2 创建工作空间

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

工作空间是咱们以后写代码、放包的地方。colcon build会生成install、build、log三个文件夹。第一次编译可能有点慢,后面就快了。

1.5 安装Gazebo

Gazebo的安装其实很简单。Ubuntu 22.04的官方源里就有Gazebo 11。

sudo apt install gazebo11
sudo apt install libgazebo11-dev

第一个是Gazebo本体,第二个是开发库。如果你只想跑仿真,装第一个就够了。但咱们后面要写插件、做自定义机器人,所以两个都装上。

验证Gazebo安装: 终端输入 gazebo,如果能正常启动并看到空荡荡的仿真世界,就说明装好了。

1.6 安装ROS2与Gazebo的桥梁

ROS2和Gazebo之间需要一座「桥」来通信。这个桥叫ros_gz(以前叫gazebo_ros_pkgs)。

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

装完之后,你就可以在ROS2里发布话题来控制Gazebo里的模型了。比如让一个轮子转起来,或者读取传感器的数据。

1.7 验证安装

光装完不算完,得跑个demo验证一下。咱们用ROS2自带的turtlesim和Gazebo的gazebo分别测试。

1.7.1 测试ROS2

ros2 run turtlesim turtlesim_node

如果出现一个小乌龟窗口,说明ROS2安装成功。按Ctrl+C退出。

1.7.2 测试Gazebo

gazebo --verbose

启动后,你应该能看到一个灰色的地面和蓝天。这就是Gazebo的默认世界。

1.7.3 测试ROS2 + Gazebo联动

ros2 launch gazebo_ros gazebo.launch.py

这个命令会启动Gazebo,同时自动加载ROS2的节点。如果终端没有报错,并且Gazebo窗口正常打开,就说明桥梁搭好了。

避坑指南: 如果启动时提示libGL error,通常是显卡驱动问题。可以试试 export LIBGL_ALWAYS_SOFTWARE=1 临时解决。我曾经在虚拟机里被这个坑了整整一下午。

1.8 本章知识体系

下面这张图帮你理清今天装的所有东西之间的关系。

ROS2 Humble + Gazebo 环境架构 ROS2 Humble 机器人操作系统 Gazebo 11 物理仿真引擎 ros_gz 桥梁 ROS2 ↔ Gazebo rviz2 可视化 colcon 编译工具 SDF/URDF 模型 传感器/控制器插件 话题/服务通信 TF坐标变换 Ubuntu 22.04 操作系统(底层支撑)

这张图里,ROS2负责「大脑」——处理逻辑、发布指令;Gazebo负责「身体」——模拟物理世界、传感器数据;ros_gz就是连接大脑和身体的「神经」。三者缺一不可。

1.9 常见问题与解决

问题现象 可能原因 解决方法
ros2命令找不到 没有source环境变量 执行 source /opt/ros/humble/setup.bash
Gazebo启动黑屏 显卡驱动问题 安装显卡驱动或使用 export LIBGL_ALWAYS_SOFTWARE=1
colcon build报错 缺少依赖 运行 rosdep install --from-paths src --ignore-src -r -y
ros2 launch gazebo_ros 找不到 ros-humble-gazebo-ros-pkgs未安装 执行 sudo apt install ros-humble-gazebo-ros-pkgs

重要提醒: 如果你用的是虚拟机,建议给虚拟机分配至少4GB内存和2个CPU核心。Gazebo跑起来挺吃资源的。我早期用2GB内存的虚拟机跑Gazebo,卡得鼠标都动不了。

好了,环境搭建就到这里。你现在应该有了一个能跑ROS2和Gazebo的系统。下一章咱们会创建第一个机器人模型,把它放进Gazebo里动起来。

记住:环境搭好了,后面就顺了。别急,慢慢来。


可可精品资料库