第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分支 | 源码编译最灵活 |
2.2 安装Ubuntu 22.04 LTS
如果你已经有双系统或虚拟机,可以跳过这步。但如果你是纯小白,我建议用虚拟机先练手。
- 下载镜像: 去Ubuntu官网下载22.04 LTS桌面版
- 虚拟机配置: 至少分配4GB内存、2个CPU核心、40GB硬盘
- 安装要点: 语言选English,键盘布局选English(US),分区默认即可
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
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
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 本章知识体系
下面这张图帮你理清整个环境搭建的逻辑:
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卡)。
好了,环境搭好了,下一章咱们就开始写第一个Nav2程序。记住,基础不牢,地动山摇。花点时间把环境搞稳定,后面会省很多事。