回波3DFFT处理(测距、测速、测角)
欢迎加入毫米波雷达技术交流群,647796034
本文主要针对TI 毫米波雷达的测距、测速、测角的基本方法——3DFFT处理进行简单介绍,并提供MATLAB处理程序,分析3DFFT处理结果。
1、测距、测速
毫米波雷达测距主要是通过检测回波时延来计算目标距离;测速是通过检测目标运动产生的多普勒频移来计算目标速度。TI的毫米波雷达采用LFMCW(Linear Frequency Modulated Continuous Wave,线性调频连续波)信号体制,其发射信号与回波示意图如上图所示。
(1)回波信号为发射信号的时延复本,而回波时延与差拍频率成线性关系,通过差拍频率即可计算回波时延,从而计算出目标距离(注意差拍频率包含了多普勒频移,测距时需要减去多普勒频移fd)。
(2)当目标运动时,回波信号不仅仅是发射信号的时延复本,还具有一定的多普勒频移(多普勒效应)。通过提取多普勒频移fd即可计算出目标速度。
2、测角
毫米波雷达测角的原理是相位法测角,如上图所示,回波到达不同RX天线的有d*sin(theta)的波程差(d为RX天线间距,theta为回波入射角度),导致不同RX天线的回波信号具有不同的相位差,通过提取RX相位差即可计算出目标角度。
因此,目标距离、速度、角度测量的问题则转化为频率估计的问题。
3、3DFFT处理
频率估计方法有很多,工程上主要采用FFT运算。针对毫米波雷达测距、测速、测角处理,工程上可采用3DFFT处理。将回波数据排列成3维矩阵(n_samples*n_chirps *n_RX),如下图所示,3DFFT即在3个维度上做3次FFT运算。
(1)距离FFT
对回波每一个chirp作1DFFT,得到距离-脉冲图。
(2)速度FFT
对距离FFT的结果在chirp维作1DFFFT,得到距离-多普勒图。提取2DFFT的峰值即可得到目标的差拍频率和多普勒频率。
(3)角度FFT
对多个RX的2DFFT结果在天线维作1DFFT,得到距离-多普勒-方位图。
4、MATLAB程序
采集数据设备:AWR1642+DCA1000EVM,测试场景为距离2m左右的三角锥目标(强散射金属目标)。
clear all;close all;clc;
%% 雷达参数(使用mmWave Studio默认参数)
c=3.0e8;
B=768e6; %调频带宽
K=30e12; %调频斜率
T=B/K; %调频周期
Tc=160e-6; %chirp总周期
fs=10e6; %采样率
f0=77e9; %初始频率
lambda=c/f0; %雷达信号波长
d=lambda/2; %天线阵列间距
n_samples=256; %采样点数/脉冲
N=256; %距离向FFT点数
n_chirps=128; %每帧脉冲数
M=128; %多普勒向FFT点数
n_RX=4; %RX天线通道数
Q = 180; %角度FFT
xx = 1; %第xx帧
%% 读取回波数据
fname='C:\ti\adc_data.bin';
fid = fopen(fname,'rb');
%16bits,复数形式(I/Q两路),4RX,1TX,有符号16bit,小端模式
sdata = fread(fid,xx*n_samples*n_chirps*4*1*2,'int16');
sdata = sdata((xx-1)*n_samples*n_chirps*4*1*2+1:xx*n_samples*n_chirps*4*1*2);
%% 1642+DCA1000
fileSize = size(sdata, 1);
lvds_data = zeros(1, fileSize/2);
count = 1;
for i=1:4:fileSize-5lvds_data(1,count) = sdata(i) + 1i*sdata(i+2); lvds_data(1,count+1) = sdata(i+1)+1i*sdata(i+3); count = count + 2;
end
lvds_data = reshape(lvds_data, n_samples*n_RX, n_chirps);
lvds_data = lvds_data.';
cdata = zeros(n_RX,n_chirps*n_samples);
for row = 1:n_RXfor i = 1: n_chirpscdata(row,(i-1)*n_samples+1:i*n_samples) = lvds_data(i,(row-1)*n_samples+1:row*n_samples);end
end
fclose(fid);
data_radar_1 = reshape(cdata(1,:),n_samples,n_chirps); %RX1
data_radar_2 = reshape(cdata(2,:),n_samples,n_chirps); %RX2
data_radar_3 = reshape(cdata(3,:),n_samples,n_chirps); %RX3
data_radar_4 = reshape(cdata(4,:),n_samples,n_chirps); %RX4
data_radar=[];
data_radar(:,:,1)=data_radar_1; %三维雷达回波数据
data_radar(:,:,2)=data_radar_2;
data_radar(:,:,3)=data_radar_3;
data_radar(:,:,4)=data_radar_4;
%% 3维FFT处理
%距离FFT
range_win = hamming(n_samples); %加海明窗
doppler_win = hamming(n_chirps);
range_profile = [];
for k=1:n_RXfor m=1:n_chirpstemp=data_radar(:,m,k).*range_win; %加窗函数temp_fft=fft(temp,N); %对每个chirp做N点FFTrange_profile(:,m,k)=temp_fft;end
end
%多普勒FFT
speed_profile = [];
for k=1:n_RXfor n=1:Ntemp=range_profile(n,:,k).*(doppler_win)'; temp_fft=fftshift(fft(temp,M)); %对rangeFFT结果进行M点FFTspeed_profile(n,:,k)=temp_fft; end
end
%角度FFT
angle_profile = [];
for n=1:N %rangefor m=1:M %chirptemp=speed_profile(n,m,:); temp_fft=fftshift(fft(temp,Q)); %对2D FFT结果进行Q点FFTangle_profile(n,m,:)=temp_fft; end
end
%% 绘制2维FFT处理三维视图
figure;
speed_profile_temp = reshape(speed_profile(:,:,1),N,M);
speed_profile_Temp = speed_profile_temp';
[X,Y]=meshgrid((0:N-1)*fs*c/N/2/K,(-M/2:M/2-1)*lambda/Tc/M/2);
mesh(X,Y,(abs(speed_profile_Temp)));
xlabel('距离(m)');ylabel('速度(m/s)');zlabel('信号幅值');
title('2维FFT处理三维视图');
xlim([0 (N-1)*fs*c/N/2/K]); ylim([(-M/2)*lambda/Tc/M/2 (M/2-1)*lambda/Tc/M/2]);
%% 计算峰值位置
angle_profile=abs(angle_profile);
peak=max(angle_profile(:));
[row,col,pag]=ind2sub(size(angle_profile),find(angle_profile==peak));
%% 计算目标距离、速度、角度
fb = ((row-1)*fs)/N; %差拍频率
fd = (col-M/2-1)/(M*Tc); %多普勒频率
fw = (pag-Q/2-1)/Q; %空间频率
R = c*(fb-fd)/2/K; %距离公式
v = lambda*fd/2; %速度公式
theta = asin(fw*lambda/d); %角度公式
angle = theta*180/pi;
fprintf('目标距离: %f m\n',R);
fprintf('目标速度: %f m/s\n',v);
fprintf('目标角度: %f°\n',angle);
下图为2DFFT的结果(2m的目标),x轴为距离,y轴为速度,z轴为信号强度。通过谱峰搜索找到峰值下标,即可换算成对应的距离、速度信息。谱峰搜索也即是目标检测,一般采用CFAR(Constant False Alarm Rate,恒虚警率)检测,上述程序仅计算了最大峰值的目标,可测单目标的情况。若要检测多目标的情况,需要进行CFAR检测处理。
AWR1642采集的ADC数据下载:
链接: 百度云盘链接
提取码: jarq
回波3DFFT处理(测距、测速、测角)相关推荐
- 3D-FFT测距测速测角实测数据处理之波形参数
前言:一直以来接触比较多的是雷达算法仿真,对于实测数据如何处理还是一脸懵的状态.这篇笔记将从最基本的波形参数含义讲起,到实测数据预处理,再到将算法应用在实测数据中.预计会分成3篇笔记.因为所学知识有限 ...
- 【MSP432电机驱动设计—下篇】霍尔编码器测车轮运行距离与M/T综合公式法测速概念
开发板型号为MSP432P401r 今日得以继续我的MSP432电赛速通之路,本篇使用MSP432编程学习霍尔编码器M/T公式法测速概念,最终实现用外部中断方式测得小车行走路程,文章学习讲解原理.附上 ...
- 【基于GD32E230的定时器级联M/T法电机测速】
前言 在有感电机控制中,获取电机转速是非常重要的步骤,转速获取越准确,控制电机时越方便,抛开霍尔不谈,这里讨论电机编码器. 目前常见的电机编码器按种类分为绝对值编码器和增量编码器,绝对值编码器相对较为 ...
- [解疑][TI]TI毫米波雷达系列(三):调频连续波雷达回波信号3DFFT处理原理(测距、测速、测角)
本文是经过参考多个文章并整理的,相关程序已经经过验证其可行性.在此感谢原文作者(文末有相关链接)的无私分享. 1.测距.测速 毫米波雷达测距主要是通过检测回波时延来计算目标距离:测速是通过检测目标运动 ...
- FMCW雷达测距、测速与测角
文章目录 1 FMCW雷达简介 2 测距原理 2.1 测距范围 2.2 距离分辨率 3 测速原理 3.1 测速范围 3.2 速度分辨率 4 测角原理 4.1 测角范围 4.2 角度分辨率 5 参考资料 ...
- 毫米波雷达、ADAS中的应用以及毫米波雷达的检测、测距、测速和角度测量
毫米波雷达的检测.测距.测速和角度测量 毫米波(Millimeter-Wave,缩写:MMW),是指长度在1~10mm的电磁波,对应的频率范围为30~300GHz.根据波的传播理论,频率越高,波长越短 ...
- LFM雷达实现及USRP验证【章节3:连续雷达测距测速】
第一章介绍了在相对速度为0时候的雷达测距原理 目录 1. LFM测速 1.1 雷达测速原理 1.2 Chrip信号测速 2. LFM测速代码实现 参数设置 仿真图像 matlab源码 代码分析 第一章 ...
- 史上最全 | 单目相机测距测速方法大盘点!
点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...
- 连续波调频测距matlab,基于三角波线性调频连续波雷达的高速目标测速测距方法与流程...
本发明涉及一种测速测距方法,具体涉及一种基于三角波线性调频连续波雷达的高速目标测速测距方法. 背景技术: 线性调频连续波(LFMCW)雷达是一种通过对连续波进行频率调制来获得距离和速度信息的雷达体制, ...
最新文章
- 如何检测出定制服务器中预装的恶意软件?
- 在 win10 环境下,设置自己写的 程序 开机自动 启动的方法
- 遭遇ORA-01200错误的原因及解决方法
- Hive到SparkSql
- 一个较完整的关键字过滤解决方案(上)
- 代码调用NullPointerException(NPE)
- 【渝粤教育】电大中专药剂学基础知识 (3)作业 题库
- 从UDP/TCP到HTTP/HTTP2,弄清楚网络层面上应该了解的知识。
- vb6引用vbRichClient5 下载对象 cDownloads 简单示例
- Spark Hive实现基于协同过滤的电影推荐(MovieLens数据集)
- Noisy machines: understanding noisy NNs and enhancing robustness to analog hardware errors
- matlab 比较两个函数,Matlab同时拟合两个函数 - 数学 - 小木虫 - 学术 科研 互动社区...
- 手写识别ocr java,OCR 指的是手写文字技术_学小易找答案
- 可道云个人网盘-Docker安装
- 解决No converter for [class java.util.ArrayList] with preset Content-Type ‘null‘问题
- 如何才能成为一个程序员
- 高等代数--多项式与线性空间
- C语言顺序程序设计练习题-求圆柱体的相关信息
- 南瓜书《动手机器学习公益训练营》-lesson1
- OpenPR开源代码项目