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负责「大脑」——处理逻辑、发布指令;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里动起来。
记住:环境搭好了,后面就顺了。别急,慢慢来。