FMCW 全面解析

本文详细介绍了调频连续波雷达(FMCW雷达)的工作原理,包括基本概念、测距和测速原理。FMCW雷达通过发射线性调频信号,利用混频和FFT处理来确定目标的距离和速度。调频周期内的信号经过混频和FFT,可以得到目标的距离信息,而多普勒效应则用于测量目标的速度。此外,文章还探讨了IQ调制、复数FFT在处理雷达数据中的作用,并提及了生命体征监测等应用。
摘要由CSDN通过智能技术生成

基本概念

调频连续波雷达,普通CW雷达发送的是固定频率的波形,FMCW发送的是频率随时间变化的波形,通常是线性变化的,也称LFMCW

通常有三角波调制和锯齿波调制。锯齿波调制主要用来测量物体的距离,而三角波调制可以同时得到物体的距离和速度信息。

它们的频域波形长这样,第一个只有向上调频,样子像锯齿,叫做锯齿波;第二个在一个调频周期内,先向上调频再向下调频,叫做三角波。一个调频周期一般也叫做一个chirp

image-20210504104215550

image-20210504104520226

两种调制方式一个chirp中对应的时域波形如下

锯齿波时域波形 三角波时域波形

测距原理

FMCW雷达每次发射上面的信号波形,当遇到静止目标后,会反射回来并被雷达接收机接收(类似激光被镜子反射),此时接收信号和发射信号从波形上来看是完全一样的,只不过有个延时,电磁波和光一样传播是有时间的,速度为光速。从频域上来看,如图

image-20210504111829362

image-20210504112832726

延时 τ = 2 R c \tau = \frac{2R}{c} τ=c2R,根据这个公式。知道了延时 τ \tau τ就能计算出目标的距离。

混频

实际当中是没办法直接求出 τ \tau τ的,接收机只负责接收信号,本身是判断不出来什么时候有信号什么时候没有信号。所以通常都是要先对接收信号做进一步处理,即用发射信号与接收信号混频。

从频域来看,将发射信号和接收信号相减(取绝对值,信号没有负频率)下图,可以得到两个频率 f b f_b fb f c − f b f_c - f_b fcfb f c f_c fc通常是几G或者是几十G的载频,远高于 f b f_b fb,通过一个低通滤波器的话就可以去除 f c − f b f_c - f_b fcfb,只剩下 f b f_b fb f b f_b fb有什么用呢,看右边的三角形,根据相似三角形,有 τ T = f b B \frac{\tau}{T} = \frac{f_b}{B} Tτ=Bfb,而 B B B T T T都是已知信息,所以知道了 f b f_b fb就能求出 τ \tau τ,从而得到目标的距离。求出 f b f_b fb的过程就叫做混频, f b f_b fb也叫做差拍频率,简称差频。

image-20210504151334831

但是雷达接收到的都是时域信号,下面用公式推导一下时域信号的处理过程:

设中心频率 f c f_c fc,调频周期为 T T T,频率随时间变化为 f ( t ) = f c + B T t f(t) = f_c + \frac{B}{T} t f(t)=fc+TBt B B B为带宽,设 α = B T \alpha = \frac{B}{T} α=TB,即调频斜率。

发射信号: x t x ( t ) = A cos ⁡ ( 2 π f ( t ) t + φ 0 ) = A cos ⁡ ( 2 π ( f c t + α t 2 2 ) + φ 0 ) x_{t x}(t)=A \cos (2 \pi f(t) t + \varphi_{0})=A \cos \left(2 \pi\left(f_{c} t+\frac{\alpha t^{2}}{2}\right)+\varphi_{0}\right) xtx(t)=Acos(2πf(t)t+φ0)=Acos(2π(fct+2αt2)+φ0)

回波信号: x r x ( t ) = B cos ⁡ ( 2 π f ( t − τ ) ( t − τ ) + φ 0 ) = B cos ⁡ ( 2 π ( f c ( t − τ ) + α ( t − τ ) 2 2 ) + φ 0 ) x_{r x}(t)=B \cos (2 \pi f(t-\tau) (t-\tau) + \varphi_{0})=B \cos \left(2 \pi\left(f_{c} (t-\tau)+\frac{\alpha (t-\tau)^{2}}{2}\right)+\varphi_{0}\right) xrx(t)=Bcos(2πf(tτ)(tτ)+φ0)=Bcos(2π(fc(tτ)+2α(tτ)2)+φ0)

频域相加减对应时域的相乘 x t x ( t ) x_{t x}(t) xtx(t) x r x ( t ) x_{r x}(t) xrx(t)相乘,利用积化和差公式, cos ⁡ ( α ) c o s ( β ) = 1 2 ( cos ⁡ ( α − β ) + cos ⁡ ( α + β ) ) \cos(\alpha)cos(\beta) = \frac{1}{2} (\cos(\alpha-\beta) + \cos(\alpha+\beta)) cos(α)cos(β)=21(cos(αβ)+cos(α+β)),因为 f c f_c fc频率很高,相加之后频率更高,后一项可以通过低通滤波器滤掉,只剩下一个频率相减项,即混频信号为

x m x = x t x ( t ) x r x ( t ) = A B 2 cos ⁡ ( 2 π ( f c τ + α τ t − α τ 2 2 ) x_{m x} =x_{t x}(t) x_{r x}(t)= \frac{AB}{2} \cos(2 \pi(f_c \tau + \alpha\tau t - \frac{\alpha \tau^2}{2}) xmx=xtx(t)xrx(t)=2ABcos(2π(fcτ+ατt2ατ2)

可以发现 x m x x_{m x} xmx的频率就是$ \alpha\tau = f_b , 再 带 入 ,再带入 \tau = \frac{2R}{c}$计算目标距离。

混频的意思其实很简单,就是发射信号与接收信号时域相乘再滤波,对应到频域上就是频率相减。混频信号经过AD采样后,就得到我们常说的雷达的原始数据,对雷达来说,我们能拿到的数据就是指的这个。

举个例子,理想情况下,一个静止点目标,得到的混频信号就是个固定频率的正弦波,计算这个正弦波的频率就能得到它的距离,如果两个不同距离的目标呢,就是两个不同频率的正弦波相加的结果。

距离门和距离分辨率

image-20210504161844449

对FMCW的数据进行处理都是以chirp为单位的,以一个静止点目标为例,雷达最终输出的数据就是上图中正弦波的离散信号,如果要知道它的距离,就要用FFT计算出 f d f_d fd,假设采样率为 f s f_s fs,采样点数为32,FFT结果可能如下,得到 f d = f s ∗ 8 / 32 f_d = f_s*8/32 fd=fs8/32

image-20210504163727074

注意,FFT是由频率分辨率的,如上图中只能得到32种频率,即 f d f_d fd的取值只有32种可能。

FFT的频率分辨率计算公式: Δ f = f s 1 N f \Delta f = f_s \frac{1}{N_{f}} Δf=fsNf1,其中 f s f_s fs是采样频率, N f N_f Nf是FFT点数,又有 f s = N T f_s = \frac{N}{T} fs=TN,时长为T的信号采样N个离散点。
Δ f = f s 1 N f = N N f 1 T \Delta f = f_s \frac{1}{N_{f}} = \frac{N}{N_f} \frac{1}{T} Δf=fsNf1=NfNT1
知道了 Δ f \Delta f Δf就能求出 Δ R \Delta R ΔR
Δ R = c 2 B T Δ f = c 2 B N N f \Delta R = \frac{c}{2B}T \Delta f = \frac{c}{2B} \frac{N}{N_f} ΔR=2BcTΔf=2BcNfN
这就是距离分辨率,但是一般我们说FMCW的距离分辨率都是 Δ R = c 2 B \Delta R = \frac{c}{2B} ΔR=2Bc,原因在于 Δ f > = 1 T \Delta f >= \frac{1}{T} Δf>=T1这个公式是恒成立的,FFT的频率分辨率要大于输入信号时长的倒数

那如果当 N f N_f Nf大于 N N N的话不是矛盾了吗?

对FFT来说,当FFT点数超过采样点数的时候,会自动补零到FFT的长度,如下图,当采用32点FFT时,针对的是第一个信号,当采用64点FFT时,针对的是第二个信号,哪怕只是补零,这两个输入信号也是不同的,第二个信号,你可以看作是 T T T变成了 2 T 2T 2T,采样点数也变成了 2 N 2N 2N,所以 Δ f > = 1 T \Delta f >= \frac{1}{T} Δf>=T1依旧是对的。

image-20210504155131846

Δ R = c 2 B \Delta R = \frac{c}{2B} ΔR=2Bc是FFT点数不超过采样点数的情况,如果超过,信号都不一样了。不过,实际中一般可以通过增大FFT点数来提高分辨率的,因为不会相差太多,最好是原信号采样点数的2的N次幂倍数,但看似提高了频率分辨率,实际上并没有,因为针对的信号都不一样。

再看上面的频谱图,知道了距离和频率的对应关系,可以将坐标换成距离, R 0 R_0 R0表示距离分辨率,即目标在位置 8 R 0 8R_0 8R0,下图中的一个个小方格,就叫做距离门,也说目标在第8个距离门。

image-20210504170627703

有多个目标可能是这样的

image-20210504171247147

所以说,对混频信号,即拿到的雷达原始数据,以chirp为单位,做FFT之后的结果,得到距离信息,所以也叫做距离维FFT,或者一维FFT

这是一个chirp的结果,雷达会发射多个chirp,将多个chirp信号排列起来,排成二维矩阵

image-20210504185801297

矩阵的每一行代表一个chirp,一行中每个点都是混频信号的采样点,由于一个chirp中采样点的间隔远小于chirp之间的间隔,即矩阵中左右两个点的时间间隔小于上下两个点的时间间隔,所以横轴也叫做快时间维,竖轴也叫做慢时间维。对每一行做FFT,即对快时间维做FFT,也叫做快时FFT,同时将坐标换成距离,如下

image-20210504172008502

从图中看,在时刻5之前,距离 8 R 0 8R_0 8R0处有一面墙,时刻5之后 5 R 0 5R_0 5R0处出现了一个人,这个图也叫做时间距离图,能够观察到随时间不同距离上的变化情况。

测速原理

上面针对的都是静止目标,现在讲讲如何测量运动目标的速度。

当目标运动时,因为有多普勒效应,得到的回波信号有所不同,体现在回波信号有个频率的偏移,比如面向雷达运动,向上偏移。

image-20210504174950055

进行测速讲解之前,需要修改一下上面的混频信号公式,上面的表达式只能表示一个chirp的信号,为了表示任意一个chirp,用 n T + t s nT+t_s nT+ts代替 t t t,其中 n n n为大于等于0的整数, 0 < = t s < T 0<=t_s<T 0<=ts<T

但这里需要 t s t_s ts代替 A cos ⁡ ( 2 π f ( t ) t + φ 0 ) A \cos (2 \pi f(t) t + \varphi_{0}) Acos(2πf(t)t+φ0) f ( t ) f(t) f(t) t t t,用 n T + t s nT+t_s nT+ts代替另一个 t t t。因为要保证每个调频周期内调频是相同的,即 f ( t ) = f c + B T t f(t) = f_c + \frac{B}{T} t f(t)=fc+TBt不能随着 T T T的改变而改变,假如用 n T + t s nT+t_s nT+ts代替其中 t t t的话,当n无穷大时,调频的斜率也无穷大了,显然是不对的。所以要消除 T T T的影响,即 f ( t − n T ) = f c + B T ( t − n T ) f(t-nT) = f_c + \frac{B}{T} (t-nT) f(tnT)=fc+TB(tnT),等效为 f ( t s ) = f c + B T t s f(t_s) = f_c + \frac{B}{T} t_s f(ts)=fc+TBts

所以将上面的公式修改为(这里用 f ( t ) ∗ t f(t)*t f(t)t不是很严谨,应为 f ( t ) f(t) f(t)的积分)

发射信号: x t x ( t ) = A cos ⁡ ( 2 π f ( t s ) t + φ 0 ) = A cos ⁡ ( 2 π ( f c t + α t s 2 2 ) + φ 0 ) x_{t x}(t)=A \cos (2 \pi f(t_s) t + \varphi_{0})=A \cos \left(2 \pi\left(f_{c} t+\frac{\alpha t_s^{2}}{2}\right)+\varphi_{0}\right) xtx(t)=Acos(2πf(ts)t+φ0)=Acos(2π(fct+2αts2)+φ0)

回波信号: x r x ( t ) = B cos ⁡ ( 2 π f ( t s − τ ) ( t − τ ) + φ 0 ) = B cos ⁡ ( 2 π ( f c ( t − τ ) + α ( t s − τ ) 2 2 ) + φ 0 ) x_{r x}(t)=B \cos (2 \pi f(t_s-\tau) (t-\tau) + \varphi_{0})=B \cos \left(2 \pi\left(f_{c} (t-\tau)+\frac{\alpha (t_s-\tau)^{2}}{2}\right)+\varphi_{0}\right) xrx(t)=Bcos(2πf(tsτ)(tτ)+φ0)=Bcos(2π(fc(tτ)+2α(tsτ)2)+φ0)

混频信号: x m x = x t x ( t ) x r x ( t ) = A B 2 cos ⁡ ( 2 π ( f c τ + α τ t s − α τ 2 2 ) x_{m x} =x_{t x}(t) x_{r x}(t)= \frac{AB}{2} \cos(2 \pi(f_c \tau + \alpha\tau t_s - \frac{\alpha \tau^2}{2}) xmx=xtx(t)xrx(t)=2ABcos(2π(fcτ+ατts2ατ2)

其中, t = n T + t s t = nT + t_s t=nT+ts 0 < = t s < T 0<=t_s<T 0<=ts<T,n表示第n个chirp。

对静止目标来说, τ = 2 R c \tau = \frac{2R}{c} τ=c2R,如果是运动目标,则是 τ = 2 ( R + v t ) c \tau = \frac{2(R+vt)}{c} τ=c2(R+vt) v v v表示目标的速度,为正表示远离雷达。

τ = 2 ( R + v t ) c \tau = \frac{2(R+vt)}{c} τ=c2(R+vt) t = n T + t s t = nT + t_s t=nT+ts带入混频信号公式,得到
x m x = A B 2 cos ⁡ ( 2 π ( 2 R f c c + 2 f c v c n T + 2 f c v c t s + 2 R α c t s + 2 α ( r 2 + 2 R v t + t 2 ) c 2 ) ) x_{m x} = \frac{AB}{2} \cos(2 \pi(\frac{2Rf_c}{c} + \frac{2f_c v}{c} n T + \frac{2f_c v}{c}t_s +\frac{2R\alpha}{c}t_s + \frac{2 \alpha (r^2+2Rvt+t^2)}{c^2}) ) xmx=2ABcos(2π(c2Rfc+c2fcvnT+c2fcvts+c2Rαts+c22α(r2+2Rvt+t2)))
后面有一项分母为 c 2 c^2 c2可以忽略, 2 f c v c \frac{2f_c v}{c} c2fcv相对 2 R α c \frac{2R\alpha}{c} c2Rα也要小得多,也可以忽略,因为 f c f_c fc通常是几十G量级,而 α = B T \alpha = \frac{B}{T} α=TB B B B可能达到G量级, T T T通常是ms量级。最终得到如下公式
x m x = A B 2 cos ⁡ ( 2 π ( 2 R f c c + 2 f c v c n T + 2 R α c t s ) ) x_{m x} = \frac{AB}{2} \cos(2 \pi(\frac{2Rf_c}{c} + \frac{2f_c v}{c} n T +\frac{2R\alpha}{c}t_s ) ) xmx=2ABcos(2π(c2Rfc+c2fcvnT+c2Rαts))
其中, f d = 2 f c v c f_d = \frac{2f_c v}{c} fd=c2fcv,也叫多普勒频率。

通过这个公式再去理解一下距离维FFT的含义,距离维FFT其实就是对 t s t_s ts做FFT,得到的就是距离信息。而当对距离维做完FFT之后, 2 R f c c + 2 f c v c n T \frac{2Rf_c}{c} + \frac{2f_c v}{c} n T c2Rfc+c2fcvnT其实是作为一个相位信息保存在了当前的距离门内。

以一个简单的matlab仿真来说明,一个固定频率的正弦信号,相位随着时间变化,从第一副图中可以看出频率在50Hz附近,观察50Hz附近幅度的变化趋势,即第二幅图

fs = 1000;
t = (1:1024)/fs;
y = 1:200;
for i = 1:200
    x = cos(2*pi*50*t+i*pi/100);
    res(i,:) = abs(fft(x));
end
figure
mesh(res)
xlim([0 100])
zlim([477 480 ])
xlabel("频率")
ylabel("时间")
FFT幅度相位信息1 FFT幅度相位信息2

从图中可以发现,FFT之后 幅值也是受到相位的调制的。

所以,距离维FFT之后,相应的距离门内存放着相位信息 2 f c v c n T \frac{2f_c v}{c} n T c2fcvnT,可以简单理解为FFT之后的幅度是 x + c o s ( 2 f c v c n T ) x+cos(\frac{2f_c v}{c} n T) x+cos(c2fcvnT)

image-20210504191843764

假如有一个目标在第四个距离门内匀速运动,先画出时间距离图,在第四个距离门能检测到目标,并且幅度是受 c o s ( 2 f c v c n T ) cos(\frac{2f_c v}{c} n T) cos(c2fcvnT)调制的,所以对第四列进行FFT,可以看到目标的多普勒速度,如右图,同时把坐标换算成速度,便可求出目标的速度。

image-20210504193031376

对每一列做FFT之后,此时二维矩阵竖轴单位不再是时间,而是速度(或者是多普勒频率),从图中可以看出在距离 4 R 0 4R_0 4R0处,有目标以速度 v v v在运动。

image-20210504194013134

这个二维矩阵叫做距离多普勒矩阵或者是距离速度矩阵,画出来的图叫做距离多普勒图。沿着竖轴做FFT,也叫做二维FFT速度维FFT慢时间维FFT

生命体征探测

以简单的呼吸检测为例,雷达是通过检测呼吸带来的胸腔或者腹部起伏来检测呼吸。胸腔起伏其实就可以当作一个运动目标,吸气相当于面向雷达运动,呼吸相当于远离雷达运动。一般是通过解相位获取呼吸运动的轨迹,这里求的是 2 f c v c n T \frac{2f_c v}{c} n T c2fcvnT的值而不是速度,因为 2 f c v c n T \frac{2f_c v}{c} n T c2fcvnT可以表征出呼吸的运动轨迹。

image-20210504201031970

最简单的解相位方法就是atan函数,一维FFT之后的结果有实部和虚部,直接利用atan就能获得 2 f c v c n T \frac{2f_c v}{c} n T c2fcvnT的值。

实际上解的相位是 x m x = A B 2 cos ⁡ ( 2 π ( 2 R f c c + 2 f c v c n T + 2 R α c t s ) ) x_{m x} = \frac{AB}{2} \cos(2 \pi(\frac{2Rf_c}{c} + \frac{2f_c v}{c} n T +\frac{2R\alpha}{c}t_s ) ) xmx=2ABcos(2π(c2Rfc+c2fcvnT+c2Rαts))中的 2 π ( 2 R f c c + 2 f c v c n T ) 2 \pi(\frac{2Rf_c}{c} + \frac{2f_c v}{c} n T ) 2π(c2Rfc+c2fcvnT),但前一项是定值,不影响,需要的是相位的变化情况,而不是相位的具体值

IQ、复数FFT

IQ调制通信方面用的更多一些。不同的雷达,可能有的雷达拿到的原始数据是IQ两路,有的是一路。

IQ的作用是保证相位的一致性,比如 s i n x sinx sinx信号和 s i n ( x + p i ) sin(x+pi) sin(x+pi)信号,从波形上是完全区别不出来的,但如果这两个信号都经过一个移相器,分别得到 c o s x cosx cosx c o s ( x + p i ) cos(x+pi) cos(x+pi),通过 s i n x sinx sinx c o s x cosx cosx确定相位,另一个通过 s i n ( x + p i ) sin(x+pi) sin(x+pi) c o s ( x + p i ) cos(x+pi) cos(x+pi)确定相位,就能区分开了。

对雷达来说,拿到的信号是一路还是两路感觉关系不是那么大,对生命体征探测来说这个相位不重要,需要的是相位的变化趋势。

对于实数FFT来说,频谱的一半是没有意义的。

比如 c o s ( f t ) cos(ft) cos(ft),FFT并作FFTshift,得到的频谱范围是 − f s 2 -\frac{f_s}{2} 2fs f s 2 \frac{f_s}{2} 2fs,有用的只有0到 f s 2 \frac{f_s}{2} 2fs

对于复数FFT来说,频谱都是有意义的。

比如 e x p ( 2 f c v c t ) exp(\frac{2f_c v}{c}t) exp(c2fcvt),FFT并作FFTshift,得到的频谱范围是 − f s 2 -\frac{f_s}{2} 2fs f s 2 \frac{f_s}{2} 2fs,拿二维FFT来说,它就是复数FFT,如果速度为正,就落在0到 f s 2 \frac{f_s}{2} 2fs,如果速度为负,就落在 − f s 2 -\frac{f_s}{2} 2fs 到0。

而对于一维FFT,如果有两路信号,即 e x p ( 2 R α c t ) exp(\frac{2R\alpha}{c} t) exp(c2Rαt),虽然此时 − f s 2 -\frac{f_s}{2} 2fs 到0是有意义的,但因为表达式中距离R不可能是负的,所以只会落在0到 f s 2 \frac{f_s}{2} 2fs

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值