当前位置: 首页 > news >正文

经典文献阅读之--ERASOR(栅格占用过滤动态障碍物)

0. 简介

之前作者在《激光雷达动态障碍物滤除-调研与展望》以及《3D帧间匹配-----剔除动态障碍物》中提到了如何通过各种方法来完成动态障碍物的滤波。而本文也将围绕着如何完成动态障碍物滤波来展开,来介绍《ERASOR: Egocentric Ratio of Pseudo Occupancy-based Dynamic Object Removal for Static 3D Point Cloud Map Building》一文的内容,本文在Github上已经有开源代码以供读者学习。

【ICRA2021】3508-ERASOR:一种基于栅格占据情况之差异的动态物体过滤方法

1. 文章贡献

城市环境的扫描数据通常包括动态对象的表示,如车辆、行人等。然而,当使用扫描数据的连续累积来构建3D点云图时,动态对象通常会在图中留下不必要的痕迹。这些动态物体的痕迹作为障碍,从而阻碍移动车辆取得良好的定位和导航性能。针对这一问题,本文提出了一种新的静态地图生成方法,即基于自我中心比的伪占用的动态对象去除方法(ERASOR),该方法对运动模糊具有快速和鲁棒性。本文的方法将注意力集中在城市环境中大多数动态物体的本质上,它们不可避免地与地面接触。

  1. 本文提出了一种称为扫描比测试(SRT)的快速而健壮的方法,基于城市环境中大多数动态对象(如地面车辆和行人)不可避免地与地面接触的性质,获取包含动态点的栅格。

  2. 获取栅格后,我们应用区域地平面拟合(R-GPF),这是一种计算负荷低的新型静态点检索方法。R-GPF克服了基于射线跟踪的方法和基于可见性的方法的潜在局限性,如图2所示。
    在这里插入图片描述

  3. 与其他最先进的方法进行验证。本文指出了精度/召回指标的局限性,并提出了适用于静态地图构建任务的替代指标:保存率和拒绝率。

  4. 本文提出的方法比最先进的方法显示出有前途的性能。特别是,ERASOR以最小的静态点损失去除动态点,比目前最先进的方法快至少10倍。

2. 详细内容

这里我们可以先来看一下无疆WGH​博客对这篇文章的解析,红色文字是作者对算法各个环节的注释,下面我们将对这四个部分进行解释
在这里插入图片描述

2.1 问题定义与符号系统

先验地图由一帧帧不同时刻的原始点云“拼接”而成,设 P t = { p 1 , p 2 , … , p n } P_t = \{p1, p2,…, pn\} Pt={p1,p2pn}是时间步t时包含n个点的点云集合,其中每个点在笛卡尔坐标下表示为 p k = x k , y k , z k p_k = {x_k, y_k, z_k} pk=xk,yk,zk。设 P t Q P^Q_t PtQ为查询框架上的查询点云, Q W T t ^W_QT_t QWTt为与 P t Q P^Q_t PtQ相关的SE(3)位姿。本文假设姿态集是经过配准优化或校正后得到的。通过让 Q W T t ∗ P t Q ^W_QT_t * P^Q_t QWTtPtQ是世界框架 W W W P t Q P^Q_t PtQ的变换表示,用一组原始LiDAR扫描 M M M构建的先验地图可以公式如下:
在这里插入图片描述
其中 T T T是总时间步长, [ T ] [T] [T]等于 { 1 , 2 , … , T − 1 , T } \{1,2,…, T−1,T\} {1,2T1,T}。注意 M M M在世界坐标系上,包含了所有测量的动态点

接下来,以位姿点 W Q T t ^Q_W T_t WQTt为中心,在 prior map 中以特定半径圈出一个局部的 submap,记作 P t M P^M_t PtM.即 M M M的子地图通过 W Q T t = Q W T t − 1 ^Q_W T_t = ^W_Q T_{t−1} WQTt=QWTt1进行转换。在本文中,使用上标 Q Q Q M M M分别表示查询和映射。设 M M M坐标系坐标系为估计的静态映射,我们感兴趣的问题定义如下:

在这里插入图片描述
ERASOR 的策略中的 M ^ d y n , t \hat{M}_{dyn,t} M^dyn,t指由 P t Q P^Q_t PtQ P t M P^M_t PtM之间的差异,并将 P t M P^M_t PtM中动态的点云并标记出来。

在介绍本文的visibility-free方法之前,必须先说明本文的方法将注意力集中在城市环境中大多数动态物体的本质上,例如地面车辆和行人,不可避免地与地面接触。基于这个假设,我们可以构造四种可能的情况:

  1. P t M P^M_t PtM中有一个物体在地面上,而在 P t Q P^Q_t PtQ中相同位置的地面不受物体的影响。
  2. P t M P^M_t PtM中,地面不受物体的影响,而在 P t Q P^Q_t PtQ中,地面上有相同位置的物体。
  3. P t M P^M_t PtM P t Q P^Q_t PtQ中都有一个物体在地面上。
  4. P t M P^M_t PtM P t Q P^Q_t PtQ中地面上没有物体。

在这些情况中,表示动态对象的点将被分为第一种情况和第二种情况。但是,我们的目标是改进地图云,因此忽略了第二种情况。为了清晰起见,我们定义了两个术语;第一种情况可能是动态的第三种和第四种情况肯定是静态的。

2.2 栅格划分与占据状态描述子计算(R-POD)

栅格划分与计算栅格内的占据状态描述子,是解决两个子问题的第一步。

不难发现, P t M P^M_t PtM P t Q P^Q_t PtQ的原点位置是重叠的,考虑到 query scan 中距离越远的地方点云越稀疏,我们首先要圈定范围:对 P t M P^M_t PtM P t Q P^Q_t PtQ ,我们均只考虑距离原点 80 米半径范围内 、-1米到+3米高度区间内的空间,这个空间是我们的感兴趣区域 —— Volume of Interest, VOI。
在这里插入图片描述
接下来,将 VOI 按照角度和半径划分为一个个栅格,以自我为中心的方式定义了一个垂直容器,用垂直信息的边界差来表示占用,或伪占用。与Scan Context类似,RPOD取 V t V_t Vt,在方位角方向和径向方向的规则间隔(即扇区和环)上对体积进行划分。设 N r N_r Nr N θ N_θ Nθ为环数和扇区数。则R-POD记为 S t S_t St,可表示为:
在这里插入图片描述
其中 S ( i , j ) , t S_{(i,j),t} S(i,j),t表示R-POD在时间步长 t t t时的 ( i , j ) (i,j) (i,j)栅格处,令 θ = a r c t a n 2 ( y , x ) θ = arctan 2(y, x) θ=arctan2(y,x),则每个 S ( i , j ) , t S_{(i,j),t} S(i,j),t由满足以下条件的云点组成
在这里插入图片描述
其后,单位空间即每个料仓分配一个实数来描述伪占用量 ∆ h ( i , j ) ∆h_{(i,j)} h(i,j),t。设 Z ( i , j ) , t = z k ∈ p k ∣ p k ∈ S ( i , j ) , t Z_{(i,j),t} = {z_k∈p_k|p_k∈S_{(i,j),t}} Z(i,j),t=zkpkpkS(i,j),t。然后,对每个bin的伪占用进行如下编码:
在这里插入图片描述
这个高度差,描述了该 bin 内的点云分布信息。经过该步骤处理后的 P t M P^M_t PtM P t Q P^Q_t PtQ如下图所示,很容易看出一个个扇区状的 bin 。
在这里插入图片描述

2.3 根据描述子对比筛选潜在动态区域(SRT)

针对查询点云和地图点云的 P t M P^M_t PtM P t Q P^Q_t PtQ的R-POD,提出了扫描比测试(SRT)来检验伪占用是否存在差异。SRT是由尺度不变特征变换(SIFT)[26]中的Lowe’s Ratio检验驱动的。结果表明,基于比率的方法对基于全局阈值的方法[26]的场景变化具有更强的鲁棒性。

这里我们来对比 S t Q S^Q_t StQ S t M S^M_t StM中每对栅格的伪占用率之比,即 ∆ h ( i , j ) , t Q ∆h^Q_{(i,j),t} h(i,j),tQ ∆ h ( i , j ) , t M ∆h^M_{(i,j),t} h(i,j),tM之比。然后使用扫描比率将栅格分类到前面提到的情况,并选择属于潜在动态情况的栅格,其中任何一个栅格都包含我们感兴趣的动态点。简单地说,如果两个栅格都没有变化,扫描比必须接近于1,即绝对静态的情况,而属于潜在动态情况的扫描比必须远小于1,这是由地面上存在一个动态物体引起的,如第II.A节所述。

在这里插入图片描述

…详情请参照古月居

相关文章:

  • 经典文献阅读之--ERASOR(栅格占用过滤动态障碍物)
  • 2023年B题人工智能对大学生学习影响的评价
  • 2023电工杯数学建模竞赛A题思路解析+代码+论文
  • 【uniapp】踩坑日记核心重点
  • docker入门(1)----服务/镜像/容器相关命令
  • 100种思维模型之全局观思维模型-67
  • 设计模式 - 观察者模式
  • 【Go语言从入门到实战】面向对象编程篇
  • 前端人必须掌握的抓包技能(原理到实践)
  • 『树莓派云台机器人』01. 使用手机控制树莓派云台机器人
  • Dart 语言的空安全特性
  • Linux 内存管理全面剖析
  • chatgpt赋能python:Python二维码解码-从介绍到结论
  • java设计模式之责任链设计模式的前世今生
  • C# 栈(Stack)
  • 热门API 大全推荐(含OCR 识别/运营商二要素等)
  • 版图设计IC617 virtuoso工具使用,创建一个库
  • 小程序外包开发上线流程
  • OPCUA从入门到精通看这里就够了
  • 盘点2023天猫淘宝618满减规则和活动时间表
  • JVM-基础知识
  • 【ZYNQ】QSPI Flash 固化程序全攻略
  • Ansys Zemax | 如何模拟部分反射和散射的表面
  • Spring:Spring框架结构 ②
  • 【SVN内网穿透】远程访问Linux SVN服务
  • 快速入门Matlab——深入学习字符串
  • 【c语言习题】使用链表解决约瑟夫问题
  • 如何在 Python 中循环字典
  • 7.条件渲染
  • 基于STM32的DHT11温湿度测量