干货 | 利用MATLAB实现FMCW雷达的距离多普勒估计

利用Chirp序列的FMCW(Frequency Modulated Continuous Wave)毫米波雷达在汽车防撞等领域得到了广泛的应用。这篇文章基于Matlab对该Chirp序列的Range Doppler处理进行了仿真,并给出了相关的实现代码。

下面的图中给出了大致的流程,首先我们会生成接收得到的差频信号,然后采用了二维FFT进行了Range-Doppler,也就是距离多普勒处理,最后给出了经过二维FFT处理后的RDM(Range Doppler Map)。

image

在接收得到的差频信号的第一个周期的信号,将其表示为复指数形式为

image

其中,B为扫频带宽,f0为起始频率,N表示一个周期的采样点数,Rv为目标的距离和速度信息。

上面的式子已经给出了该FMCW雷达在快时间维度的接收差频信号的表示,在此基础上,可以进一步推出快时间维度和慢时间维度上接收差频信号的表示

image

利用上面这两个式子,即可得到含有目标距离和速度信息的接收差频信号。

%% generate receive signal

S1 = zeros(L,N);
for l = 1:L
    for n = 1:N
        S1(l,n) = exp(1i*2*pi*(((2*B*(tarR(1)+tarV(1)*T*l)/(c*T)+(2*f0*tarV(1))/c)*T/N*n+((2*f0)*(tarR(1)+tarV(1)*T*l))/c)));
    end
end

S2 = zeros(L,N);
for l = 1:L
    for n = 1:N
        S2(l,n) = exp(1i*2*pi*(((2*B*(tarR(2)+tarV(2)*T*l)/(c*T)+(2*f0*tarV(2))/c)*T/N*n+((2*f0)*(tarR(2)+tarV(2)*T*l))/c)));
    end
end

sigReceive = S1+S2;

到这里,我们已经得到了含有目标状态信息的接收信号。

在进行距离维的FFT之前,为了减小泄露加了window,后面的多普勒维在做FFT之前同样加了window,了解了这些后,对前面构造的接收信号做距离维的FFT,就可以得到目标的距离信息,我们会看到距离维的FFT结果中会存在一些峰值,这些峰值所在的位置就是目标的位置,当然,目标的峰值位置与目标的实际位置之间存在一个转换关系。

image

利用距离分辨率就可以将距离FFT得到的峰值位置与目标的实际位置联系起来,将峰值位置转换为目标的实际距离值。

%% range fft processing

sigRfft = zeros(L,NumRFFT);
for ii = 1:L
    sigRfft(ii,:) = fft(sigRWin(ii,:),NumRFFT);
end

同样的在多普勒维度进行FFT可以得到目标的速度信息,和距离维的FFT结果一样,在多普勒维度内的峰值位置与目标的实际速度之间也存在着一个转换关系。

image
%% doppler fft processing

sigDfft = zeros(NumDFFT,NumRFFT);
for ii = 1:NumRFFT
    sigDfft(:,ii) = fft(sigDWin(:,ii),NumDFFT);
end

这个程序中,我们设置了两个目标,它们的距离和速度分别为

tarR = [50; 90];                 % Target range
tarV = [3; 20];                  % Target velocity

最后简单运行一下,可以得到一个RDM图

image

可以看到,对生成的接收信号的距离-多普勒处理得到两个峰值,利用距离分辨率和速度分辨率可以得到这两个目标的实际距离和速度信息。

image
image

题图:Snapshot_Factory,from the Pixabay.

你可能感兴趣的:(干货 | 利用MATLAB实现FMCW雷达的距离多普勒估计)