共计 1348 个字符,预计需要花费 4 分钟才能阅读完成。
背景与痛点
Planning 模块是 Apollo 自动驾驶系统的决策中枢,负责将感知和预测结果转化为可执行的轨迹。在实际开发中,我们发现开发者常面临以下问题:

- 参数众多且相互耦合,难以理解各参数的实际影响
- 缺乏系统性的调试方法论,调参过程耗时低效
- 不同场景下的参数配置差异大,通用性差
这些痛点直接影响了自动驾驶车辆在不同场景下的表现,如急刹、轨迹抖动、变道犹豫等异常行为。
约束参数解析
Planning 模块的核心约束可分为四大类:
- 路径约束
max_curvature:限制路径最大曲率,影响转弯平顺性-
lat_acc_bound:横向加速度边界,防止侧滑 -
速度约束
max_acceleration:纵向加速度上限-
jerk_bound:加加速度限制,影响乘坐舒适度 -
障碍物约束
min_obstacle_distance:最小避障距离-
dynamic_obs_buffer:动态障碍物缓冲距离 -
交通规则约束
stop_distance:停车线距离yield_distance:让行距离阈值
这些参数通过 planning_config.pb.txt 配置文件进行设置,各参数间存在强耦合关系。例如增大 max_acceleration 可能需要同步调整 jerk_bound 以避免急加速。
调试方法论
建议采用分层调试策略:
- 基线测试
- 在空旷场地验证基础运动性能
-
确保基础参数(如最大速度 / 加速度)符合车辆动力学限制
-
单场景优化
- 选择典型场景(如直角转弯)
- 使用
cyber_monitor观察规划输出 -
逐步调整特定参数并记录变化
-
参数耦合分析
- 建立参数影响矩阵
-
识别关键参数组合(如曲率与速度的关系)
-
全场景验证
- 在仿真环境中进行回归测试
- 重点关注场景过渡时的参数适应性
实战案例:城市路口左转
原始参数配置导致转弯时速度骤降:
path_constraint {max_curvature: 0.15}
speed_constraint {
max_acceleration: 2.0
jerk_bound: 4.0
}
优化步骤:
- 通过
planning_diagnostics工具发现曲率变化剧烈 - 将
max_curvature从 0.15 调整为 0.12 - 同步降低
max_acceleration至 1.8 保持舒适性 - 最终获得平滑的转弯轨迹
避坑指南
- 参数孤立调整:只修改单个参数而忽略其关联参数
- 过度拟合:针对特定场景调参导致泛化性能下降
- 忽略物理限制:设置超出车辆能力的参数值
建议使用 Apollo 提供的 dreamview 回放功能对比不同参数效果,始终保留一份基准配置作为回退方案。
性能考量
参数调整会直接影响:
- 计算耗时:更严格的约束可能增加 QP 求解时间
- 控制频率:需确保参数变化率不超过控制器响应能力
- 系统稳定性:激进参数易导致规划失败率上升
推荐使用 perf_analysis 工具监控计算负载变化,在 RTK 定位场景下要特别关注纵向参数对定位精度的影响。
实践建议
- 从 Apollo 官方提供的预设配置开始调试
- 建立参数变更日志,记录每次修改的效果
- 优先保证安全性参数,再优化舒适性指标
- 不同天气条件下需要重新验证参数有效性
建议读者先在仿真环境中尝试调整 obstacle_buffer 和max_deceleration参数,观察在紧急避障场景下的不同表现。随着对参数理解的深入,可以进一步探索如何通过参数组合实现更拟人化的驾驶风格。
正文完
发表至: 自动驾驶技术
近三天内
