2. 开发环境搭建
大家好,我是你们这门课的老朋友。做机器人仿真,说白了就是先搭好一个「试验田」。你想想看,没有稳定的环境,后面写再多代码也是白搭。今天我们就从零开始,把 Ubuntu、ROS2 Humble、Gazebo Fortress 这三件套安排明白。
1.1 Ubuntu 系统配置
我个人习惯用 Ubuntu 22.04 LTS,因为 ROS2 Humble 官方推荐的就是这个版本。别问我为什么不用 20.04,问就是踩过坑——依赖库版本对不上,折腾一整天。
装好系统后,第一件事是换源。国内用户你懂的,不换源的话,apt update 能卡到你怀疑人生。我一般用清华源或阿里源,速度比较稳。
# 备份原 sources.list
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 编辑 sources.list(以清华源为例)
sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
sudo sed -i 's/security.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list
# 更新
sudo apt update && sudo apt upgrade -y
嗯,这里要注意:升级完成后,最好重启一下系统。我遇到过几次内核更新后没重启,导致后面装 ROS 时莫名其妙报错。
1.2 ROS2 Humble 安装
ROS2 Humble 是 2022 年发布的 LTS 版本,支持到 2027 年。说白了,选它就是为了省心——长期维护,社区活跃,遇到问题搜一搜就有答案。
安装过程其实很简单,官方给了脚本。但我建议你一步步来,这样出了问题也知道是哪一步的锅。
# 1. 设置 locale
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
# 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 $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 3. 安装 ROS2 Humble(桌面版,包含 rviz2 等工具)
sudo apt update
sudo apt install ros-humble-desktop -y
# 4. 安装开发工具
sudo apt install ros-dev-tools -y
ros-humble-ros-base(基础版),但后面做仿真时可能缺一些可视化工具,我个人还是推荐装桌面版。
安装完成后,记得配置环境变量。不然每次打开终端都要手动 source,烦得很。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下是否装成功:
ros2 --version
如果看到类似 ros2 humble 的输出,恭喜你,第一步走通了。
1.3 Gazebo Fortress 安装
Gazebo Fortress 是 Gazebo 系列的第 8 个版本,也是目前和 ROS2 Humble 配合最默契的版本。我之前试过用 Gazebo Garden,结果发现有些插件不兼容,折腾了两天才换回 Fortress。嗯,有些坑没必要亲自踩。
# 安装 Gazebo Fortress
sudo apt update
sudo apt install ros-humble-ros-gz -y
这个命令会同时安装 Gazebo Fortress 和 ROS2 的桥接包。装完后,你可以先跑个空世界试试:
# 启动 Gazebo 服务端
ign gazebo --server
# 或者启动带 GUI 的完整版本
ign gazebo
如果看到一个空荡荡的仿真世界,说明 Gazebo 跑起来了。我第一次看到这个界面时还挺激动的——虽然啥也没有,但至少证明环境没毛病。
ign,不是 gazebo。老版本 Gazebo 用的是 gazebo 命令,别搞混了。
1.4 环境变量设置
环境变量这个东西,说白了就是告诉系统「我的工具放在哪」。ROS2 和 Gazebo 都依赖一些环境变量才能正常工作。
除了前面加的 ROS2 环境变量,我们还需要配置 Gazebo 相关的变量:
# 在 ~/.bashrc 末尾添加
echo "export GZ_VERSION=fortress" >> ~/.bashrc
echo "export GZ_SIM_SYSTEM_PLUGIN_PATH=/opt/ros/humble/lib" >> ~/.bashrc
source ~/.bashrc
为什么要配 GZ_VERSION?因为你的系统里可能装了多个版本的 Gazebo,这个变量告诉系统用哪个版本。我在项目中遇到过因为没配这个变量,导致 ROS2 和 Gazebo 通信失败的案例——查了半天才发现是版本没对上。
完整的环境变量检查清单:
| 变量名 | 作用 | 建议值 |
|---|---|---|
ROS_DISTRO |
指定 ROS2 发行版 | humble |
GZ_VERSION |
指定 Gazebo 版本 | fortress |
GZ_SIM_SYSTEM_PLUGIN_PATH |
插件搜索路径 | /opt/ros/humble/lib |
AMENT_PREFIX_PATH |
ROS2 包搜索路径 | 自动配置 |
验证所有环境变量是否生效:
echo $ROS_DISTRO
echo $GZ_VERSION
echo $GZ_SIM_SYSTEM_PLUGIN_PATH
如果都能正确输出,说明环境配置完成了。
1.5 本章知识体系
下面这张图帮你理清今天搭建的整个环境结构:
这张图很直观:Ubuntu 在最底层,ROS2 在中间做通信,Gazebo 在最上层跑仿真。每一层都依赖下一层正常工作。所以,如果你后面遇到问题,先从底层开始排查——系统有没有问题?ROS2 能不能跑?最后再看 Gazebo。
好了,环境搭建就到这里。记住:基础不牢,地动山摇。花点时间把这一步做扎实,后面写代码、调参数的时候你会感谢自己的。