第1章:开发环境搭建

大家好,我是你们这门课的老朋友。做机器人仿真,说白了就是先搭好一个「试验田」。你想想看,没有稳定的环境,后面写再多代码也是白搭。今天我们就从零开始,把 Ubuntu、ROS2 Humble、Gazebo Fortress 这三件套安排明白。

1.1 Ubuntu 系统配置

我个人习惯用 Ubuntu 22.04 LTS,因为 ROS2 Humble 官方推荐的就是这个版本。别问我为什么不用 20.04,问就是踩过坑——依赖库版本对不上,折腾一整天。

⚠️ 注意: 请确保你的系统是 Ubuntu 22.04 LTS(64位),其他版本可能会遇到兼容性问题。

装好系统后,第一件事是换源。国内用户你懂的,不换源的话,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 跑起来了。我第一次看到这个界面时还挺激动的——虽然啥也没有,但至少证明环境没毛病。

🔑 关键点: Gazebo Fortress 的命令前缀是 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 22.04 LTS 操作系统层 ROS2 Humble 中间件层 Gazebo Fortress 仿真层 关键配置 • 换国内源 • 安装桌面版 • 配置 .bashrc • 设置 GZ_VERSION • 验证环境变量 (踩坑经验总结) 三层架构:操作系统 → 中间件 → 仿真引擎

这张图很直观:Ubuntu 在最底层,ROS2 在中间做通信,Gazebo 在最上层跑仿真。每一层都依赖下一层正常工作。所以,如果你后面遇到问题,先从底层开始排查——系统有没有问题?ROS2 能不能跑?最后再看 Gazebo。

💡 我的建议: 装完环境后,最好写个简单的测试脚本,把 ROS2 和 Gazebo 的通信跑一遍。哪怕只是让 Gazebo 里的方块动一下,也能验证整个链路是通的。别问我为什么强调这个——我曾经在项目交付前一天才发现环境没配好,那叫一个酸爽。

好了,环境搭建就到这里。记住:基础不牢,地动山摇。花点时间把这一步做扎实,后面写代码、调参数的时候你会感谢自己的。

可可精品资料库