为什么Apollo放弃了EM Planner?深入对比Piecewise Jerk与DP+QP的优劣

张开发
2026/4/19 2:42:41 15 分钟阅读

分享文章

为什么Apollo放弃了EM Planner?深入对比Piecewise Jerk与DP+QP的优劣
为什么Apollo放弃了EM Planner深入对比Piecewise Jerk与DPQP的优劣自动驾驶规划算法的演进就像一场永不停歇的技术马拉松而Apollo从EM Planner转向Piecewise Jerk Optimization的决策无疑是这场竞赛中的重要转折点。对于每天与轨迹优化打交道的工程师来说这个转变背后隐藏着太多值得玩味的技术细节——为什么一个曾经被奉为经典的框架会被逐渐替代DPQP的黄金组合究竟在哪些场景下露出了破绽当我们翻开Apollo的代码提交历史和开发者讨论区一幅关于算法选型的技术图谱正逐渐清晰。1. 规划算法的核心挑战与演进脉络在自动驾驶的决策规划模块中路径优化问题本质上是在多维约束条件下寻找最优解的数学过程。早期的EM Planner采用动态规划(DP)与二次规划(QP)的组合策略这种架构在Apollo 3.0到5.0时期是当之无愧的主力方案。但当我们分析2020年后的代码提交记录会发现一个明显的技术转向——piecewise jerk方法开始占据主导地位。两种架构的核心差异对比特性DPQP架构Piecewise Jerk计算复杂度O(N²)O(N)约束处理分段处理全局连续平滑性保证依赖QP参数内置三阶导数约束实时性表现50-100ms20-50ms数值稳定性需手动调节权重自动适应曲率变化从实际工程角度看这种转变的直接驱动力来自三个维度的需求升级计算效率城市复杂场景下路径候选数量呈指数增长乘坐舒适性需要更自然的加速度和加加速度(jerk)控制部署便利性减少人工调参的依赖程度提示在Apollo的GitHub issue区开发者多次提到EM Planner在十字路口场景会产生锯齿状路径这是触发架构重构的关键用例之一。2. EM Planner的DPQP架构深度解构动态规划作为EM Planner的第一阶段其核心思想是通过构建代价网格(cost grid)来搜索粗略路径。这个过程的优势在于能处理非凸优化问题但也埋下了几个隐患# 典型DP路径搜索伪代码示例 def dp_path_optimize(): for level in discretized_s_grid: for point in lateral_positions: min_cost INF for prev_point in previous_level: cost calculate_transition_cost(prev_point, point) if cost min_cost: min_cost cost optimal_path[level][point] prev_point return backtrack_optimal_path()DP阶段的主要瓶颈体现在离散化误差横向采样间隔通常为0.1-0.5米导致路径细节丢失维度灾难当规划时长超过5秒时计算量急剧上升局部最优陷阱网格采样可能错过全局最优解QP阶段虽然能对DP结果进行平滑但其二次规划的形式存在固有局限// QP问题标准形式 minimize 0.5x^T P x q^T x subject to l ≤ A x ≤ u在实际部署中工程师们发现约束条件过多会导致求解失败率上升不同场景需要调整不同的权重参数曲率突变处容易产生数值不稳定3. Piecewise Jerk的革新性突破Piecewise jerk方法之所以能成为新的技术标杆关键在于它将车辆运动学特性直接编码到优化框架中。与DPQP的串联架构不同这是一种端到端的优化方案技术实现亮点将jerk加加速度作为显式优化目标采用五次多项式表示路径段通过OSQP求解器处理凸优化问题典型的目标函数构成cost w_lat * lateral_deviation w_jerk * jerk_magnitude w_end * endpoint_error与EM Planner相比这种方法的优势集中体现在计算效率提升取消DP的网格搜索环节问题规模与路径长度线性相关更适合并行化计算乘坐舒适性改善三阶导数约束保证运动平滑加速度变化率得到显式控制减少急转方向的甩尾现象参数鲁棒性增强权重参数物理意义明确不同场景间参数可移植性强自适应曲率变化能力提升4. 技术选型的现实考量与平衡之道尽管Piecewise jerk展现出明显优势但Apollo团队并未完全抛弃DPQP的思想。在速度规划子模块中这种经典架构仍然发挥着重要作用。这种新旧并存的现象揭示了算法选型的深层逻辑保留DPQP的场景特征速度规划对离散化更宽容速度约束通常更结构化长时距预测需求更突出工程实践中的折中方案在路径规划中采用piecewise jerk为主复杂场景下结合轻量级DP进行辅助决策速度规划保持DPQP的传统架构紧急避障使用专用优化器从代码提交历史可以看出这种混合架构经过了多次迭代优化。例如在Apollo 7.0中开发者引入了基于场景的规划器选择机制# 场景判断逻辑示例 if scenario lane_follow: use piecewise_jerk_optimizer elif scenario intersection: use hybrid_planner(dp_init jerk_opt) elif scenario emergency: use simplified_qp_solver5. 从Apollo演进看规划算法未来趋势自动驾驶规划领域正在经历从规则驱动到学习驱动的范式转移。虽然当前主流方案仍基于优化理论但一些前沿探索已经显示出技术融合的苗头值得关注的技术方向强化学习与优化结合用学习策略初始化优化起点可微分规划将传统规划器嵌入神经网络语义搜索空间减少无效区域的计算浪费异构计算加速利用GPU处理凸优化问题在Apollo的最新版本中我们已经能看到部分实验性特性比如基于神经网络的代价函数预测在线学习的最优参数调整多规划器结果的融合仲裁规划算法的演进永远不会停止。正如一位Apollo核心开发者在其技术博客中提到的没有完美的规划器只有最适合当前技术条件和业务需求的解决方案。这种务实的态度或许正是自动驾驶技术能够持续进步的关键所在。

更多文章