当前位置: 首页 > news >正文

LFM雷达实现及USRP验证【章节3:连续雷达测距测速】

第一章介绍了在相对速度为0时候的雷达测距原理

目录

1. LFM测速

1.1 雷达测速原理

1.2 Chrip信号测速

2. LFM测速代码实现

参数设置

仿真图像

matlab源码

代码分析


第一章介绍了在相对速度为0时候的雷达测距原理,第二章介绍了基于LFM的雷达测距原理及其实现,但是存在相对运动时,无法得到目标物体的多普勒信息,进而无法计算目标物体的速度。本章将在第二章的基础上,实现连续LFM波形的雷达测距测速。

该笔记参考资料:Radar测距及测速原理(2)——快速Chirp序列方法推导及实际应用 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/77500626

(114条消息) 线性调频(LFM信号)脉冲压缩雷达matlab仿真- 脉冲压缩 测距 测速 距离速度三维像(附matlab代码)_格桑蓝莲的博客-CSDN博客https://blog.csdn.net/weixin_44566643/article/details/107508520

1. LFM测速

1.1 雷达测速原理

通常来说,我们可以通过确定电磁波传播的时间来估算距离,通过多普勒效应产生的频率偏移来估算相对速度。但实际使用中我们会发现,对于没有经过调制的连续波谱(Continuous Wave),我们只发出相同的正弦或余弦信号,接收到的波也是呈周期性变化的,所以我们无从知道从发出到接受到底经过了多少个波长,从而无法确定信号从发出到接受所经历的时间(time of flight),也就无法测算距离。

于是,我们引入了线性调频LFM,使发出信号的频率随时间处于不断的变化中。LFM雷达在扫频周期内发射频率变化的连续波,被物体反射后的回波与发射信号有一定的频率差,通过测量频率差可以获得目标与雷达之间的距离信息。

第一章讨论了相对速度为0的情况,现考虑存在相对运动速度v_{r},当存在相对速度(正值表示远离,负值表示靠近),距离R会随着时间进行变化,当相对速度 v_{r}>0,R不断增大,故f_{b}也不断变大;当相对速度 v_{r}<0,R不断减小,故f_{b}也不断减小。因此当目标物同观测点有相对运动时,多普勒频偏也要放在考虑之中,发出及接受的信号频率变化变成如下图所示:

为了简化模型,且考虑到信号从发出到接收所经历的时间极短,加速度不变,目标物体相对速度几乎不变,信号频率变化如下所示:

蓝色表示原始发射波形,虚线的红黄两线表示接收到的不同回波信号,因为目标物体存在相对速度,接收到的回波信号在原始信号的基础上不但右移(时延)如黄虚线所示,同时存在上下移动(频移f_{D})如红虚线所示,具体解释如下: 

1.2 Chrip信号测速

结合第一章节以及本章前面内容,雷达测距测速的基本原理相信各位已经明白,现在将基本原理与LFM相结合,通过缩短每一个Chrip信号的频扫时间,使得在每一个Chrip时间内,相对速度基本保持不变(降低相对速度带来的影响)。此时,可以将每一个Chrip信号看成一个准静态情况(一个Chirp中相对速度为0,相对距离R不变,从而不考虑多普勒效应),从而比较容易的确定一个Chirp中的相对距离R。但是因为视为准静态过程,我们无从得知相对速度的值,因此,我们需要发出很多个连续相同的Chirp(Chirp序列)来确定相对速度,如下图:

如图所示,很多个Chirp组成了一个”Sequence“,总时间用t_{seq} 表示。在每个Chirp中,相对距离R被视为定值,因此,在一个Chirp序列中,R是以离散值表示出来的,每一个Chirp给出一个R,这里将离散的相对距离序列称为Range Cells。我们假设总共发出N个相同Chirp,那么从第0到第N-1个Chirp的扫频周期及扫频带宽相等均为t_{c}f_{c}

为了得到每个Chirp的相对距离R,我们首先要得到每个Chirp中的差频(beat frequency),因此,我们将每一个Chirp进行采样,共得到k个采样值。利用快速傅里叶变换(FFT)得出每个Chirp中的f_{b}值,从而得到相对距离R。因为这里的FFT之后得到的是距离,所以在这里称为“Range-FFT"。经过FFT后,对于每个Chirp我们得都到了k个频点(frequency bins),其也对应着测量相对距离R的分辨率。

 由于在一个测量序列t_{seq}中,经历的时间较短,我们假设其相对速度是不变的,不存在加速度。并且,相对速度可由R的变化求出,而R又可以由差频得到,因此,我们就可以利用上一步Range-FFT得出的一个序列中各个Chirp的f_{b}的变化来求相对速度。

在上一步中,由FFT得到的f_{b}是一个复数,由于t_{seq}极短,所以f_{b}的变化也很小,从而不足以使得不同Chirp得到的相对距离R跳跃到不同的Range cells中(FFT后,幅值最大的序号不变),但其变化还是存在的。其结果可以在复频域中表示出来:在一个测量序列中,f_{b}在复频域中旋转,其旋转的频率即为相对速度v_{r}的标尺!f_{b}再进行FFT,可以得到其变化的频率,从而得到相对速度。因为这里的FFT之后得到的是相对速度,所以我们这里称为“Speed-FFT”

由于每个Chirp可以得到一个相对距离R,所以相对距离的分辨率为:

\Delta R=\frac{c_{0}}{2f_{c}}

而在一个序列中我们假设相对速度不变,因此相对速度的分辨率为: 

\Delta v_{r}=\frac{c_{0}}{2f_{s}t_{seq}}

注意:公式中各个物理量的表示可能与我们仿真所使用到的表示不同,如f_{c}在仿真中用带宽表示。

2. LFM测速代码实现

  • 参数设置

参数设置参数含义
fc载波频率4GHz
Fs采样率为200MHz(USRP最大采样率受限)
Ts采样周期Ts=1/FS=5ns
BB=0.4Fs=80MHz(满足奈奎斯特带宽)
Tp一个Chrip信号的时宽10us,Tp=10e-6
c光速,设置为3e8
PRF每秒脉冲重复频率为200
Tr脉冲重复周期等于1/PRF=5ms
lamda波长等于光速/载波频率=75cm(厘米波波段)
Rmax受到采样时间的限制Rmax = c/2*16*t,t为采样时间
R_resolution距离分辨率=光速/两倍波长=c/(2B)=1.875m
N_pulse发射脉冲个数num_pulse=50
t采样时间t = 0:1/Fs:Tp,采样时间,会决定最大检测距离
N_samples采样点数N_samples=N_time/Fs
  • 仿真图像

第一个回波信号的距离幅度谱

测距(Range FFT)

测距测速三维图像
  • matlab源码

%==========================================================================
%%   连续脉冲LFM雷达测距测速
%%   完美实现,没有bug
% matlab2021b
%==========================================================================
clear;clc;close all;
%% LFM参数设置
fc = 4e9;               %载波频率
PRF = 2000;               %脉冲重复频率
Tr = 1/PRF;             %脉冲重复周期
B = 80e6;               %带宽
Fs = 2.5*B;             %采样频率
Ts = 1/Fs;              %采样时间
Tp = 10e-6;             %脉宽
c = 3e8;                
lamda = c/fc;           %载波波长
Kr = B/Tp;               %调频斜率
N_pulse = 50;           %脉冲个数(个数不能太少)
t = 0:1/Fs:Tp;        %采样时间
N_samples = length(t);   %采样点个数
N_targets= 5;           %目标物体个数
Rmax = c/2*1*Tp;       %最大检测距离(受到采样时间的限制,采样时间为16Tp)
Vmax = lamda*PRF/2;     %目标最大速度,最大测速范围满足在第一盲速之内
R_targets = [1000,230,680,860,145];%物体的距离随机生成
RCS = 10*(exp(1i*2*pi*rand(1,N_targets)));%目标物体RCS,幅度为10,相位在(0,2pi)之间随机分布
V_targets = Vmax*((rand(1,N_targets))/2);%目标物体速度%% 接收矩阵sr计算
sr = zeros(N_pulse,N_samples);%sr的每一行表示一个回波信号所含的采样点,一共有50行不同回波信号构成
for i = 1:N_pulsedelay = (i-1)*Tr;   %发送第i个Chrip信号时相对初始时间的时延sr_row = 0;% 内层for循环,一个目标一个目标来研究,对应每一个回波脉冲是由每一个目标回波之和组成for k=1:N_targetstao=2*(R_targets(k)-V_targets(k).*(delay+t))/c;   %在当前时刻,雷达信号往返的时间(目标物体在运动,距离在变化)sr_temp=RCS(k).*rectpuls(t-tao-Tp/2,Tp).*exp(-1j*2*pi*fc*tao+1j*pi*Kr.*(t-tao-Tp/2).^2);sr_row=sr_row+sr_temp;end% 外层for循环,不同的脉冲,对应的delay是不同值,再代入来计算回波sr(i,:)=sr_row;
end
R_range = c*t/2;    %在采样时间内,距离的范围
%% 脉冲压缩
% 参考信号st
st=rectpuls(t-Tp/2,Tp).*exp(1i*pi*Kr*(t-Tp/2).^2);%时域参考信号(将原始信号右移Tp/2)
stf=conj(fft(st));%匹配滤波器的频域特性
for i=1:N_pulsesr_mf(i,:)=ifft(fft(sr(i,:)).*stf);  %分别对每一行脉冲压缩 频域脉冲压缩(匹配滤波mf)          
end%% 图像输出
%----------------------------测距(Range FFT)------------------------------
% 第一个回波信号的距离幅度谱
figure(2);
plot(t*c/2,abs(sr_mf(1,:)))                       
title('第一个回波信号的距离幅度谱');
%----------------------------测速(Speed FFT)------------------------------
sr_speed=fft(sr_mf,[],1);
V=linspace(0,PRF,50)*lamda/2;% 尝试着画一下三维图
figure(4)
mesh(R_range,V,abs(sr_speed)/max(max(abs(sr_speed))));
xlabel('距离/m'); 
ylabel('速度/(m/s)');
zlabel('幅度/db');
title('目标距离速度信息一览');
  • 代码分析

 

相关文章:

LFM雷达实现及USRP验证【章节3:连续雷达测距测速】

第一章介绍了在相对速度为0时候的雷达测距原理 目录 1. LFM测速 1.1 雷达测速原理 1.2 Chrip信号测速 2. LFM测速代码实现 参数设置 仿真图像 matlab源码 代码分析 第一章介绍了在相对速度为0时候的雷达测距原理&#xff0c;第二章介绍了基于LFM的雷达测距原理及其实现…...

COLMAP多视角视图数据可视化

这篇博文主要介绍多视角三维重建的实用工具COLMAP。为了让读者更快确定此文是否为自己想找的内容&#xff0c;我先用简单几句话来描述此文做的事情&#xff1a; 假设我们针对一个物体&#xff08;人&#xff09;采集了多个&#xff08;假设60个&#xff09;视角的照片&#xff…...

2023年全国最新高校辅导员精选真题及答案36

百分百题库提供高校辅导员考试试题、辅导员考试预测题、高校辅导员考试真题、辅导员证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 92.校园文化形成与发展的主要影响因素有&#xff08;&#xff09; A.学校的领导与管理活…...

ThreeJS-全屏和退出全屏、自适应大小(五)

下载新得组件 npm install gsap -S 新引入 import gsap from gsap //动画控制 代码&#xff1a; <template> <div id"three_div"> </div> </template> <script> import * as THREE from "three"; import {OrbitControls } f…...

等级保护2.0要求及所需设备清单

等级保护的工作流程包括定级、备案、建设整改、等级测评&#xff0c;核心思想在于建立“可信、可控、可管”的安全防护体系&#xff0c;使得系统能够按照预期运行&#xff0c;免受信息安全攻击和破坏。 三级等保要求及所需设备 三级等级保护指标项&#xff1a; 物理访问控制…...

【大数据之Hadoop】六、HDFS之NameNode、Secondary NameNode和DataNode的内部工作原理

NN和2NN的内部工作原理 对于NameNode的存放位置&#xff1a; 内存中&#xff1a;好处&#xff1a;计算快 坏处&#xff1a;可靠性差&#xff0c;断电后元数据会丢失 磁盘中&#xff1a;好处&#xff1a;可靠性搞 坏处&#xff1a;计算慢 内存磁盘中&#xff1a;效率低 所以设…...

小黑子—Java从入门到入土过程:第四章

Java零基础入门4.0Java系列第四章1. 顺序结构2. if语句3. switch 语句3.1 default的位置和省略3.2 case 穿透3.3 switch 新特性 &#xff08;jdk12开始&#xff09;4. for 循环5. while 循环6.do...while 循环7. 无限循环8. 跳转控制语句9. 练习9.1 逢七过9.2 平方根9.3 求质数…...

数据库原理及应用(四)——SQL语句(2)SQL基础查询以及常见运算符

一、SELECT语句基础 数据库查询是数据库的核心操作&#xff0c;SELECT 语句用于从数据库中选取数据。 SELECT [ALL/DISTINCT] <列名>,<列名>...FROM <表名或视图名>,<表名或视图名>[WHERE <条件表达式>][GROUP BY <列名1> [HAVING <条…...

(算法基础)Floyd算法

适用情景Floyd算法适用于多源汇最短路&#xff0c;也就是他问你比如说从3号点到6号点的最短路距离&#xff0c;比如说从7号点到20号点的最短路距离&#xff0c;而不是单源最短路&#xff08;从1号点到n号点的最短路距离&#xff09;。在这个算法当中允许负权边的存在。但在求最…...

SQL语法:浅析select之七大子句

Mysql版本&#xff1a;8.0.26 可视化客户端&#xff1a;sql yog 目录一、七大子句顺序二、演示2.1 from语句2.2 on子句2.3 where子句2.4 group by子句2.4.1 WITHROLLUP&#xff0c;加在group by后面2.4.2 是否可以按照多个字段分组统计&#xff1f;2.4.3 分组统计时&#xff0c…...

中国人民大学与加拿大女王大学金融硕士——去有光的地方,并成为自己的光

光是我们日常生活中一个重要的元素&#xff0c;试想一下如果没有光&#xff0c;世界将陷入一片昏暗。人生路亦是如此&#xff0c;我们从追逐光、靠近光、直到自己成为光。人民大学与加拿大女王大学金融硕士项目是你人生路上的一束光吗 渴望想要成为一个更好的人&#xff0c;就…...

Python数据结构与算法篇(五)-- 二分查找与二分答案

1 二分法介绍 1.1 定义 二分查找又称折半查找、二分搜索、折半搜索等&#xff0c;是一种在静态查找表中查找特定元素的算法。 所谓静态查找表&#xff0c;即只能对表内的元素做查找和读取操作&#xff0c;不允许插入或删除元素。 使用二分查找算法&#xff0c;必须保证查找表中…...

小游戏也要讲信用

当下&#xff0c;小游戏鱼龙混杂&#xff0c;官方为能更好地保护用户、开发者以及平台的权益&#xff0c;近日宣布7月1日起试行小游戏主体信用分机制。 主体信用分是什么呢&#xff1f;简单来说&#xff0c;这是针对小游戏主体下所有小游戏帐号行为&#xff0c;对开发者进行评…...

贪心算法11

1. 贪心算法的概念 所谓贪心算法是指&#xff0c;在对问题求解时&#xff0c;总是做出在当前看来是最好的选择。也就是说&#xff0c;不从整体最优上加以考虑&#xff0c;他所做出的仅是在某种意义上的局部最优解。 贪心算法没有固定的算法框架&#xff0c;算法设计的关键是贪心…...

【并发编程】JUC并发编程(彻底搞懂JUC)

文章目录一、背景二、什么是JUC&#xff1f;三、JUC框架结构四、JUC框架概述五、JUC中常用类汇总六、相关名词进程和线程进程线程创建线程的几种常见的方式并发和并行用户线程和守护线程七、synchronized 作用范围&#xff1a;八、Lock锁(重点)什么是 Lock锁类型Lock接口lock()…...

Compose 动画 (七) : 高可定制性的动画 Animatable

1. Animatable和animateDpAsState的区别是什么 Animatable是Android Compose动画的底层API&#xff0c;如果我们查看源码&#xff0c;可以发现animateDpAsState内部是调用的animateValueAsState&#xff0c;而animateValueAsState内部调用的是Animatable animateDpAsState比A…...

vue3组件传值

1.父向子传值 父组件 引入子组件 import Son from ./components/Son.vue 设置响应式数据 const num ref(99) 绑定到子组件 <Son :num"num"></Son> 子组件 引入defineProps import { defineProps } from vue; 生成实例接收数据 type设置接收类…...

小白开发微信小程序00--文章目录

一个小白&#xff0c;一个老牛&#xff0c;空手能不能套白羊&#xff0c;能不能白嫖&#xff1f;我告诉你&#xff0c;一切都so easy&#xff0c;这个系列从0到106&#xff0c;屌到上天&#xff0c;盖过任何一个&#xff0c;试问&#xff0c;网上讲微信小程序开发的&#xff0c…...

随手记录第九话 -- Java框架整合篇

框架莫过于Spring了&#xff0c;那就以它为起点吧。 本文只为整理复习用&#xff0c;详细内容自行翻看以前文章。 1.Spring 有人说是Spring成就Java&#xff0c;其实也不是并无道理。 1.1 Spring之IOC控制反转 以XML注入bean的方式为入口&#xff0c;定位、加载、注册&…...

电影《铃芽之旅》观后感

这周看了电影《铃芽之旅》&#xff0c;整部电影是新海诚的新作。电影讲述的是女主铃芽为了关闭往门&#xff0c;在日本旅行中&#xff0c;遭遇灾难的故事。 &#xff08;1&#xff09;往昔记忆-往昔之物 电影中&#xff0c;有很多的“往门”&#xff0c;换成中国的话说&#xf…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

19c补丁后oracle属主变化,导致不能识别磁盘组

补丁后服务器重启&#xff0c;数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后&#xff0c;存在与用户组权限相关的问题。具体表现为&#xff0c;Oracle 实例的运行用户&#xff08;oracle&#xff09;和集…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

是否存在路径(FIFOBB算法)

题目描述 一个具有 n 个顶点e条边的无向图&#xff0c;该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序&#xff0c;确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数&#xff0c;分别表示n 和 e 的值&#xff08;1…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

springboot 日志类切面,接口成功记录日志,失败不记录

springboot 日志类切面&#xff0c;接口成功记录日志&#xff0c;失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

Python的__call__ 方法

在 Python 中&#xff0c;__call__ 是一个特殊的魔术方法&#xff08;magic method&#xff09;&#xff0c;它允许一个类的实例像函数一样被调用。当你在一个对象后面加上 () 并执行时&#xff08;例如 obj()&#xff09;&#xff0c;Python 会自动调用该对象的 __call__ 方法…...