自适应点云压缩方法

利用城市环境中的自适应点云应对自动驾驶的数据复杂性

摘要

激光雷达传感器在自动驾驶和高级驾驶辅助系统中发挥着关键作用。通过发射高频率的激光束,激光雷达设备能够将其周围环境投影为二维或三维点云,可用于目标检测、地图生成、定位和导航等不同用途。自动驾驶车辆通常配备至少一个具有360度覆盖范围的多层激光雷达传感器,以尽可能包含更多的点云信息。此类设备会产生海量数据,对数据存储、实时计算和数据传输带来挑战,因为自动驾驶车辆通常是资源受限系统。本文提出一种轻量级的自适应点云数据结构,以减小三维点云的大小。该建议的数据结构可灵活配置不同参数,以适应精度、测距范围和反射率分辨率的需求。本文使用16线Velodyne激光雷达传感器(VLP‐16)在AstaZero试验场城区和哥德堡市中心采集数据,对数据结构的精度进行了评估。结果表明,该自适应数据结构仅需原始点云大小的1/8,因此特别适用于硬件资源有限或对点云精度有一定容忍度的应用场景。该建议的概念也可推广至其他类型的点云传感器。

一、引言

自动驾驶车辆和高级驾驶辅助系统需要多种类型的传感器来感知周围环境。激光雷达(Light Detection and Ranging)传感器[1]已广泛应用于道路感知场景中。激光雷达传感器发射高频激光束,这些激光束反射后将周围环境投影为二维或三维点云,包含每个点的距离、方向,有时甚至反射率等信息。随后对点云进行处理,用于目标检测[2], 导航[3], 或定位[4]等任务。由于激光雷达在恶劣天气和光照条件下的鲁棒性,它与基于视觉的感知技术形成互补。

有多种类型的激光雷达传感器,其层数、视场角和距离覆盖范围各不相同。对于自动驾驶而言,具有360度视场角的多层激光雷达传感器正受到越来越多的关注,因为更多的层数和更广的视场角能够丰富点云信息。这类传感器以高数据速率产生海量数据。例如,一款16线Velodyne激光雷达传感器 5 原始数据包每秒生成约1MB的数据。解码VLP‐16数据包后,存储点云的数据速率达到4.8MB/s。对于同属Velodyne系列的32层和64层型号,数据量将进一步增加。激光雷达传感器产生的这种大数据对自动驾驶车辆构成了挑战,因为这些车辆通常是存储、计算能力和网络带宽有限的资源受限系统。

本文提出了一种轻量级自适应点云(APC)数据结构,该结构显著减少了来自VLP‐16等点云传感器所需处理的数据量。此外,其基本概念可推广至其他类型的点云传感器。APC的轻量性体现在它能将一次完整的360度扫描所生成的3D点云压缩到单个UDP数据包中,仅占用原始点云大小的1/8。其自适应性体现在可根据变化的参数动态调整,以调节精度、测距范围或反射率分辨率。

原始VLP‐16点云为每个点存储距离、方位角(水平角度)、垂直角和反射率信息。APC从三个方面以自适应的有损方式压缩原始点云:(1)APC仅存储一次完整扫描的起始方位角和结束方位角,中间的方位角值通过估计获得;(2)APC对具有相同方位角的每组16个传感器按垂直角递增的顺序重新排列,并使用固定增量,从而无需在数据结构中编码垂直角;(3)APC要么丢弃反射率信息,要么将反射率值合并到同一个数据包中。

与原始的点云数据表示相比,APC可能会牺牲精度和反射率信息以减少数据量。APC是一种适用于密集城市环境等场景的合适数据结构,在这些场景中可以权衡精度、测距范围和反射率分辨率之间的取舍。

我们在AstaZero试验场的城区和瑞典哥德堡市中心采集的数据中,通过将APC与原始点云进行比较来评估我们方法的精度。

本文的其余部分组织如下:第二节描述了VLP‐16的数据包结构及其3D点云的数据结构。第三节描述了APC的数据结构,并在第四节中进行了评估。相关工作在第五节中讨论,第六节总结了本文的贡献并展望了未来工作。

II. VLP‐16 数据包与点云结构

A. VLP-16数据包结构

VLP‐16 包含 16 组垂直排列的激光/探测器对,可在 16 个不同的层中生成点云,提供从 ‐15◦到 15◦的垂直视场。通过 5‐20Hz 的旋转速率,VLP‐16 能在 50‐200ms 内完成一次完整扫描。每个激光器都有其唯一的激光ID和固定的垂直角。映射到激光ID 0‐15 的垂直角分别为:‐15◦, 1◦, ‐13◦, 3◦, ‐11◦, 5◦, ‐9◦, 7◦, ‐7◦, 9◦, ‐5◦, 11◦, ‐3◦,13◦, ‐1◦, 15◦。该映射关系由供应商提供的 XML格式 校准文件指定,对于正确解码 VLP‐16 数据至关重要。

VLP‐16每秒输出754个UDP数据包。每个VLP‐16数据包由一个42字节的头部和一个1206字节的有效载荷组成。该有效载荷包含12个100字节的数据块,其后是一个4字节的时间戳数据和两个厂家字节。每个100字节数据块的结构如下:
- 起始标识符 0xFFEE:2 字节
- 方位角:2 字节(除以 100 得到度数)
- 32*(2字节 距离 + 1字节 反射率)

距离值的分辨率为2mm。一个字节的反射率意味着有256个反射率级别。每个数据块包含32个点的距离和反射率值,对应于16个激光器的两次发射序列。由于每个块中仅报告一个方位角值,因此块中第二组16个点(即第二次发射序列)的方位角必须基于当前块中的方位角和下一个块的方位角进行插值。最简单的方位角插值方法是假设待插值的方位角位于当前块与下一块两个报告方位角值的中间位置。方位角的范围是从 0◦到 360◦。每次完整扫描的起始方位角应接近 0◦,而每次完整扫描的结束方位角应接近 360◦。当报告或插值得到的方位角小于前一个方位角时,便开始一次新的扫描。

B. VLP-16 帧和共享点云结构

在3D点云可视化方面,一次完整的扫描可被视为一个VLP‐16帧。帧率和每帧点数取决于VLP‐16的旋转速率。例如,10赫兹的旋转速率可产生每秒10帧。VLP‐16每秒最多发射0.3百万个点,意味着在10赫兹旋转速率下每帧包含30,000个点。在本文其余部分中,除非另有说明,我们始终假设旋转速率为10赫兹。

我们实现了一个开源的VLP‐16解码器,用C++编写,可将VLP‐16数据包逐帧解码为共享点云(SPC)和/ 或APC帧。SPC这一名称源于其基于共享内存段,该内存段包含二维向量以存储信息。每帧最多包含30,000个点。在本地多个进程之间共享点云可能存在需求,而共享内存是共享大型数据结构最有效的方法之一。在SPC中,每个点的信息可以用极坐标或笛卡尔坐标表示。前者提供每个点的距离、方位角、垂直角和反射率,后者提供每个点的x、y、z坐标和反射率。这两种方式在磁盘占用上是相等的,因为它们都使用4个数据字段来表示每个点。我们更倾向于使用极坐标,因为它易于转换为对应的笛卡尔坐标表示。SPC对所有数据字段均采用4字节的浮点类型。由于两种情况下都有4个数据字段,因此在SPC中表示每个点需要消耗16字节。假设每帧30,000个点,则每个SPC帧的大小为16*30,000= 480KB,即在10赫兹运行时每秒4.8MB。

请注意,每帧30,000个点是10赫兹下的上限。我们的实验表明,每帧的点数约为29,000。此外,VLP‐16建议忽略距离值小于1米的点。这将每帧的点数减少到约22,000至23,000,有时甚至更少,从而加速了我们算法中VLP‐16数据包的处理。然而,这并不能减少SPC共享内存的大小,因为共享内存在软件初始化阶段是静态分配的,必须确保其大小足以在最坏情况下存储30,000个点。

III. 自适应点云数据结构

作为本工作的主要贡献,提出了一种自适应点云(APC),以作为一种轻量级且自适应的替代方案,取代典型的点云表示方法(如SPC),在显著减小点云规模的同时,探索仅编码必要信息所带来的潜在优势。一次完整扫描的APC数据结构包括:
- 帧的起始方位角
- 帧的结束方位角
- 层数:VLP‐16 为 16 层
- 包含所有点的距离值和可选的降级反射率信息的字节数组
- 两字节距离值中保留给反射率的位数
- 反射率放置:保留用于反射率的两字节距离值中的最低位或最高位

示意图0

APC在三个方面不同于SPC。首先,它不存储每个点的方位角,而是仅存储每帧的起始方位角和结束方位角,并让APC接收器估算所有中间的方位角值。严格来说,VLP‐16的16个激光器并非同时发射,相邻激光器之间的发射存在2.304μs的延迟。然而,这种延迟极小,通常可以假设16个激光器同时发射。基于此假设,同一序列中16个激光器发射的每16个点应共享相同的方位角。由于每个VLP‐16帧包含30,000个点或更少,因此完整扫描的方位角数量为30,000/16= 1,875。因此,水平角分辨率为360/1,875= 0.192◦。在SPC中,1,875个方位角的一半直接来自VLP‐16数据包,另一半通过插值得到。APC采用相同的方位角插值原理,但除起始和结束方位角外,所有中间方位角值均通过插值获得,并假设方位角增量相等。由于VLP‐16以恒定速度旋转并以恒定延迟发射激光,实际的方位角增量接近于0.192◦。

除了方位角估计外,APC通过利用激光ID与垂直角之间的固定映射关系,完全省略了SPC中的垂直角信息。使用字节数组来存储所有点的距离值以及可选的降级反射率。在此数组中,同一发射序列的每16个点按照垂直角从‐15◦到 15◦递增排列,增量为恒定的 2◦。因此,APC接收端只需知道每16个点的这一垂直角模式,即可推导出APC数据结构中所有点的垂直角。这使得APC在垂直角精度上与SPC相当。APC数据结构还包含每个方位角的层数信息,使APC能够推广到具有不同层数的其他点云传感器。与SPC不同,APC不会忽略距离值小于1米的点,因为跳过点会破坏垂直角的排列模式。尽管APC存储的点数多于SPC,但APC的大小仍明显小于SPC。

APC与SPC之间的最后一个区别是,APC在距离值中使用了分辨率较低的降级反射率。其原理在于,在某些情况下,反射率可以用低于256的分辨率表示,而典型的自动驾驶应用会通过视觉传感器的信息来丰富点云数据,甚至可提供颜色信息。如APC数据结构所示,可以通过指定两字节距离值中保留给反射率的位数以及最高位或最低位是否保留给反射率来配置APC。如果为反射率保留的位数为0,则完全不包含反射率信息,此时APC中的距离值与SPC一样精确。如果在两字节距离值中为反射率保留最高位,则覆盖的距离将缩短。例如,根据VLP‐16数据表,VLP‐16的完整测距范围为1‐100米。如果保留一个最高位用于反射率,APC能够区分两个反射率等级。因此,距离仅剩15位,测距范围则被限制在0x7FFF=32,767。考虑到2毫米分辨率,最大覆盖距离为32,767/500=65.534米。如果保留两个最高位用于反射率,则支持四个反射率等级,而测距范围缩短至32.766米。对于城市内场景,如第IV‐B节所述,此类覆盖范围可能已足够。

相比之下,如果最低位用于反射率,则测距范围保持不变,而测距精度会降低。例如,当最低两位用于反射率时,距离值从剩余的14位中提取,并假设最低两位均为0。诸如0x7FF1、0x7FF2和0x7FF3的距离值都将被视为0x7FF0。一般而言,设 n(n ≤ 8)为用于反射率的最低位数,则最大距离误差为(2n − 1)/500米。如果 n= 2,最大距离误差仅为6毫米。

APC的大小主要由包含所有点的距离和反射率信息的字节数组的大小决定。假设每帧有30,000个点,每个点占用两个字节,则该数组占用60KB,而每帧APC大小略大于60KB。相比之下,SPC每帧需要480KB,APC的大小仅为SPC的1/8。此外,每帧APC大小甚至小于一个UDP数据包的大小(65,535字节)。这使得VLP‐16点云能够通过网络实现实时流畅传输。在我们的车辆实验室中,我们利用这一特性,使用一台计算机解码VLP‐16实时数据流并编码为在网络中广播的APC,同时使用同一网络中的另一台计算机接收APC数据流以实现流畅的可视化。

IV. 评估

本节中,以SPC为参考,对APC在尺寸、精度和处理时间方面进行了全面评估。评估基于在AstaZero试验场城区和哥德堡市中心采集的数据。数据采集期间,我们的VLP‐16解码器被配置为将VLP‐16数据包同时转换为SPC和APC,并分别记录为独立文件。通过读取逐帧比较了记录中的SPC和APC的距离、方位角和垂直角。在AstaZero城市区域,针对APC的不同参数设置进行了多次录制,包括无反射率、反射率最低位和反射率最高位等情况。我们还分析了记录中距离值的典型分布。该分析有助于确定实验路线沿线的距离分布情况,从而安全地自适应调整反射率参数。

A. 实验设置

我们的研究车辆是一辆沃尔沃XC90 SUV,用于数据采集。如图2所示,VLP‐16安装在车辆顶部,以获得激光的最佳视野。该车辆配备了一台运行ArchLinux RT内核4.8.15 rt10‐1和我们开源软件环境 OpenDaVINCI, opendlv.core, 以及OpenDLV。OpenDaVINCI是一个用于虚拟、网络化和信息物理系统的软件环境。opendlv.core为自动驾驶车辆提供了与不同传感器的软件接口,包括我们的VLP‐16解码器。基于opendlv.core,OpenDLV是一种受生物启发的无人驾驶车辆软件架构,并已在一辆代表查尔姆斯理工大学参加GCDC 2016竞赛的沃尔沃FH16卡车上进行了测试。

示意图1

数据采集在两个不同的地点进行。第一轮数据采集遵循了我们近期研究项目COPPLAR, 校园接驳车协同感知与规划平台所使用的路线,该项目由查尔姆斯理工大学与多家工业合作伙伴共同发起。COPPLAR的目标是开发一辆能够在哥德堡的查尔姆斯大学两个校区——林德霍尔门和约翰内堡之间自主行驶的自动驾驶车辆。图3展示了从林德霍尔门到约翰内堡的COPPLAR路线。该路线全长约7公里,穿过哥德堡市中心,平均速度限速50km/h。从约翰内堡到林德霍尔门的路线基本相同,只是方向相反。COPPLAR路线涵盖了多种城市内部交通场景,例如多车道交通、交叉路口、交通信号灯、行人和自行车过街通道、公交专用道和有轨电车专用车道、单行道以及环形交叉口。从林德霍尔门到约翰内堡的录制长度约为20分钟,APC中未包含反射率信息。由于交通更为密集,并且APC中预留了两个最高位用于反射率,因此从约翰内堡到林德霍尔门的数据采集耗时26分钟。

示意图2

另一个数据采集地点是AstaZero试验场的城区。AstaZero位于哥德堡以东62公里处,是全球首个面向未来道路安全、针对城市环境的全尺寸测试场地。AstaZero包含一条5.7公里长的乡村道路车道、一个城区、一条多车道道路以及一个用于高速测试的高速测试区。图4展示了AstaZero的俯视图以及城区的详细布局。该城区中心设有4个区域的建筑和街道,两侧各有一个环岛。在城区内使用APC的七种不同参数配置进行了多次录制:APC中无反射率、反射率的1、2或3个最高位、反射率的1、2或3个最低位。每次录制的长度约为3分钟,数据采集期间的平均速度为25‐30公里/小时。

示意图3

B. 结果

在九段录制数据中(两段来自COPPLAR路线,七段来自AstaZero城区),选取了三段用于比较APC和SPC的磁盘占用情况,包括两段COPPLAR记录和一段来自AstaZero城市的无反射率APC记录。表I总结了这三段记录的长度、帧数、APC大小和SPC大小。

录制 长度 帧数 APC大小 SPC大小
L→J 20分钟 11,837 686兆字节 5.68吉字节
J→L 26分钟 15,693 909兆字节 7.53吉字节
AstaZero城市 3min 1,844 106.8兆字节 887.7兆字节

VLP‐16的旋转速率为10赫兹。每段记录的理论长度计算为n/(10 * 60)分钟,其中n为帧数。每段记录的长度通过定时器记录,其与计算的长度相匹配。所有三个记录都表明APC大小约为SPC大小的1/8,这与我们在第三节中的计算结果一致。

除了磁盘占用外,对APC精度的定量分析也是必不可少的。需要通过比较APC与SPC在距离、方位角和垂直角上的精度,来确定自适应调整数据结构所带来的影响。如第三节所述,APC不会损失垂直角的精度;如果排除反射率因素,甚至原始的距离精度也得以保留。因此,方位角的精度是主要关注点。方位角精度从两个方面进行分析:(1)单帧中所有点的APC与SPC之间的方位角差异;(2)每帧中APC与SPC之间的平均方位角差异及其在一段时间内的分布情况。图5展示了两个具有代表性的帧:来自林德霍尔门到约翰内堡的COPPLAR记录中的第214帧,以及AstaZero城市区域记录中排除反射率后的第702帧。这两个帧经过精心选取,以最好地代表COPPLAR和AstaZero城市的交通场景。如图5a和5d所示,SPC使用不同颜色进行可视化,颜色映射到反射率值。颜色渐变包括随着反射率增加,从蓝色到绿色、绿色到黄色、黄色到红色的平滑过渡。相比之下,图5b和5e显示了相应APC帧的可视化结果。由于APC中排除了反射率,所有点的颜色相同。SPC与APC的重叠情况分别如图5c和5f所示。无论是否考虑反射率,人类几乎难以观察到APC与SPC之间的差异。

我们进一步分析了方位角点的差异。COPPLAR记录的第214帧在剔除距离小于1米的点后,包含19,261个点。如图6a所示,该帧中的方位角差异随点索引增加而增大,中间出现短暂下降,上界为0.2◦。在AstaZero城区记录的第702帧中也观察到类似模式,该帧包含20,541个点。尽管本文中APC假设了均匀方位角分布,但这种相似性促使我们进一步研究未来是否这是一种可预测和建模的普遍模式,以最小化APC的方位角误差。

为了查明其他帧中的方位角差异是否同样较小,我们计算了数千帧的平均方位角差异。图6c绘制了从林德霍尔门到约翰内堡的COPPLAR记录前3,000帧的平均方位角差异。我们发现了四个平均方位角差异介于1◦到4◦之间的帧。由于数量仅为4,足够少可将其归类为异常值,因此未包含在图中。除这四个帧外,其余2,996帧的平均方位角差异均约为0.1◦,这与图6a和图6b一致。对不含反射率的完整AstaZero城市记录(共1,844帧)也进行了相同的分析。同样,平均方位角差异在0.1◦附近波动,如图6d所示。然而,在此记录中未发现异常值。

我们还研究了在APC中为反射率保留最低位时对测距精度的影响。为此,我们选取了三段AstaZero城市区域的录制数据。在这些录制数据中,分别保留1至3个最低位用于反射率。每段数据均包含约1,900帧(即约3分钟),且均在AstaZero城市区域进行,因此非常适用于公平比较。图7绘制了这三段录制数据中所有帧的APC平均距离误差。尽管某些帧中存在零星的异常值,但距离误差仍然较小,总体结果在很大程度上符合我们的预期。当保留一个最低位用于反射率时,平均距离误差约为1毫米;当保留两个和三个最低位用于反射率时,平均距离误差分别增加至3毫米和7毫米。

我们的数据采集还包含多个将最高位用于APC中反射率的记录。这种替代方案的优点是在包含反射率的同时保留了原始的距离精度。其权衡之处在于测距范围缩短。在从约翰内堡到林德霍尔门的数据采集中,APC被配置为使用最高两位表示反射率,从而将最大测距范围限制在32.766米。图8展示了该记录第192帧中的SPC和APC。可以看出,距离超过阈值32.766米的点如预期般未在APC中出现。通过使用两位表示反射率,APC能够区分4种反射率等级,这意味着APC可视化时最多有4种颜色选项。

最小可接受的检测距离在很大程度上依赖于交通状况,例如点云的距离值分布和车速。在城市交通环境下的自动驾驶中,大多数有趣的视觉特性来自于近距离的激光雷达点较密集,而远距离的点过于稀疏而难以发挥作用。因此,检测距离的一定程度减小是可以接受的。图9绘制了基于COPPLAR从林德霍尔门到约翰内堡以及AstaZero城市区域记录的距离分布图,未考虑反射率,并计入了所有点和所有帧。如前所述,VLP‐16的测距范围为1米至100米。我们将此范围划分为495个区间,即每个区间0.2米,以生成距离直方图。两个距离分布图表现出高度相似性。绝大多数返回的距离值落在1米至30米范围内。基于这样的距离分布,在不存在较大或极小距离时,动态调整APC以自适应地包含反射率是一种可行的选择。

我们还比较了每个VLP‐16数据包在APC和SPC之间的CPU消耗,以及每帧在APC和SPC之间的处理时间。每帧的处理时间从该帧的第一个VLP‐16数据包到达时开始,到完成该帧的一次扫描时结束。基于每帧处理时间的比较结果尚不明确,因为它取决于数据包到达率。由于VLP‐16的旋转速率设置为10赫兹,因此APC和SPC的单帧处理时间均约为100毫秒。每个VLP‐16数据包处理时间的比较结果也不够直观。对于大多数数据包,APC比SPC快得多。然而,对于每第16个数据包,APC需要将16个按垂直角递增顺序排列的距离值写入字节数组,这使得APC在每第16个数据包上比SPC慢。

相关工作

据我们所知,大多数关于激光雷达点云尺寸缩减的相关研究都集中在点云压缩上,通常以离线方式进行。维曼和秦 [7]提出了一种基于小波的方法WALZ(小波激光雷达压缩器),用于压缩三维点云,假设大多数连续点具有强相关性。x、y、z坐标经过小波变换。在变换过程中,高度相关的点将生成较小的系数,从而实现高效压缩。小波还被应用于另一种激光雷达数据压缩方案 [8]。该方案首先近似一组随机点,并通过Delaunay三角剖分表示曲面。一旦从点云生成不规则三角网,便应用第二代小波来压缩数据。

蒙古斯和扎利克[9]提出了一种用于激光雷达LAS文件无损压缩的方法。该方法基于预测范式,针对x、y、z坐标分别使用独立的预测器。另一种由梅里等人[10]提出的点云压缩预测方法则通过点构建生成树,并利用线性预测器进行边预测以及横向预测器进行边旋转,以预测未来的顶点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值