第1章:开发环境搭建 — Ubuntu系统安装与配置、ROS2 Humble安装、Gazebo与Nav2安装、工作空间创建与测试
大家好,我是你们的导航仿真课讲师。这一章咱们先把“地基”打牢。说实话,我见过太多同学卡在环境搭建这一步,明明代码逻辑没问题,就是跑不起来。嗯,这里头多半是环境没配好。所以这一章,我会带着你一步步把 Ubuntu、ROS2、Gazebo 和 Nav2 全部装好,再建个工作空间测试一下。跟着我来,别跳步。
本章核心目标:搭建一个稳定、可复用的 ROS2 Humble 开发环境,确保 Gazebo 和 Nav2 能正常启动并通信。
1.1 Ubuntu 22.04 系统安装与基础配置
ROS2 Humble 官方推荐的是 Ubuntu 22.04 LTS。我个人习惯用这个版本,因为它的软件源最全,社区支持也最好。你想想看,如果装了个冷门版本,遇到问题连个问的人都没有,多难受。
安装要点:
- 下载 Ubuntu 22.04 LTS 桌面版 ISO 镜像
- 制作启动盘(推荐用 Rufus 或 balenaEtcher)
- 安装时选择「最小安装」,省去不必要的软件包
- 硬盘分区建议:
/根目录 50GB,/home剩余空间,swap8GB(如果你内存大于16GB,swap可以不要)
我的小技巧:安装时把用户名设成全小写英文,不要带空格或特殊字符。我在项目中遇到过因为用户名带中文导致 ROS 节点无法启动的奇葩问题,排查了一下午才发现是路径编码问题。
基础配置三步走:
- 换源:把 apt 源换成国内镜像(清华、阿里、中科大任选),速度能快10倍。
- 更新系统:
sudo apt update && sudo apt upgrade -y - 安装基础工具:git、curl、vim、net-tools 这些,后面都会用到。
# 换源示例(清华源)
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list
sudo apt update
1.2 ROS2 Humble 安装 — 别踩这些坑
ROS2 的安装其实很简单,但有几个细节不注意,后面会出大问题。我刚开始用 ROS2 时,就因为 locale 没设对,编译时一堆乱码报错。
安装步骤:
- 设置 locale(必须 UTF-8)
- 添加 ROS2 官方源
- 安装 ROS2 Humble 桌面版(包含 rviz2、demo 等工具)
- 安装编译工具 colcon 和依赖包
# 设置 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
# 添加 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
# 安装 ROS2 Humble 桌面版
sudo apt update
sudo apt install ros-humble-desktop python3-colcon-common-extensions -y
注意:千万不要用 apt install ros-humble-ros-base 这个最小安装,它不包含 rviz2 和 Gazebo 的依赖。我有个学生图省事装了 base 版,结果后面跑导航仿真时缺了一堆包,一个个补装更浪费时间。
验证安装:打开两个终端,一个跑 ros2 run demo_nodes_cpp talker,另一个跑 ros2 run demo_nodes_py listener。能看到互相收发消息,说明安装成功。
1.3 Gazebo 与 Nav2 安装 — 仿真双引擎
Gazebo 是仿真环境的核心,Nav2 是导航算法的核心。这两者必须配合好。我建议用 Gazebo Fortress(也就是 Gazebo 11 之后的版本),它和 ROS2 Humble 的集成度最高。
安装命令:
# 安装 Gazebo Fortress
sudo apt install ros-humble-ros-gz-sim ros-humble-ros-ign-bridge -y
# 安装 Nav2 完整包
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup ros-humble-turtlebot3-gazebo -y
这里有个坑:很多人装了 Gazebo 后直接启动,发现黑屏或者卡死。为什么?因为 Gazebo 默认会下载模型文件,而模型服务器在国外,网络慢的话就会超时。解决办法是手动下载模型库放到本地。
避坑指南:我曾经在课堂上演示时,Gazebo 卡在下载模型那一步整整5分钟,场面一度很尴尬。后来我提前把模型库下载好,放到 ~/.gazebo/models/ 目录下,启动就秒开了。你可以去 GitHub 搜 gazebo_models 这个仓库,clone 下来就行。
1.4 工作空间创建与测试 — 让代码跑起来
工作空间是 ROS2 项目的“家”。所有你的代码、包、配置文件都放在这里。我习惯用 ~/ros2_ws 这个名字,简单好记。
创建步骤:
- 创建工作空间目录:
mkdir -p ~/ros2_ws/src - 进入 src 目录,创建一个测试包:
ros2 pkg create test_pkg --build-type ament_cmake - 编译整个工作空间:
cd ~/ros2_ws && colcon build - 设置环境变量:
source install/setup.bash
# 完整流程
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws/src
ros2 pkg create test_pkg --build-type ament_cmake
cd ~/ros2_ws
colcon build
source install/setup.bash
测试方法:运行 ros2 pkg list | grep test_pkg,如果能看到你的包名,说明工作空间配置成功。你也可以写一个简单的发布订阅节点来验证编译和运行都没问题。
你想想看,如果连工作空间都建不好,后面几十章的代码往哪放?所以这一步一定要亲手敲一遍,别复制粘贴就完事了。
1.5 本章知识体系总览
下面这张图是我画的本章知识结构,你可以把它当成一张“地图”。每次遇到环境问题,先看看自己卡在哪个环节。
这张图把本章的四个核心模块串起来了。你从 Ubuntu 开始,一步步往上搭,最后在工作空间里验证。任何一个环节出问题,都可以倒回去检查。
1.6 常见问题与排查思路
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| Gazebo 启动黑屏 | 模型库未下载 / 网络超时 | 手动下载模型库到 ~/.gazebo/models/ |
| colcon build 报错找不到包 | 依赖未安装 / 源未更新 | sudo apt update 后重装依赖 |
| ros2 run 提示找不到节点 | 未 source setup.bash | source install/setup.bash 或加到 .bashrc |
| 中文乱码 | locale 未设为 UTF-8 | 按 1.2 节步骤重新设置 locale |
最后提醒一句:每次打开新终端,记得先 source /opt/ros/humble/setup.bash 和 source ~/ros2_ws/install/setup.bash。我建议你把这两行加到 ~/.bashrc 文件末尾,一劳永逸。
好了,环境搭好了,工作空间也跑通了。接下来你就可以放心地进入后面的章节,开始写真正的导航代码了。记住,环境问题是最不值得花时间纠结的,按我的步骤来,一次搞定。
可可精品资料库