☰
第一篇:雷达信号处理入门:从 chirp 到 (2,64,8) 复数立方体
2026/10/14 18:33:09 网站建设 项目流程

系列导读:这是雷达信号处理实战系列的第一篇。我们将从一个最基础的问题出发——雷达 SoC 吐出来的(2,64,8)复数立方体,到底是怎么来的?里面每个数字代表什么物理意义?读懂这一篇,后面的距离、速度、角度检测才有根基。

一、先看结论:这个立方体是什么

如果你手上有一块 FMCW 雷达 SoC(比如 TI 的 AWR 系列、NXP 的 TEF810x、或者国产的加特兰),它跑完一帧之后,吐给你的就是这么一个东西:

cube.shape = (2, 64, 8) cube.dtype = complex64

这个立方体长什么样子呢?其直观图如下:

但为什么是这个形状?为什么是 2、64、8?要回答这些问题,得从 FMCW 雷达最基本的发射波形讲起。

二、FMCW 雷达发射的是什么

FMCW(Frequency Modulated Continuous Wave,调频连续波)雷达发射的不是脉冲,而是一段频率随时间线性上升的连续波。这段波形有一个专门的名字,叫chirp(啁啾)。

一个 chirp 的时频图:

几个关键参数:

参数符号含义典型值
起始频率f0chirp 开始时的频率24 GHz 或 77 GHz
带宽B频率扫过的范围1~4 GHz
chirp 周期Tc一个 chirp 持续多久50~200 μs
斜率S=B/TcS=B/Tc​频率上升速率10~50 MHz/μs

关键点:这段波形发射出去,碰到目标反射回来,接收机把它和发射信号混频,得到一个中频信号(IF),频率正比于目标距离。

三、一个 chirp 内发生了什么——测距离

3.1 发射与接收的时间差

具体如下图

3.2 中频频率与距离的关系

FMCW 的核心公式:

IF =S·τ=S· 2R/c

反推距离:

R=c· IF / (2S)

一个 chirp 内的采样点做 FFT,就能把距离读出来。FFT 的每个 bin 对应一个中频频率,也就是一个距离。

3.3 为什么是 8 个 range_bin

SoC 在一个 chirp 内采集 Ns 个采样点,做 Ns点 FFT,得到 Ns个距离单元。代码里 Ns​=8,所以有 8 个range_bin。

四、为什么要发多个 chirp——测速度

4.1 单个 chirp 测不了速度

一个 chirp 只有 100 μs,在这段时间内目标几乎没动。相位变化太小,测不出速度。

4.2 多个 chirp 之间的相位变化

要测速度,需要在时间上重复发多个 chirp,观察同一个距离门上、跨 chirp 的相位变化。

4.3 相位与距离的关系

雷达回波的相位与目标距离的关系:

φ= 4πR/λ

为什么是 4π4π 而不是 2π2π?因为信号往返:

雷达 ──→ 目标 ──→ 雷达
去程 R 回程 R
总路径 = 2R
相位 = 2π · (2R)/λ = 4πR/λ

4.4 跨 chirp 的相位变化

目标以径向速度 vv 运动,两个相邻 chirp 之间的时间间隔是 TcTc​。

每个 chirp 周期内,目标移动的距离:

ΔR=v⋅TcΔR=v⋅Tc​

对应的相位变化:

Δφ= 4πΔR/λ= 4πvTc /λ

跨 chirp 的相位旋转速度正比于目标速度。

对一个距离门上的 64 个 chirp 值做 FFT,就把"相位旋转频率"读出来,也就是速度。这就是多普勒 FFT。

chirp 序列: [5∠0°, 5∠5.6°, 5∠11.3°, ..., 5∠354.4°] ← 相位在旋转

多普勒 FFT 后:
doppler_bin: 0 1 ... 31 32 33 ... 63
小 小 ... 小 小 ┃大┃ ... 小
↑
峰值偏离零多普勒

4.5 为什么是 64 个 chirp

64 是速度分辨率、速度范围、帧率、FFT 效率四者折中的结果。

因素公式64 的效果
速度分辨率vres=λ/(2NcTc)vres​=λ/(2Nc​Tc​)越高越好
无模糊速度范围vmax=±λ/(4Tc)vmax​=±λ/(4Tc​)与 NcNc​ 无关
帧率1/(NcTc)1/(Nc​Tc​)越低越好
FFT 效率—2 的幂最快

代入 λ=0.0125λ=0.0125 m、Tc=100Tc​=100 μs、Nc=64Nc​=64:

v_res = 0.0125 / (2 × 64 × 100e-6) = 0.977 m/s
v_max = ± 0.0125 / (4 × 100e-6) = ± 31.25 m/s
T_frame = 64 × 100 μs = 6.4 ms → 帧率约 156 Hz

够用:速度分辨率约 1 m/s,最大速度 ±31 m/s 远超人体速度,帧率 156 Hz 足够捕捉人体动作。

五、为什么要两个 RX——测角度

5.1 两个天线看同一个目标

雷达有两个接收天线,间距 d。目标在某个方向 θ上。

目标
╱
╱ θ╱
RX0 ●───────● RX1
d = λ/2

目标到两个天线的距离不同,存在波程差:

ΔR=d⋅sin⁡θΔR=d⋅sinθ

5.2 波程差导致相位差

Δφ= 2πΔR/λ= 2πd·sinθ/λ

反推角度:

θ=arcsin⁡(λΔϕ2πd)θ=arcsin(2πdλΔϕ​)

这就是双阵元比相测角的原理。

5.3 为什么是 2 个 RX

理论上,NN 个 RX 可以测 N−1N−1 个角度信息,形成更复杂的波束。但:2 个 RX 是最简单的配置,能测一个方位角。更多 RX 会增加硬件成本和计算量。对于人体存在检测,一个方位角就够了。

  • 下一篇预告

    第二篇:雷达距离检测——power_profiles + find_range_peak

    我们会看到:

  • 怎么把(2, 64, 8)的三维立方体压成两条一维距离谱(power_static和power_mti)。

  • 怎么在距离谱上找峰值。

  • 怎么用中位数估计噪声底,算出 SNR。

  • 一个"墙在 bin0、人在 bin3"的具体例子。


  • 本文是雷达信号处理实战系列的第一篇。系列基于一份真实的 FMCW 雷达信号处理代码,逐行拆解距离、速度、角度、强度的提取过程。适合有 Python 基础、对雷达感兴趣的工程师和学生。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询