2、ROS2与Nav2安装:ROS2 Humble安装、Nav2源码编译、依赖检查
好,咱们正式开始动手。上一章我们把整个仿真联调的地图画清楚了,这一章就来搭地基——把ROS2 Humble和Nav2装好。
说实话,安装这件事,说简单也简单,说坑也多。我这些年帮人排查过不下几十次安装问题,十有八九都是版本没对齐、源没配好、或者依赖没装全。咱们这一章就把这些坑提前填上。
2.1 ROS2 Humble 安装
我个人习惯用 Ubuntu 22.04 搭配 ROS2 Humble。为什么选这个组合?因为Humble是长期支持版(LTS),到2027年才结束维护,稳定性有保障。你想想看,做项目最怕什么?最怕辛辛苦苦搭的环境,过两年官方不维护了。
2.1.1 设置软件源
先把ROS2的软件源加进去。这一步很多人会漏掉,或者配错了源地址。
sudo apt update
sudo apt install curl gnupg lsb-release
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 $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
sudo apt update
2.1.2 安装ROS2 Humble桌面版
我建议直接装 desktop 版本,包含了RViz、Gazebo这些可视化工具,后面调试会方便很多。
sudo apt install ros-humble-desktop
这个包比较大,大概1-2GB,下载时间取决于你的网速。趁这个时间,你可以去泡杯咖啡。
2.1.3 配置环境变量
装完之后,别忘了把ROS2加到bashrc里。不然每次打开终端都要手动source,很烦人。
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
验证一下是否安装成功:
ros2 run demo_nodes_cpp talker
如果能看到节点在发布消息,恭喜你,ROS2 Humble装好了。
2.2 Nav2 源码编译
为什么要源码编译?直接用apt安装不行吗?
嗯,这里我要说句实话:apt安装的Nav2版本往往比较旧,而且有些功能包不全。咱们做仿真联调,后面要改参数、加插件,源码编译更灵活。
2.2.1 创建工作空间
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws/src
2.2.2 克隆Nav2源码
我建议克隆 humble 分支,别用main分支。main分支是给Rolling版本用的,API可能有变化。
git clone https://github.com/ros-planning/navigation2.git -b humble
2.2.3 安装依赖
这一步是重头戏。Nav2的依赖非常多,rosdep可以帮你自动处理大部分。
cd ~/nav2_ws
rosdep install -y -r -q --from-paths src --ignore-src --rosdistro humble
如果遇到rosdep没装,先装一下:
sudo apt install python3-rosdep2
sudo rosdep init
rosdep update
2.2.4 编译Nav2
cd ~/nav2_ws
colcon build --symlink-install
这里我推荐加 --symlink-install 参数。什么意思呢?就是编译后的文件用符号链接指向源码。这样你修改Python脚本后不用重新编译,直接生效。调试阶段特别有用。
编译时间取决于你的机器配置。我的笔记本大概要15-20分钟。如果编译过程中报错,别慌,多半是某个依赖没装全。
2.3 依赖检查与常见问题
编译完了,怎么知道有没有问题?我一般做三步检查:
2.3.1 检查关键包是否存在
ros2 pkg list | grep nav2
正常应该能看到 nav2_bringup、nav2_planner、nav2_controller 等核心包。如果少了某个包,说明编译时跳过了。
2.3.2 检查环境变量
echo $AMENT_PREFIX_PATH | grep nav2
如果输出为空,说明你没source工作空间:
source ~/nav2_ws/install/setup.bash
2.3.3 常见问题汇总
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| colcon build 报找不到某个包 | 依赖未安装 | 重新运行 rosdep install |
| 编译时卡在某个包上 | 内存不足 | 用 colcon build --parallel-workers 1 单线程编译 |
| ros2 run 找不到节点 | 未source工作空间 | 检查 .bashrc 或手动 source |
| Python脚本修改后不生效 | 未使用 --symlink-install | 重新编译或改用符号链接模式 |
2.4 本章知识体系
为了让你对整个安装流程有个直观认识,我画了一张流程图:
这张图把整个安装流程分成了三个阶段:ROS2安装、Nav2编译、验证检查。你照着这个顺序走,基本不会出大问题。
好,到这里ROS2 Humble和Nav2的安装就完成了。下一章我们开始搭建仿真环境,到时候会用到Gazebo和TurtleBot3的模型。嗯,那才是真正好玩的部分。