3. 目标级融合的数据结构与消息模型
目标级融合的核心不是“把两个检测框画在一起”,而是把来自毫米波雷达、摄像头、激光雷达等不同传感器的目标,统一表达为同一种可计算、可传递、可校验的数据对象。Bosch ADAS 的目标级融合通常围绕一个标准化的融合目标(Fused Object)展开:每个目标携带位置、速度、加速度、分类、存在概率和协方差等属性,再由目标列表(Object List)组织成帧级消息,通过明确的输入输出接口在感知节点与融合节点之间流转。理解这套数据结构,是后续做关联、滤波、航迹管理和功能安全校验的前提。
一、融合目标对象的属性构成
一个融合目标可以理解为一个带时间戳和坐标系约束的结构体。以车辆坐标系为参照,通常定义 x 轴指向车辆正前方,y 轴指向左侧,z 轴指向上方,速度与加速度的正负号与坐标轴方向一致。若输入来自图像坐标系或雷达极坐标,必须在接口层完成转换并记录来源,避免融合过程中参照系混用。
位置属性一般包括纵向距离 x、横向距离 y,必要时还有高度 z;速度属性包括纵向速度 vx、横向速度 vy;加速度属性包括 ax、ay。分类属性用于描述目标类型,例如乘用车、卡车、两轮车、行人、未知障碍物等,通常以枚举值加置信度表达。存在概率表示该目标真实存在的可能性,取值范围为 0 到 1,用于抑制虚警和支撑后续功能降级判断。协方差则描述状态估计的不确定度,位置、速度、加速度各自带有方差以及相互之间的协方差,构成一个对称矩阵。
这些属性不是孤立字段,而是共同决定目标是否可用。例如一个目标存在概率为 0.95、纵向距离 42.3 m、纵向速度 −1.8 m/s、分类为乘用车,但横向位置协方差很大,说明横向估计不可信,此时融合输出应保留该目标,但在横向控制类功能中降低其权重或标记为不可用。
二、目标列表的组织方式
单帧融合结果通常组织为“目标列表 + 帧头”的消息结构。帧头包含时间戳、坐标系标识、传感器来源集合、目标数量、消息版本号等元信息;目标列表则是若干融合目标的数组。每个目标拥有唯一且在同一段航迹内稳定的 ID,便于跨帧跟踪和下游模块引用。
目标列表的组织需要处理三个实际问题。第一是生命周期:新目标进入、已有目标更新、目标丢失后进入待删除状态,通常用状态字段区分,例如 NEW、TRACKED、COASTED、DELETED。第二是排序与索引:可按纵向距离、危险程度或 ID 排序,但排序规则必须在接口中固定,避免下游按不同假设解析。第三是容量与截断:消息中应声明最大目标数,超出时按优先级截断,并记录被截断数量,防止下游误以为目标列表完整。
下面给出一个融合目标列表的字段示例,字段命名和取值仅用于说明结构,实际项目应按接口规范调整。
FusedObjectList {
header: {
timestamp_ns: 1234567890,
frame_id: "vehicle_rear_axle",
source_sensors: ["radar_front", "camera_front", "lidar_front"],
object_count: 3,
max_objects: 64,
truncated_count: 0,
version: "1.2"
},
objects: [
{
id: 101,
state: "TRACKED",
x: 42.30, y: -1.75, z: 0.40,
vx: -1.80, vy: 0.05,
ax: -0.20, ay: 0.01,
class: "CAR",
class_confidence: 0.93,
existence_probability: 0.95,
covariance: {
xx: 0.25, yy: 0.09, vxvx: 0.04, vyvy: 0.02,
xy: 0.01, xvx: -0.02, yvy: 0.00
}
}
]
}
三、融合输入输出接口设计
输入接口面向各传感器目标列表,输出接口面向融合后的目标列表。输入侧的关键约定包括:每个传感器目标必须带时间戳和坐标系,必须声明自身量测类型(位置、速度、分类、存在概率等),并给出对应的不确定度。若某传感器只提供位置不提供速度,融合节点不能默认速度为零,而应把速度协方差设得足够大,表示“未知”。
输出侧的关键约定包括:融合目标列表必须带帧头、目标状态、协方差和来源信息。来源信息可以记录每个融合目标由哪些传感器支持,例如 radar_front 与 camera_front 同时支持,用于后续置信度评估和故障排查。接口还应定义更新周期、最大延迟和丢帧处理策略,例如融合节点在 100 ms 内未收到某传感器数据时,应使用预测值继续跟踪,并在消息中标记该传感器为降级。
四、从属性到消息的完整链路
把上述内容串起来,可以看到一条清晰的数据链路:传感器原始目标经过坐标转换和字段映射,进入融合输入接口;融合节点完成时间对齐、关联、状态估计和航迹管理,生成融合目标;融合目标按列表组织并附带帧头,通过输出接口发送给下游的 AEB、ACC、LKA 等功能模块。每个环节都依赖统一的数据结构,任何字段缺失或语义不一致都会在链路末端放大为功能异常。
在实际工程中,建议把上述结构固化为接口定义文件或 IDL,并在集成测试中重点检查三类问题:字段是否齐全、单位与符号是否一致、协方差是否被正确传播。只有数据结构稳定,融合算法和下游功能才能在同一套语义上协同工作。