1. 课程导入

欢迎进入《ROS2 Nav2导航与边缘AI融合:识别结果影响路径规划》课程。这是整个课程体系的第一章,也是奠定全局认知的基石。在后续的29个章节中,我们将深入剖析机器人操作系统(ROS2)的导航框架Nav2,并探讨如何将边缘AI的视觉识别结果实时注入导航决策链路,从而实现“看见什么,就如何行走”的智能行为。本章不涉及具体代码实现,而是帮助您建立宏观技术地图,明确学习边界、知识储备要求以及各模块之间的逻辑关系。

感知层(边缘AI) 决策层(Nav2导航) 执行层(底盘/运动) 相机/激光雷达 图像/点云数据采集 YOLO/ResNet等模型 目标检测/语义分割 TensorRT/OpenVINO 推理加速与量化 识别结果发布 话题:/ai_detections 全局规划器 NavFn/Smac Planner 局部规划器 DWB/Regulated Pure Pursuit 代价地图 Costmap 2D/3D 行为树 BT Navigator XML 速度指令 /cmd_vel 电机驱动 PID/运动学解算 里程计 轮式编码器/IMU 识别结果 语义标签 速度指令 里程计反馈 核心融合点:AI识别结果 → 代价地图图层 → 规划器约束 本章节定位:理解三大层次与数据流方向

上图展示了本课程的核心技术架构。整个系统分为感知层、决策层和执行层。感知层负责通过边缘AI模型(如YOLO)识别环境中的物体(行人、车辆、障碍物、交通标志等),并将结果以结构化数据发布到ROS2话题。决策层即Nav2导航框架,它接收感知层的数据,结合自身维护的代价地图,通过全局规划器和局部规划器生成安全可行的路径。执行层则负责将速度指令转换为实际的电机运动,并通过里程计反馈形成闭环。本课程的核心融合点在于:如何将AI识别出的语义信息(如“前方2米处有行人”)转化为代价地图上的代价增量,从而影响规划器的行为决策。

1.1 学习目标:从“能导航”到“懂场景”

本课程的学习目标分为三个递进层次,旨在帮助您构建从理论到实战的完整能力闭环。

层次 具体目标 对应能力
基础层 掌握ROS2核心通信机制(话题、服务、动作)与Nav2框架的架构组成 能够独立配置并运行Nav2标准导航流程
进阶层 理解代价地图的膨胀层、障碍层、静态层原理,掌握插件化开发方法 能够自定义代价地图图层,将外部数据注入导航
融合层 实现边缘AI推理结果与Nav2规划器的实时联动,完成“识别-决策-执行”闭环 能够针对特定场景(如避让行人、礼让车辆)设计导航策略

在完成本课程后,您将能够:第一,独立搭建一个集成边缘AI的ROS2导航系统;第二,针对实际场景中的动态障碍物、语义禁区等复杂情况,设计合理的路径规划策略;第三,掌握性能调优的基本方法,包括推理延迟优化、代价地图参数调整和规划器算法选型。

课程定位说明:本课程不是单纯的ROS2入门教程,也不是纯粹的深度学习课程。它聚焦于“边缘AI输出如何影响导航决策”这一交叉领域。因此,我们默认您已经具备ROS2基础编程能力,并了解基本的深度学习概念。课程的重点在于“融合”而非“基础”。

1.2 课程结构:六大模块与30章递进

整个课程共30章,分为六个模块,每个模块解决一个核心问题。课程结构设计遵循“基础-进阶-实战”的螺旋式上升路径。

  • 模块一(第1-5章):基础与环境搭建。包括本章课程导入、ROS2核心概念回顾、Nav2框架深度解析、边缘AI开发环境配置(Jetson/RK3588等)、以及ROS2与AI推理引擎(TensorRT/ONNX Runtime)的桥接方法。
  • 模块二(第6-10章):代价地图与语义融合。深入剖析代价地图的图层结构,讲解如何编写自定义代价地图插件,将AI识别出的物体类别映射为不同的代价数值。重点案例包括“行人避让区域”和“车辆禁行区”的构建。
  • 模块三(第11-15章):规划器算法与AI约束。分析Nav2内置的全局规划器(NavFn、Smac Planner)和局部规划器(DWB、TEB)的工作原理,探讨如何通过修改规划器参数或编写规划器插件,使AI识别结果直接参与路径搜索的代价计算。
  • 模块四(第16-20章):行为树与复杂任务编排。学习行为树(Behavior Tree)在Nav2中的应用,设计“识别到红绿灯-停车等待-绿灯通行”等复杂行为序列。同时介绍状态机与行为树的对比与选型。
  • 模块五(第21-25章):边缘AI推理优化与部署。聚焦于模型压缩、量化、TensorRT加速等边缘端优化技术,确保AI推理的实时性。同时讲解多模型并行推理、流水线设计等高级话题。
  • 模块六(第26-30章):综合实战与性能调优。通过一个完整的园区物流机器人项目,串联所有知识点。包括系统集成、故障排查、性能瓶颈分析以及基于真实场景的参数调优方法论。

学习建议:建议您按照模块顺序学习,但可以根据自身基础跳过部分基础章节。例如,如果您对ROS2话题通信非常熟悉,可以快速浏览第2章。但第6-10章(代价地图融合)和第11-15章(规划器约束)是本课程的核心,建议投入更多精力。

1.3 前置知识要求:您需要具备什么?

为了确保学习效果,我们设定了明确的前置知识门槛。如果您在某些方面尚有欠缺,建议先进行针对性补充。

知识领域 具体要求 推荐补充资源
ROS/ROS2基础 熟悉节点、话题、服务、动作的概念;能够编写简单的发布订阅程序;了解launch文件与参数服务器 《ROS2入门21讲》、ROS2官方Tutorials
Python/C++编程 能够阅读和编写Python脚本;了解C++基础语法(因为Nav2核心是C++实现) Python官方教程、C++ Primer
Linux操作 熟悉Ubuntu系统基本命令、文件权限管理、环境变量配置;能够使用vim或VS Code进行远程开发 《鸟哥的Linux私房菜》
深度学习基础 了解卷积神经网络(CNN)的基本结构;知道目标检测(YOLO系列)和语义分割的基本原理;能够使用PyTorch或TensorFlow进行模型导出 吴恩达《深度学习专项课程》、YOLOv8官方文档
传感器基础 了解激光雷达(LiDAR)点云数据的基本格式;熟悉单目/双目相机的成像原理与标定方法 《机器人学中的状态估计》

特别需要强调的是,Linux系统操作能力是很多初学者容易忽视的瓶颈。本课程中大量的编译、部署、调试工作都在Linux环境下进行。如果您对vim编辑器、cmake编译、环境变量设置等操作不够熟练,建议在课程开始前花一周时间集中练习。

风险提示:如果您完全没有ROS2基础,直接学习本课程可能会感到吃力。尤其是第6章之后的自定义插件开发,需要频繁使用ROS2的rclcpp/rclpy API。建议您至少完成一个简单的ROS2发布订阅程序和一个服务调用程序后再进入本课程。

1.4 整体技术栈概览:软硬件选型与数据流

本课程的技术栈选型遵循“工业级、低成本、易复现”的原则。我们推荐以下软硬件组合,但课程中的原理和方法同样适用于其他平台。

硬件平台:推荐使用NVIDIA Jetson Orin Nano(8GB版本)作为边缘AI计算单元,搭配思岚A1/A2激光雷达或Intel RealSense D435i深度相机。底盘可以选择差速驱动的TurtleBot4或自制的麦克纳姆轮底盘。如果条件有限,也可以使用纯仿真环境(Gazebo + RViz2)完成全部实验。

软件平台:操作系统采用Ubuntu 22.04,ROS2版本为Humble Hawksbill(长期支持版本)。AI推理框架使用TensorRT 8.5+或ONNX Runtime GPU版。Nav2版本为Humble对应的1.1.x系列。

数据流的核心链路如下:

传感器数据(图像/点云)
    ↓
边缘AI推理(YOLOv8检测 + 语义标签)
    ↓
发布结构化结果(自定义消息:/ai_detections)
    ↓
Nav2代价地图融合层(自定义插件订阅并处理)
    ↓
全局/局部规划器读取更新后的代价地图
    ↓
输出速度指令(/cmd_vel)
    ↓
底盘执行并反馈里程计(/odom)

这条链路中,最关键的技术挑战在于实时性。AI推理通常需要30-50ms,而Nav2的规划周期通常在100ms左右。如何在不阻塞导航主循环的前提下,将AI结果及时注入代价地图,是本课程第21-25章重点解决的问题。

1.5 常见误区与学习复盘

在课程开始之际,我们总结了往期学员常犯的几个认知误区,帮助您少走弯路。

  • 误区一:认为AI识别越准越好。实际上,在导航融合场景中,识别的稳定性和延迟比准确率更重要。一个偶尔漏检但响应迅速的系统,往往比一个准确但延迟高的系统更安全。因为导航决策需要的是“及时”的障碍物信息,而非“完美”的语义理解。
  • 误区二:忽视代价地图的更新频率。很多初学者只关注AI推理结果,却忽略了代价地图的更新机制。如果代价地图的更新频率低于AI推理频率,那么再快的AI也无济于事。需要合理配置代价地图的发布频率和融合层的处理逻辑。
  • 误区三:将AI结果直接作为硬约束。例如,识别到行人就立即急停。这种“非黑即白”的策略在复杂场景中会导致机器人频繁停顿,效率低下。更合理的做法是将AI结果转化为软约束(如增加代价数值),让规划器在“绕行”和“等待”之间做出最优权衡。
  • 误区四:忽略传感器标定与时间同步。AI识别结果需要映射到机器人坐标系(如base_link)中,这依赖于相机与底盘的外参标定。同时,AI推理的延迟会导致识别结果的时间戳滞后,需要利用消息过滤器(message_filters)进行时间同步。