apollo的超车、绕行、跟车规划的流程
·
在Apollo自动驾驶框架中,超车、绕行、跟车等行为是决策(Behavior Planning)与路径规划(Motion Planning)协同作用的结果,其流程遵循分层决策机制,但并非简单的“先决策后执行”,而是通过动态交互实现的。以下是具体流程和关键逻辑:
1. 整体流程:分层决策与规划
Apollo的决策规划模块分为Behavior Planner(决策层)和Motion Planner(运动规划层),两者通过参考线(Reference Line)和动态障碍物交互信息紧密耦合:
- Behavior Planner(决策层)
- 输入:感知数据(障碍物、车道线)、定位、高精地图、交通规则。
- 输出:高层行为决策(如
LANE_FOLLOW、OVERTAKE、SIDEPASS)。 - 关键逻辑:
- 基于规则(Rule-Based)或机器学习(如ML-based预测)生成初步决策。
- 不直接输出轨迹,而是通过生成虚拟障碍物(Virtual Obstacle)或修改参考线属性(如目标车道、速度限制)传递给Motion Planner。
- 示例:超车决策会标记目标车辆为“待超越”,并指定目标车道的参考线优先级。
- Motion Planner(运动规划层)
- 输入:Behavior Planner的决策、参考线、动态障碍物预测轨迹。
- 输出:最终可执行的轨迹(Path + Speed)。
- 关键逻辑:
- Lattice/EM Planner根据决策层意图生成具体轨迹。
- 若决策不可行(如超车时目标车道突然出现障碍物),Motion Planner会反馈冲突,触发决策层重新规划。
2. 超车/绕行/跟车的具体流程
(1) 超车(Overtake)
- 决策层:
- 检测前车速度低于阈值,且相邻车道满足超车条件(无对向车、车道线允许)。
- 生成
OVERTAKE指令,并绑定目标车道的参考线(Reference Line)。 - 规划层:
- Lattice Planner在目标参考线附近采样轨迹,评估安全性(如与对向车距离)、舒适性(加速度平滑)。
- 若采样失败(如无法找到无碰撞轨迹),反馈给决策层,可能降级为
FOLLOW。
(2) 绕行(SidePass)
- 决策层:
- 检测静态障碍物(如抛锚车辆),决策
SIDEPASS并指定绕行方向(左/右)。 - 在参考线上插入虚拟车道(Virtual Lane)临时扩展道路边界。
- 规划层:
- 基于虚拟车道生成绕行轨迹,代价函数中增加“偏离原车道”的权重,确保绕行后回归原车道。
(3) 跟车(Follow)
- 决策层:
- 计算与前车的安全距离(IDM模型),决策
FOLLOW并设定期望跟车速度。 - 规划层:
- 采用ST-Graph(速度-时间图)优化,保持安全距离的同时避免急刹。
3. 关键交互机制
- 参考线动态更新:
Behavior Planner通过选择不同的参考线(如本车道vs.超车道)间接影响路径规划,而非直接指定轨迹。 - SL/TK坐标系转换:
Motion Planner在**Frenet帧(SL坐标系)**下评估轨迹,将Behavior决策转换为纵向(S)和横向(L)的约束条件。 - 反馈循环:
若Motion Planner无法满足当前决策(如超车轨迹碰撞风险高),会通过PlanningStatus反馈,触发决策层重新评估(如改为跟车)。
4. 与“确认滑”的关系
- 无严格“确认滑”:Apollo的决策和规划是持续迭代的(每10ms~100ms循环),而非一次性确认。
- 例外情况:在交互式场景(如无保护左转)中,决策层可能通过
Yield或Stop指令等待外部车辆响应,此时规划层会生成保守轨迹(如减速停车)。
总结
Apollo的超车/绕行/跟车行为是决策与规划动态协作的结果:
- 决策层提供高层意图和参考线约束;
- 规划层生成具体轨迹,并反馈可行性;
- 两者通过参考线、虚拟障碍物和状态机实现闭环。
优势:灵活性高,适应动态环境;挑战:需精细调参以避免决策振荡(如频繁切换超车/跟车)。
更多推荐


所有评论(0)