【论文笔记】Dynamic Occupancy Grids for Object Detection: A Radar-Centric Approach

原文链接:https://arxiv.org/abs/2402.01488

I. 引言

感知环境在自动驾驶中非常重要,但传统的方法将这一过程分为两方面:动态物体的检测和跟踪,以及使用占用网格表达静态环境。占用网格难以表达高度动态的物体,因此动态占用网格(DOGM)的概念被提出,并与粒子滤波器结合,跟踪环境中的静态和动态物体。但是目前的方法多依赖激光雷达,仅使用雷达进行性能提升。随着雷达分辨率的提高,基于雷达的DOGM也得到了发展,但只在短期场景中测试,且相比激光雷达方法的改动较少,没有针对雷达的优势进行改进或处理雷达的缺陷。

III. 方法

A. 环境表达

自车周围的环境被表达为以自车为中心的网格地图,每个网格存储了4种状态(空、静态、动态、未知)的概率。粒子用于帮助跟踪动态占用。每个粒子基于其位置,与特定网格关联。如下图所示。
在这里插入图片描述

B. 以雷达为中心的动态占用网格建图

1) 确定测量网格

首先确定由最新的测量影响的网格(占用、空、未知),这需要使用逆传感器模型(ISM)。对激光雷达来说,标准的解决方案是使用射线投射算法(如下左图所示)。但雷达的角度不确定性更大,且能在不同程度上穿透材料。此外,雷达的测量比激光雷达少得多,导致跟踪射线无法填充所有的已知空白区域。本文使用考虑角度不确定性和波传播的ISM(如下右图所示)。
在这里插入图片描述

2) 网格状态计算

基本的假设是,所有未被占用的网格为静态的。

雷达的测量包括位置坐标,自车运动补偿的距离变化率,和RCS值:
x m e a s = [ x m a p , y m a p , v r , r c s ] T x_{meas}=[x_{map},y_{map},v_r,rcs]^T xmeas=[xmap,ymap,vr,rcs]T

占用网格或空网格属于空空间的概率 P f r e e P_{free} Pfree基于与测量之间的距离 d d d计算:
d c = ∥ [ x m a p , y m a p ] T − [ x c , y c ] T ∥ 2 f d ( d ) = 1 σ f 2 π exp ⁡ ( 1 2 ( d − μ f σ f ) 2 ) P f r e e = 1 − f d ( d c ) d_c=\|[x_{map},y_{map}]^T-[x_c,y_c]^T\|_2\\ f_d(d)=\frac1{\sigma_f\sqrt{2\pi}}\exp(\frac 1 2(\frac{d-\mu_f}{\sigma_f})^2)\\ P_{free}=1-f_d(d_c) dc=[xmap,ymap]T[xc,yc]T2fd(d)=σf2π 1exp(21(σfdμf)2)Pfree=1fd(dc)

属于未知状态的概率 P u n k P_{unk} Punk的计算过程与上述类似,但仅针对未知网格计算。

与激光雷达方法使用网格内粒子的平均速度不同,本文使用测量的距离变化率 v r v_r vr来确定占用网格的动静属性。为确定静态与动态概率,假定非零的距离变化率可表明物体运动。尽管该假设并不总是成立,但不成立的情况很少出现。因此,可通过此区分静态网格。这样,可以减少需要的粒子数,从而减少计算时间(见后文)。对于占用网格,静态和动态的概率按下式计算:
P d y n = f d ( d ) × P ( v r ≠ 0 ) + ( 1 − f d ( d ) ) × p r i o r ( d y n ) P s t a t i c = f d ( d ) × P ( v r = 0 ) + ( 1 − f d ( d ) ) × p r i o r ( s t a t i c ) P_{dyn}=f_d(d)\times P(v_r\neq0)+(1-f_d(d))\times prior(dyn)\\ P_{static}=f_d(d)\times P(v_r=0)+(1-f_d(d))\times prior(static) Pdyn=fd(d)×P(vr=0)+(1fd(d))×prior(dyn)Pstatic=fd(d)×P(vr=0)+(1fd(d))×prior(static)

其中,距离函数用于减少测量随距离增加的影响。使用归一化RCS值对雷达测量的贡献进行加权:
r c s n o r m = r c s − min ⁡ ( r c s ) max ⁡ ( r c s ) − min ⁡ ( r c s ) rcs_{norm}=\frac{rcs-\min(rcs)}{\max(rcs)-\min(rcs)} rcsnorm=max(rcs)min(rcs)rcsmin(rcs)

可按下式得到各状态概率:
P ∗ = r c s n o r m × P ∗ + ( 1 − r c s n o r m ) × 0.5 , ∗ ∈ { u n k , f r e e , s t a t i c , d y n } P_{*}=rcs_{norm}\times P_*+(1-rcs_{norm})\times0.5,\ \ \ *\in\{unk,free,static,dyn\} P=rcsnorm×P+(1rcsnorm)×0.5,   {unk,free,static,dyn}

最后,使用贝叶斯公式更新网格的概率。

3) 状态修正

由于运动物体的距离变化率不一定不为0,本文提出两种方法修正网格状态。

测量网格修正:基于“高度动态的网格不能突变为静态”的假设。本文基于已有的积累DOGM更新测量网格:
P c = [ P u n k , P f r e e , P s t a t i c , P d y n ] T P c o r r , c = [ 1 0 0 0 0 1 0 0 0 0 1 − s l P ( v ≠ 0 ) d l P ( v = 0 ) 0 0 s l P ( v ≠ 0 ) 1 − d l P ( v = 0 ) ] P c P_c=[P_{unk},P_{free},P_{static},P_{dyn}]^T\\ P_{corr,c}=\begin{bmatrix}1&0&0&0\\0&1&0&0\\0&0&1-s_lP(v\neq0)&d_lP(v=0)\\0&0&s_lP(v\neq0)&1-d_lP(v=0)\end{bmatrix}P_c Pc=[Punk,Pfree,Pstatic,Pdyn]TPcorr,c= 10000100001slP(v=0)slP(v=0)00dlP(v=0)1dlP(v=0) Pc

其中 P ( v ≠ 0 ) P(v\neq0) P(v=0) P ( v = 0 ) P(v=0) P(v=0)根据DOGM中的平均粒子速度计算, s l s_l sl d l d_l dl位于0到1之间,决定最新测量和现有DOGM的权重。
在这里插入图片描述
错误的静态检测:为避免将低速动态物体检测为静态物体,本文使用Dynablox算法。本文使用网格被分类为静态或空空间的次数来确定其是否为动态物体。若一个网格超过 T s t a t i c T_{static} Tstatic次被分类为静态,且在过去超过 T f r e e T_{free} Tfree次被分类为空空间,则将其转化为动态状态。阈值次数用于调节敏感度。
在这里插入图片描述

4) 粒子创建、权重计算和重采样

确定每个网格的状态概率后,会对新的动态网格(动态状态的概率最高的网格)创建粒子,与现有的粒子一起组成粒子池。粒子由状态向量 x p = [ x p , y p , v x , v y , w t ] T \mathbf{x_p}=[x_p,y_p,v_x,v_y,w_t]^T xp=[xp,yp,vx,vy,wt]T表达,其速度被定义在全局坐标系下,而位置被定义在网格坐标系下。权重表达粒子代表被跟踪物体的可能性,由测量决定:
w t = f d ( d p ) f r ( r p ) ⏟ 更新 ( 1 − f d ( d p ) ) ( 1 − ϵ ) w t − 1 ⏟ 先验 w_t=\underbrace{f_d(d_p)f_r(r_p)}_{更新}\underbrace{(1-f_d(d_p))(1-\epsilon)w_{t-1}}_{先验} wt=更新 fd(dp)fr(rp)先验 (1fd(dp))(1ϵ)wt1

其中 d p d_p dp为粒子与最近测量的距离(即基于距离减弱测量对粒子的影响), f r ( r p ) f_r(r_p) fr(rp)为概率密度函数,用于比较粒子的距离变化率 r p r_p rp和测量的距离变化率。

此外,采样粒子会有与最近测量的距离变化率相匹配的速度,且该速度会被限制在最大速度以下,从而减小距离范围。最后,基于权重重采样粒子。

5) 归一化与占用预测

所有状态概率和粒子权重会被归一化,得到精确的概率。此外,动态状态概率按权重比例在网格内的粒子权重间分布。

最后,所有粒子根据线性运动模型,预测下一时刻的动态占用。使用的状态转移矩阵如下:
[ 1 0.1 0.1 0.05 0 0.9 0 0 0 0 1 − P ( v ≠ 0 ) P ( v = 0 ) 0 0 P ( v ≠ 0 ) 1 − P ( v = 0 ) ] \begin{bmatrix}1&0.1&0.1&0.05\\0&0.9&0&0\\0&0&1-P(v\neq0)&P(v=0)\\0&0&P(v\neq0)&1-P(v=0)\end{bmatrix} 10000.10.9000.101P(v=0)P(v=0)0.050P(v=0)1P(v=0)

IV. 评估

A. 评估数据

可通过使用HDBSCAN算法聚类粒子生成动态物体。

B. 定性评估

可视化表明,本文方法比HSBOF-RS有更高的召回率(能避免动态物体的漏检)。但因为聚类算法和雷达Dynablox算法的不完美,以及粒子数较少,导致了较低的精度。

跟踪方面,基准方案会在物体垂直于其相对雷达的方向运动时丢失物体,而本文方法因其修正算法不会出现这一现象。

C. 定量评估

在RadarScenes数据集上进行动态目标检测任务(使用算法生成边界框),总体来说本文方法不如基于深度学习的方法,但部分指标能达到相当水平,且本文方法能提供的不仅仅是动态目标检测结果。但与HSBOF-RS相比,本文方法性能更优。

本文方法在大型车辆上的检测分数最低,这是因为大型物体在雷达测量中通常是支离破碎的。

本文方法的精度比召回率更低。可通过改进聚类算法并微调雷达Dynablox来减少假阳性,从而提高精度;可通过整合基于粒子分类的方法,进行更敏感的动态分类,从而提高召回率(在DOGM中,召回率低不是因为目标缺失,而是因为网格被错误分类为静态)。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端Vue3项目如何打包成Docker镜像运行

将前端Vue3项目打包成Docker镜像并运行包括几个主要步骤:项目打包、编写Dockerfile、构建镜像和运行容器。下面是一个基本的流程: 1. 项目打包 首先,确保你的Vue3项目可以正常运行和打包。在项目根目录下执行以下命令来打包你的Vue3项目&am…

OSI七层模型/TCP四层模型

协议: 协议是双方共同指定的一组规则,在网络通信中表示通信双方传递数据和解释数据的一组规则。 从A上传文件到服务器B,需要在A和B之间制定一个双方都认可的规则,这个规则就叫文件传输协议,该协议是ftp协议的一个初级版本&#…

知识图谱1——neo4j

2024年要搞知识图谱,因此没有办法,只能将我之前固守的JDK1.8,升级到JDK21,因为JDK21也是LTS版本,neo4j高版本就不支持JDK8,因此没有办法,只有升级了。写这篇只是一个搭建笔记,我的初…

数据开发必知必会 - 数据仓库理论总结

一、数据仓库特点(4个特点) 1.1、数据仓库是面向主题的 1.2、数据仓库是集成的 1.3、数据仓库的数据是稳定的 1.4、数据仓库中的数据是随时间变化而变化的 二、数据仓库分层(特点or意义) 2.1、把复杂问题简单化 2.2、减少重复开发 2.3、隔离原始数据 三、数据仓库核心…

c语言经典测试题10

1.题1 int fun( int x) {int n 0;while (x 1){n;x x | (x 1);}return n; } int main() {int ret fun(2014);printf("%d", ret);return 0; } 上述代码运行结果是什么呢? 我们来分析一下:这里的fun函数有一个while循环,其判断…

详解队列的接口函数

队列的定义 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。 进行插入操作的…

CleanMyMac X2024免费Mac电脑清理和优化工具

CleanMyMac X是一款专业的 Mac 清理和优化工具,它具备一系列强大的功能,可以帮助用户轻松管理和维护他们的 Mac 电脑。以下是一些关于 CleanMyMac X 的主要功能和特点: 智能清理:CleanMyMac X 能够智能识别并清理 Mac 上的无用文件…

AJAX实例

AJAX - Asynchronous JavaScript and XML - 异步的JavaScript与XML,不是一门新技术,只是一个新的术语。(老技术新玩法) - 使用AJAX,网页能够将增量更新呈现在页面上,而不需要刷新整个页面。 - 虽然X代表…

考研机试C++题目精选

更多内容会在godownio.github.io更新 算法练习(C代码) 考研上机或C语言代码笔试准备,暨大机试原题letcode牛客中南大等高校机试 快速幂算法 题目:输入一个整数 n ,求 n^n 的个位数是多少。 快速幂算法:…

初识C语言—常见关键字

变量的命名最好有意义 名字必须是字母&#xff0c;数字&#xff0c;下划线组成&#xff0c;不能有特殊字符&#xff0c;同时不能以数字开头 变量名不能是关键字 typedef---类型定义&#xff0c;类型重命名 #include <stdio.h>typedef unsigned int uint; //将unsigne…

第七十二天 漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

第72天 漏洞发现-Web框架中间件&联动&Goby&Afrog&Xray&Awvs&Vulmap 知识点&#xff1a; 1、Bup简单介绍&使用说明 2、Xray简单介绍&使用说明 3、AWWS简单介绍&使用说明 4、Goby简单介绍&使用说明 5、Afrog简单介绍&使用说明 6、…

Qt/自定义控件的封装

新建文件&#xff0c;选择Qt设计师界面类 创建空界面 这是自己控件封装的文件&#xff0c;双击跳转到设计界面进行设计 跳转到其他的ui界面&#xff0c;创建一个widget 右键&#xff0c;选择提升为 在提升的类名称输入刚刚创建的类名&#xff0c;添加后选择提升&#xff0c;勾选…