自动驾驶感知——物体检测与跟踪算法|4D毫米波雷达

news2024/11/15 8:48:02

文章目录

  • 1. 物体检测与跟踪算法
    • 1.1 DBSCAN
    • 1.2 卡尔曼滤波
  • 2. 毫米波雷达公开数据库的未来发展方向
  • 3. 4D毫米波雷达特点及发展趋势
    • 3.1 4D毫米波雷达特点
      • 3.1.1 FMCW雷达角度分辨率
      • 3.1.2 MIMO ( Multiple Input Multiple Output)技术
    • 3.2 4D毫米波雷达发展趋势
      • 3.2.1 芯片级联
      • 3.2.2 专用芯片
      • 3.2.3 标准芯片+软件提升
  • 声明

1. 物体检测与跟踪算法

在这里插入图片描述

1.1 DBSCAN

DBSCAN: Density Based Spatial Clustering of Applications with Noise;
DBSCAN是基于密度的聚类方法,对样本分布的适应能力比K-Means更好。
在这里插入图片描述

红色的点是核心对象
黑色的点是非核心对象

注意:距离的度量不限于点的空间距离,还可以是其它点特征,比如速度、反射强度等
基本思路
假定类别可以通过样本分布的紧密程度决定,通过将紧密相连的样本分为一类,得到不同的聚类类别。

基本概念

  • ( ε , M i n P t s ) (\varepsilon ,MinPts) (ε,MinPts):用来描述邻域的密度;
  • ε \varepsilon ε:描述了某一样本的邻域距离阈值;
  • M i n P t s MinPts MinPts:描述了邻域中的最小样本数。
  • 核心对象:对于任一样本,其邻域至少包含MinPts个样本。

算法流程

  1. 找到所有的核心对象
  2. 对于每一个未处理的核心对象,生成新的聚类;
  3. 搜索其 ε \varepsilon ε邻域,将 ε \varepsilon ε邻域中的点加入该聚类;
  4. 不断重复以上步骤

DBSCAN的详细讲解可以参考这篇博文DBSCAN详解
K-Means在这里插入图片描述
K-Means与DBSCAN 的对比

K-Means

  • 需要手工指定cluster的数量
  • 所有点都进行聚类,不会去除outlier
  • 各个方向同等重要,只适合于球形的cluster
  • 具有随机性,每次运行结果不一致

DBSCAN

  • 不需要指定cluster个数
  • 可以排除outlier
  • 对样本分布的适应性更好
  • 每次运行结果是一致的

1.2 卡尔曼滤波

本节只是对卡尔曼滤波的应用进行介绍,具体原理可见这篇博客——详解卡尔曼滤波原理以及https://www.kalmanfilter.net/
在这里插入图片描述
基本概念

以一维雷达测距为例,假设速度恒定,
系统状态 x t x_t xt: t t t时刻飞机的航程;
测量值 z t z_t zt:雷达测距结果;
系统状态的估计值 x ⃗ t , t {\vec x_{t,t}} x t,t: t t t时 刻 x x x的估计值(根据 z z z估计) ;
系统状态的预测值 x ⃗ t + 1 , t {\vec x_{t + 1,t}} x t+1,t: t + 1 t+1 t+1时刻 x x x的预测值(根据速度预测)
在这里插入图片描述
在这里插入图片描述在这里插入图片描述

雷达目标跟踪:多目标.
Tracking-by-Detection

  1. 由聚类算法在单帧点云得到目标输出;
  2. 提取目标的特征,包括统计特征(比如点位置的均值,方差等)和运动特征(比如速度和加速度等) ;
  3. 根据特征计算当前帧的检测目标(detections)与已跟踪的多个目标(tracks)的相似度;
  4. 按照相似度将de tections分配给tracks;
  5. 卡尔曼滤波更新tracks的状态参数(位置、速度等)。

2. 毫米波雷达公开数据库的未来发展方向

未来发展方向

  • 多模态数据
    ➢包括同步的图像,激光雷达等数据,用来进行多传感器融合的研究。

  • 多数据类型
    ➢包括ADC数据,RAD数据,点云数据等,为不同层次的算法研究和实际应用提供支持。

  • 360度视场
    ➢需要多个雷达配合完成,以满足多种自动驾驶应用的需求。8.01。

  • 大规模数据
    ➢一般来说,至少要有超过10万帧的不同场景,不同天气条件下采集的数据。

  • 丰富的标注信息
    ➢物体级:类别,位置,大小,方向,分割的mask
    ➢场景级:语义信息,比如free space, occupied space等。

3. 4D毫米波雷达特点及发展趋势

3.1 4D毫米波雷达特点

4D指的是距离(Range) ,水平角度(Azimuth) ,俯仰角度( Elevation)和速度(Doppler) 。一般来说, 4D 毫米波雷达的角度分辨率相对较高,因此也经常被称为4D成像雷达。

4D毫米波雷达的两个主要特点是:
1)可以测量高度的信息;
2)角度分辨率较高

为了更好的理解这两点,首先要了解FMCW雷达角度分辨率的依赖因素,以及为了增加角度分辨率所采用的MIMO机制。

3.1.1 FMCW雷达角度分辨率

想要测量目标的方位角,至少需要两个接收天线(RX).可以通过相位差来求得方位角 θ = sin ⁡ − 1 ( ω λ 2 π d ) \theta = {\sin ^{ - 1}}(\frac{{\omega \lambda }}{{2\pi d}}) θ=sin1(2πdωλ)
在这里插入图片描述
在有多个接收天线时,每个接收信号与前一个接收信号之间的相位差都是 ω \omega ω。以下图为例,假设有4个接收天线,以第一个接收天线为基准,4个接收信号的相位差分别为0, ω \omega ω,2 ω \omega ω,3 ω \omega ω。这个序列信号的变化频率就是 ω \omega ω,因此我们通过FFT来提取这个分量(也就是角度FFT)。
在这里插入图片描述
如果场景中存在多个目标,而且其距离和速度都相同,那么雷达能够区分这些目标的最小角度差称之为角度分辨率。假设有以下场景,场景中有两个目标,其方位角分别为 θ \theta θ θ + Δ θ \theta+\Delta\theta θ+Δθ,对应的相位差分别为 ω 1 \omega_1 ω1 ω 2 \omega_2 ω2 ω 1 = 2 π λ d sin ⁡ ( θ ) {\omega _1} = \frac{{2\pi }}{\lambda }d\sin (\theta ) ω1=λ2πdsin(θ) ω 2 = 2 π λ d sin ⁡ ( θ + Δ θ ) {\omega _2} = \frac{{2\pi }}{\lambda }d\sin (\theta + \Delta \theta ) ω2=λ2πdsin(θ+Δθ) Δ ω = ω 2 − ω 1 = 2 π d λ ( sin ⁡ ( θ + Δ θ ) − sin ⁡ ( θ ) ) \Delta \omega = {\omega _2} - {\omega _1} = \frac{{2\pi d}}{\lambda }(\sin (\theta + \Delta \theta ) - \sin (\theta )) Δω=ω2ω1=λ2πd(sin(θ+Δθ)sin(θ))因为 sin ⁡ ( θ ) \sin(\theta) sin(θ)的导数为 cos ⁡ ( θ ) \cos(\theta) cos(θ),所以可得 Δ ω = 2 π d λ ( cos ⁡ ( θ ) Δ θ ) \Delta \omega = \frac{{2\pi d}}{\lambda }(\cos (\theta )\Delta \theta ) Δω=λ2πd(cos(θ)Δθ)根据傅里叶变换理论,N点的FFT可以区分的频率分量最小为2π/N,这里的N就是接收天线的个数。这样我们就可以得到可以分辨的最小角度差,也就是角度分辨率。 Δ ω > 2 π N \Delta \omega > \frac{{2\pi }}{N} Δω>N2π ⇒ 2 π d λ ( cos ⁡ ( θ ) Δ θ ) > 2 π N \Rightarrow \frac{{2\pi d}}{\lambda }(\cos (\theta )\Delta \theta ) > \frac{{2\pi }}{N} λ2πd(cos(θ)Δθ)>N2π ⇒ Δ θ > λ N d cos ⁡ ( θ ) \Rightarrow \Delta \theta > \frac{\lambda }{{Nd\cos (\theta )}} Δθ>Ndcos(θ)λ通常来说,我们取 d = λ / 2 , θ = 0 d = λ/2, θ = 0 d=λ/2,θ=0 (boresight 方向,也就是雷达的中心朝向)。这时,角度分辨率公式为: θ R E S = 2 N {\theta _{RES}} = \frac{2}{N} θRES=N2

从上面的推导可以看出,角度分辨率主要依赖于两个因素: 1) 目标的方位角。在boresight方向分辨率最高。越靠近雷达FOV的边缘,角度分辨率越低。2)天线的个数。角度分辨率与天线个数城正比关系。第一个因素我们无法控制,而提高FMCW雷达角度分辨率的主要手段就是增加天线个数。

3.1.2 MIMO ( Multiple Input Multiple Output)技术

从角度分辨率的计算公式中可以看到,想要提高雷达的角度分辨率,必须增加接收天线的个数。但是,增加天线的个数,会使天线体积变得很大,此外每一个接收天线上都要附加一个单独的链路来处理信号,比如混频器、IF滤波器和ADC。不仅硬件设计变得复杂,而且成本也会增加。在这里插入图片描述在这里插入图片描述
采用MIMO (多发多收)的天线设计来降低接收天线的个数。比如,如果想要得到8个接收天线,采用2个发射天线和4个接收天线,这样就可以得到等效的8个虛拟接收天线阵列。一般来说,不同的发射天线会间隔发射,或者发射不同波形的信号,这样接收天线就可以区分来自不同发射天线的信号。

当发射天线有垂直方向的分布时,就可以测量目标的俯仰角度。下图就是一个典
型的3发4收的天线排列结构。等效的接收天线有12个,垂直方向上有两个天线
可以用来测量俯仰角度。
在这里插入图片描述

3.2 4D毫米波雷达发展趋势

3.2.1 芯片级联

4D成像雷达的核心在于较高的水平和垂直角度分辨率,这就需要增加发射和接收天线的个数。目前绝大多数毫米波雷达都是采用单片收发器,通常只有3发4收,也就是只有12个虛拟天线。一个增加虚拟天线的方案是基于现有的量产雷达,将多个雷达芯片进行级联,比如德国大陆的ARS540和华为的4D成像雷达。

ARS540采用4片级联的形式,将4片NXP的77GHz毫米波雷达收发器(MMIC)MR3003进行级联。每个MR3003是3发4收,4片联在一起就是12发16收,这样就可以产生192个虚拟天线。ARS540是第一个具备能够真正测量目标高度的毫米波雷达,其垂直角度分辨率可以达到2.3°,水平角度分辨率可以达到1.2°在这里插入图片描述

3.2.2 专用芯片

除了采用现有的量产雷达进行级联,还有的公司直接将多发多收的天线嵌入到一个雷达芯片里,比如Arbe, Vayyar 以及Mobileye。Arbe 提供的4D成像毫米波雷达Phoenix,采用48发48收,虚拟通道达到个2304个。Mobileye 同样也是48发48收的天线配置,水平和垂直角分辨率可以做到0.5°和2°。在这里插入图片描述

3.2.3 标准芯片+软件提升

这种方案基于标准的雷达芯片,但是采用软件和AI的方法来提高雷达的分辨率。这里比较有代表性的是傲酷的虚拟孔径成像技术。传统FMCW雷达重复单一的发射波形,相位差来自于多根实体接收天线,而傲酷虚拟孔径成像雷达波形可以对发射波进行调频,调相、调幅,也就是说每根接收天线在不同时间产生不同的相位,形成“虚拟天线孔径”。而且这种调整是可以根据当前环境进行自适应的,也就是说根据上一帧的检测结果来调整当前帧的波形。在这里插入图片描述

声明

本人所有文章仅作为自己的学习记录,若有侵权,联系立删。本系列文章主要参考了清华大学、北京理工大学、深蓝学院、百度Apollo等相关课程。

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

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

相关文章

[docker]-docker安装prometheus和grafana

导语&#xff1a;需要排查部分出问题的私有化环境。直接上一个docker的node_exporter prometheus grafana 最方便。 所用到的安装包在最下面的云盘。 解压安装自定义node_exporter # 这个abc的包名可以忽略 tar zxvf abc.tgz cd abc cp node_exporter /usr/local/ cat <…

Mybatis 动态sql的编写|开启二级缓存

❤️作者主页&#xff1a;微凉秋意 ✅作者简介&#xff1a;后端领域优质创作者&#x1f3c6;&#xff0c;CSDN内容合伙人&#x1f3c6;&#xff0c;阿里云专家博主&#x1f3c6; ✨精品专栏&#xff1a;数据结构与课程设计 &#x1f525;系列专栏&#xff1a;javaweb 文章目录前…

Linux-主要目录

/: 根目录&#xff0c;一般根目录下只存放目录&#xff0c;在Linux下有且只有一个根目录&#xff0c;所有的东西都是从这里开始当在终端里输入 /home,其实是在告诉电脑&#xff0c;先从/&#xff08;根目录&#xff09;开始&#xff0c;再进入到home目录/bin、/usr/bin:可执行二…

java基于ssm的旅游景点门票预订网站

通过本系统&#xff0c;能够实现用户进行登录后&#xff0c;在网站上对旅游景点信息进行门票预订&#xff0c;也可以通过在线留言系统&#xff0c;了解景点相关信息&#xff0c;为用户提供全方位的服务&#xff0c;同时为节省用户的时间&#xff0c;本系统采用分地名的方式&…

2022尚硅谷SSM框架跟学(七)Spring MVC基础二

2022尚硅谷SSM框架跟学 七 Spring MVC基础二4.SpringMVC获取请求参数4.1.通过ServletAPI获取4.2.通过控制器方法的形参获取请求参数4.3.RequestParam4.4.RequestHeader4.5.CookieValue4.6.通过POJO获取请求参数4.7.解决获取请求参数的乱码问题5.域对象共享数据5.1.使用ServletA…

LCX端⼝转发

LCX是一款十分经典的内网端口转发工具&#xff0c;基于Socket套接字&#xff0c;具有端口转发和端口映射的功能。但是目前很多杀软已经将其加入了特征库&#xff0c;在实际利用的时候需要自行做免杀处理。lcx有三个功能&#xff1a;第一个功能将本地端口转发到本地另一个端口上…

红米10A 一键root教程 跳过 秒过 168小时解锁BL 限制完美面具root保数据救黑砖刷机 解决无法解锁BL 新版本问题

新版本红米10A 无法秒解锁BL。root bootloader 要刷机、线刷救砖、获取Root权限都需要解除bootloader锁 我们称解除刷机限制的这个操作就叫解锁BL&#xff0c;只有解锁BL后&#xff0c;才可以进行刷机、刷Root权限等等一些列的操作。&#xff08;注&#xff1a;bootloader锁不…

Spring为什么这么火 之 五大类注解

目录 前言 存储Bean对象 1、配置扫描路径 2、将Bean存储到容器中 2.1、5大注解实现&#xff08;Controller、Service、Repository、Component、Configuration) Controller Service Repository Configuration Component 为什么需要五个类注解&#xff1f; 五大类注解的关…

Jmeter分布式

Jmeter的分布式控制&#xff0c;就是指远程启动功能。执行原理&#xff1a; 1、一台作为调度机(master)&#xff0c;其它机器做为执行机(slave) 2、执行时&#xff0c;master会把脚本发送到每台slave上&#xff0c;slave 拿到脚本后就开始执行 3、执行完成后&#xff0c;sla…

go语言编译文件踩坑

目录 1 no required module provides package xxx go.mod file not found in current directory or any parent directory; see go help modules 方式1 执行 go env -w GO111MODULEauto后再编译 方式2 创建go.mod 2 报错syscall.go:84:16: undefined: unsafe.Slice 3 b…

ArrayList集合类和对象数组案例区别讲解

目录 对象数组案例讲解 集合 ArrayList类的构造方法和成员方法 对象数组案例讲解 创建一个学生数组&#xff0c;存储三个学生对象并遍历 package com.demo01; /*** * author 无限嚣张菜菜* 分析&#xff1a;* A&#xff1a;定义学生类* B&#xff1a;创建学生数组* C&am…

关于PKI 你了解多少

公钥基础设施PKI&#xff08;Public Key Infrastructure&#xff09;&#xff0c;是利用公开密钥机制建立起来的基础设施&#xff0c;在信息互联互通时代&#xff0c;可以说它是创建、颁发、管理、注销公钥证书所涉及的所有软件、硬件集合体。对拥有庞大用户的系统来说&#xf…

Activity的5种启动模式详解(新增singleInstancePerTask类型)

前言 看到这个标题的时候&#xff0c;也许你会认为我写错了&#xff0c;Activity不是只有四种启动模式吗&#xff1f;分别为startard,singleTop,singleTask,singleInstance这四种。 一般来说是四种&#xff0c;但是android12的时候新加入了singleInstancePerTask类型&#xf…

【金三银四系列】之MySql面试突击(2023版)

Mysql金三银四面试突击班 1.Bin log是什么&#xff0c;有什么用&#xff1f;&#xff08;数据库被人干掉了怎么办&#xff1f;&#xff09; 1.bin Log: 数据恢复 主从复制 MySQL Server 层也有一个日志文件&#xff0c;叫做 binlog&#xff0c;它可以被所有的存储引擎使用。…

PRD-产品需求说明文档

产品需求说明文档&#xff08;PRD&#xff09;可以将产品设计思路清晰的展现给团队人员&#xff0c;便于他们快速理解产品。产品需求说明文档如何写呢&#xff1f;本文希望能够得到高人指点&#xff0c;本人是小白&#xff0c;同时不建议其他小白参考此文以免造成干扰。 包括文…

Spark 学习案例

案例1&#xff1a;搜索引擎日志分析 数据来源&#xff1a;使用搜狗实验室提供的【用户查询日志】数据。使用Saprk框架&#xff0c;将数据封装到RDD中进行数据处理分析。 数据网址&#xff1a;数据地址 这个地址可能过期了&#xff0c;需要的伙伴可以私聊博主。 数据格式&…

css清除浮动的方法

浮动的盒子会脱离标准流&#xff0c;不占有自己原先的位置&#xff0c;导致下面的其他标签往上移动 此时&#xff0c;可以给浮动的盒子添加一个父盒子&#xff08;块级&#xff09;&#xff0c;并设置高度&#xff0c;就可以避免下面的其他标签上浮 但是有时候父盒子不能设置高…

pycharm:新建虚拟环境和安装依赖

前言 小编深有体会&#xff0c;在刚开始用pycharm跑python的项目的时候&#xff0c;一时间不知道如何下手&#xff0c;特别是作为一个新手小白&#xff0c;这里总结了一份新手避坑指南&#xff0c;主要是新建虚拟环境&#xff08;生成一个项目对应的解释器&#xff09;以及安装…

温度预测 python | 使用 Python 可以使用机器学习模型进行温度预测

使用 Python 可以使用机器学习模型进行温度预测。常用的模型有回归分析、随机森林等。使用前需要准备足够的历史数据并进行特征工程&#xff0c;构建模型并进行训练&#xff0c;最后使用预测结果。 文章目录温度预测 回归分析导入必要的库&#xff1a;读取温度数据&#xff1a;…

Java中的插入排序和希尔排序

插入排序&&希尔排序插入排序希尔排序上一篇博客我给大家伙说了一下子堆排序,之所以我把插入排序和希尔排序放在一起呢,是因为希尔排序实际上用到了插入排序的思想,希望下面的内容能够帮助到大家.对于插入排序呢,我们可以参考抓牌顺牌,就在一般情况下,我们也不考虑什么组…