本文做者:Apollo开发者社区算法
预测模块是将对感知到的障碍物在将来一段时间内的运动轨迹进行估计,输出的预测消息将会打包感知信息,预测模块将订阅定位、规划和感知障碍等消息。网络
Apollo预测模块按照物体不一样的特征,采用不一样的模型,分别预测各自轨迹,并对不一样类型的输入特征,选择合适的模型分别提取。在算法上,因为实时算例存在限制,预测模块会划分优先级对机动车周围进行处理。函数
如下,ENJOY spa
1、简介3d
预测模块是研究并预测感知模块检测到的全部障碍物的行为。预测模块接收障碍物数据以及基本的感知信息,包括位置、方向、速度、加速度,而后为这些感知到的障碍物生成几率预测轨迹。blog
注意:预测模块只预测障碍物的行为, 而不预测汽车自己。规划模块规划汽车自己的轨迹。开发
从感知模块获得的障碍物信息。get
从定位模块获得的位置信息。io
从规模模块获得的以前计算周期的规划轨迹。社区
带有预测轨迹及其优先级的障碍物,由于各个独立场景的优先级不一样,现阶段的方案也要计算障碍物优先级。优先级包括:忽略、谨慎和正常 (默认) 。
以下图所示,预测模块由四个主要功能模块组成:容器、场景分析器、评估器和预测器。Apollo 3.0中已经有容器、评估器和预测器。在Apollo 3.5中,由于咱们已经采用一个基于多场景的方法来提高Apollo的自动驾驶能力,因此引入了场景功能模块。
▲预测模块的组成
容器存储来自订阅通道的输入数据,当前支持的输入包括感知障碍物、自车定位信息和自车规划轨迹。
场景分析子模块包含自车在内的场景,当前,咱们定义了两类场景:
巡航:该场景包括车道保持和跟踪。
交叉路口:这种场景涉及交叉路口,交叉路口要么有交通灯或停车标志。
评估器为任意给定的障碍物预测路径和速度。评估程序使用存储在prediction/data/中的模型给车道序列预测一个几率值,以此来预测一条路径。
当前有五类评估器,其中两个是Apollo 3.5新添加的。由于巡航和交叉路口两种场景被新添加到Apollo中,因此他们对应的评估器(巡航MLP(多层感知机)和交叉路口MLP)也被添加到Apollo 3.5。当前的评估器包括如下几个:
代价评估器:经过一组代价函数计算几率。
多层感知机评估器:使用一个多层感知机模型计算几率。
RNN(回归神经网络) 评估器:使用一个RNN模型计算几率。
巡航多层感知机+一维卷积神经网络混合评估器:针对巡航场景,使用一个多层感知机和一维卷积神经网络的混合模型计算几率。
交叉路口多层感知机评估器:针对交叉路口场景,使用一个多层感知机模型计算几率。
预测器生存障碍物的预测轨迹,当前,主要支持如下预测器:
空白:障碍物没有预测轨迹。
单车道:障碍物沿着单一车道运动,不在该车道上的障碍物能够忽略。
车道序列:障碍物在车道之间移动。
移动序列:障碍物根据它的动力学模型在车道之间移动。
自由移动:障碍物自由地移动。
区域移动:障碍物在可能的区域内移动 。
交叉路口:障碍物大几率朝着交叉路口移动。
预测模块估计全部感知障碍物的将来运动轨迹,输出的预测消息打包了感知信息。预测模块订阅感知障碍物消息并由其触发,代码以下所示:
预测模块一样采用定位模块和规划模块的输出信息做为输入,其结构以下所示: