1 规范应用范围
本规范规定了智能驾驶功能软件平台的定位功能服务接口。
本规范适用于设计开发 GB/T《汽车驾驶自动化分级》[1]所定义的 2 级及以上的驾驶自动化系统即智能驾驶系统。
2 规范引用文件
本规范的引用和参考文件见下表:
[1] GB/T《汽车驾驶自动化分级》
[2] ISO/DIS 23150:2020(E) Road vehicles — Data communication between sensors
and data fusion unit for automated driving functions — Logical interface
[3] ADASIS(Advanced Driver Assistance Systems Interface Specification) v3
[4] 智能驾驶功能软件平台设计规范 第一部分:系统架构
[5] 智能驾驶功能软件平台设计规范 第二部分:感知融合功能服务接口
[6] 智能驾驶功能软件平台设计规范 第三部分:预测功能服务接口
[7] 智能驾驶功能软件平台设计规范 第四部分:决策规划功能服务接口
3 缩略语
文档中可能使用到的缩写说明如下所示:
缩略语 英文全名 中文解释
AD Autonomous Driving 自动驾驶
ADAS Advanced driver-assistance systems 高级辅助驾驶系统
ODD Operational Design Domain 设计运行区域
APP Application 应用程序
4 定位功能概述
智能驾驶功能软件平台基于不同厂商的技术实现方案进行功能抽象,共分为传感器抽象功能、感知融合功能、预测功能、决策规划功能、定位功能和执行器抽象功能等 6 个功能模块。主机厂基于自身策略,在设计和开发功能软件时可以选择不同的功能模块和算法组件,实现拼插式功能组合,灵活构建智能驾驶系统级解决方案。
图 1 智能驾驶功能软件平台架构
定位功能根据高精度地图、传感器等信息输入提供自车位置,包括本车的绝对位置以及和静态动态环境的相对位置等。传感器的输入来自于传感器抽象模块或者感知融合模块。高精度地图需要设置地图引擎,通过地图引擎来适配不同的国内外标准,提供全局和局部的环境参考信息,可以参考 ADASIS v3[3]等。
依赖于地图引擎所提供的地图信息,同时也依赖传感器抽象功能和感知融合功能中的部分服务,自车定位组件提供自车的绝对或相对位置、姿态、速度和加速度等信息,具体如下:
- 绝对定位,是以世界坐标系为参考的定位输出,如以 WGS-84 坐标系为参考的自车位置(经度、纬度和高度)、姿态等信息。
- 相对定位,是以局部坐标系为参考的定位输出,如以局部地理系为参考的自车相对于局部参考系原点的位置、速度等信息。
坐标系是定位服务中提供的位置、速度等信息的参照系统,同样的车辆运动状态在不同的坐标系中会有不同的标识,因此描述一个定位服务信息时,必须指定相应的坐标系。在定位服务中常用的坐标系包括全球地理坐标系(GNSS 系统)、局部地理坐标系(地图系统)、车体坐标系(感知融合、决策规划等服务)等,具体参见《智能驾驶功能软件平台规范 第一部分:系统架构》[4]。
表1 定位功能服务
接口名称 | 依赖功能 | 接口信息 |
---|---|---|
自车定位服务接口 | 传感器抽象, 感知融合功能服务接口,地图引擎 | 自车的绝对或相对位置、朝向、速度、加速度等位姿信息 |
5 定位功能服务接口定义
本规范规定了定位功能对外提供的逻辑接口,定义了服务所提供信息的语义和数据类型,逻辑接口主要由数据包头和数据体两部分组成。
数据格式 Integer 表示整数类型,Float 表示实数类型;
可选必选列表明信号在接口中是否必选,M 代表必选,O 代表可选。
5.1 自车定位服务接口
自车定位服务接口提供了定位模块状态,以及本车的位置信息、速度、加速度等信息。
自车定位服务接口定义如表 2 所示。
表2 自车定位服务接口
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Header | 定位服务接口数据包头 | Header 6 | M | ||
ParentCoordiante | 父坐标系 | 枚举 | 1 | 0:UnKnow;1:Vehicle;2:WGS84;3:UTM; | O |
ChildCoordiante | 子坐标系 | 枚举 | 1 | 0:UnKnow;1:Vehicle;2:WGS84;3:UTM; | O |
PositionStatus | 定位模块状态 | 枚举 | 1 | 0:Good;1:PositionNotGood;2:OrientationNotGood | M |
UTMZoneID | UTM分区号 | Integer | 1 | [1..60] | O |
isSouth | 南北半球标志位 | Bool | True:南半球;False:北半球 | O | |
OffsetX | UTM区内偏移量 | Integer | 1 | O | |
OffsetY | UTM区内偏移量 | Integer | 1 | O | |
RefPoint | 针对停车场或者其他特殊场景的参考点位置,该点在全局坐标系下位置描述 | Point3D 6.2.2 | O | ||
Pose | 位姿 | Pose 6.3 | M | ||
Velocity | 速度 | Velocity 0 | M | ||
Acceleration | 加速度 | Acceleration | M | ||
Bias | 零点偏置 | Bias 6.6 | O |
6 定位功能服务接口数据结构
6.1 自车定位服务接口数据包头
自车定位服务接口数据包头主要描述了定位接口的概要信息,主要包括算法组件名称、版本信息、时间戳、参考坐标系、模块状态信息、定位数据源等。
表3 自车定位服务接口数据包头
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Header | 定位服务接口数据包头 | 结构体 | |||
>ModuleID | 算法组件名称 | Integer | 1 | M | |
>Version ID | 模块版本号 | 结构体 | M | ||
>>Major | 主版本号 | Integer | 1 | M | |
>>Minor | 辅版本号 | Integer | 1 | M | |
>>Patch | 补丁号 | Integer | 1 | M | |
>>SequenceNum | 序列号 | Integer | 1 | M | |
>TimeStamp | 时间戳 | 结构体 | M | ||
>>TimeStampS | 时间戳整秒,格林威治时间1970.1.1 00:00:00秒起至当前时刻的时间 | Integer | s | M | |
>>TimeStampNs | 时间戳纳秒,格林威治时间1970.1.1 00:00:00秒起至当前时刻的时间 | Integer | ns | M | |
>Frame | 坐标系 | 枚举 | 1 | 0:NA;1:VCS;2:WGS84;3:UTM; | M |
>Status | 模块状态 | 枚举 | 1 | 0:GOOD;1:MED;2:FAILURE | M |
6.2 描述
6.2.1 二维坐标
二维坐标信息表示二维平面的点或者向量信息。
表4 二维坐标
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Point2D | 二维坐标 | 结构体 | |||
>x | X轴坐标或向量 | Float | M | ||
>y | Y轴坐标或向量 | Float | M |
6.2.2 三维坐标
三维坐标信息表示三维平面的点或者向量信息。
表5 三维坐标
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Point3D | 三维坐标 | 结构体 | |||
>x | X轴坐标或向量 | Float | M | ||
>y | Y轴坐标或向量 | Float | M | ||
>z | Z轴坐标或向量 | Float | M |
6.2.3 二维曲线
二维空间曲线采样点序列。
表6 二维曲线
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Curve2D | 二维曲线 | Point2D数组 | |||
>curve | 点序列 | 6.2.1 | M |
6.2.4 三维曲线
三维空间曲线采样点序列。
表7 三维曲线
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Curve3D | 三维曲线 | Point3D数组 | |||
>curve | 点序列 | 6.2.2 | M |
6.2.5 二维多边形
二维多边形提供了多边形的二维特征点数组信息。
表8 二维多边形
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Polygon2D | 二维多边形,由一系列2D点构成的Array,顺序相连 | Point2D数组 | |||
>Point2D | 二维坐标 | 6.2.1 | M |
6.2.6 三维多边形
三维多边形提供了多边形的三维特征点数组信息。
表9 三维多边形
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Polygon3D | 三维多边形,由一系列3D点构成的Array,顺序相连 | Point3D数组 | |||
>Point3D | 三维坐标 | 6.2.2 | M |
6.2.7 四元数
四元数信息用来表示三维空间中的旋转信息。
表10 四元数
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Quaternion | 四元数 | 结构体 | |||
>qx | X分量 | Float | M | ||
>qy | Y分量 | Float | M | ||
>qz | Z分量 | Float | M | ||
>qw | W分量 | Float | M |
6.3 位姿
位姿信息用于描述目标相对于参考坐标系的姿态和位置以及相应的协方差信息;
表11 位姿
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Pose | 位姿 | 结构体 | |||
>Position | 位置 | Point3D 6.2.2 | {m,m,m} | M | |
>Orientation | 四元素姿态 | Quaternion 6.2.7 | M | ||
>Covariance | 协方差 | Flat64[] | O |
6.4 速度
速度信息提供了目标的线速度和角速度信息以及协方差信息。
表12 速度信息
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Velocity | 速度 | 结构体 | |||
>Linear | 线速度 | Point3D 6.2.2 | {m/s,m/s,m/s} | M | |
>Angular | 角速度 | Point3D 6.2.2 | {rad/s,rad/s,rad/s} | M | |
>Covariance | 协方差 | Float数组 | O |
6.5 加速度
加速度信息提供了目标的线加速度和角加速度信息以及协方差信息。
表13 加速度信息
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Acceleration | 加速度 | 结构体 | |||
>Linear | 线加速度 | Point3D 6.2.2 | {m/s2,m/s2,m/s2} | M | |
>Angular | 角加速度 | Point3D 6.2.2 | {rad/s2,rad/s2,rad/s2} | M | |
>Covariance | 协方差 | Float数组 | O |
6.6 零点偏置
零点偏置信息提供了线加速度和角速度输出的零偏值以及协方差信息。
表14 零偏信息
信号名称 | 信号描述 | 数据类型 | 单位 | 取值范围 | 可选必选 |
---|---|---|---|---|---|
Bias | 零点偏置 | 结构体 | |||
>Linear acceleration bias | 线加速度零偏 | Point3D 6.2.2 | {m/s2,m/s2,m/s2} | M | |
>Angular velocity bias | 角加速度零偏 | Point3D 6.2.2 | {rad/s2,rad/s2,rad/s2} | M | |
>Covariance | 协方差 | Float数组 | O |
附录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 Point2D{
required double x=1;
required double y=2;
}
message Point3D{
required double x=1;
required double y=2;
required double z=3;
}
message Quaternion {
Required double qx = 1 ;
Required double qy = 2 ;
Required double qz = 3 ;
Required double qw = 4 ;
}
Message Pose{
Required Point3D Position=1;
Required Quaternion quat=2;
Repeated double Covariance=3;
}
Message Velocity{
Required Point3D Linear=1;
Required Point3D Angular =2;
Repeated double Covariance=3;
}
Message Acceleration {
Required Point3D Linear=1;
Required Point3D Angular =2;
Repeated double Covariance=3;
}
Message Bias {
Required Point3D LinearAccelerationBias =1;
Required Point3D AngularVelocityBias =2;
Repeated double Covariance=3;
}
A.2 自车定位服务接口描述
//LoacationService.proto
import common.proto
Message LoacationService{
Required Header header=1;
optional FrameType ParentCoordinate=2;
optional FrameType ChildCoordinate=3;
Enum pStatus{
GOOD=0;
POSITION_NOT_GOOD=1;
ORIENTATIONNOTGOOD=2;
}
Required pStatus PositionStatus =4;
optional uint32 UTMZoneID=5;
optional bool IsSouth=6;
optional uint32 OffsetX=7;
optional uint32 OffsetY=8;
optional Point3D RefPoint=9;
Required Pose pose=10;
Required Velocity Vel=11;
Required Acceleration acc=12;
optional Bias imub=13;
}