毫米波雷达原理(含代码)(含ARS548 4D毫米波雷达数据demo和可视化视频)

news2024/10/5 21:21:06

毫米波雷达原理

  • 1. 传统毫米波雷达
    • 1.1 雷达工作原理
    • 1.2 单目标距离估计
    • 1.3 单目标速度估计
    • 1.4 单目标角度估计
    • 1.5 多目标距离估计
    • 1.6 多目标速度估计
    • 1.7多目标角度估计
    • 1.7 总结
  • 3. FMCW雷达数据处理算法
  • 4. 毫米波雷达的目标解析(含python代码)
  • 5. ARS548 4D毫米波雷达数据demo(含python代码)
    • 5.1 4D毫米波雷达原理
    • 5.2 ARS5484D毫米波雷达数据解析demo视频
    • 5.3 ARS548 4D毫米波雷达&速腾M1激光雷达&balser相机 多模态数据集(含标注,已对齐)

1. 传统毫米波雷达

毫米波雷达的工作原理可以简单理解为:通过发射信号的接受信号之间的信息差,完成目标的测距和测速。另外受限与雷达的特性,速度分辨率和距离分辨率有对应的上限,也即可以区分的距离值和速度值有上限,比如可以区分出10m和15m距离的目标,但是10m和10.001m的两个目标无法分别。另外雷达也可以完成目标所在方位的估计,也就是角度估计,通过一系列计算完成目标方位角的计算(传统雷达而言,如果是4D毫米波雷达的话,应该还有俯仰角)。

1.1 雷达工作原理

FMCW(Frequency Modulated Continuous Wave)雷达是一种常用于测距和速度的雷达系统。它的工作原理相对复杂,但可以简单描述如下:

  • 频率调制: FMCW雷达通过周期性地调制发射信号的频率来工作。它的发射信号是一个频率连续变化的波形,通常是线性调频的信号。这意味着信号的频率随时间线性变化,比如从一个起始频率到一个结束频率,然后再从结束频率返回起始频率,形成一个周期。
  • 发射与接收: FMCW雷达将这种调制的信号发送出去,然后等待信号被目标物体反射回来。目标物体反射回来的信号会包含与目标物体的距离和速度相关的信息。
  • 混频与解调: 接收到反射信号的雷达会将其与本地生成的发射信号进行混频。这个过程可以理解为将两个信号相乘,得到一个频率差信号,这个频率差信号包含了目标物体距离和速度的信息。
  • 信号处理: 混频后得到的信号经过信号处理,通常是通过FFT(快速傅里叶变换)或其他频域分析技术来提取出目标物体的距离和速度信息。通过分析混频信号的频率分量,可以确定目标物体的距离(基于延迟时间)和速度(基于频率变化)。
    在这里插入图片描述
    在这里插入图片描述
    从上图右下角的图可以看出,该款雷达的起始频率 77 G H z 77GHz 77GHz最大频率 81 G H z 81GHz 81GHz带宽 B = 4 G H z B = 4GHz B=4GHz,一个频率变化时间周期为 T c = 40 μ s T_c = 40\mu s Tc=40μs频率变化率 S = B / T c = 100 M H z / μ s S = B/T_c = 100MHz/ \mu s S=B/Tc=100MHz/μs,一个频率变化周期可以记为一个Chirp。请牢记这几个概念,之后的距离速度角度估计,以及分辨率的计算都依赖这几个量。

另外,需要强调的一点是,什么是脉冲信号。脉冲信号是一个频率随时间变化的信号,上图中的信号是个频率线性变化的脉冲信号(上图左下角就是脉冲信号的波形图),频率在一个Chirp内从77GHz递增到81GHz。也可以是非线性变化,这个要取决于雷达具体的特性。正是因为了频率和时间的相关性,我们才能从RX信号和TX信号之间的差异中得到关于速度和距离的信息。

在这里插入图片描述
如上图右下角,发射了一个TX信号,但是仅得到了一个来自目标的回波信号RX,这说明只有一个目标。并且观察到,从RX信号被接收以后,发射信号的频率与回波信号(接收信号)的频率差是定值。如果这个目标是静止的,那么雷达每隔chirp时间发送的Tx信号与返回的Rx信号构成的IF信号的相位也是一样的(因为信号的波形图一形状一样,物体静止,RX与Tx之间仅有一个固定的相位偏移,不同周期的Tx和Rx的相位偏移量固定,两个chirp周期的IF信号间相位差为0)。通过两者的频率差,可以得到时间差,进而得到距离值。如果目标不静止,通过相邻的时间周期得到的IF信号的相位差,可以计算目标的速度。

1.2 单目标距离估计

由于发射信号的频率是已知的,因此可以通过测量反射信号与发射信号的频率差来确定目标物体的距离。频率差越大,延迟时间越长,意味着目标物体距离越远。
在这里插入图片描述
如上图,通过Tx和Rx信号的频率差,可以得出该目标是个静止目标(因为频率差固定),通过信号传播速度 c c c和频率差 ∇ f \nabla f f,推出目标距离为
r = τ c 2 = ∇ f c 2 S r = {\tau c \over 2} = {\nabla f c \over 2S} r=2τc=2Sfc
因此只要Tx信号和Rx信号的频率差IF信号以及频率变化率,就能得到目标的距离。但是需要注意,雷达测距有上限,最大探测距离受限于 ∇ f \nabla f f的最大值(因为脉冲信号有带宽,每个Chirp的时间也是个定值,因为Rx信号和Tx信号之间存在最大的频率差,也就是带宽的大小,如果Rx信号回来的太晚,超出了对应Tx信号的Chirp时间内,那么这个回波信号就没版办法计算IF信号了)。
在这里插入图片描述
对于上图的两个因素,第一个因素不用做太多的解释。但是对于第二个因素,需要解释一下: ==根据采样定理,若要完整地恢复一个信号,采样频率至少是原始信号的两倍。==上图中的N表示一个周期内(chirp)的采样次数,可以理解为把连续信号离散化采样N次。针对一个系统,采样次数一般为定值(太大的采样次数会给系统带来空间和时间上的负担),因此IF信号的频率也不能无限接近的取到B。

总结一下: 雷达的距离估计取决于Rx信号和Tx信号的频率差, 并且最大探测距离也受限于系统的采样频率和带宽, 与带宽成反比。采样频率S固定时,带宽越小,最大探测距离越大,但因距离分辨率与带宽成正比,所以带宽也不能无限变小。带宽固定时,采样次数N越大,最大探测距离越远,但因N的增加会引起计算量增加和储存量增加,所以N也不能无限增加

1.3 单目标速度估计

目标物体的速度则是通过检测混频信号中的频率变化来确定的。如果目标物体在雷达的视野内移动,其反射信号的频率会发生多普勒效应,从而导致混频信号中的频率发生变化。通过分析这种变化,可以计算出目标物体的速度。

  • 什么是多普勒效应?
    毫米波雷达的多普勒效应是指,当雷达系统与目标物体相对运动时,由于多普勒效应的作用,目标物体反射回来的电磁波的频率会发生变化。这种频率变化与目标物体的运动速度有关,可以通过雷达接收到的信号频率的变化来推断目标物体的运动状态。具体来说,多普勒效应有以下特点:
    • 正多普勒频移: 如果目标物体朝向雷达系统运动,反射回来的电磁波的频率会增加,称为正多普勒频移。这意味着接收到的信号频率比发射的信号频率高。
    • 负多普勒频移: 如果目标物体远离雷达系统,反射回来的电磁波的频率会降低,称为负多普勒频移。这时接收到的信号频率比发射的信号频率低。
      毫米波雷达利用多普勒效应可以实现对目标物体运动速度的测量。通过测量接收到的信号频率与发射的信号频率之间的差异,可以计算出目标物体相对于雷达系统的速度。

在这里插入图片描述
见上图,雷达发射了两个脉冲信号,打到同一个目标上,可以返回两个回波信号,因此构成了两个IF信号。如果目标静止,得到的IF信号的频率 ∇ f \nabla f f和相位 ∇ ϕ \nabla \phi ϕ 均一致(因为Tx信号和Rx信号之间仅有一个时间偏差,时间偏差可以计算出相位偏移) ∇ ϕ = 2 π f τ \nabla \phi = 2 \pi f \tau ϕ=2πfτ, τ \tau τ为Tx信号和Rx信号的时间差。

但是如果目标有速度在移动,那么两个发射信号Tx与两个回波信号Rx之间的时间差 τ 1 , τ 2 \tau_1,\tau_2 τ1,τ2就不一致了,后者会
稍微大一些,那么两个IF信号的相位就不一样了,两个IF信号之间就有了相位差。注意,公式中的频率和相位都是瞬时的,每个时间都不一样

根据这个相位差,就可以得到目标的速度。

但是切记,速度测量也有上限,与脉冲信号发射周期 T c T_c Tc成反比,在频率变化率S不变的时候,带宽B越小,最大测量测速也越大

在这里插入图片描述

1.4 单目标角度估计

角度估计的原理是: 对于有多个接收天线的雷达,目标相对多个接收天线的距离不同,这会导致距离FFT峰值的相位变化
在这里插入图片描述
在这里插入图片描述

1.5 多目标距离估计

多目标测距的原理是,一个发射信号Tx,得到了来自三个不同目标的反射信号 R x 1 , R x 2 , R x 3 R_{x1},R_{x2},R_{x3} Rx1,Rx2,Rx3,每个信号都有不同的延时,延时与目标的距离成正比。然后得到三个IF信号,通过IF信号的频率得到三个目标的距离

在这里插入图片描述

既然有多个目标,那么雷达能区分间距多远的目标,就也是个重点。术语是距离分辨率: 雷达能区分两个不同目标的最小距离。根据傅里叶变换理论,观测时间窗口T,可以分辨间隔超过 1 / T H z 1/T Hz 1/THz的频率分量,也就是说两个不同目标的IF信号的频率差需要超过这个值。

另外需要注意的一点是: 混频器输出的是多个单音信号的的叠加,并不是独立的单个信号,所以需要使用FFT操作将这个叠加信号分为一个具有不同峰值和相位的频谱,每个峰值就是不同距离的目标。多目标的距离估计,IF信号还是一维的
在这里插入图片描述
结论: 距离分辨率取决于带宽,与带宽成反比。在周期时间 T c T_c Tc不变的时候,提高频率变化率。在频率变化率不变的时候,延长chirp信号,也就是提高周期时间,都可以提高距离分辨率。但是因为最大探测距离与带宽成反比,因此也不能一味的提提升距离分辨率,而导致探测范围降低。可以简单的记为,最大探测距离和距离分辨率这两个性能是互相背离的

1.6 多目标速度估计

多目标速度估计的原理是单目标速度估计的拓展,单目标估计是得到两个chirp发射的脉冲信号和得到的对应回波信号之间的IF信号,然后根据两个IF信号的相位差得到该目标的速度。
对于多目标速度估计而言,同样也是雷达发射相邻chirp时间的Tx信号,只不过每个Chirp发出的Tx信号,都得到了若干个回波信号Rx。假如说需要计算某个时间段内的多个目标的速度,如果这个时间段雷达可以发射M个脉冲信号,并且每个脉冲信号得到了N个回波信号,那么就可以得到N个目标在这个时间段内的M个瞬时速度值。
针对单个目标,可以得到M个IF信号,对应M个目标距离。如果目标静止,那么这M个IF信号的频谱峰值相同,并且相位也相同。

承接上文,混频器输出的是一个叠加信号。所以对于多目标的速度估计,混频器信号经过FFT操作后得到的IF信号是二维的(形状为 M × N M \times N M×N),M表示在某个固定长度的时间内发射了M个信号,N表示每个发射信号得到了来自N个目标的回波信号。

对这个混频器输出的信号进行距离FFT操作,可以得到M个频谱,每个频谱都包含N个波峰,每个波峰对应一个目标的距离。
对这个混频器输出的信号进行速度FFT操作,可以得到N个频谱,每个频谱都包含M个相位,对应每个目标的M个相位偏移。然后通过相邻相位的差,就可以得到对应时间的速度。

在这里插入图片描述

与多目标距离估计类似,多目标速度估计也需要考虑速度分辨率,也就是说对应距离一致的两个目标,能否区分两个目标的关键就是两个目标的速度差是否超过了速度分辨率,否则的话无法区分
在这里插入图片描述

结论: 速度分辨率与时间窗口的长度有关,在这个时间窗口内,雷达可以发射M个脉冲信号,这个时间窗口术语就是一帧,也就是雷达一帧的时间周期,在雷达的周期内,可以发射若干的chirp信号。所以要想提升速度分辨率,可以提高帧时间,也就是降低雷达的频率,也可以理解为每个chirp的时间固定,提高了一帧内chirp的数量。

1.7多目标角度估计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.7 总结

  1. 雷达的距离估计取决于Rx信号和Tx信号的频率差, 并且最大探测距离也受限于系统的采样频率和带宽, 与带宽成反比。采样频率S固定时,带宽越小,最大探测距离越大,但因距离分辨率与带宽成正比,所以带宽也不能无限变小。带宽固定时,采样次数N越大,最大探测距离越远,但因N的增加会引起计算量增加和储存量增加,所以N也不能无限增加

  2. 距离分辨率取决于带宽,与带宽成反比。在周期时间 T c T_c Tc不变的时候,提高频率变化率。在频率变化率不变的时候,延长chirp信号,也就是提高周期时间,都可以提高距离分辨率。但是因为最大探测距离与带宽成反比,因此也不能一味的提提升距离分辨率,而导致探测范围降低。可以简单的记为,最大探测距离和距离分辨率这两个性能是互相背离的。

  3. 速度分辨率与时间窗口的长度有关,在这个时间窗口内,雷达可以发射M个脉冲信号,这个时间窗口术语就是一帧,也就是雷达一帧的时间周期。在雷达的周期内,可以发射若干的chirp信号。所以要想提升速度分辨率,可以提高帧时间,也就是降低雷达的频率,也可以理解为每个chirp的时间固定,提高了一帧内chirp的数量。

  4. 最大速度也有上限,与脉冲信号发射周期 T c T_c Tc成反比,在频率变化率S不变的时候,带宽B越小,最大测量测速也越大

  5. 角度分辨率依赖于目标的方位角和天线的个数。角度分辨率与天线个数成反比。越靠近FOV的边缘,角度分辨率越低

下边将通过python代码模拟,来展示测距,测速以及带宽B和采样频率对距离分辨率和速度分辨率的影响。

3. FMCW雷达数据处理算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 毫米波雷达的目标解析(含python代码)

这里将通过四个例子进一步理解测距,测速度,测角度,以及分辨率等的计算

  1. 计算距离和速度的分辨率和测量范围,以及角度的测量范围
  2. 估计目标的角度
  3. 估计多个目标的距离,速度和角度
  4. 调整雷达参数,区分距离或速度相近的目标

项目工程请看: radarFMCW
或者: csdn资源

项目实例:

在这里插入图片描述
在这里插入图片描述

5. ARS548 4D毫米波雷达数据demo(含python代码)

5.1 4D毫米波雷达原理

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.2 ARS5484D毫米波雷达数据解析demo视频

在这里插入图片描述

5.3 ARS548 4D毫米波雷达&速腾M1激光雷达&balser相机 多模态数据集(含标注,已对齐)

在这里插入图片描述

  • 毫米波雷达参数
    在这里插入图片描述
  • 激光雷达参数
    在这里插入图片描述
  • 相机参数
    在这里插入图片描述

https://github.com/hjfenghj/ARS548Dataset

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1640935.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

最新AI创作系统,ChatGPT商业运营系统网站源码,SparkAi-v6.5.0,Ai绘画/GPTs应用,文档对话

一、文章前言 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,那么如何搭建部署AI创作ChatGPT?小编这里写一个详细图文教程吧。已支持…

MySQL商城数据库88张表结构(46—50)

46、消息队列表 CREATE TABLE dingchengyu消息队列表 (id int(11) NOT NULL AUTO_INCREMENT COMMENT 序号,userId int(11) DEFAULT NULL COMMENT 用户id,msgTtype tinyint(4) DEFAULT 0 COMMENT 消息类型,createTime datetime DEFAULT NULL COMMENT 创建时间,sendTime datetim…

数据结构------栈的介绍和实现

目录 1.栈的一些初步认识 2.栈的实现 3.相关的函数介绍 (1)栈的初始化 (2)栈的销毁 (3)栈的数据插入 (6)判断是否为空 (7)栈的大小 4.栈的实现完整…

【全网首出】npm run serve报错 Expression: thread_id_key != 0x7777

总结 困扰了一天!!!一直以为是自己哪里配置错了, 结果最后发现是node.js官方的问题, Node.js v16.x版本的fibers.node被弃用 本文阅读大概:3min #npm run serve时就报错 #找了一天的文章,找不…

【前端学习——call和apply函数】

call()和apply()这两个方法的作用可以简单归纳为改变this指向,从而让我们的this指向不在是谁调用了函数就指向谁。 call()方法的作用和 apply() 方法类似,区别就是call()方法接受的是参数列表,而apply()方法接受的是一个参数数组。 https:/…

HTML_CSS学习:常用文本属性

一、文本颜色 相关代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>文本颜色</title><style>div{font-size: 90px;}.atguigu1{color: #238c20;}.atguigu2{color: rgb(2…

【数据结构(邓俊辉)学习笔记】向量06——位图

文章目录 0.概述1.结构2.实现3. 应用3.1 去重3.2 筛法 0.概述 位图&#xff08;Bitmap&#xff09;是一种特殊的序列结构&#xff0c;可用以动态地表示由一组&#xff08;无符号&#xff09;整数构成的集合。 test() 判断k 是否存在集合S中。set() 将k 加入到集合S中。clear…

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频

视频编辑软件pitivi基本功之将三个相关视频合并成一个视频 一、素材来源&#xff1a;网站下载 到http://cpc.people.com.cn/GB/67481/435238/437822/437828/437900/index.html下载以下三个视频&#xff0c;鼠标右击视频——另存视频为 庆祝中国共产党成立100周年大会即将开始—…

深度学习:基于TensorFlow、Keras,使用长短期记忆神经网络模型(LSTM)对Microsoft股票进行预测分析

前言 系列专栏&#xff1a;机器学习&#xff1a;高级应用与实践【项目实战100】【2024】✨︎ 在本专栏中不仅包含一些适合初学者的最新机器学习项目&#xff0c;每个项目都处理一组不同的问题&#xff0c;包括监督和无监督学习、分类、回归和聚类&#xff0c;而且涉及创建深度学…

R语言数据探索和分析7-使用随机森林模型对中国GDP及其影响因素分析

一、研究背景和意义 国内生产总值&#xff08;GDP&#xff09;是宏观经济领域中最为关注的经济统计数据之一&#xff0c;它反映了一个国家或地区在一定时期内所创造的所有最终商品和服务的总价值。GDP的增长率不仅仅是一个国家经济健康状况的关键指标&#xff0c;还直接关系到…

Web前端一套全部清晰 ⑥ day4 CSS.1 基础选择器、文字控制属性

后来的我不在抱怨 所有的事与愿违都是我能力或者判断力不足 仅此而已 —— 24.5.1 一、CSS定义 1. 将CSS放在html文件的<style>标签中 层叠样式表(Cascading style Sheets&#xff0c;缩写为 CSS)&#xff0c;是一种 样式表 语言&#xff0c;用来描述 HTML 文档的呈现(美…

软件应用开发安全设计指南

1.1 应用系统架构安全设计要求 设计时要充分考虑到系统架构的稳固性、可维护性和可扩展性&#xff0c;以确保系统在面对各种安全威胁时能够稳定运行。 在设计系统架构时&#xff0c;要充分考虑各种安全威胁&#xff0c;如DDoS攻击、SQL注入、跨站脚本攻击&#xff08;XSS&…

Github 2024-05-03 Java开源项目日报 Top9

根据Github Trendings的统计,今日(2024-05-03统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Kotlin项目1C++项目1libGDX: 跨平台Java游戏开发框架 创建周期:4284 天开发语言:Java, C++协议类型:Apache License 2.0Star数量:2…

如何在Android设备上恢复丢失的照片

Android手机或平板电脑上的照片丢失了&#xff1f;不要惊慌&#xff0c;您也许可以恢复它们。 由于我们的大量数据和日常生活都存储在一台设备上&#xff0c;有时将所有照片存储在本地的 Android 智能手机或平板电脑上可能是一项冒险的工作。无论是通过事故&#xff08;损坏、…

【JVM】从硬件层面和应用层面的有序性和可见性,到Java的volatile和synchronized

Java的关键字volatile保证了有序性和可见性&#xff0c;这里我试着从底层开始讲一下有序性和可见性。 一&#xff0c;一致性 数据如果同时被两个cpu读取了&#xff0c;如何保证数据的一致性&#xff1f;或者换句话说&#xff0c;cpu1改了数据&#xff0c;cpu2的数据就成了无效…

【C++】深入剖析C++11 initializer_list 新的类功能 可变模板参数

目录 一、std::initializer_list 1、std::initializer_list是什么类型 2、std::initializer_list 的应用场景 ①给自定义容器赋值 ② 传递同类型的数据集合 二、新的类功能 1、默认成员函数 2、关键字default 3、关键字delete 三、可变参数模板 一、std::initialize…

C++仿函数周边及包装器

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

RunnerGo四月更新:强化UI自动化测试与UI录制插件功能

RunnerGo最近更新的 UI自动化测试和UI录制插件可以让测试人员更高效地布置UI自动化场景。这次优化升级的插件录制能力&#xff0c;可以更准确的定位元素并执行步骤&#xff0c;并增加了局部截图功能&#xff0c;准确查看定位的元素位置等。 UI插件V2.0介绍 接下来&#xff0c;让…

python基础算法题0502

数字反转 无论是字符串反转还是数字反转&#xff0c;其实都一样。 需求 代码 class Solution:def reverse(self, x: int) -> int:if 0 < x < 2 ** 31 - 1:m str(x)[::-1]if int(m)<2**31-1:return int(m)else:return 0if 0 > x > -2 ** 31:y -xn str(y…

2.6Java全栈开发前端+后端(全栈工程师进阶之路)-前端框架VUE3-基础-Vue生命周期

在使用vue进行日常开发中&#xff0c;我们总有这样的需求&#xff0c;想在页面刚一加载出这个表格组件时&#xff0c;就发送请求去后台拉取 数据&#xff0c;亦或者想在组件加载前显示个loading图&#xff0c;当组件加载出来就让这个loading图消失等等这样或那样的需求。 要实…