【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念:实习过程中发现在进行雷达知识交流时,大部分同事都会用英文简称代替中文的一些称呼,比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的,所以看得多了大家都习惯这样称呼,后来在和指导我的前辈交流时发现是因为国内对于一个步骤都有很多称呼,比如说我们接下来讲的快时间傅里叶变换又称为距离维傅里叶变换慢时间傅里叶变换又称为速度维傅里叶变换,但他们的英文专有名称只有一个,分别是Range FFTDoppler FFT。用英文称呼的原因更是为了精确性,也不用让大家记那么多名词。同时前辈也告诫我在学习时候不要怕麻烦,要把每一个缩写的全程都要标注好记忆好,才能对于系统更加熟悉。

引入

毫米波雷达系列文章中我们一再强调的是时刻关注我们的“目录”,也就是我们的框架,那我们来看一下快时间与慢时间傅里叶变化在雷达处理流程的哪一步:

毫米波雷达工作流程图

图中可以发现快时间傅里叶变换(又称距离FFT,Range FFT)在ADC采样结束后,毫米波雷达进一步讲快时间傅里叶变换后的数据进行慢时间傅里叶变换(又称二维FFT,Doppler FFT)

那我们需要来想象一下ADC采样后的数据是什么样的呢?

信号通过ADC采样后会得到一个由chirp采样点、采样个数以及通道/天线数组成的三维数据块(Radar Data Cube)。得到的数据仍然是离散的时域信号点,我们需要通过傅里叶变换求得频谱图,从而求得目标的距离信息以及速度信息。

ADC采样后的Radar Data Cube

 

 

原理推导

这里会先推导RFFT与DFFT共性的原理,在各自的部分会进行进一步推导:

天线发射信号与接收信号进行混频滤波后,可以表示为:

 其中K代表FM调制常数(也就是时频图的斜率),f_d代表差频(即IF信号的频率),n代表采样点,f_s代表单个chirp中的采样率,T_0代表单个chirp周期。根据:

\frac{2R}{c}=\tau ,\frac{n}{f_s}=t_{fast},pT_0=t_{fast}

可以将采样后的信号表示为:

此时的信号中含有参数时间差\tau差频f_d,故可进一步通过傅里叶变换求解这两个参数。

快时间傅里叶变换(Range FFT)

我们认为在一个chirp周期中,由于电磁波的速度极快的特性,所以时间是非常短的,也就是时间很“快”。同时也可以将目标对象在快时间内的移动近似没有,所以在快时间维度来看目标物体几乎“静止”,以快时间为时域的时间维度对信号进行傅里叶变换,其距离也就非常容易测量

在进行快时间傅里叶变换时,将慢时间看作常数,即仅仅做一个chirp周期内的傅里叶变换(对应于radar cube中的每一行做FFT),即可求得时间差\tau ,根据:

\frac{2\tau}{c}=R

即可求得对应物体的距离R。

慢时间傅里叶变换(又称二维FFT,Doppler FFT)

 相对于一个chirp周期的时间,不同chirp之间的间隔时长就会相对更“长”,也就是时间会相对更“慢”,以慢时间为时域的时间维度,结合快时间的傅里叶变换我们就可以计算出目标的速度信息

在进行慢时间傅里叶变换时,将快时间看作常数,以每个chirp间隔作为时间轴进行进行傅里叶变换(对应于radar cube中的每一列再做FFT),对应频谱图中的最高点即为差频fd,根据:

\frac{\lambda }{2}\cdot f_d=v

即可求得目标物体的速度信息v。

两次FFT后的图像(左)

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

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

相关文章

【Django学习笔记(十)】Django的创建与运行

Django的创建与运行 前言正文1、安装Django2、创建项目2.1 基于终端创建项目2.2 基于Pycharm创建项目2.3 两种方式对比 3、默认项目文件介绍4、APP5、启动运行Django5.1 激活App5.2 编写URL和视图函数对应关系5.3 启动Django项目5.3.1 命令行启动5.3.2 Pycharm启动5.3.3 views.…

欧鹏RHCE 第四次作业

unit4.web服务的部署及高级优化方案 1. 搭建web服务器要求如下: 1.web服务器的主机ip:172.25.254.100 2.web服务器的默认访问目录为/var/www/html 默认发布内容为default‘s page 3.站点news.timinglee.org默认发布目录为/var/www/virtual/timinglee.org…

String、StringBuider、StringBuffer

可变性: String 是final修饰的不可变类,每次修改值都会产生新的对象,而StringBuffer和StringBuilder是可变类,每次修改值不会产生新的对象 线程安全: StringBuilder不是线程安全的,String、StringBuffer…

YOLOv8原理解析[目标检测理论篇]

接下来是我最想要分享的内容,梳理了YOLOv8预测的整个流程,以及训练的整个流程。 关于YOLOv8的主干网络在YOLOv8网络结构介绍-CSDN博客介绍了,为了更好地介绍本章内容,还是把YOLOv8网络结构图放在这里,方便查看。 1.YOL…

【痕迹】QQ+微信朋友圈和聊天记录分析工具1.0.3

【痕迹】QQ微信朋友圈和聊天记录分析工具1.0.3 (1)纯Python语言实现,使用Flask后端,本地分析,不上传个人数据。 (2)数据可视化分析QQ、微信聊天记录,提取某一天的聊天记录与大模型…

Cisco NX-OS System Software - ACI 16.0(5h)

Cisco NX-OS System Software - ACI 16.0(5h) 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机 请访问原文链接:Cisco NX-OS System Software - ACI 16.0(5h),查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org Cis…

python可视化分析日常记账数据总结个人消费情况

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.分析 一.前言 日常消费数据通常包括消费者在日常生活中购买商品和服务的各种统计数字和信息。 二.代码 import matplotlib.pyplot as plt import pandas as pd #解决数据输出时列名不对齐的问题 …

扩展van Emde Boas树以支持卫星数据:设计与实现

扩展van Emde Boas树以支持卫星数据:设计与实现 1. 引言2. vEB树的基本概念3. 支持卫星数据的vEB树设计3.1 数据结构的扩展3.2 操作的修改3.3 卫星数据的存储和检索 4. 详细设计和实现4.1 定义卫星数据结构体4.2 修改vEB树节点结构4.3 插入操作的伪代码4.4 C语言实现…

鸿蒙通用组件弹窗简介

鸿蒙通用组件弹窗简介 弹窗----Toast引入ohos.promptAction模块通过点击按钮,模拟弹窗 警告对话框----AlertDialog列表弹窗----ActionSheet选择器弹窗自定义弹窗使用CustomDialog声明一个自定义弹窗在需要使用的地方声明自定义弹窗,完整代码 弹窗----Toa…

Kafka---总结篇

kafka架构 主要概念 broker: 存储消息的机器 控制器controller (1)使用zookeeper, 除了提供一般的broker功能之外,还负责选举分区首领。通过在zookeepr中创建一个名为 /controller的临时节点称为 controller。每个选出的contro…

DCEP数字人民币:中国法定区块链中数字货币

一、背景 作为全球第二大经济体,中国在数字货币领域的发展一直备受关注。近年来,中国政府积极推动数字货币的研究和试点工作,逐步开放数字货币交易试点,并计划推出中国唯一合法数字货币——数字人民币(RMB Coin&#…

3套Matplotlib主题

分享3套Matplotlib主题,让图表更好看 seaborn默认主题 import seaborn as sns import pandas as pd import matplotlib as mpltips pd.read_csv(./sns_data/tips.csv)sns.relplot(datatips,x"消费金额 ($)",y"小费金额 ($)",hue"客人性…

【Django学习笔记(九)】Flask + MySQL的结合案例

Flask MySQL结合案例 前言正文案例1:添加用户1.1 浏览器发送请求,返回页面main.pyhtml页面 1.2 新增用户并连接数据库main.pyhtml页面 案例2:查询所有用户2.1 main.py2.2 html2.3 bootstrap优化html 前言 在本文中,介绍如何将 F…

MySQL mydumper工具

目录 1. mydumper介绍 2. mydumper参数解释 3. 备份例子 3.1 备份全库(未包含其他) 3.2 备份全库(包含其他) 3.3 备份指定数据库(-B或--database) 3.4 导出指定表(-T或--tables-list) 3.5 只导出表结构,不导出表数据(-d或--no-data) 3.6 只导出表数据&#…

以gitee为例的git入门使用指北

安装git 在linux中我们首先需要使用 sudo apt install git来下载git 在windows中可以下载msysGit 链接:https://git-scm.com/download/win gitee准备 申请账号 建立仓库 ​ 点击新建仓库 这里一般是私有库,点击创建,这时你就拥有一个线上…

[开发|鸿蒙] DevEco Studio编译构建(笔记,持续更新)

构建体系 编译构建是将应用/服务的源代码、资源、第三方库等,通过编译工具转换为可直接在硬件设备上运行的二进制机器码,然后再将二进制机器码封装为HAP/APP软件包,并为HAP/APP包进行签名的过程。其中,HAP是可以直接运行在模拟器…

Kafka应用Demo:按主题订阅消费消息

安装环境 Kafka安装可参考官方网站的指导(https://kafka.apache.org/quickstart), 按步骤解压压缩包,修改配置。然后再启动zookeeper和kafka-server即可。 需要注意的一点:如果是在VMware虚拟机上启动的kafka, 需要修改一下server.properties配置文件&am…

cmake进阶:目录属性之 INCLUDE_DIRECTORIES说明二

一. 简介 前面几篇文章学习了 cmake的一些目录属性,主要有两个重要的目录属性INCLUDE_DIRECTORIES 属性、LINK_DIRECTORIES 属性。文章如下: cmake进阶:目录属性之 INCLUDE_DIRECTORIES-CSDN博客 本文学习 父目录的 INCLUDE_DIRECTORIES …

<网络安全>《79 概念讲解<第十二课 物联网常用协议-(远距离非蜂窝网络)-终端设备>》

协议简称全称名称内容说明ZigBee也称紫蜂低速短距离传输的无线通信协议一种高可靠的无线数传网络,主要特色有低速、低耗电、低成本、支持大量网上节点、支持多种网上拓扑、低复杂度、快速、可靠、安全。ZigBee技术是一种新型技术,主要是依靠无线网络进行…

JAVA IO/NIO 知识点总结

一、常见 IO 模型简介 1. 阻塞IO模型 最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线…