Apollo星火计划学习笔记|预测模块

系列文章目录

L1 Apollo平台安装

L2 CyberRT学习

L5 Routing简介

L7 控制模块

L8 预测模块


目录

  • 系列文章目录
  • 基本概念
  • 流程概览
  • Apollo相关代码
  • 参考文献

基本概念

定义:接收原始感知/定位/地图信息,对无人车周围的障碍物未来n秒的行为轨迹进行预测,指导无人车下一步的运动轨迹
Apollo星火计划学习笔记|预测模块_第1张图片难点:

  • 上游输入的局限性
  • 交通参与者的不可预测性
  • 具体路线行驶的不可预测性
    责任边界:
    将常规的交通状况纳入考虑范畴,同时主要预测大动作。

流程概览

step1:预处理(把障碍物信息综合整理为算法能够理解的内容)
将障碍物投影到高敬地图
首先使用分段树粗略找出障碍物附近的车道 ,详见AABOXKDTREE2D()。判断障碍物的坐标是否在粗筛出的车道上,详见SetCurrentLanes()。同时也会找出障碍物附近五米的车道。最后以车道id为索引建立类ObstacleCluster。
忽略一部分不重要的障碍物
需要注意的障碍物有:车道附近(2m)的行人、车辆前方80m内,左右6m范围内的障碍物、交叉路口障碍物。
生成障碍物可能选择的动作
先搜索所在车道可能的车道序列,再搜索附近车道的所有可能序列。
选择要注意的障碍物
等级分为:ignore,normal和caution,详见AssignCautionLevel。

step2:评价器(评估障碍物会执行各种动作的可能性)
evaluator用于评估障碍物在动作空间的可能性,大部分都是深度学习模型,有少量的基于规则的模型。

step3:轨迹生成器(类似后处理,将障碍物的动作细化为运动轨迹)
一共有三类predictor:FreeMovePredictor、LanceSequencePredictor和MoveSequencePredictor。
FreeMovePredictor主要预测不在路上所有类型的障碍物以及行人行为,通过运动学进行推断,可信度较低。
LaneSequencePredictor分析在车道线上车辆类型障碍物(normal级别)未来的行为。纵向:固定车速推进;横向: l t = r a t t r e s . l 0 一 般 设 置 r a = 0.9 m , t r e s = 0.1 s l_t=r_a^{\frac{t}{ t_{res}}}.l_0 一般设置ra=0.9m,t_res= 0.1s lt=ratrest.l0ra=0.9mtres=0.1sApollo星火计划学习笔记|预测模块_第2张图片

MoveSequencePredictor分析在车道线上车辆类型障碍物(caution级别)未来的行为。本质是多项式拟合,希望用一个光滑的曲线链接始末点,同时满足一些额外的限制,如加速度等。可以细分为纵向和横向。纵向处理需要满足的约束有初始位置,初始速度,初始加速度,终末位置,终末速度共5个,因此至少需要一个四阶多项式拟合;横向处理需要满足的约束有初始位置,初始速度,终末位置,终末速度。需要一个三阶多项式拟合。
Apollo星火计划学习笔记|预测模块_第3张图片

Apollo相关代码

详见APOLLO/modules/Prediction。
PredictionComponent::Proc()调用PredictionEndToEndProc()
PredictionEndToEndProc()调用Onperception()

参考文献

公众号关于预测的文章
蛇老师的代码解析

你可能感兴趣的:(apollo,自动驾驶,自动驾驶,人工智能,机器学习)