第1章:Nav2安装与编译——从零搭建你的导航系统
大家好,我是你们的老朋友。今天咱们正式开始Nav2的实战之旅。第一件事,就是把环境搭起来。别小看这一步,我见过太多人卡在安装上,折腾一整天最后发现是系统版本不对。
嗯,咱们先把话说清楚。Nav2不是个独立软件,它跑在ROS2上面。所以你得先有ROS2,才能谈Nav2。我个人习惯用Ubuntu 22.04 + ROS2 Humble,这套组合最稳,社区支持也最好。
1.1 系统要求:别在版本上翻车
先看看你的电脑够不够格。说白了,Nav2对硬件要求不高,但系统版本必须对。
| 项目 | 要求 | 备注 |
|---|---|---|
| 操作系统 | Ubuntu 22.04 LTS | 其他发行版也能用,但坑多 |
| ROS2版本 | Humble Hawksbill | 长期支持版,最稳定 |
| CPU | 双核以上 | 建议4核,编译快很多 |
| 内存 | 4GB以上 | 8GB更舒服 |
| 硬盘 | 20GB空闲 | 源码编译需要空间 |
1.2 两种安装方式:你选哪个?
安装Nav2有两种路子:源码编译和二进制包安装。你想想看,这就像做饭——你是想从种菜开始,还是直接买现成的菜来炒?
源码编译:适合想深入理解Nav2内部机制的人。你能看到所有源代码,想改哪里改哪里。但代价是——编译时间很长,我第一次编译等了快40分钟。
二进制包安装:适合只想用Nav2做项目的人。一条命令搞定,省时省力。我建议初学者先用二进制包,等熟悉了再回头玩源码。
1.3 源码编译Nav2(硬核玩家路线)
如果你决定走源码路线,先把ROS2 Humble装好。怎么装?去官网看教程,这里不展开。装好ROS2后,按下面步骤来:
# 1. 创建工作空间
mkdir -p ~/nav2_ws/src
cd ~/nav2_ws
# 2. 克隆Nav2源码
git clone https://github.com/ros-planning/navigation2.git src/navigation2
# 3. 安装依赖
sudo apt update
rosdep install -y --from-paths src --ignore-src --rosdistro humble
# 4. 编译(这步最耗时)
colcon build --symlink-install
# 5. 设置环境变量
echo "source ~/nav2_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
--parallel-workers 4 参数,能快不少。我习惯用 colcon build --symlink-install --parallel-workers 4,这样改Python代码不用重新编译。
为什么会编译这么久?因为Nav2依赖一大堆库,比如tf2、nav_msgs、costmap_2d等等。colcon会把这些依赖全部编译一遍。我第一次编译时,看着终端刷刷刷地滚,还以为死机了。
1.4 二进制包安装(省心路线)
不想折腾?那就用二进制包。一条命令搞定:
sudo apt install ros-humble-navigation2 ros-humble-nav2-bringup
就这么简单。装完就能用。我刚开始学Nav2时用的就是二进制包,先跑起来再说,后面再慢慢啃源码。
不过要注意,二进制包版本可能比源码慢一两个小版本。如果你需要最新特性,还是得走源码路线。
1.5 验证安装:跑个Demo看看
装完别急着走,先验证一下。我最怕的就是装完发现跑不起来,那才叫崩溃。
# 启动Nav2的示例
ros2 launch nav2_bringup tb3_simulation_launch.py
如果一切正常,你会看到Gazebo里出现一个TurtleBot3,Rviz2里显示地图和导航界面。嗯,看到这个画面,基本就稳了。
再跑个命令确认一下:
ros2 node list
你应该能看到一堆节点,比如/amcl、/controller_server、/planner_server等等。这些就是Nav2的核心组件。
- Gazebo中能看到机器人模型
- Rviz2中能看到地图和机器人位姿
- ros2 node list能列出Nav2相关节点
- ros2 topic list能看到/scan、/odom等话题
1.6 避坑指南:我踩过的那些坑
讲几个我亲身经历的问题,你遇到了别慌。
坑1:编译时提示找不到某个包
我曾经遇到Could not find a package configuration file provided by "nav2_msgs"。后来发现是忘了安装依赖。运行rosdep install就能解决。
坑2:Gazebo启动后黑屏
这个我遇到过两次。第一次是显卡驱动问题,更新驱动就好了。第二次是Gazebo版本不对,Ubuntu 22.04默认的Gazebo是Fortress,但Nav2需要Ignition Gazebo。解决办法:sudo apt install ros-humble-ignition-bridge。
坑3:Rviz2里看不到机器人
多半是TF树没建立起来。检查一下ros2 run tf2_tools view_frames,看看TF树是不是完整的。我那次是odom到base_link的变换没发布,加了个robot_state_publisher就好了。
1.7 本章知识体系
下面这张图帮你理清本章的核心逻辑:
这张图把本章内容串起来了。从系统要求出发,分两条路走——源码编译和二进制包安装,最后都要验证。避坑指南是保命用的,建议收藏。
好了,第一章就到这里。安装环境是基础,基础打牢了,后面学起来才顺。下一章咱们聊聊Nav2的架构,看看它到底是怎么工作的。