Apollo自动驾驶系统中的路径决策机制解析
apollo An open autonomous driving platform 项目地址: https://gitcode.com/gh_mirrors/apo/apollo
概述
路径决策(Path Decider)是Apollo自动驾驶系统规划模块中的关键组件,属于决策(Decider)类任务。它在自动驾驶车辆运动规划过程中扮演着重要角色,主要负责根据静态障碍物情况做出合理的路径决策。
路径决策在规划流程中的位置
在Apollo的规划模块中,路径决策处于运动规划流程的关键环节。完整的规划流程通常包括以下几个主要阶段:
- 参考线生成
- 路径边界决策(Path Bounds Decider)
- 路径优化
- 路径决策(Path Decider)
- 速度决策与优化
路径决策的主要输入是经过优化的路径数据,输出则是包含障碍物决策信息的路径决策结果。
路径决策的核心功能
路径决策模块的核心功能可以概括为:
- 静态障碍物处理:主要针对静止的物理障碍物进行决策
- 决策类型生成:根据障碍物与路径的关系生成忽略(IGNORE)、停止(STOP)或避让(NUDGE)等决策
- 安全距离保证:确保车辆与障碍物之间保持安全距离
路径决策算法详解
1. 数据准备阶段
路径决策首先需要获取Frenet坐标系下的路径数据:
const auto &frenet_path = path_data.frenet_frame_path();
Frenet坐标系将车辆运动分解为沿参考线方向(s轴)和垂直于参考线方向(l轴)两个维度,便于进行障碍物距离和位置的判断。
2. 障碍物遍历与初步筛选
算法会遍历所有感知到的障碍物,并进行初步筛选:
for (const auto *obstacle : path_decision->obstacles().Items())
筛选条件包括:
- 只处理静态障碍物(跳过动态障碍物)
- 跳过虚拟障碍物(如各种fence)
- 跳过已有明确决策(ignore/stop)的障碍物
3. 阻塞障碍物处理
如果障碍物被识别为阻塞障碍物(blocking obstacle),系统会直接生成停止决策:
if (obstacle->Id() == blocking_obstacle_id) {
*object_decision.mutable_stop() = GenerateObjectStopDecision(*obstacle);
}
阻塞障碍物通常指完全阻挡车辆前进路径的障碍物,必须停车等待。
4. 障碍物位置判断
系统会判断障碍物是否在当前规划路径的范围内:
if (sl_boundary.end_s() < frenet_path.front().s() ||
sl_boundary.start_s() > frenet_path.back().s()) {
// 障碍物不在路径范围内
}
不在路径范围内的障碍物会被标记为忽略(IGNORE)。
5. 横向避让决策(NUDGE)
对于位于路径附近但不完全阻挡的障碍物,系统会生成横向避让(NUDGE)决策:
if (sl_boundary.end_l() < curr_l - min_nudge_l) {
// 左侧避让
object_nudge_ptr->set_type(ObjectNudge::LEFT_NUDGE);
} else if (sl_boundary.start_l() > curr_l + min_nudge_l) {
// 右侧避让
object_nudge_ptr->set_type(ObjectNudge::RIGHT_NUDGE);
}
避让决策会考虑以下因素:
- 障碍物与车辆当前横向位置的关系
- 最小避让距离配置(static_obstacle_buffer)
- 安全距离保证
关键参数解析
路径决策中几个重要的配置参数:
- static_obstacle_buffer:静态障碍物缓冲距离,决定避让时保持的最小横向距离
- min_nudge_l:触发避让决策的最小横向距离阈值
- lateral_radius:横向检测范围,超出此范围的障碍物会被忽略
这些参数需要根据车辆特性、道路条件和安全要求进行合理配置。
实际应用中的注意事项
在实际自动驾驶系统开发中,路径决策模块需要注意:
- 与感知模块的协调:确保障碍物信息准确,特别是静态障碍物的识别
- 参数调优:根据实际车辆动力学特性调整避让距离等参数
- 边缘情况处理:如多个障碍物同时出现时的决策优先级
- 与速度规划的配合:路径决策与后续速度决策需要协调一致
总结
Apollo的路径决策模块通过系统的障碍物分析和决策逻辑,为自动驾驶车辆提供了安全、合理的路径选择方案。理解其工作原理对于自动驾驶系统的开发和调试具有重要意义,特别是在复杂城市道路场景中,良好的路径决策能够显著提升行驶的安全性和舒适性。
apollo An open autonomous driving platform 项目地址: https://gitcode.com/gh_mirrors/apo/apollo
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考