技术文档丨Apollo预测模块技术指导

预测模块是将对感知到的障碍物在未来一段时间内的运动轨迹进行估计,输出的预测消息将会打包感知信息,预测模块将订阅定位、规划感知障碍等消息。

 

Apollo预测模块按照物体不同的特征,采用不同的模型,分别预测各自轨迹,并对不同类型的输入特征,选择合适的模型分别提取。在算法上,由于实时算例存在限制,预测模块会划分优先级对机动车周围进行处理。

 

以下,ENJOY  

 

一、简介

 

预测模块是研究并预测感知模块检测到的所有障碍物的行为。预测模块接收障碍物数据以及基本的感知信息,包括位置、方向、速度、加速度,然后为这些感知到的障碍物生成概率预测轨迹。

 

注意:预测模块只预测障碍物的行为, 而不预测汽车本身。规划模块规划汽车本身的轨迹。

 

二、输入

 

  • 从感知模块得到的障碍物信息。

  • 从定位模块得到的位置信息。

  • 从规模模块得到的之前计算周期的规划轨迹。

 

三、输出

 

  • 带有预测轨迹及其优先级的障碍物,因为各个独立场景的优先级不同,现阶段的方案也要计算障碍物优先级。优先级包括:忽略、谨慎和正常 (默认) 。

 

四、功能

 

如下图所示,预测模块由四个主要功能模块组成:容器、场景分析器、评估器和预测器。Apollo 3.0中已经有容器、评估器和预测器。在Apollo 3.5中,因为我们已经采用一个基于多场景的方法来提升Apollo的自动驾驶能力,所以引入了场景功能模块。

 

▲预测模块的组成

 

容器

 

容器存储来自订阅通道的输入数据,当前支持的输入包括感知障碍物、自车定位信息自车规划轨迹

 

场景分析器

 

场景分析子模块包含自车在内的场景,当前,我们定义了两类场景:

 

  • 巡航:该场景包括车道保持和跟踪。

  • 交叉路口:这种场景涉及交叉路口,交叉路口要么有交通灯或停车标志。

 

评估器

 

评估器为任意给定的障碍物预测路径和速度。评估程序使用存储在prediction/data/中的模型给车道序列预测一个概率值,以此来预测一条路径。

 

当前有五类评估器,其中两个是Apollo 3.5新添加的。因为巡航和交叉路口两种场景被新添加到Apollo中,所以他们对应的评估器(巡航MLP(多层感知机)和交叉路口MLP)也被添加到Apollo 3.5。当前的评估器包括以下几个:

 

  • 代价评估器:通过一组代价函数计算概率。

  • 多层感知机评估器:使用一个多层感知机模型计算概率。

  • RNN(回归神经网络) 评估器:使用一个RNN模型计算概率。

  • 巡航多层感知机+一维卷积神经网络混合评估器:针对巡航场景,使用一个多层感知机和一维卷积神经网络的混合模型计算概率。

  • 交叉路口多层感知机评估器:针对交叉路口场景,使用一个多层感知机模型计算概率。

 

预测器

 

预测器生存障碍物的预测轨迹,当前,主要支持以下预测器:

 

  • 空白:障碍物没有预测轨迹。

  • 单车道:障碍物沿着单一车道运动,不在该车道上的障碍物可以忽略。

  • 车道序列:障碍物在车道之间移动。

  • 移动序列:障碍物根据它的动力学模型在车道之间移动。

  • 自由移动:障碍物自由地移动。

  • 区域移动:障碍物在可能的区域内移动 。

  • 交叉路口:障碍物大概率朝着交叉路口移动。

 

五、预测模块体系结构

 

预测模块估计所有感知障碍物的未来运动轨迹,输出的预测消息打包了感知信息。预测模块订阅感知障碍物消息并由其触发,代码如下所示:

 

 

预测模块同样采用定位模块和规划模块的输出信息作为输入,其结构如下所示: