Apollo学习之决策模块
Apollo的决策模块(Decision Module)是百度自动驾驶系统的核心组件之一,负责在复杂环境中生成安全、舒适且符合交通规则的驾驶行为。其决策过程融合了规则驱动(基于场景的有限状态机)和数据驱动(机器学习模型)的方法:
1. 决策模块的输入与输出
- 输入:
- 感知结果:来自感知模块的障碍物信息(车辆、行人、交通灯等)、车道线、可行驶区域。
- 定位与地图:高精地图提供的车道拓扑、交通规则(限速、停止线等)、红绿灯位置。
- 预测结果:其他交通参与者的未来轨迹预测(基于LSTM、GNN等模型)。
- 车辆状态:车速、加速度、转向角等。
- 输出:
- 驾驶行为:换道、跟车、停车、避障等。
- 路径规划边界:决策结果为规划模块提供约束条件(如目标车道、安全距离)。
2. 决策分层架构
Apollo的决策模块采用分层设计,分为场景划分、行为决策和动作生成三部分:
(1) 场景划分(Scenario Manager)
根据当前环境动态选择适用的场景,不同场景对应不同的决策逻辑:
- 车道保持(Lane Follow):默认场景,车辆沿当前车道行驶。
- 换道(Lane Change):包括主动换道(导航需求)和被动换道(避障)。
- 交叉口(Intersection):处理无保护左转、停车让行等复杂场景。
- 停车(Pull Over):靠边停车或终点停车。
- 紧急避障(Emergency):突然出现的障碍物处理。
实现方式:
- 基于有限状态机(FSM),每个场景对应一组预定义的规则和状态转移条件。
- 例如,换道场景的触发条件包括:
if 导航路线需要换道 AND 目标车道空闲时间 > 2秒 AND 无近距离碰撞风险:
进入换道状态
(2) 行为决策(Behavior Planner)
在选定场景下,通过规则和机器学习模型生成具体行为:
- 规则引擎:
- 跟车模型(IDM):根据前车速度调整自身车速,保持安全距离。
a = a_{\text{max}} \left[1 - \left(\frac{v}{v_{\text{des}}}\right)^\delta - \left(\frac{s^*}{s}\right)^2 \right]
其中 ( s^* ) 是动态安全距离,( v_{\text{des}} ) 为期望速度。
- 让行规则:基于交通规则(如“停车标志必须完全停止3秒”)和博弈论(与其他车辆交互)。
- 机器学习模型:
- 使用强化学习(RL)或模仿学习优化决策,例如处理无保护左转时,通过Q-learning选择最佳插入间隙。
- 模型输入:周围车辆的状态、历史轨迹、交通灯相位;输出:加速/减速/等待的概率。
(3) 动作生成(Trajectory Constraints)
将行为转化为具体的运动约束,供规划模块执行:
- 目标状态:决策模块输出“在3秒内换至左车道”,规划模块生成平滑轨迹。
- 安全边界:例如避障时要求横向距离 > 0.5米。
3. 关键算法与技术细节
(1) 基于规则的决策优化
- 安全监控(Guard Conditions):
每个决策动作需通过安全检查,例如换道前验证:
def is_lane_change_safe():
return (预测目标车道后车加速度 < 阈值)
AND (本车与后车距离 > 动态安全距离)
- 多目标权衡:
使用代价函数(Cost Function)平衡安全性、舒适性和效率:
C = w_1 \cdot \text{安全代价} + w_2 \cdot \text{舒适代价} + w_3 \cdot \text{进度代价}
(2) 数据驱动的交互建模
- 博弈论模型:
在交叉口等场景下,Apollo会预测他车意图(如是否让行),采用纳什均衡求解最优策略。 - LSTM轨迹预测:
通过编码他车历史轨迹,预测未来5秒内的多模态轨迹(概率分布)。
(3) 实时性与容错
- 异步处理:
感知、预测、决策模块并行运行,决策周期通常为100ms。 - Fallback机制:
当决策超时或冲突时,触发保守策略(如紧急制动)。
4. 实际案例:无保护左转决策
- 场景识别:车辆接近交叉口,地图标记为“无保护左转”。
- 行为决策:
- 规则层:检测对向直行车辆,计算其到达时间窗口。
- 模型层:RL模型评估“等待”或“加速通过”的长期收益。
- 动作生成:
- 若决策为“通过”,则输出目标:
{速度曲线: 在2秒内加速至30km/h, 路径: 左转轨迹}
。
5. 挑战与解决方案
- 不确定性处理:
- 使用概率模型(如POMDP)处理传感器噪声和他车意图模糊性。
- 长尾场景:
- 通过仿真引擎自动生成极端案例(如突然横穿的行人),迭代优化决策规则。
- 实时性能:
- 采用C++实现核心算法,并通过ROS 2进行模块间通信。
总结
Apollo的决策模块通过分层状态机和混合决策模型,将复杂的驾驶场景分解为可管理的子问题,结合规则的安全性与机器学习的适应性,最终实现拟人化的驾驶行为。其核心思想是:在确定性的规则框架内,嵌入数据驱动的智能优化。