第2章:环境搭建:Ubuntu 22.04 + ROS2 Humble 安装与配置,Nav2源码编译与依赖安装

说实话,很多初学者在Nav2上栽跟头,八成都是环境没搭好。我见过太多人花了一周时间编译报错,最后发现是ROS2版本装错了。嗯,这一章咱们就把地基打牢。

2.1 为什么选Ubuntu 22.04 + ROS2 Humble?

你可能要问:Ubuntu版本那么多,为什么非得是22.04?

说白了,这是官方推荐的黄金组合。ROS2 Humble Hawksbill是2022年的LTS版本,和Ubuntu 22.04 LTS天生一对。我个人的习惯是:能用LTS就用LTS,省得半年后系统EOL了还得重装。

组件 推荐版本 说明
操作系统 Ubuntu 22.04 LTS 长期支持,稳定
ROS2 Humble Hawksbill 与22.04完美匹配
Nav2 Humble分支 源码编译最灵活
⚠️ 注意: 千万别用Ubuntu 20.04装ROS2 Humble,依赖冲突会让你怀疑人生。我曾经帮一个学员排查了三天,最后发现他系统是20.04却装了Humble的包。

2.2 安装Ubuntu 22.04 LTS

如果你已经有双系统或虚拟机,可以跳过这步。但如果你是纯小白,我建议用虚拟机先练手。

  • 下载镜像: 去Ubuntu官网下载22.04 LTS桌面版
  • 虚拟机配置: 至少分配4GB内存、2个CPU核心、40GB硬盘
  • 安装要点: 语言选English,键盘布局选English(US),分区默认即可
💡 小技巧: 安装时勾选"Install third-party software",能省去后面装显卡驱动的麻烦。

2.3 安装ROS2 Humble

ROS2的安装其实就三步:加源、装包、配环境。但每一步都有坑,我带你一个个踩平。

2.3.1 设置软件源

# 先确保系统是最新的
sudo apt update && sudo apt upgrade -y

# 安装必要的工具
sudo apt install -y software-properties-common
sudo add-apt-repository universe

# 添加ROS2 GPG密钥
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

# 添加ROS2源
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
🔑 关键点: 如果curl下载失败,多半是网络问题。我建议你换个网络环境,或者用手机热点试试。

2.3.2 安装ROS2 Humble桌面版

sudo apt update
sudo apt install -y ros-humble-desktop

这个包包含了ROS2的核心功能、可视化工具和常用库。大概需要1-2GB空间,下载时间取决于你的网速。我记得第一次装的时候等了快半小时,还以为卡死了。

2.3.3 配置环境变量

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

嗯,这里有个细节:如果你用zsh,记得改成~/.zshrc。我见过有人bash和zsh混用,source了半天没生效。

2.3.4 验证安装

ros2 run demo_nodes_cpp talker

打开另一个终端,运行:

ros2 run demo_nodes_py listener

如果能看到"Hello World"在循环输出,恭喜你,ROS2装好了。

2.4 安装Nav2依赖

Nav2的依赖挺多的,但别怕,大部分都能用apt搞定。

sudo apt install -y \
  ros-humble-navigation2 \
  ros-humble-nav2-bringup \
  ros-humble-turtlebot3-gazebo \
  python3-colcon-common-extensions \
  python3-rosdep \
  python3-vcstool
⚠️ 注意: 如果你打算从源码编译Nav2,千万别装ros-humble-navigation2这个二进制包,否则会冲突。我当初就是没注意,编译时报了一堆重定义错误。

2.5 从源码编译Nav2

为什么要从源码编译?说白了,二进制包是阉割版,很多调试工具和示例代码都没有。我建议你至少编译一次,哪怕后面用二进制包,心里也有底。

2.5.1 创建工作空间

mkdir -p ~/nav2_ws/src
cd ~/nav2_ws

2.5.2 克隆Nav2源码

cd src
git clone https://github.com/ros-planning/navigation2.git --branch humble

这里要注意分支名。我见过有人克隆了main分支,结果和ROS2 Humble不兼容,编译报错。

2.5.3 安装依赖

cd ~/nav2_ws
rosdep update
rosdep install -y --from-paths src --ignore-src --rosdistro humble

rosdep会自动检测缺少的依赖并安装。如果这一步报错,多半是网络问题。我曾经在某个内网环境里折腾了一下午,最后发现是DNS解析不了。

2.5.4 编译

colcon build --symlink-install

编译时间取决于你的机器性能。我建议用--symlink-install参数,这样修改Python文件后不用重新编译。

💡 优化: 如果编译太慢,可以加上--parallel-workers 4限制并行任务数,防止CPU过热降频。

2.5.5 配置环境

echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

2.6 验证Nav2安装

跑一个最简单的测试:

ros2 launch nav2_bringup tb3_simulation_launch.py

如果能看到Gazebo界面和Rviz2界面,说明一切正常。嗯,第一次启动可能会慢一些,因为要下载模型文件。

2.7 本章知识体系

下面这张图帮你理清整个环境搭建的逻辑:

Nav2环境搭建知识体系 Ubuntu 22.04 LTS ROS2 Humble Nav2 (源码/二进制) 核心依赖 • colcon:编译工具 • rosdep:依赖管理 • vcstool:多仓库管理 • Gazebo:仿真环境 • TurtleBot3:机器人模型 两种安装方式 ✅ 二进制安装:apt install,快速 ✅ 源码编译:git clone + colcon build 💡 建议:先二进制,再源码

2.8 常见问题与避坑

  • 编译报错: 先检查ROS2版本和系统版本是否匹配。我曾经遇到过有人用Ubuntu 22.04装ROS2 Foxy,编译Nav2时一堆API不兼容。
  • rosdep update失败: 多半是网络问题。可以试试export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml换国内源。
  • Gazebo启动黑屏: 检查显卡驱动。我建议用sudo apt install nvidia-driver-535(如果你有N卡)。
🎯 核心总结: 环境搭建就三步——装系统、装ROS2、装Nav2。每一步都有现成的脚本,但理解背后的原理更重要。别怕报错,每个错误都是学习的机会。

好了,环境搭好了,下一章咱们就开始写第一个Nav2程序。记住,基础不牢,地动山摇。花点时间把环境搞稳定,后面会省很多事。

可可精品资料库