第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 常见问题与避坑指南
我总结了几个高频问题,你遇到了直接对照着解决:
- 编译时提示找不到
nav2_msgs原因:消息包没编译。解决方案:先单独编译消息包:
colcon build --packages-select nav2_msgs - rosdep update 超时
我曾经被这个问题折磨了一下午。后来发现是网络问题,换成国内镜像源就好了:
export ROSDISTRO_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/rosdistro/index-v4.yaml - colcon build 报错说找不到Python包
大概率是Python环境没配好。检查一下:
pip3 install -r requirements.txt - 运行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,整整折腾了两天。现在回想起来,那些踩过的坑反而让我对系统理解得更深。
可可精品资料库