基于FMCW毫米波雷达的车载目标检测与多普勒分析系统
项目简介
本项目不仅仅是一个雷达信号处理的简单演示,而是构建了一个完整的、底层物理层面的77GHz调频连续波(FMCW)雷达仿真链路。系统旨在模拟自动驾驶场景下的环境感知过程,通过MATLAB代码实现了从波形参数设计、射频信号建模、多目标回波生成、二维信号处理(2D-FFT)到恒虚警率(CFAR)目标检测的全流程。
该仿真器通过直接合成混频后的拍频信号(Beat Signal)优化了内存占用,并采用完全矩阵化的运算方式提高了仿真效率,能够精确模拟并在距离-多普勒谱(Range-Doppler Map, RDM)上分离不同距离和不同相对速度的目标。
主要功能特性
- 自动波形参数设计:根据用户设定的最大探测距离(200m)、距离分辨率(1m)、最大速度(100m/s)等指标,自动计算FMCW波形的带宽(Bandwidth)、扫频斜率(Slope)和Chirp周期。
- 多目标与物理信道模拟:支持设置多个具有不同距离、速度和雷达散射截面(RCS)的目标;基于雷达方程模拟信号幅度,并注入加性高斯白噪声(AWGN)以模拟真实信噪比环境。
- 高效信号生成:采用矩阵化操作直接生成混频后的中频(IF)信号,包含了快时间(Fast-time)的距离信息和慢时间(Slow-time)的多普勒信息。
- 完整的雷达信号处理链路:
*
Range-FFT:距离维加汉宁窗(Hanning Window)以抑制旁瓣,转换时域数据为距离谱。
*
Doppler-FFT:慢时间维处理,提取相位变化以计算速度,并进行零频平移。
- 自适应目标检测 (2D CA-CFAR):在距离-多普勒图上实施二维单元平均恒虚警率检测,动态计算局部噪底,有效剔除杂波并锁定真实目标。
- 多维数据可视化:提供时域信号、一维距离像、二维距离-多普勒热力图以及CFAR检测后的三维结果展示。
系统要求
- MATLAB: 建议R2018b及以上版本(代码主要依赖基础矩阵运算及信号处理工具箱)。
- 工具箱: Signal Processing Toolbox(主要用于
hanning窗函数和FFT操作)。
核心算法与代码实现细节
本项目核心逻辑包含在 main.m 文件中,以下是各模块的详细实现分析:
1. 系统参数配置与波形设计
代码首先定义了77GHz的车载雷达载频。不同于固定参数,系统根据高层设计指标反向计算底层参数:
- 带宽 (B):由距离分辨率决定,$B = c / (2 cdot Delta R)$。
- Chirp周期 (T_chirp):为了满足最大探测距离的奈奎斯特采样要求,代码使用了系数5.5来确保足够的采样时间。
- 采样点数:设定每个Chirp采样1024点 ($N_r$),共发射128个Chirp ($N_d$) 用于多普勒累积。
2. 信号生成模型 (Beat Signal Generation)
代码没有分别生成发射波(Tx)和接收波(Rx)再进行混频(这样会极大地消耗采样率资源),而是
直接生成混频后的拍频信号 (Beat Signal)。
- 数学模型:$S_{if}(t, tau) = A cdot cos(2pi (f_r t + f_d tau))$。
* $f_r$ (拍频频率) 由距离决定:$2 cdot Slope cdot R / c$。
* $f_d$ (多普勒频率) 由速度决定:$2 cdot v / lambda$。
- 矩阵化实现:代码构建了快时间矩阵
t_matrix 和慢时间矩阵 tau_matrix,通过矩阵点乘一次性叠加所有目标的信号,最后叠加高斯白噪声。
3. 给定目标的场景设置
在代码中预设了三个典型目标用于验证算法:
- 目标1:距离110m,速度-20m/s(靠近雷达)。
- 目标2:距离80m,速度30m/s(远离雷达)。
- 目标3:距离50m,速度0m/s(静止)。
4. 2D-FFT 处理链路
* 对
[Nr, Nd] 的数据矩阵沿第一维度(采样点)进行FFT。
* 预先应用了Hanning窗以减少频谱泄露。
* 结果截取单边谱并归一化。
* 对Range-FFT的结果沿第二维度(Chirp序列)进行FFT。
* 使用
fftshift 将零频分量移至频谱中心,使得静止目标位于中间,正负速度分列两侧。
* 最终生成对数刻度的幅度谱
RDM_dB。
5. 2D CA-CFAR 检测器
为了从RDM中提取目标,代码实现了二维单元平均(Cell Averaging)CFAR算法:
*
测试单元 (CUT):当前待检测点。
*
保护单元 (Guard Cells):紧邻CUT的区域,避免目标能量泄漏到训练单元。
*
训练单元 (Training Cells):外围区域,用于估计由于噪声产生的干扰水平。
1. 遍历RDM谱图(跳过边缘)。
2. 计算训练单元内的噪声平均功率(全窗口总能量减去保护区能量,再归一化)。
3. 将噪声水平对数化并加上偏移阈值
offset_dB (设为10dB)。
4. 如果 CUT 的信号强度 > 阈值,标记为1(检测到目标),否则标记为0。
- 检测结果:生成一个掩膜矩阵
CFAR_Map,并据此过滤原始RDM,仅保留检测到的峰值。
使用方法
- 确保MATLAB安装路径中包含信号处理工具箱。
- 打开MATLAB,将工作目录切换至项目文件夹。
- 直接运行
main.m 脚本。 - 程序将自动执行所有仿真步骤,控制台会打印系统参数和检测结果报告。
- 程序运行结束后,会弹出一个包含四个子图的图形窗口。
仿真结果展示
运行脚本后,系统生成的图形窗口包含以下内容:
- 时域混频信号:展示叠加了噪声的原始拍频波形片段。
- Range FFT:第一个Chirp的距离维频谱,可初步观察目标的距离分布。
- Range-Doppler Map (原始):二维热力图,横轴为速度,纵轴为距离,直观显示目标的能量聚集。
- CFAR检测结果:经过CFAR算法过滤后的三维曲面图,仅保留了超过噪底阈值的目标峰值,背景噪声被有效抑制。
控制台(Command Window)将输出真实的参考目标信息以及通过算法解算出的目标列表,用户可直接对比以验证精度。