2. 毫米波雷达基础

说实话,做传感器融合这些年,我接触最多的就是毫米波雷达和激光雷达。很多人一上来就问我:“老师,毫米波雷达到底怎么工作的?为什么它能在雨雾天正常工作?”

嗯,今天我们就来聊聊这个话题。我会从最基础的FMCW原理讲起,再到信号处理、点云生成,最后带你读懂那些让人头疼的参数表。

2.1 FMCW工作原理

毫米波雷达的核心技术,说白了就是FMCW——调频连续波。我刚开始接触时也觉得这名字挺唬人,其实原理很简单。

想象一下,你对着山谷喊一声,听到回声。你喊的声音频率不变,那只能通过时间差算距离。但FMCW不一样——它发射的信号频率是随时间变化的,就像警笛声由低到高那样。

具体来说,雷达发射一个频率随时间线性增加的信号,同时接收目标反射回来的信号。发射信号和接收信号之间会有一个频率差,这个差值就叫“差频”。

为什么会这样?因为信号往返需要时间。在这段时间里,发射信号的频率已经变了。所以,差频的大小直接反映了目标的距离。

核心公式:

距离 R = (c × T × f_b) / (2 × B)

其中:c是光速,T是调频周期,f_b是差频,B是带宽

我在项目中遇到过一个问题:差频信号里不仅有距离信息,还有速度信息。怎么区分?这就引出了多普勒效应。目标运动时,反射信号的频率会额外偏移,这个偏移量就是多普勒频移。通过它,我们能算出目标的速度。

2.2 信号处理流程

拿到原始的差频信号后,我们需要做一系列处理才能得到有用的信息。我习惯把这个流程分成三步走:

  1. 距离FFT:对每个chirp做一次FFT,得到距离维度的信息
  2. 多普勒FFT:对多个chirp在慢时间维度做FFT,得到速度信息
  3. CFAR检测:从噪声中提取真实目标

你想想看,原始数据是一个二维矩阵——行代表距离采样点,列代表chirp序号。先对每行做FFT,得到距离-慢时间矩阵。再对每列做FFT,就得到了距离-多普勒图。

我的经验:做距离FFT时,窗函数的选择很关键。我一般用汉明窗,旁瓣抑制效果好,主瓣宽度也能接受。曾经试过矩形窗,结果旁瓣把弱目标淹没了,排查了好久才发现问题。

2.2.1 距离-多普勒FFT代码示例

import numpy as np

def range_doppler_fft(data, fs, num_chirps, num_samples):
    """
    data: 原始差频信号,形状 (num_chirps, num_samples)
    fs: 采样率
    """
    # 距离FFT
    range_fft = np.fft.fft(data, axis=1)
    range_fft = range_fft[:, :num_samples//2]  # 取单边谱
    
    # 多普勒FFT
    doppler_fft = np.fft.fft(range_fft, axis=0)
    doppler_fft = np.fft.fftshift(doppler_fft, axes=0)  # 零频移到中间
    
    return doppler_fft

2.3 点云生成

距离-多普勒图出来后,我们得到了目标的距离和速度。但还缺一个关键信息——角度。这就需要用到多根接收天线了。

我记得第一次做角度估计时,用了最简单的波束成形方法。后来发现,MIMO技术能大幅提升角度分辨率。说白了,就是通过多根发射天线和多根接收天线,虚拟出更多的天线阵元。

避坑指南:我曾经在角度估计时忽略了相位校准。结果点云里出现了很多“鬼影”目标。后来花了整整两天时间,一根天线一根天线地测相位偏差,才把问题解决。所以,相位校准这一步千万别省。

点云生成的核心步骤:

  • 对每个检测到的目标,提取距离、速度、角度信息
  • 将极坐标转换为笛卡尔坐标
  • 根据信噪比给每个点分配置信度
  • 输出点云数据,通常包含x, y, z, v, snr等字段

2.4 常见参数解读

拿到一份雷达规格书,你可能会被一堆参数搞晕。我挑几个最关键的说说:

参数 含义 我的理解
最大探测距离 能检测到目标的最远距离 受发射功率和噪声系数限制,别太信理论值
距离分辨率 能区分两个目标的最小距离差 由带宽决定,带宽越大分辨率越高
最大不模糊速度 能测量的最大速度 受chirp周期限制,周期越短测速范围越大
角度分辨率 能区分两个目标的最小角度差 由天线孔径决定,MIMO可以等效增大孔径
帧率 每秒输出点云的次数 一般10-20Hz,太高了处理不过来

实用技巧:选型时别只看参数最大值。我一般会关注“典型值”和“最差值”。比如最大探测距离写200米,但实际在雨雾天可能只有100米。多问问供应商的实测数据,比看规格书靠谱。

2.5 本章知识体系

为了让你更直观地理解毫米波雷达的整个工作流程,我画了一张图:

毫米波雷达信号处理流程 FMCW发射 调频连续波生成 信号接收 混频 + 低通滤波 ADC采样 模数转换 距离FFT 每个chirp做FFT 多普勒FFT 慢时间维FFT CFAR检测 目标提取 角度估计 波束成形 / MIMO 点云生成 坐标转换 + 输出 点云数据 x, y, z, v, snr 图2-1 毫米波雷达信号处理流程

这张图把整个流程串起来了。从发射FMCW信号开始,到最终输出点云数据,每一步都环环相扣。我个人觉得,理解了这个流程,你就掌握了毫米波雷达的八成精髓。

本章小结:

  • FMCW通过发射频率变化的信号,利用差频计算距离
  • 距离-多普勒FFT是信号处理的核心,先做距离维FFT,再做速度维FFT
  • 点云生成需要结合距离、速度、角度三个维度的信息
  • 参数解读时,重点关注带宽、chirp周期、天线数量这三个关键参数