经典文献阅读之--DOGM(动态占用网格图)

0. 简介

最近在群里被萌新询问2D激光雷达的工作还能做什么,我当时有点难以回答,cartographer作为2D的集大成者,留给后续工作者改进的地方已经很少了。直到我最近看到了这一篇文章《Dynamic Occupancy Grid Mapping with Recurrent Neural Networks》,也给我个人提供了一个比较新的方向,即动态栅格地图的更新方式。这里我们详细看一下这篇文章。

【ICRA2021】基于递归神经网络的动态占用栅格地图

1. 文章贡献

建模和环境识别是自动驾驶的一项重要任务。除了目标的检测,在复杂的交通情况下,其他道路参与者的运动也是值得特别关注的。而本文让具有移动自我车辆的各种场景中将车辆环境建模为DOGM。因此我们提出使用递归神经网络来预测动态占用网格图, 它将车辆周围分成若干单元,每个单元包含占用概率和速度估计值。所使用的网络架构基于UNet[9],但由多个卷积长短期记忆网络[10]组成,它们被放置在不同的网络层次上,以利用不同分辨率上的时间信息。在训练过程中,我们的网络接收有序的测量网格映射,这些网格映射对单一时间步长的激光雷达测量数据进行编码。由于卷积层和递归层的结合,我们的方法能对静态和动态环境进行稳定的检测。如下图所示,在部署期间,循环神经网络根据在测量网格地图中编码的当前lidar测量值和最后一个时间步长作为循环状态,每个时间步预测一个DOGM。在描述的具有移动自移动载具的序列中,预测的DOGM显示了估计静态和动态区域的能力,与自身车辆完成运动分离。为实现这一目标,本文提出一种输入放置(IP)的组合,以补偿网络输入和递归状态移动(RSS)的小移动,其中,如果在几个时间步骤中发生较大的位移,网络中的所有递归状态都会同步移动。本文的贡献是:

  1. 引入IP和RSS,以将网络应用于移动的自我车辆
  2. 在大型公共数据集上进行彻底的评估
  3. 与基于粒子的方法相比具有优越的性能。
    在这里插入图片描述

2. 详细内容

在本节中,我们将介绍基于学习的方法来估计DOGM。首先,阐述了估计算法的问题,并总结了之前的工作[8],它是该方法的网络结构的基础。提出了自我运动补偿方法,将网络架构应用于有移动自我车辆的场景中。

2.1 问题数学化

本文旨在基于一系列测量栅格地图来估计DOGM。网格地图将周围的车辆划分为边缘大小相等的单个单元格,其中每个单元格包含其所在空间的信息。在占用网格地图中,每个单元格被描述为一个状态 o k o_k ok,用来表示空闲或被占用[2],[3]。测量网格地图是占用网格地图,基于单个时间步 k k k的传感器测量 z k z_k zk。因此,车辆环境被表示为 R W × H × c m \mathbb{R}^{W×H×c_m} RW×H×cm中的一个张量,宽度 W W W,高度 H H H和一个通道 c m = { p z k } c_m = \{p_{z_k}\} cm={ pzk}包含每个单元的单帧占用概率 p z k p_{z_k} pzk。这些测量网格地图作为我们模型的输入数据,并按照[8]中描述的方式进行计算。该方法的输出是具有相同空间大小和通道 c d = { p o , v E , v N } c_d = \{p_o, v_E, v_N\} cd={ po,vE,vN}的DOGM,其中包含滤波后的占用概率 p o p_o po和指向东 v E v_E vE和北 v N v_N vN的速度。

2.2 静止环境下的网络结构

我们的网络架构如图2所示,结合了类似于[8]的前馈层和递归层。在训练期间,由编码器处理维度为 R n i n × 1001 × 1001 × 1 \mathbb{R}^{n_{in}^{×1001×1001×1}} Rnin×1001×1001×1 n i n n_{in} nin测量网格地图序列,编码器由几个卷积层组成,并使用步幅为3的卷积将输入减少三次,以 R n i n × 38 × 38 × 128 \mathbb{R}^{n_{in}^{×38×38×128}} Rnin×38×38×128表示。该张量被用作两层卷积长短期记忆(ConvLSTM)[10]的输入,其隐藏状态和单元状态与输入大小相同。此外,我们按照[36]中首次提出的方法,在每个跳跃连接中插入ConvLSTM。在这三个ConvLSTM中,我们使用通道数比输入数据少的隐藏状态和单元状态来节省内存。所描述的结构导致了四个网络层次 l ∈ { 1 , 2 , 3 , 4 } l∈\{1,2,3,4\} l{ 1,2,3,4},网格单元大小 s c = [ s c , 1 , s c , 2 , s c , 3 , s c , 4 ] T = a ⋅ [ 1 , 3 , 9 , 27 ] T sc = [s_{c,1}, s_{c,2}, s_{c,3}, s_{c,4}]^T = a·[1,3,9,27]^T sc=[sc,1,sc,2,sc,3,sc,4]T=a[1,3,9,27]T,其中 a = 0.15 m a = 0.15 m a=0.15m。循环层的输出在两个单独的解码器中使用,它们被构建为具有转置卷积层的镜像编码器,以将数据缩放到与输入相同的空间大小。第一个解码器用于预测速度 v E v_E vE, v N v_N vN的占用概率 p o p_o po,第二个解码器用于预测速度 v E v_E vE, v N v_N vN。与[8]架构相比,在第二个解码器中增加了动态单元的分类作为辅助任务,提高了 v E v_E vE, v N v_N vN的回归速度。

在这里插入图片描述

2.3 基于自移动车辆的动态网格映射

在具有不移动的自我车辆的环境中,固定栅格保持在相同的位置,而递归神经网络,可以直接检测移动区域并预测每个栅格的全局速度 v E v_E vE, v N v_N vN。要对移动的自我载具做出相同的预测,需要通过将移动设置转回网络架构内的静止设置来补偿自我运动。为了明确动机,在图3中说明了基于三个连续时间步骤的测量栅格图的自我运动补偿方法。在左侧,测量栅格地图在全局坐标系中可视化。请注意,无论自我车辆的方向如何,地图总是可以放置在一个在北方和东方方向对齐的全局网格中,其中网格原点为 p o s r e f pos_{ref} posref(参考位置),网格单元大小为0.15m。在这种全局设置中,静止区域彼此重叠,物体的运动与自我运动分离。在递归层中实现这种自我运动补偿设置的可能性是,在用新的输入数据更新内部状态之前,根据自我载体的运动来移动内部状态。然而,在我们的网络中,我们在不同的分辨率上应用递归层,因此简单地移动递归状态将导致不同网络级别上的递归状态之间的不一致。为了规避这个问题,我们建议用我们的输入放置(IP)直接补偿第4级单元内的移动。如果在几个时间步骤中发生较大的漂移,即在第四层的栅格之间发生移动,那么所有内部循环状态都与我们的循环状态移动(RSS)同步移动。对于自运动补偿,我们使用当前自运动车辆的位置作为索引 i g , l i_{g,l} ig,l在全局网格中,网格单元大小为 s c , l s_{c,l} sc,l,以及东 i E , l i_{E,l} iE,l和北方向的索引 i N , l i_{N,l} iN,l

这个全局网格索引定义为
在这里插入图片描述

…详情请参照古月居

猜你喜欢

转载自blog.csdn.net/lovely_yoshino/article/details/127717113