2. 自动驾驶规划系统概述

自动驾驶规划系统并不是一个单一算法,而是一条从“去哪里”到“怎么走”再到“每一秒如何动”的决策链。理解任务规划、行为规划与运动规划三者的分工与接口,是读懂 Autoware 规划模块架构的前提。本节先建立三层规划的概念模型,再落到 Autoware 的模块定位与数据流。

一、三层规划的核心原理与区别

任务规划(Mission Planning)回答的是“全局目标与路线”问题。它接收地图、起点、终点与途经点,输出一条从起点到终点的全局路径(Route),通常基于高精地图的路网拓扑做图搜索,如 Dijkstra 或 A*。任务规划的时间尺度最长,通常在行程开始或路线偏离时触发一次,不关心实时障碍物。

行为规划(Behavior Planning)回答的是“在当前交通场景下应采取什么驾驶行为”。它接收全局路径、实时感知结果、交通规则与地图语义,输出的是宏观决策,例如“跟车”“变道”“让行”“停车等待”“通过路口”。行为规划的时间尺度在秒级到十秒级,输出的是离散的行为意图或决策状态,而不是具体的轨迹点。

运动规划(Motion Planning)回答的是“未来几秒内车辆具体沿什么轨迹行驶”。它接收行为决策、当前车辆状态、障碍物预测轨迹与车辆运动学约束,输出一条带时间戳的平滑轨迹,包含位置、速度、加速度、曲率等信息。运动规划的时间尺度在毫秒到秒级,要求满足动力学可行性、舒适性与安全性。

一句话区分:任务规划决定“走哪条路”,行为规划决定“现在该做什么动作”,运动规划决定“方向盘和油门具体怎么打”。

二、三者的联系与数据流

三层规划是逐级细化、逐级约束的关系。任务规划输出的全局路径为行为规划提供空间参考;行为规划输出的行为意图为运动规划提供决策约束;运动规划输出的轨迹再交给控制模块执行。反过来,运动规划如果发现无法生成可行轨迹,会向上反馈给行为规划,触发行为重决策,例如从“变道”退回“跟车”。

这种“自上而下分解、自下而上反馈”的闭环,是自动驾驶规划系统稳定运行的关键。缺少反馈,行为规划可能做出运动规划无法执行的决策;缺少分解,运动规划会在全局搜索空间中陷入组合爆炸。

三层规划关系与 Autoware 规划模块数据流 任务规划 Mission 输入:地图 / 起点 / 终点 输出:全局路径 Route 时间尺度:整段行程 行为规划 Behavior 输入:路径 / 感知 / 规则 输出:跟车 / 变道 / 让行 时间尺度:秒~十秒 运动规划 Motion 输入:决策 / 预测 / 约束 输出:带时间戳轨迹 时间尺度:毫秒~秒 不可行反馈:触发行为重决策 Autoware 规划模块定位 mission_planner 全局路径生成 behavior_path_planner 场景行为决策 motion_planner 轨迹优化与生成 control 轨迹跟踪执行

三、Autoware 规划模块的定位与架构

在 Autoware 中,规划模块位于感知与定位之上、控制之下,是决策链的中枢。其典型架构可对应三层规划:

  • mission_planner:对应任务规划,基于 Lanelet2 高精地图与路由图,计算从起点到终点的全局路径,输出 LaneletRoute。
  • behavior_path_planner / behavior_velocity_planner:对应行为规划。前者处理变道、避障、绕行等路径级行为;后者处理路口、人行横道、停止线等基于速度的行为约束。
  • motion_planner:对应运动规划,接收行为规划输出的路径与速度约束,结合障碍物预测,生成满足运动学约束的平滑轨迹。
  • control:接收轨迹,输出油门、刹车、转向指令,完成闭环执行。

Autoware 规划模块的输入包括:高精地图、定位位姿、感知障碍物、预测轨迹、交通信号状态;输出为一条带时间信息的轨迹。模块之间通过 ROS 2 话题与服务通信,形成清晰的数据流。

四、典型场景案例:路口右转

以城市道路路口右转为例,三层规划协同如下:

  1. 任务规划:根据终点生成经过该路口的全局路径,标记右转车道与路口区域。
  2. 行为规划:识别路口停止线、行人横道与信号灯,决策“减速让行”或“停车等待”,输出速度约束与路径约束。
  3. 运动规划:在让行约束下生成一条先减速、确认安全后平滑右转的轨迹。
  4. 控制执行:跟踪轨迹完成转向与速度控制。

如果行人突然进入横道,行为规划会从“通过”切换为“停车等待”,运动规划随之重新生成制动轨迹。这正是行为层与运动层解耦带来的灵活性。

五、常见误区与复盘

误区 问题 正确理解
把行为规划当成运动规划 行为输出的是意图,不是轨迹 行为决定“做什么”,运动决定“怎么走”
认为任务规划一次即可 路线偏离或封路时需要重规划 任务规划可被触发重算,但频率低
忽略自下而上的反馈 运动不可行时行为不调整 运动规划失败应反馈触发行为重决策
三层模块耦合过紧 难以独立测试与替换 保持清晰接口,便于模块化验证

工程实践中,最常见的排障思路是:先确认任务规划路径是否正确,再检查行为规划是否给出合理决策,最后验证运动规划轨迹是否满足动力学与安全约束。逐层定位,避免在错误层级反复调参。

掌握三层规划的区别与联系,以及 Autoware 中 mission_planner、behavior_path_planner、behavior_velocity_planner、motion_planner 的定位与数据流,是后续深入学习行为决策算法与轨迹优化方法的基础。