1 规范应用范围
本规范规定了智能驾驶功能软件平台的预测功能服务接口。
本规范适用于设计开发 GB/T《汽车驾驶自动化分级》[2]所定义的 2 级及以上的驾驶自动化系统即智能驾驶系统。
2 规范引用文件
本规范的引用和参考文件见下表:
[1] GB/T《汽车驾驶自动化分级》
[2] 智能驾驶功能软件平台设计规范 第一部分:系统架构
[3] 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口
[4] 智能驾驶功能软件平台设计规范 第四部分:定位功能服务接口
[5] 智能驾驶功能软件平台设计规范 第五部分:决策规划功能服务接口
3 缩略语
文档中可能使用到的缩写说明如下所示:
缩略语 英文全名 中文解释
AD Autonomous Driving 自动驾驶
ADAS Advanced driver-assistance systems 高级辅助驾驶系统
SAE Society of Automotive Engineers 国际汽车工程师学会
ODD Operational Design Domain 设计运行区域
4 预测功能概述
智能驾驶功能软件平台基于不同厂商的技术实现方案进行功能抽象,共分为传感器抽象功能、感知融合功能、预测功能、决策规划功能、定位功能和执行器抽象功能等 6 个功能模块。主机厂基于自身策略,在设计和开发功能软件时可以选择不同的功能模块和算法组件,实现拼插式功能组合,灵活构建智能驾驶系统级解决方案。
图 1 智能驾驶功能软件平台架构
预测功能是指根据高精度地图、定位服务、感知融合服务提供的自车位置和周边的环境模型,来针对当前场景下其它交通参与者的行为模式进行分析,并评估其未来一段时间范围内的轨迹走向,以此提升智能驾驶系统在复杂场景下决策规划的能力。
5 预测功能接口
本规范规定了预测功能服务的逻辑接口,定义了服务所提供信息的语义和数据类型,逻辑接口主要由数据包头和数据体两部分组成。
- 数据格式 Integer 表示整数类型,Float 表示实数类型;
- 可选必选列表明信号在接口中是否必选,M 代表必选,O 代表可选。
5.1 行为预测服务接口
行为预测服务接口主要提供交通参与者的未来行为预测服务,其中交通参与者包括车辆、行人、非机动车等,行为包括左转、右转、调头、变道、通过马路等。
5.2 轨迹预测服务接口
轨迹预测服务接口提供所有跟踪目标在接下来若干秒的具体轨迹信息输出,并对每条轨迹的可能性以概率描述。
6 数据结构定义
6.1 标准元数据头
标准元数据包头是预测功能服务的通用包头,主要包含算法组件信息、版本信息,序列号、时间戳、采用坐标系信息,模块状态信息等。
6.2 行为预测数据
行为预测数据提供了对感知融合功能模块中跟踪目标的行为预测判断,包括目标标识,持续时间和对目标行为的预测。
6.3 轨迹预测数据
轨迹预测数据提供了对感知融合功能模块中跟踪目标的轨迹预测判断,包括目标标识,持续时间,对目标行为轨迹的预测。
6.4 单个交通参与者轨迹预测数据
单个交通参与者轨迹预测数据提供了轨迹概率和具体的轨迹信息。
6.5 轨迹点信息
轨迹点信息提供了对目标的预测轨迹点位置,时间和方向信息。
附 录A(资料性附录)预测功能服务接口 protobuf 描述
A.1 数据结构描述
// common.proto
message Header{
required uint32 ModuleID=1;
message VersionID{
required uint32 major=1;
required uint32 minor=2;
required uint32 patch=3;
}
required VersionID vid=2;
required uint32 sequenceNum=3;
message timeStamp{
required uint64 timeStampS=1;
required uint64 timeStampNs=2;
}
required timeStamp TimeStamp=4;
enum FRAMETYPE{
NA=0;
VCS=1;
WGS84=2;
UTM=3;
}
required FRAMETYPE Frame=5;
emum STATUS{
GOOD=0;
MED=1;
FAILURE=2;
}
required STATUS Status =6;
}
Message BehaviorPredictionMeta{
required uint32 ObjectsID =1;
enum BehaviorPredictionType {
UNKNOWN = 0;
STOP = 1;
STATIONARY = 2;
MOVING = 3;
C_CHANGE_LANE_LEFT = 4;
C_CHANGE_LANE_RIGHT = 5;
C_CONSTANT_SPEED=6;
C_SLOW_ACCELERATION = 7;
C_HIGH_ACCELERATION = 8;
C_SLOW_DECELERATION = 9;
C_HIGH_DECELERATION = 10;
C_U_TURN=10;
C_TURN_LEFT=11;
C_TURN_RIGHT=12;
P_WAITING=13;
P_ACROSSING=14;
P_APPROACH=15;
P_DEPART=16;
}
Required BehaviorPredictionType type=2;
Required double BehaviorProbability=3;
Required double Period=4;
}
Message ObjectTrajectoryPoint{
Required Point2D ObjectPoint=1;
Required double ObjectHeading=2;
Required double TimeStamp=3;
}
Message TrajectoryP{
Required double TrajProbability=1;
Repeated ObjectTrajectoryPoint ObjectTrajectory=2;
}
Message TrajectoryPredictionMeta{
Required uint32 ObjectsID =1;
Required double TimeStart =2;
Required double Period=3;
Optional BehaviorPredictionType type=4;
Repeated TrajectoryP ValidTrajs=5;
}
A.2 行为预测服务接口
// BehaviorPredictionsService.proto
import common.proto
message BehaviorPredictionsService{
required Header head=1;
repeated BehaviorPredictionMeta BehaviorPredictions=2;
}
A.3 轨迹预测服务接口
// TrajectoryPredictionsService.proto
import common.proto
message TrajectoryPredictionsService {
required Header head=1;
repeated TrajectoryPredictionMeta TrajPredicts=2;
}