【FMCW 03】测速
从上一讲 测距 末尾的frame讲起。我们知道一个chirp对应了一个采样后的IF信号,我们将这些采样后的IF信号按chirp的次序排列成一个帧(frame),这就得到了我们实际中接收后处理的FMCW信号。
由于chirp的发射返回时间很短,所以我们称其所在时间维度为快时间(fast time)维,而相邻的chirp间存在一个chirp repetition time(CRT)相对较慢,于是我们将其所在时间维度为慢时间(slow time)维。借一幅《Soli: Ubiquitous Gesture Sensing with Millimeter》文中的图,可以对raw signal有一个直观的认识。
相位差的周期性
我们首先对FFT得到的频率谱做一个分析,其分为两部分,幅度部分和相位部分,幅度部分可以表示此处频率的强弱,相位部分表示的是此频率对应的相位。那么,对于,对做完range FFT后的frame矩阵而言,其fast time维度就转换成了range维度。
对于在某一个 range bin上的物体,我们已经知道其距离表示为
dtarget=c2Kfpeakd_{target} = \frac{c}{2K}f_{peak} dtarget=2Kcfpeak
这个距离的解我们知道是通过IF信号中频率部分2πKτ2 \pi K \tau2πKτ得到的,而我们现在关注其相位部分2πf0τ2 \pi f_0 \tau2πf0τ。
xIF(t)=Acos(2πKτt+2πfoτ)x_{\tiny{IF}}(t) = A \cos(2\pi K\tau t+2\pi f_o \tau ) xIF(t)=Acos(2πKτt+2πfoτ)
由于
τ=2dc\tau = \frac{2d}{c} τ=c2d
故相位ϕ\phiϕ
ϕ=2πfo2dc=4πfocd\phi = 2\pi f_o \frac{2d}{c}=\frac{4\pi f_o}{c}d ϕ=2πfoc2d=c4πfod
如果在这个range bin中的物体正在运动,那么每隔一个chirp的周期CRTCRTCRT,物体就会发生一个微动位移,而这个微动位移将造成相位较为剧烈的变化,即
Δϕ=4πfocΔd=4πf0cv⋅CRT\Delta \phi = \frac{4\pi f_o}{c} \Delta d =\frac{4\pi f_0}{c}v \cdot CRT Δϕ=c4πfoΔd=c4πf0v⋅CRT
如果我们将这个CRTCRTCRT看作一种采样,那么,对ϕ\phiϕ的变化进行分析,将能提取到有效的速度vvv的信息,这也正是我们采用frame传输的原因——获得速度信息。 这种视角先按下不表,最后再述。
我们也可将这个过程看作是相位差的周期性运动,那么我们对其进行FFT分析,也将得到这个周期性的相位差信息。
进一步转换到速度维,就有
v=c4πfo⋅CRTΔϕ=λ4π⋅CRTΔϕv = \frac{c}{4\pi f_o \cdot CRT}\Delta \phi =\frac{\lambda}{4 \pi \cdot CRT}\Delta \phi v=4πfo⋅CRTcΔϕ=4π⋅CRTλΔϕ
于是我们要做的Doppler FFT 或者说 Velocity FFT即是取出Range FFT某个range bin对应的一列slow time数据进行FFT。
多普勒效应
那么问题来了,为什么叫Doppler FFT呢?在基本的物理学中,我们曾学习过基本的多普勒效应。举一个生活中的例子,你在街上听到一辆警车向你呼啸而来,你听到警笛的声音是越来越急的(这对应的即是声波的频率越来越高),而当警车越来越远时,你听的警笛是越来越疏的(这对应的即是声波的频率越来越低)。
在这里,我们用一个移动通信中描述移动台所造成的多普勒频偏公式(见Rappaport书中的123页),即
fd=vλcosθf_d = \frac{v}{\lambda}\cos \theta fd=λvcosθ
在FMCW雷达考虑的场景中,取径向速度,即 cosθ=1\cos \theta = 1cosθ=1,同时由于电波一发一收,于是造成的fdf_dfd为
fd=2vλf_d = 2\frac{v}{\lambda} fd=2λv
进一步代入 v 的公式转换为
fd=Δϕ2π⋅CRTf_d = \frac{\Delta \phi}{2 \pi \cdot CRT} fd=2π⋅CRTΔϕ
值得指出的是,主频率部分亦会由于物体的运动产生频偏。但当物体的距离d发生微小的变化时,IF signal 信号的相位变化非常明显,而频率的变化并不显著,远远达不到在CRT的时间内,区分信号的频率。 即相位变化对微动位移有着敏感性。
我们不如用TI教程中的例子来感性认识一下:取 λ=4mm\lambda = 4mmλ=4mm,CRT=40μsCRT = 40 \mu sCRT=40μs,K=50MHz/μsK = 50MHz/\mu sK=50MHz/μs,当物体发生一个1mm的微动位移时,有:
相位变化 Δϕ=4πΔdλ=π=180∘相位变化 \ \Delta \phi = \frac{4 \pi \Delta d}{\lambda} =\pi =180^{\circ} 相位变化 Δϕ=λ4πΔd=π=180∘
频率变化 Δf=2KcΔd=333Hz频率变化 \ \Delta f = \frac{2K}{c} \Delta d=333Hz 频率变化 Δf=c2KΔd=333Hz
而这个频偏在slow time的频率轴引起的变化其实并不大,即
Δf⋅CRT=333×40×10−6=0.013cycles\Delta f \cdot CRT=333\times 40 \times 10 ^{-6} = 0.013 \ cycles Δf⋅CRT=333×40×10−6=0.013 cycles
最大速度与速度分辨率
最大速度
由于Δϕ\Delta \phiΔϕ 的限制,给出了最大速度的限制,即
−π<Δϕ<π-\pi < \Delta \phi < \pi −π<Δϕ<π
于是
−λ4⋅CRT<v<λ4⋅CRT-\frac{\lambda}{4 \cdot CRT} < v <\frac{\lambda}{4 \cdot CRT} −4⋅CRTλ<v<4⋅CRTλ
感性认识一下,比如用 5mm5mm5mm 的毫米波雷达,再用 100μs100 \mu s100μs 的CRT,此时能达到的最大速度为
vmax=λ4⋅CRT=12.5m/sv_{max} = \frac{\lambda}{4 \cdot CRT} =12.5m/s vmax=4⋅CRTλ=12.5m/s
速度分辨率
继续借用TI教程里的一张图(这里定义 ω=Δϕ\omega = \Delta \phiω=Δϕ),容易发现,速度分辨率与我们的在数字域上的角速度分辨率有关,由于
Δω=2πNradians/sample=1Ncycles/sample\Delta \omega = \frac{2\pi}{N} \ radians/sample=\frac{1}{N} \ cycles/sample Δω=N2π radians/sample=N1 cycles/sample
于是就有
Δv=λ4π⋅CRTΔω=λ2N⋅CRT\Delta v = \frac{\lambda}{4 \pi \cdot CRT} \Delta \omega = \frac{\lambda}{2N \cdot CRT} Δv=4π⋅CRTλΔω=2N⋅CRTλ
仍用最大速度中的测算数据,并取 N = 512,我们感性认识到此时的速度分辨率为:
vres=λ2N⋅CRT=0.0488m/sv_{res} = \frac{\lambda}{2N \cdot CRT}=0.0488m/s vres=2N⋅CRTλ=0.0488m/s
基于CRT的采样视角
如果我们基于CRT的采样视角去理解这个相位变化,那么对于式子
Δϕ=4πfocΔd=4πf0cv⋅CRT\Delta \phi = \frac{4\pi f_o}{c} \Delta d =\frac{4\pi f_0}{c}v \cdot CRT Δϕ=c4πfoΔd=c4πf0v⋅CRT
我们两边同除 CRTCRTCRT,就有:
ΔϕCRT=4πf0cv\frac{\Delta \phi}{CRT}=\frac{4\pi f_0}{c}v CRTΔϕ=c4πf0v
根据微分学的知识,我们知道左边可理解为对ϕ\phiϕ的微分,即
w=dϕdt=2πfpeakw = \frac{d\phi}{dt} = 2\pi f_{peak} w=dtdϕ=2πfpeak
于是就有:
fpeak=2vλf_{peak} = 2\frac{v}{\lambda} fpeak=2λv
这个式子说明,从频率轴去看,此时直接测得的就是多普勒频偏。进一步就有:
v=λ2fpeakv =\frac{\lambda}{2 } f_{peak} v=2λfpeak
由于此时 CRTCRTCRT 的倒数即是我们等效的采样率。于是,频率分辨率的范围就在
−12⋅CRT<fpeak<12⋅CRT-\frac{1}{2 \cdot CRT} <f_{peak}<\frac{1}{2\cdot CRT} −2⋅CRT1<fpeak<2⋅CRT1
于是,可得速度的测量范围为
−λ4⋅CRT<v<λ4⋅CRT-\frac{\lambda}{4 \cdot CRT} < v <\frac{\lambda}{4 \cdot CRT} −4⋅CRTλ<v<4⋅CRTλ
和速度的分辨率
vres=λ2fres=λ2N⋅CRTv_{res} =\frac{\lambda}{2 } f_{res} = \frac{\lambda}{2N \cdot CRT} vres=2λfres=2N⋅CRTλ
这种视角个人兴趣所至,以增参考。最后,同样用一张图结束本节的内容。
相关文章:

【FMCW 03】测速
从上一讲 测距 末尾的frame讲起。我们知道一个chirp对应了一个采样后的IF信号,我们将这些采样后的IF信号按chirp的次序排列成一个帧(frame),这就得到了我们实际中接收后处理的FMCW信号。 由于chirp的发射返回时间很短,…...

ERP(企业资源管理)概述
🌟所属专栏:ERP企业资源管理🐔作者简介:rchjr——五带信管菜只因一枚😮前言:该系列将持续更新ERP的相关学习笔记,欢迎和我一样的小白订阅,一起学习共同进步~👉文章简介&a…...

深入理解java虚拟机精华总结:性能监控和故障处理工具、类加载机制
深入理解java虚拟机精华总结:性能监控和故障处理工具、类加载机制性能监控和故障处理工具、类加载机制jpsjstatjinfojmapjhatjstackVisualVM类加载机制类加载的时机类加载的过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型破坏双亲委派模型往期内容&am…...

推荐系统与推荐算法
文章目录第一章1.1推荐系统意义与价值1.2推荐系统历史与框架1.3推荐算法分类第二章2.1协同过滤的基本思想与分类2.2基于用户的协同过滤2.3基于项目的协同过滤2.4基于邻域的评分预测2.5基于二部图的协同过滤第三章3.1基于关联规则的推荐3.2基于矩阵分解的评分预测3.3概率矩阵分解…...

socket 编程实战(编写客户端程序 )
编写客户端程序 接着上一篇:实战服务端程序 接下来我们再编写一个简单地客户端应用程序,客户端的功能是连接上小节所实现的服务器,连接成功之后向服务器发送数据,发送的数据由用户输入。示例代码如下所示: #include…...

“巨亏成名”的魔鬼交易员,你知道几个?
谁说在期货市场上只有赚大钱才能出名?殊不知还有这样一群特殊的交易员靠着巨额亏损而“一战成名”,亏得是老东家元气大伤,外号“魔鬼交易员”——“不亏不成魔”!接下来火象就给大家盘点几位代表性魔鬼交易员,看看他们…...

1380:分糖果(candy)
1380:分糖果(candy) 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 童年的我们,将和朋友分享美好的事物作为自己的快乐。这天,C小朋友得到了Plenty of candies,将要把这些糖果分给要好的朋友们。已知糖果从一个人传…...

数据挖掘(2.1)--数据预处理
一、基础知识 1.数据的基本概念 1.1基础知识 数据是数据对象(Data Objects)及其属性(Attributes)的集合。 数据对象(一条记录、一个实体、一个案例、一个样本等)是对一个事物或者物理对象的描述。 数据对象的属性则是这个对象的性质或特征,例如一个人的肤色、眼球…...

PMP考前冲刺3.06 | 2023新征程,一举拿证
题目1-2:1.一名团队成员表示,他们的用户故事要等到迭代结束后才能完成,因为他们的职能经理要求他们协助解决高优先级的生产问题。项目经理应该做什么?A.将问题上报给项目发起人以解决和调整项目燃尽图B.与产品负责人讨论用户故事不…...

buuctf-pwn write-ups (11)
文章目录buu083-x_ctf_b0verfl0wbuu084-picoctf_2018_leak_mebuu085-inndy_echobuu086-hitcontraining_unlinkbuu087-ciscn_2019_final_3buu088-axb_2019_fmt64buu089-wustctf2020_name_your_catbuu090-pwnme1buu091-axb_2019_brop64buu092-[极客大挑战 2019]Not Badbuu083-x_c…...

【VTK】VTK隐藏vtkOutputWindow窗口的正确方法
VTK隐藏vtkOutputWindow窗口 要求隐藏vtkOutputWindow窗口,但是不能把Warning警告和Error错误的信息都给屏蔽了 网上常见的错误方法: 现在百度搜索出来的方法几乎都是在这样做:在main文件中使用vtkOutputWindow::SetGlobalWarningDisplay(0…...

顺序表以及链表的应用及区别(包含OJ讲解)
前面我已经发过怎么实现链表以及顺序表,今天大概的总结一下。 顺序表: 1.能够随时的存取,比较方便。 2.插入删除时,需要挪动数据,比较麻烦,因为是连续存储。 3.存储密度相对于链表来说是比较高的&#…...

JVM简介
一、什么是JVM JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。 Java语言的一个非常重要的特点就是与平…...

Leetcode.1653 使字符串平衡的最少删除次数
题目链接 Leetcode.1653 使字符串平衡的最少删除次数 Rating : 1794 题目描述 给你一个字符串 s,它仅包含字符 a和 b 。 你可以删除 s中任意数目的字符,使得 s平衡 。当不存在下标对 (i,j)满足 i < j,且 s[i] b的同…...

leetcode 71~80 学习经历
leetcode 71~80 学习经历71. 简化路径72. 编辑距离73. 矩阵置零74. 搜索二维矩阵75. 颜色分类76. 最小覆盖子串77. 组合78. 子集79. 单词搜索80. 删除有序数组中的重复项 II小结71. 简化路径 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 &am…...

使用metrics-server监控k8s的资源指标
首先,欢迎使用DHorse部署k8s应用。 k8s可以通过top命令来查询pod和node的资源使用情况,如果直接运行该命令,如下所示。 [rootcentos05 deployment]# kubectl top pod W0306 15:23:24.990550 8247 top_pod.go:140] Using json format to …...

【Copula】考虑风光联合出力和相关性的Copula场景生成(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

【java基础】泛型程序设计基础
文章目录泛型是什么自定义泛型类自定义泛型方法类型变量的限定总结泛型是什么 泛型类和泛型方法有类型参数,这使得它们可以准确地描述用特定类型实例化时会发生什么。在没有泛型类之前,程序员必须使用Objct编写适用于多种类型的代码。这很烦琐ÿ…...

【省选模拟测试23 T1直径】更好的做法
题目大意和普通做法 省选模拟测试23 T1直径 题解 对于上文中有三个儿子的根节点的树,其直径数量为abbccaabbccaabbcca。那么对于上文中有nnn个儿子的根节点的树,其直径数量为多少呢? 每个儿子所在子树中的点与其他儿子所在子树中的点都能组…...

SpringCloud基础(3)-微服务远程调用
SpringCloud基础1. 微服务的远程调用2. Eureka注册中心1. 搭建Eureka服务注册中心1. 微服务的远程调用 服务提供者:一次业务中被其它服务调用的一方; 服务消费者:一次业务中调用其它服务的一方; 2. Eureka注册中心 记录所有服务…...

10.单点登录原理及JWT实现
单点登录原理及JWT实现 一、单点登录效果 首先我们看通过一个具体的案例来加深对单点登录的理解。案例地址:https://gitee.com/xuxueli0323/xxl-sso?_fromgitee_search 把案例代码直接导入到IDEA中 然后分别修改下server和samples中的配置信息 在host文件中配置 …...

图表控件LightningChart.NET 系列教程(十一):LightningChart 组件——添加至 Blend WPF 项目
LightningChart.NET 是一款高性能 WPF 和 Winforms 图表,可以实时可视化多达1万亿个数据点。可有效利用CPU和内存资源,实时监控数据流。同时,LightningChart使用突破性创新技术,以实时优化为前提,大大提升了实时渲染的效率和效果&…...

libGDX:灯光效果实现一(实现一个点光源)
国内的libGDX文章很少,特别是libGDX实现灯光效果,所以就开始总结灯光效果的实现 绿色的框 是为了方便看到Body位置,使用Box2DDebugRenderer渲染的 工欲善其事,必先利其器,工具集合 gdx-setup.jar 1. 从libGDX官网下载…...

Java生态/Redis中如何使用Lua脚本
文章目录一、安装LUA1)简单使用二、lua语法简介1、注释1)单行注释2)多行注释2、关键字3、变量1)全局变量2)局部变量4、数据类型1)Lua数组2)字符串操作5、if-else6、循环1)for循环1&g…...

网络编程 socket 编程(一)
1. C/S 架构 C/S 架构即客户端/服务端架构,B/S 架构(浏览器与服务端)也是 C/S 架构的一种。 C/S 架构与 socket 的关系:学习 socket 可以完成 C/S 架构的开发。 2. osi 七层 一个完整的计算机系统由硬件、操作系统以及应用软件…...

【SpringCloud】SpringCloud教程之Nacos实战(一)
目录Nacos是什么?一.Nacos下载二.安装Nacos三.Nacos原理四.Nacos快速入门五.Nacos服务多级存储模式六.Nacos根据集群设置负载均衡1.根据同集群优先访问2.根据权重配置负载均衡七.Nacos的环境隔离八.Nacos和Eureka的区别前提:以订单服务和用户服务为例&am…...

高通Android 12/13 默认应用程序授予权限
1、一提到权限很多Android开发者都会想到 比如拨打电话 读取手机通讯录 定位 这些都是需要申请权限,Google Android 6.0之后(sdk 23) 需要app动态申请权限 或者权限组 2、我这里打个比方 比如需要在fm应用 默认打开mic权限 3、我们需要知道…...

代码随想录|day6|哈希表篇-- 242.有效的字母异位词 、349. 两个数组的交集 、202. 快乐数、1. 两数之和
总链接https://docs.qq.com/doc/DUEtFSGdreWRuR2p4?u329948d2f0044f34b7cbe72503f0b572 242.有效的字母异位词 链接:代码随想录 class Solution { public:bool isAnagram(string s, string t) {//两种做法,一种是int f[26]的数组,一种是map /*第一种&a…...

k8s学习之路 | Day20 k8s 工作负载 Deployment(下)
文章目录3. HPA 动态扩缩容3.1 HPA3.2 安装 metrics-server3.3 验证指标收集3.4 扩缩容的实现3.5 增加负载3.6 降低负载3.7 更多的度量指标4. 金丝雀部署4.1 蓝绿部署4.2 金丝雀部署4.3 金丝雀部署的实现5. Deployment 状态与排查5.1 进行中的 Deployment5.2 完成的 Deployment…...

考研复试——操作系统
文章目录操作系统1. 操作系统的特征:2. 进程与线程的关系以及区别3. 简述进程和程序的区别4. 进程的常见状态?以及各种状态之间的转换条件?5. 进程的调度算法有哪些?6. 什么是死锁?产生条件?如何避免死锁&a…...