4. 距离测量与目标检测实战
距离测量是FMCW雷达最基础也最核心的能力。前面章节我们已经建立了中频信号频率与目标距离之间的线性关系,这一节要把这条关系真正落到工程实现上:从一帧原始ADC采样出发,经过加窗、FFT、取模、CFAR检测、峰值搜索,最终输出一个或多个目标的距离值。整个过程不是"调个函数看结果",而是每一步都有明确的参数选择依据和可观察的中间量。
一、从IF信号到距离谱:FFT做了什么
FMCW雷达在一个chirp内发射线性调频信号,接收到的回波与发射信号混频后得到中频信号。对单个静止目标,中频信号近似为单一频率的正弦波,其频率 f_IF = 2·R·S / c,其中 R 是目标距离,S 是调频斜率(带宽/调频时间),c 是光速。因此,只要测出 f_IF,就能反推距离:R = c·f_IF / (2·S)。
FFT的作用就是把时域的中频采样变换到频域,让不同频率的正弦分量在频谱上形成峰值。峰值所在的频率bin对应一个距离bin。距离分辨率由带宽决定:ΔR = c / (2·B)。例如B=1 GHz时,ΔR≈15 cm;B=250 MHz时,ΔR≈60 cm。这个公式决定了两个目标能否被分开,是后面多目标分辨的理论上限。
实际处理中,一帧通常包含多个chirp,每个chirp的采样点数为N。对每个chirp做N点FFT,得到一列距离谱;多个chirp的结果堆叠成"距离-慢时间"矩阵。本节只关注距离维,因此对每个chirp单独做FFT即可。需要注意:FFT之前必须加窗。矩形窗主瓣窄但旁瓣高,强目标的旁瓣可能淹没邻近弱目标;汉宁窗或汉明窗能压低旁瓣,代价是主瓣展宽、分辨率略降。工程上常用汉宁窗做距离维处理。
二、CFAR:让检测门限随噪声自适应
FFT之后得到的是复数谱,取模后得到幅度谱。幅度谱上既有目标峰值,也有噪声起伏。如果用一个固定门限,噪声高时虚警多,噪声低时漏检多。CFAR(恒虚警率检测)的核心思想是:对每个待检测单元(CUT),用其两侧的参考单元估计局部噪声功率,再乘以一个由虚警率决定的门限因子,得到自适应门限。
以一维CA-CFAR为例,设CUT两侧各取M个参考单元,保护单元各取G个(防止目标能量泄漏进参考窗)。噪声估计为参考单元的平均功率,门限 T = α·P_noise。α由虚警率Pfa和参考单元数决定,近似为 α = N_ref·(Pfa^(-1/N_ref) - 1)。当CUT幅度超过T时判为目标,否则判为噪声。
参数选择直接影响检测效果:参考单元太少,噪声估计方差大,门限抖动;参考单元太多,遇到多目标时邻近目标会抬高噪声估计,造成遮蔽。保护单元太少,目标主瓣泄漏进参考窗,同样抬高门限。经验上,参考单元总数取32~64,保护单元每侧取2~4,Pfa取1e-3~1e-5,是比较稳妥的起点。
三、峰值搜索与多目标距离分辨
CFAR输出的是"哪些bin超过门限"的二值结果。由于目标主瓣可能跨越多个bin,一个目标往往产生连续几个过门限bin。峰值搜索的任务就是把这些连续区域合并,并取区域内的最大值位置作为目标距离bin。常用做法是:遍历CFAR结果,找到连续过门限段的起点和终点,在段内找幅度最大bin,记录其索引和幅度。
多目标场景下,两个目标能否被分辨,取决于它们的距离差是否大于距离分辨率,以及CFAR参考窗是否互相干扰。如果两个目标距离很近,主瓣重叠,频谱上可能只呈现一个宽峰或一个峰带肩;此时单纯峰值搜索只能给出一个结果。要改善分辨,可以减小窗函数展宽(改用矩形窗)、提高带宽、或采用超分辨方法。工程上更实际的做法是:先保证ΔR满足需求,再用CFAR+峰值搜索处理可分辨的目标。
峰值搜索还需要做抛物线插值,把峰值bin索引细化为小数bin,从而获得亚bin距离精度。对峰值bin及其左右邻bin的幅度取对数后做三点抛物线拟合,可得到偏移量δ,最终距离 R = (k_peak + δ)·ΔR。这一步在ΔR较大时尤其重要,能把距离量化误差从半bin降到十分之一bin量级。
四、基于XENSIV实测数据的距离测量实验
下面给出一个可复现的实验流程,使用XENSIV雷达(如BGT60TR13C)采集的一帧数据。假设配置为:起始频率58 GHz,带宽1 GHz,调频时间200 μs,每chirp采样128点,采样率1 MHz。由此可得调频斜率 S = 1 GHz / 200 μs = 5 MHz/μs,距离分辨率 ΔR = c/(2B) ≈ 0.15 m,最大不模糊距离由采样率决定,约为 c·fs/(4S) ≈ 15 m。
实验步骤与关键观察量如下:
- 读取一帧数据,形状为 [chirp数, 采样点数]。取第1个chirp的128点复数采样,记为 x[n]。
- 去均值:减去x[n]的均值,消除直流偏置。直流分量会在距离谱的k=0处形成强峰,干扰近距目标检测。
- 加汉宁窗:
w[n] = 0.5 - 0.5·cos(2πn/(N-1)),逐点相乘。 - 128点FFT,取前64点(正频率半轴),得到复数谱 X[k]。
- 取模:
A[k] = |X[k]|,得到幅度谱。 - CFAR检测:参考单元每侧16,保护单元每侧2,Pfa=1e-3。计算每个k的门限T[k],标记A[k] > T[k]的bin。
- 峰值搜索:合并连续过门限bin,取每段最大bin索引k_peak。
- 抛物线插值:用A[k_peak-1]、A[k_peak]、A[k_peak+1]计算δ,输出距离
R = (k_peak + δ)·ΔR。
在一次合理的示例数据中,可能观察到三个过门限段,对应k_peak约为8、20、45,插值后距离约为1.22 m、3.05 m、6.78 m。其中k=45处的目标幅度较低,若不加窗或CFAR参考单元设置不当,容易被旁瓣或噪声淹没。通过对比加窗前后、不同Pfa下的检测结果,可以直观看到窗函数和CFAR参数对检测性能的影响。
五、多目标距离分辨的边界条件
多目标分辨不是"只要CFAR能检出两个峰"就算成功。两个目标距离差小于ΔR时,它们的主瓣在频谱上重叠,无论CFAR怎么调,都只能看到一个峰。此时正确的结论是"当前带宽下不可分辨",而不是强行输出两个距离。要分辨,必须提高带宽B,或改用MUSIC、ESPRIT等超分辨算法。工程上更常见的做法是:根据应用需求先确定所需的最小可分辨距离差,再反推所需带宽,而不是拿到数据后再想办法。
此外,多目标之间还存在遮蔽效应:强目标的旁瓣会抬高邻近bin的噪声估计,使弱目标的门限被抬高而漏检。缓解方法是采用GO-CFAR或SO-CFAR,取两侧参考单元中较小或较大的估计值,或在强目标附近减小参考窗。这些变体在XENSIV的雷达开发套件中通常已有实现,实际调试时可以直接切换对比。
最后需要强调:距离谱的横轴是bin索引,不是物理距离。只有乘以ΔR并加上插值修正后,才是可用的距离值。所有中间量——加窗后的时域波形、FFT后的幅度谱、CFAR门限曲线、过门限标记——都建议在调试阶段可视化出来,这样才能在结果异常时快速定位是加窗、FFT、CFAR还是峰值搜索环节出了问题。