4. 雷达信号处理链路
4D毫米波雷达的“点云”并不是传感器直接输出的原始数据,而是经过一条严格有序的信号处理链路逐级计算得到的。理解这条链路,是后续做点云滤波、聚类、目标跟踪和感知融合的基础。本节把链路拆成六个关键阶段:ADC采样、距离FFT、多普勒FFT、CFAR检测、DOA估计与点云生成,并说明每一级输入输出、参数含义和常见工程问题。
一、核心原理:从模拟回波到数字立方体
FMCW雷达发射线性调频连续波,目标回波与发射信号混频后得到中频信号。中频频率与目标距离成正比,相位随目标运动变化。ADC以固定采样率对中频信号采样,形成“快时间×慢时间×通道”的三维数据立方体。其中快时间对应一个chirp内的采样点,慢时间对应多个chirp,通道对应TX/RX天线组合。
距离FFT沿快时间维度进行,把每个chirp的时域采样变换为距离谱;多普勒FFT沿慢时间维度进行,把同一距离单元上多个chirp的相位变化变换为速度谱;CFAR在距离-多普勒二维谱上逐单元检测,判断是否存在目标;DOA估计利用多个接收通道之间的相位差计算角度;最后把检测到的距离、速度、角度和幅度组合成点云。
二、方法流程:每一级做什么、输出什么
下面用一段伪代码描述从ADC数据到点云的典型处理顺序。实际工程中会使用DSP或GPU加速,但逻辑顺序一致。
输入:radar_cube[chirp][sample][channel]
1. 对每个chirp、每个通道做距离FFT:
range_fft[chirp][range_bin][channel] = FFT(radar_cube[chirp][:][channel])
2. 对每个range_bin、每个通道做多普勒FFT:
doppler_fft[doppler_bin][range_bin][channel] = FFT(range_fft[:][range_bin][channel])
3. 在doppler_fft上做CFAR检测:
detections = CFAR(doppler_fft, guard_cells, training_cells, pfa)
4. 对每个detection,取多通道相位差做DOA估计:
angle = DOA(detections[ch].phase_diff, array_geometry)
5. 组合成点云:
point = {range, velocity, azimuth, elevation, snr}
距离FFT的分辨率由带宽决定,速度分辨率由chirp总时长决定,角度分辨率由天线孔径决定。三者共同决定点云的“精细程度”。
三、案例/场景:一个前方车辆点云的形成
假设雷达前方80米处有一辆行驶中的汽车,相对速度-10 m/s。ADC采样后,距离FFT在80米对应的range_bin上出现峰值;多普勒FFT在该range_bin上得到-10 m/s对应的doppler_bin;CFAR在二维谱上检测到该单元;DOA估计利用8个接收通道的相位差计算出方位角约2°、俯仰角约0°;最终输出一个点云点:R=80m,v=-10m/s,θ=2°,φ=0°,SNR=22dB。多个这样的点按帧累积,就形成车辆轮廓点云。
四、关键参数与常见误区
| 处理阶段 | 核心参数 | 影响 | 常见误区 |
|---|---|---|---|
| ADC采样 | 采样率fs、位数 | 决定最大中频和动态范围 | 采样率不足导致距离混叠 |
| 距离FFT | 带宽B、点数Ns | 距离分辨率c/2B | 补零不能提高真实分辨率 |
| 多普勒FFT | chirp数Nc、帧周期 | 速度分辨率λ/(2NcTc) | 速度模糊未解 |
| CFAR | 保护单元、参考单元、pfa | 检测灵敏度与虚警率 | 参考窗太小导致门限不稳 |
| DOA估计 | 阵元间距d、通道数 | 角度分辨率与视场 | 忽略通道幅相不一致 |
五、从链路到点云:工程实现要点
- 数据布局:ADC数据通常按chirp、sample、channel排列,FFT前需确认维度顺序,避免把通道维误当快时间维。
- 窗函数:距离维和多普勒维常加汉宁窗或布莱克曼窗,抑制旁瓣,但会展宽主瓣,需权衡分辨率。
- CFAR变体:CA-CFAR适合均匀噪声,OS-CFAR适合多目标环境,GO-CFAR适合杂波边缘。
- DOA算法:FFT测角速度快但精度有限,MUSIC、ESPRIT精度高但计算量大,工程上常先用FFT粗测再细化。
- 点云输出:每个点至少包含距离、速度、方位角、俯仰角、SNR、时间戳,便于后续跟踪与融合。