新手也能懂:用 Apollo Public Road Planner 的“场景-阶段-任务”三层模型,拆解一次无保护左转

张开发
2026/4/17 14:51:18 15 分钟阅读

分享文章

新手也能懂:用 Apollo Public Road Planner 的“场景-阶段-任务”三层模型,拆解一次无保护左转
从零拆解Apollo无保护左转三层模型下的自动驾驶决策推演想象你正坐在一辆自动驾驶汽车里前方是一个繁忙的十字路口。绿灯亮起但对面直行的车辆川流不息——这就是典型的无保护左转场景。人类司机需要观察、判断、等待时机而Apollo系统则通过场景-阶段-任务三层模型将这一复杂决策过程分解为可计算的步骤。本文将带你化身Planning模块亲历一次完整的决策推演。1. 场景触发十字路口的数字交警当车辆接近路口约50米时ScenarioManager开始扫描环境特征def check_scenario(frame): if frame.traffic_light.color GREEN and \ not frame.traffic_light.has_protected_arrow and \ frame.map_data.intersection_type UNPROTECTED: return TrafficLightUnprotectedLeftTurnScenario()这个场景的独特之处在于动态博弈性需要对向直行车辆的实时轨迹预测风险梯度随着车辆接近路口安全阈值逐步收紧时间窗口必须在绿灯周期内完成决策典型误判情况包括将闪烁黄灯误认为绿灯或未检测到远处快速接近的对向车辆。系统通过多传感器融合和预测模块的补偿机制来避免这些错误。2. 阶段分解左转动作的慢动作回放2.1 Creep阶段谨慎的探步车辆以0.3m/s²减速度缓行至停止线前3米处此时感知聚焦激光雷达FOV集中在对向车道±30度范围预测沙盘生成对向车辆的未来5秒轨迹概率云安全校验持续计算Time-To-Collision(TTC)值注意Creep速度需平衡观察需求与通行效率过快会压缩决策时间过慢可能导致错过绿灯周期2.2 决策阶段博弈论下的最佳时机系统构建 payoff matrix 评估不同选择动作选项成功率舒适度通行效率立即通过65%2.8/592%继续等待98%4.2/545%放弃本轮100%4.5/50%决策引擎综合以下因素动态调整权重剩余绿灯时间后方车辆跟车距离对向车辆加速度变化率2.3 执行阶段精准的轨迹控制确定通过后路径规划器生成两条候选轨迹trajectory_a { curvature: [0.01, 0.12, 0.09], # 更平缓的转弯 speed_profile: [3.2, 4.1, 5.0] # 加速通过 } trajectory_b { curvature: [0.02, 0.15, 0.10], # 更急的转弯 speed_profile: [4.0, 3.8, 4.5] # 保持匀速 }最终选择trajectory_a因其在以下评估中胜出横向加速度低于0.3g方向盘转角变化率15°/s预留1.2米安全边际3. 任务层微观操作的齿轮组3.1 速度规划任务采用三次样条插值生成速度曲线关键约束条件最大减速度不超过2.5m/s²jerk值限制在1.8m/s³内停止线前速度必须降为0异常处理当检测到对向车辆突然加速时触发紧急修订立即中断当前速度曲线在0.3秒内生成新的制动曲线保证减速度平滑过渡3.2 路径优化任务使用Frenet坐标系下的QP优化// 目标函数平滑性偏移最小化 minimize ∫(d(s))²ds w₁∫(d(s)-d_ref(s))²ds subject to: d(s) ∈ [d_min(s), d_max(s)] // 道路边界约束 |d(s)| tan(30°) // 曲率约束实际运行时会进行约15次迭代优化耗时控制在80ms内。3.3 风险监控任务实时计算以下安全指标指标名称计算公式阈值碰撞时间(TTC)Δd / Δv3.0s制动安全距离(SSD)v²/(2μg) vτ5m轨迹偏离度maxd_actual - d_desired当任意指标接近阈值时系统会提前0.5秒启动降级方案。4. 场景退出左转完成的状态清算成功通过路口后系统执行场景审计记录关键决策点的实际表现vs预测资源释放清除为本次左转分配的临时内存状态迁移切换回LaneFollowScenario的初始化阶段性能数据典型无保护左转场景处理耗时约120-200ms其中环境感知占比35%决策计算占比45%轨迹生成占比20%在极端复杂路口如6向交叉口系统会主动降级为更保守的决策模式必要时通过V2X获取补充信息。这种分层处理机制既保证了常规场景的高效性又为边缘情况预留了安全余量。

更多文章