4. 雷达点云生成与目标列表
在S32R平台上,雷达信号处理链的最终交付物并不是原始ADC采样,而是两级结构化信息:点云(Point Cloud)与目标列表(Object List)。点云是CFAR检测与角度估计后的“检测级”输出,保留了每个散射中心的距离、速度、角度与信噪比;目标列表则是聚类与跟踪后的“目标级”输出,每个目标带有唯一ID、运动状态与历史轨迹。理解这两级信息的格式与接口,是后续多传感器融合能否正确接入的前提。
一、点云格式:检测级信息的字段定义
点云中的每一个点,本质上是一次CFAR过门限的检测结果,并附带该检测单元的角度估计值。在S32R的典型实现中,点云通常以结构体数组形式在DDR中组织,每个点包含以下核心字段:
- range:目标距离,单位m,由距离FFT峰值对应的距离bin换算得到,分辨率取决于带宽,例如1 GHz带宽对应约0.15 m/bin。
- velocity:径向速度,单位m/s,由多普勒FFT峰值对应的多普勒bin换算,正负号约定为“接近为正、远离为负”,需在全文与图示中保持一致。
- azimuth / elevation:方位角与俯仰角,单位度,由角度估计模块输出。方位角范围通常为±60°,俯仰角范围较小,约±15°。
- snr:检测点信噪比,单位dB,用于后续聚类加权与虚警抑制。
- rcs:雷达截面积估计值,单位dBsm,可由SNR与距离通过雷达方程反推。
- detectionId:检测点序号,用于调试与溯源。
点云数据量较大,一帧可能包含数百至数千个点。在S32R上,点云通常由硬件加速器(如BBA、SPT)或DSP核写入共享内存,再由M7核或应用层读取。接口上,点云以“帧”为单位打包,每帧附带帧号、时间戳与检测点数量,便于融合模块做时间对齐。
二、目标列表格式:跟踪级信息的字段定义
目标列表是聚类与跟踪后的输出,每个目标代表一个被持续跟踪的物理对象。与点云不同,目标列表的字段更强调运动状态与身份连续性:
- objectId:目标唯一标识,跟踪器分配,跨帧保持稳定。
- position:目标位置,通常用x、y、z表示,单位m,坐标系为车辆坐标系(x向前、y向左、z向上)。
- velocity:目标速度矢量,包含vx、vy,单位m/s。
- acceleration:目标加速度,单位m/s²,用于预测与融合。
- orientation:目标朝向角,单位度,对扩展目标有意义。
- size:目标尺寸估计,包含长度、宽度、高度,单位m。
- classification:目标类别,如轿车、卡车、行人、未知,由分类器输出。
- quality:跟踪质量,如存在概率、协方差迹,用于融合加权。
- age / hits / misses:目标存活帧数、命中次数、丢失次数,用于生命周期管理。
目标列表的接口通常以“目标数组+目标数量”形式提供,并附带帧号与时间戳。在S32R上,跟踪器可能运行在M7核或专用加速器上,目标列表通过共享内存或IPC机制传递给融合模块。
三、S32R上的实现要点与接口约定
在S32R平台上,点云与目标列表的生成涉及多个处理单元的分工。CFAR检测与角度估计通常由硬件加速器(如BBA)或DSP核完成,聚类与跟踪则可能运行在M7核或专用跟踪加速器上。因此,接口设计需要明确三个关键约定:
第一,数据所有权与内存布局。点云数据量较大,建议采用环形缓冲区(ring buffer)管理,每帧写入后由融合模块读取,避免频繁动态分配。目标列表数据量小,可直接以固定数组传递。两者都应包含帧号与时间戳,且时间戳应来自同一时基,例如S32R的STM定时器。
第二,坐标系与符号约定。点云中的角度与目标列表中的位置必须统一到车辆坐标系。建议约定:x轴向前、y轴向左、z轴向上;速度以接近雷达为正、远离为负;方位角以x轴为0°,逆时针为正。这一约定需在点云生成、聚类、跟踪和融合各环节保持一致,否则会出现目标“跳变”或“镜像”问题。
第三,数据更新频率与延迟。点云通常每帧更新,帧周期例如50 ms(20 Hz);目标列表可能以相同或更低频率更新。融合模块需要根据时间戳做插值或预测,以补偿不同传感器之间的延迟。在S32R上,可通过共享内存+中断通知的方式实现低延迟传递,避免轮询带来的CPU开销。
四、一个可参考的接口结构体示例
以下为S32R上点云与目标列表的接口结构体示例,字段命名与类型可根据实际项目调整,但核心信息应保持一致:
typedef struct {
uint16_t frameId;
uint32_t timestamp;
uint16_t numPoints;
RadarPoint points[MAX_POINTS];
} PointCloudFrame;
typedef struct {
float range; // m
float velocity; // m/s, 接近为正
float azimuth; // deg, x轴为0, 逆时针为正
float elevation; // deg
float snr; // dB
float rcs; // dBsm
uint16_t detectionId;
} RadarPoint;
typedef struct {
uint16_t frameId;
uint32_t timestamp;
uint16_t numObjects;
RadarObject objects[MAX_OBJECTS];
} ObjectListFrame;
typedef struct {
uint16_t objectId;
float x, y, z; // m, 车辆坐标系
float vx, vy; // m/s
float ax, ay; // m/s^2
float orientation; // deg
float length, width, height; // m
uint8_t classification; // 0:未知 1:轿车 2:卡车 3:行人
float quality; // 0~1
uint16_t age;
uint16_t hits;
uint16_t misses;
} RadarObject;
五、从点云到目标列表:信息损失与补偿
需要特别注意的是,从点云到目标列表的过程是有信息损失的。点云保留了每个散射中心的细节,而目标列表只保留聚类后的统计量。例如,一个卡车可能产生多个点云簇,聚类后合并为一个目标,其尺寸和朝向由簇的分布估计得到。如果聚类参数设置不当,可能出现“过分割”(一个目标变成多个)或“欠分割”(多个目标合并为一个)。在S32R上,可通过调整DBSCAN的邻域半径(如0.5 m)和最小点数(如3)来平衡。跟踪阶段则通过卡尔曼滤波预测与关联,进一步稳定目标ID与运动状态。
因此,融合模块在使用目标列表时,应同时关注quality、age、hits等字段,对低质量目标降低权重,对丢失目标及时剔除。点云则可用于融合模块的二次校验,例如在视觉检测到目标但雷达目标列表未输出时,可回溯点云确认是否存在弱检测。这种“点云+目标列表”双级接口设计,是S32R雷达视觉融合工程中兼顾实时性与鲁棒性的关键。