基于USRP的FMCW雷达¶
0. 前言¶
软件无线电除了能用来通信,当然也能用来感知。我们的目标是设计某种波形,使它能有效地携带环境信息,然后想办法从相位、幅度里把信息提取出来。FMCW雷达是一种常用的雷达波形,它会发射一个chirp波形并收到一个delay后的回波,通过两者混频形成的拍频来计算距离。
本文会介绍基于软线无线电的FMCW雷达,通过仿真和USRP实测验证可行性。
2. FMCW雷达的基础原理¶
TI的这份文档是个很好的参考资料[1]。想象一个固定频率的正弦波,通过测量回波的delay推算目标的距离。但是这有两个问题,首先,这个delay是纳秒级的,难以直接测量,然后,如果有不止一个目标,几个回波可能会互相叠加难以分辨。FMCW解决了这些问题,把直接测量时间的delay转换成测量拍频的频率,并用拍频的频率来区分不同目标。

在一个chirp之内做FFT能得到拍频频率即距离信息,称为“快”维度,如果连续发送好几个chirp,还能在chirp之间做FFT得到速度信息,称为“慢”维度或多普勒维度。简而言之,“快”维度得到距离,“慢”维度得到速度。chirp的带宽决定距离分辨率,一帧之内连续chirp的总时长决定速度分辨率。
FMCW雷达原本在车载毫米波雷达上有广泛应用,因为毫米波频段的可用带宽很宽,能达到十几GHz的带宽和厘米级的距离分辨率。由于USRP最高只支持6GHz频率和56MHz带宽,分辨率自然差很多,但是用在室内环境也是够了。
3. 仿真¶
在GNU Radio里,用Signal Source产生一个锯齿波,作为控制电压去控制VCO,从而得到chirp信号。再用Delay模块模拟信号来回所需的时间,delay之后和delay之前的chirp混频得到拍频信号。这里所用的参数是,chirp带宽10MHz,chirp周期40us,基带采样率1.6MHz。

每个chirp会有40us * 1.6MHz = 64个采样点,拍频的频率分辨率是1.6MHz/64 = 25kHz,对应的距离分辨率是\(R_{res}=\frac{2cf_{res} T_{chirp}}{BW}=\frac{2\times 3\times 10^8\times 25kHz\times 40us}{10MHz} = 15m\)。做距离FFT的时候可以补0使FFT的结果更平滑,但不会使距离分辨率变得更小,因为距离分辨率其实只和chirp带宽有关而\(f_{res}\)和\(T_{chirp}\)会抵消。实际上,
接着,假设每32个chirp是一个frame,这样每个frame会有64 * 32 = 2048个采样点。在流图里,有FFT模块用来看频谱,同时我还把采样点2048个一组通过UDP发给我用Python写的另一个接收端,接收端会集齐2048个点以后做一次2D FFT。

在仿真设定里,delay模块delay一个采样周期,相当于目标距离\(\frac{t_d}{2c}=\frac{\frac{1}{1.6MHz}}{2\times 3\times 10^8 m}=93.75m\),拍频频率\(\frac{t_d BW}{T_c}=\frac{\frac{10MHz}{1.6MHz}}{40us}=156.25kHz\)。结果如图,1D和2D频谱里都能看到156kHz左右有个峰值,代表那里有目标,和计算是吻合的。

4. 自干扰¶
挖坑 实际的USRP收发机 self interference cancellation
参考资料¶
GNU Radio + Radar https://blog.csdn.net/weixin_45010335/article/details/135487066 https://blog.csdn.net/RICEresearchNOTE/article/details/151315467
OFDM Radar https://blog.csdn.net/qq_41839588/article/details/138617244
USRP HW https://www.ettus.com/wp-content/uploads/2019/01/b200-b210_spec_sheet.pdf
SDR + Radar https://pubs.gnuradio.org/index.php/grcon/article/download/67/49/