第2章:环境搭建与安装

说实话,很多初学者在Nav2上栽跟头,十有八九是环境没搭好。我自己带团队时也发现,环境问题占到了调试时间的40%以上。所以这一章,咱们把安装这件事彻底讲透。

2.1 ROS2 Humble 安装

ROS2 Humble是目前最稳定的长期支持版本。我个人习惯用Ubuntu 22.04搭配它,兼容性最好。

核心要点:ROS2 Humble 只支持 Ubuntu 22.04 (Jammy)。别想着在20.04上硬装,会出各种奇奇怪怪的依赖问题。

安装步骤其实很简单,我直接给命令:

# 设置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

# 安装ROS2 Humble桌面版
sudo apt update
sudo apt install ros-humble-desktop

# 安装开发工具
sudo apt install ros-dev-tools

我的经验:安装完成后,记得把source命令加到.bashrc里。我见过太多人每次开终端都要手动source,太累了。

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

验证安装是否成功:

ros2 run demo_nodes_cpp talker

如果能看到节点在发布消息,那就说明装好了。

2.2 Nav2 源码编译安装

为什么我推荐源码编译?因为二进制安装虽然快,但你想改代码、加断点调试时,就傻眼了。我在项目中遇到过好几次,二进制包里的某个行为跟预期不符,但看不到源码,只能干瞪眼。

先创建工作空间:

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

安装依赖:

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

注意:rosdep如果报错说找不到某些包,别慌。很可能是你的系统缺少某些库。我曾经在Ubuntu 22.04上遇到过libserial-dev没装的情况,手动补上就行。

编译:

colcon build --symlink-install

这里有个小技巧:第一次编译时加个--cmake-args -DCMAKE_BUILD_TYPE=Release,编译速度会快很多。调试时再切回Debug模式。

2.3 二进制安装(备选方案)

如果你只是想快速体验Nav2,不想折腾编译,二进制安装也行:

sudo apt install ros-humble-nav2-*

但说实话,我建议你还是走源码编译。为什么呢?因为Nav2的很多参数调优、插件开发,都需要你理解源码结构。二进制安装就像开自动挡,省事但学不到真本事。

2.4 依赖库检查清单

安装过程中最容易出问题的就是依赖库。我整理了一个检查清单,你对照着看:

依赖库 用途 常见问题
Eigen3 矩阵运算 版本太低会导致编译报错
Boost C++标准库扩展 多版本冲突,建议用系统默认
OpenCV 图像处理 4.2以上版本才支持
PCL 点云处理 1.12以上版本
TF2 坐标变换 ROS2自带,无需额外安装

检查命令:

# 检查Eigen版本
pkg-config --modversion eigen3

# 检查Boost版本
dpkg -l | grep libboost

# 检查OpenCV版本
pkg-config --modversion opencv4

2.5 常见问题与避坑指南

我总结了几个高频问题,你遇到了直接对照着解决:

  1. 编译时提示找不到nav2_msgs

    原因:消息包没编译。解决方案:先单独编译消息包:colcon build --packages-select nav2_msgs

  2. rosdep update 超时

    我曾经被这个问题折磨了一下午。后来发现是网络问题,换成国内镜像源就好了:

    export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml
  3. colcon build 报错说找不到Python包

    大概率是Python环境没配好。检查一下:pip3 install -r requirements.txt

  4. 运行Nav2时提示pluginlib加载失败

    嗯,这里要注意。通常是插件路径没设置对。检查AMENT_PREFIX_PATH环境变量是否包含了你的工作空间。

我的调试习惯:每次编译完,我都会先跑一下Nav2自带的测试用例:colcon test --packages-select nav2_bringup。如果测试全过,那基本就稳了。

2.6 环境验证与测试

装完别急着跑,先做个快速验证:

# 启动Nav2示例
ros2 launch nav2_bringup tb3_simulation_launch.py

# 打开另一个终端,查看话题
ros2 topic list

如果你能看到/map、/odom、/cmd_vel这些话题,说明环境已经跑通了。

最后,我建议你把整个安装过程录个脚本。下次重装系统时,一键执行,省时省力。我自己就维护了一个setup_nav2.sh脚本,每次换电脑直接跑一遍,十分钟搞定。

总结一下:环境搭建是Nav2学习的第一道坎。跨过去,后面就顺了。别怕出错,每个错误都是学习的机会。我当年第一次装Nav2,整整折腾了两天。现在回想起来,那些踩过的坑反而让我对系统理解得更深。

Nav2环境搭建知识体系 Nav2环境搭建 ROS2 Humble安装 Ubuntu 22.04 + 桌面版 source到.bashrc Nav2安装方式 源码编译 二进制安装 依赖库检查 Eigen3 Boost OpenCV 常见问题与避坑 rosdep超时 → 换镜像 pluginlib加载失败 → 检查路径

可可精品资料库