建设工程职称论文查询网站,wordpress做新闻系统,我们的爱情网站制作,广州做一个网站多少钱我自己的原文哦~ https://blog.51cto.com/whaosoft/12320882
#自动驾驶数据集全面调研
自动驾驶技术在硬件和深度学习方法的最新进展中迅速发展#xff0c;并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集并展现出令人期待的性能。高质量的数据集对于开发可靠的自动驾驶算法至关重要。先前的数据集调研试图回顾这些数据集但要么集中在有限数量的数据集上要么缺乏对数据集特征的详细调查。为此这里从多个角度对超过200个自动驾驶数据集进行了详尽的研究包括传感器模态、数据大小、任务和上下文条件。引入了一种新的评估每个数据集影响的度量标准该标准还可以成为建立新数据集的指南。进一步分析了数据集的标注过程和质量。此外对几个重要数据集的数据分布进行了深入分析。最后讨论未来自动驾驶数据集的发展趋势。
当前行业的概述
自动驾驶AD旨在通过创建能够准确感知环境、做出智能决策并在没有人类干预的情况下安全行驶的车辆彻底改变交通系统。由于令人激动的技术发展各种自动驾驶产品已在多个领域实施例如无人出租车。这些对自动驾驶的快速进展在很大程度上依赖于大量的数据集这些数据集帮助自动驾驶系统在复杂的驾驶环境中变得稳健可靠。
近年来自动驾驶数据集的质量和种类显著增加。数据集开发的第一个显著现象是各种不同的数据收集策略包括通过仿真器生成的合成数据集和从真实世界记录的数据集等。其次数据集在组成方面也各种各样包括但不限于多种感知数据如相机图像和LiDAR点云以及用于自动驾驶各个任务的不同标注类型。下图1以俯视图的方式显示了六个真实世界数据集Argoverse 2 、KITTI 、nuScenes 、ONCE 、Waymo 和ZOD 的3D目标边界框分布的统计数据展示了每个数据集的独特标注特性。 根据传感器的设备位置数据集的多样性还体现在感知领域中包括车载、V2X、无人机等。此外几何多样性和天气条件的改变提高了自动驾驶数据集的泛化能力。
为什么研究动机是什么
下图2中展示了每年发布的感知数据集数量以从一个角度反映自动驾驶数据集的趋势。由于存在大量且不断增加的公开发布的数据集对自动驾驶数据集进行全面调查对推动学术和工业研究非常有价值。在先前的工作中Yin等人总结了27个在公共道路上收集的数据的公开可用数据集。[35]除了描述现有数据集讨论了合成数据和真实数据之间的域适应以及自动标注方法。[36]总结了现有数据集并对下一代数据集的特征进行了详尽的分析。然而这些调查仅总结了少量数据集导致范围不够广泛。AD-Dataset 收集了大量数据集但缺乏对这些数据集属性的详细分析。与对所有类型的数据集进行研究相比一些研究人员对特定类型的自动驾驶数据集进行了调查例如异常检测、合成数据集、3D语义分割和决策。 因此本文的目标是提出一项全面而系统的研究涵盖自动驾驶中的大量数据集从感知到控制的所有任务考虑真实世界和合成数据并深入了解若干关键数据集的数据模态和质量。在下表I中对比了其他数据集调查和作者的调查。 主要贡献
本文的主要贡献可总结如下
对自动驾驶数据集进行了全面调查。尽可能全面地考虑公开可用数据集记录它们的基本特征如发布年份、数据大小、传感器模态、感知领域、几何和环境条件以及支持任务。据我们所知本工作提供了迄今为止记录的最广泛的自动驾驶数据集概述。系统地说明了收集自动驾驶数据的传感器和感知领域。此外描述了自动驾驶的主要任务包括任务目标、所需数据模态和评估指标。根据感知领域和支持任务对数据集进行了总结和划分以帮助研究人员高效选择和收集目标数据集的信息。从而促进更有针对性和有效的研究和开发工作。此外引入了一个影响分数度量标准评估了在社区中发布的感知数据集的影响力。这个指标也可以作为未来数据集开发的指导。深入分析了具有最高分数的数据集突出它们的优势和效用。调查了数据集的标注质量以及各种自动驾驶任务的现有标注程序。进行了详细的数据统计展示了不同角度的各种数据集的数据分布展示了它们固有的限制和适用情况。分析了最近的技术趋势并展示了下一代数据集的发展方向。还展望了大语言模型进一步推动未来自动驾驶的潜在影响。
范围与局限性
本文的目标是对现有的自动驾驶数据集进行详尽调查以提供对该领域未来算法和数据集的开发提供帮助和指导。收集了侧重于四个基本自动驾驶任务的数据集感知、预测、规划和控制。由于有几个多功能数据集支持多个任务作者只在它们主要支持的主要范围中解释它们以避免重复介绍。此外收集了大量数据集并以它们的主要特征展示在表格中。然而对所有收集到的数据集进行详细解释可能无法突显最受欢迎的数据集可能会妨碍研究人员通过这项调查找到有价值的数据集。因此只详细描述了最有影响力的数据集。
文章结构
本文的其余部分结构如下第二节介绍了用于获取公共数据集以及数据集的评估指标的方法。第三节展示了自动驾驶中使用的主要传感器及其模态。第四节讨论了自动驾驶任务、相关挑战和所需数据。在第五节进一步讨论了几个重要的数据集。在第六节展示了标注过程和影响标注质量的因素。此外在第七节对几个数据集的数据分布进行了统计。在第八节中调查了自动驾驶数据集的发展趋势和未来工作。最后在第九节总结。此调查的分类结构如下图3所示。 方法论介绍
本节包括1) 如何收集和筛选数据集II-A以及2) 如何评估数据集对自动驾驶领域的影响II-B。
数据集收集
作者遵循[42]的方法进行系统性的回顾以详尽收集已发布的自动驾驶数据集。为确保来源的多样性作者利用了知名的搜索引擎如Google、Google Scholar和Baidu来搜索数据集。为了确保从各个国家和地区全面收集数据集使用英语、中文和德语进行搜索使用关键词如“autonomous driving datasets”、“intelligent vehicle datasets”以及与目标检测、分类、跟踪、分割、预测、规划和控制相关的术语。
此外在IEEE Xplore和自动驾驶及智能交通系统领域的相关会议中搜索以收集来自期刊和会议论文集的数据集。通过关键词搜索和手动标题审查验证了这些来源的数据集。
最后为了确保包括专业或较少知名的数据集作者通过Github仓库和Paperwithcodes进行了搜索。类似于数据库对数据集进行了手动和基于关键词的搜索。
数据集评估指标
作者引入了一个新的度量标准即影响分数impact score用于评估已发布数据集的重要性这也可以作为准备新数据集的指南。在本节中详细解释了计算自动驾驶数据集影响分数的方法。
为了进行公平和可比较的比较作者仅考虑与感知领域相关的数据集因为感知领域占据了自动驾驶数据集的很大一部分。此外为了确保评分系统的客观性和可理解性考虑了各种因素包括引用次数、数据维度和环境多样性。所有的值都是从官方论文或开源数据集网站收集而来。 环境多样性评分。根据以下因素评估数据集的环境多样性
天气条件例如雨雪。白天或黄昏等数据收集时间。驾驶场景的类型例如城市或乡村。几何范围指的是数据记录的国家或城市数量。 数据源和自动驾驶中的协同感知
本节介绍主要用于自动驾驶的传感器及其模态。此外分析了数据采集和通信领域如车载、无人机和V2X的协同感知。
数据的传感器和模态
高效而准确地从周围环境中收集数据是自动驾驶可靠感知系统的关键。为了实现这一目标在自动驾驶车辆和基础设施上使用了各种类型的传感器。传感器的示例如下图 4 所示。最常用的传感器是相机、LiDAR 和Radar。事件型和热成像相机也安装在车辆或道路旁边以进一步提高感知能力。 RGB 图像。RGB 图像通常由单目、双目或鱼眼相机记录。单目相机提供不带深度的 2D 视图双目相机通过其双镜头提供深度感知鱼眼相机使用广角镜头捕捉广阔的视野。所有这些相机通过透镜将光传导到图像传感器例如 CMOS将这些光转换为表示图像的电子信号。如下图 5 (a) 所示2D 图像捕捉环境的颜色信息、丰富的纹理、模式和视觉细节。由于这些特性RGB 图像主要用于检测车辆和行人并识别道路标志。然而RGB 图像容易受到低照明、雨、雾或耀斑等条件的影响 。
LiDAR 点云。LiDAR 使用激光束测量传感器与目标之间的距离从而创建 3D 环境表示 。LiDAR 点云如下图 5 (b) 所示提供高分辨率的精确空间信息可以检测长距离内的目标。然而这些点的密度会随着距离的增加而减小导致远处目标的表示更为稀疏。天气条件如雾也会限制 LiDAR 的性能。总体而言LiDAR 适用于需要 3D 简要信息的情况。
Radar点云。Radar通过发射射频波并分析其反射来检测目标、距离和相对速度。此外Radar在各种天气条件下都具有很强的鲁棒性 。然而Radar点云通常比 LiDAR 数据更粗糙缺乏目标的详细形状或纹理信息。因此Radar通常用于辅助其他传感器。下图 5 (c) 展示了Radar点云。
事件相机。事件型相机异步捕捉数据仅在像素检测到亮度变化时才激活。捕捉到的数据称为事件如图 5 (d) 所示。由于采用了特定的数据生成方法记录的数据具有极高的时间分辨率并且可以捕捉快速运动而不模糊 。
热成像相机的红外图像。热成像相机见下图 5 (e)通过捕捉红外辐射来检测热特征 。由于基于温差生成图像热成像相机可以在完全黑暗中工作并且不受雾或烟影响。然而热成像相机无法分辨颜色或详细的视觉图案。此外与光学相机相比红外图像的分辨率较低。 惯性测量单元IMU。IMU 是一种电子设备用于测量并报告目标的特定力、角速度有时还有目标周围的磁场 。在自动驾驶中它用于跟踪车辆的运动和方向。虽然 IMU 不包含周围环境的视觉信息但通过将 IMU 的数据与其他传感器的数据融合感知系统可以更准确、更鲁棒地跟踪车辆的运动和方向。
作者从收集的数据集中分析传感器的分布如下图 6 所示。超过一半的传感器是单目相机53.85%这是因为它们价格低廉且性能可靠。此外93 个数据集包含 LiDAR 数据由于其高分辨率和精确的空间信息而受到重视。然而由于高昂的成本限制了 LiDAR 的广泛使用。除 LiDAR 点云外29 个数据集利用双目相机捕捉深度信息。此外分别包含Radar、热像相机和鱼眼相机的数据集比例分别为5.41、3.42和1.71。考虑到以事件为基础的相机捕捉动态场景的时间效率有三个数据集生成基于事件的相机数据。 传感域和协同感知系统
自动驾驶系统中自车与周围环境中其他实体之间的感知数据和通信起着至关重要的作用确保了自动驾驶系统的安全性、效率性和整体功能性。因此传感器的位置决定了可以收集的数据的质量、角度和范围因此非常关键。总体而言在自动驾驶环境中传感器可以分为以下几个领域自车、车联网V2X、无人机和其他。
自车自车传感器直接安装在自动驾驶车辆上通常包括相机、LiDAR、Radar和惯性测量单元IMU。这些传感器提供了车辆视角的直接视图即时反馈车辆周围的情况。然而由于车辆检测范围的限制自车传感器可能在提供盲点内障碍物的预警或检测急弯附近的危险方面存在局限性。
车联网V2X车联网包括车辆与交通系统中的任何其他组件之间的通信包括车辆对车辆V2V、车辆对基础设施V2I和车辆对网络V2N如下图7所示。除了直接的感知输入外协同系统确保多个实体协同工作。 车到车V2V V2V使附近的车辆能够共享数据包括它们的位置、速度和传感器数据如相机图像或LiDAR扫描有助于更全面地了解驾驶场景。车到基础设施V2I V2I促进了自动驾驶车辆与基础设施组件之间的通信例如交通灯、标志或路边传感器。嵌入在道路基础设施中的传感器包括相机、LiDAR、Radar或基于事件的相机协同工作以扩展感知范围并提高自动驾驶车辆的情境感知。在这项调查中作者将通过基础设施或V2I进行的感知都归类为V2I。车到网络V2N V2N指的是在车辆和更广泛的网络基础设施之间交换信息通常利用蜂窝网络为车辆提供对云数据的访问。V2N通过共享跨区域数据或提供有关交通拥堵或道路封闭的实时更新帮助V2V和V2I的合作感知。
无人机Drone无人机提供了一种空中视角提供了轨迹预测和路径规划所需的数据。例如来自无人机的实时数据可以集成到交通管理系统中以优化交通流并提醒自动驾驶车辆前方的事故。
其他 未由前三种类型收集的数据被定义为其他例如安装在非车辆目标上或多个领域的其他设备。
自动驾驶中的任务
这一部分深入介绍了自动驾驶中的关键任务如感知和定位、预测以及规划和控制。自动驾驶流程的概览如下图8所示。详细说明它们的目标、它们所依赖的数据的性质以及固有的挑战。图9展示了自动驾驶中若干主要任务的示例。 感知和定位
感知侧重于根据感知数据理解环境而定位确定自动驾驶车辆在该环境中的位置。
2D/3D 目标检测
2D或3D目标检测旨在识别和分类驾驶环境中的其他实体。而2D目标检测在图像空间中识别目标3D目标检测进一步整合由LiDAR提供的精确深度信息。尽管检测技术取得了显著进展但仍存在一些挑战如目标遮挡、光照变化和多样的目标外观。
通常情况下使用AP度量来评估目标检测性能。根据[1]AP度量可表述为: 2D/3D 语义分割
语义分割涉及将图像的每个像素或点云的每个点分类到其语义类别。从数据集的角度来看保持细粒度的目标边界并管理大量标签要求对这个任务来说是一个重要的挑战。
正如中提到的用于分割的主要度量标准包括平均像素准确率mPA: 目标跟踪
目标跟踪监控单个或多个目标随时间的轨迹。这项任务需要时间序列的RGB数据、LiDAR或Radar序列。通常目标跟踪包括单目标跟踪或多目标跟踪MOT。
多目标跟踪准确度MOTA是用于多目标跟踪的广泛使用的度量它结合了假反例、假正例和不匹配率参见方程9 此外与其考虑单一阈值不同Average MOTAAMOTA是基于所有目标置信阈值计算的。
高精度地图
高精度地图的目标是构建详细、高度准确的表示其中包括有关道路结构、交通标志和地标的信息。一个数据集应该提供LiDAR数据以获取精确的空间信息以及相机数据以获取视觉细节以确保建立的地图准确性。
根据高精度地图自动化和高精度地图变更检测越来越受到关注。通常高精度地图的质量是通过准确度度量来估算的。
SLAM
同时定位与建图SLAM涉及构建周围环境的同时建图并在该地图中定位车辆。因此来自相机、用于位置跟踪的IMUs以及实时LiDAR点云的数据是至关重要的。引入了两个评估指标相对位姿误差RPE和绝对轨迹误差ATE用于评估从输入RGB-D图像估计的轨迹的质量。
预测
预测是指对周围agents的未来状态或行为进行预测。这种能力确保在动态环境中更安全地导航。预测使用了一些评估指标例如均方根误差RMSE 轨迹预测
利用来自相机和LiDAR等传感器的时间序列数据轨迹预测涉及预测其他实体如行人、骑车人或其他车辆未来的路径或移动模式。
行为预测
行为预测预测其他道路使用者的潜在动作例如车辆是否会变道。训练行为预测模型依赖于具有广泛标注的数据因为在不同情境中实体可能采取各种潜在动作。
意图预测
意图预测侧重于推断目标行为背后的意图的高级目标涉及对人类目标的物理或心理活动进行更深层次的语义理解。由于任务的复杂性它不仅需要来自感知相机等传感器的数据还需要其他信息如交通信号和手势以推断其他agents的意图。
规划与控制
规划 规划代表对感知环境和预测做出反应的决策过程。经典的三级分层规划框架包括路径规划、行为规划和运动规划。
路径规划 路径规划也称为路线规划涉及设定长期目标。这是一个高层次的过程确定到达目的地的最佳路径。行为规划 行为规划位于框架的中层与决策制定相关包括变道、超车、合并和十字路口穿越等。这个过程依赖于对其他agents行为的正确理解和交互。运动规划 运动规划处理车辆实时应该遵循的实际轨迹考虑到障碍物、道路状况和其他道路agents的预测行为。与路径规划相反运动规划生成实现局部目标的适当路径。
控制 自动驾驶中的控制机制管理自动驾驶汽车如何执行来自运动规划系统的决定的路径或行为并纠正跟踪误差。它将高级命令转换为可执行的油门、刹车和转向命令。
端到端自动驾驶
端到端自动驾驶是指单个深度学习模型处理从感知到控制的所有任务绕过传统的模块化流程。这样的模型通常更具适应性因为它们通过学习来调整整个模型。它们的固有优势在于简单性和效率通过减少手工制作组件的需求。然而实施端到端模型面临着关键限制如大量的训练数据需求、低解释性和不灵活的模块调整。
对端到端自动驾驶进行大规模基准测试可以分为闭环和开环评估。闭环评估基于仿真环境而开环评估涉及根据来自真实世界数据集的专业驾驶行为评估系统的性能。
高影响力数据集
本节描述了在感知、预测、规划和控制领域中的具有里程碑意义的自动驾驶数据集。还展示了端到端自动驾驶的数据集。
感知数据集
感知数据集对于开发和优化自动驾驶系统至关重要。它们通过提供丰富的多模态感知数据确保对周围环境进行有效感知和理解从而增强车辆的可靠性和稳健性。
作者利用提出的数据集评估指标计算收集的感知数据集的影响分数随后根据这些分数选择前50个数据集以创建一个按时间顺序排列的概述如下图10所示。同时如前章节中所述将数据集分为车载、V2X、无人机和其他从每个类别中选择一个子集编制一个包含50个数据集的综合表格下表II。值得注意的是表中的数据集是按照其各自类别内的影响分数进行排序的不代表总体的前50。在以下部分作者选择了每个感知来源中影响分数最高的几个数据集并考虑它们的发布年份。 车载
KITTI KITTI 自2012年发布以来深刻影响了自动驾驶领域。KITTI包含通过各种传感器记录的各种真实驾驶场景包括相机、LiDAR和GPS/IMU。其丰富的标注和高分辨率的传感器数据促进了在各种自动驾驶任务如目标检测、跟踪、光流、深度估计和视觉里程计方面的算法开发和基准测试。Cityscapes Cityscapes 包括在复杂城市环境中明确捕获的大量图像。通过精心标注Cityscapes为30个不同的目标类别提供像素级分割其中包括各种车辆类型、行人、道路和交通标志信息。由于其复杂性和丰富性Cityscapes已成为诸如城市场景中语义分割等任务的标准基准。SYNTHIA SYNTHIA 是自动驾驶领域的合成数据集。该数据集包含13,400张图像具有语义分割的逐像素标注。SYNTHIA的一个显著特点是它能够弥合现实世界和合成数据之间的差距促进了在不同领域之间开发稳健且可转移的方法。Virtual KITTI Virtual KITTI 通过虚拟环境密切模仿了原始KITTI数据集通过提供包含各种交通情况和环境条件的高分辨率视频序列而脱颖而出。类似于Virtual KITTI支持关键的自动驾驶任务包括目标检测、语义分割和目标跟踪。VIPER VIPER 是从现实虚拟世界的驾驶、骑行和步行视角收集的合成数据集解决了数据稀缺和标注现实世界数据的高成本挑战。VIPER包含超过25万帧视频为低级和高级视觉任务提供了真值数据同时涵盖各种天气条件、光照场景和复杂的城市风景。总体而言VIPER为研究人员提供了一个宝贵且经济高效的工具以加速可靠且安全的自动驾驶的发展。ApolloscapesApolloscapes 提供了超过140,000个高分辨率帧具有准确的边界框和像素级语义标签对于训练和验证自动车辆的感知和导航系统至关重要。Apolloscapes支持图像和点云的语义分割2D/3D目标检测多目标跟踪和车道线分割从而实现先进且安全的自动驾驶系统的创建和评估。SemanticKITTISemanticKITTI 是KITTI家族的一个显著扩展专注于自动驾驶领域的语义分割。SemanticKITTI包含超过43,000个LiDAR点云帧使其成为户外环境中3D语义分割最大的数据集之一。SemanticKITTI为28个类别提供精确的标签如汽车、道路、建筑等为评估点云语义分割方法的性能提供了强有力的基准支撑了相关领域的许多研究和创新。nuScenesnuScenes 是自动驾驶领域的重要贡献提供了一个丰富的数据库满足感知系统的多样化需求。nuScenes利用LiDAR、Radar和相机记录来自波士顿和新加坡不同城市场景的数据。值得一提的是其六个相机提供了对周围环境的全面视角在多视角目标检测任务中得到广泛应用。总体而言nuScenes数据集是发展自动驾驶技术的基石支持多任务和应用并在该领域设立了新的基准。WaymoWaymo Open Dataset 于2019年推出通过提供大量的多模态感知数据和高质量标注显著影响了自动驾驶研究和进展。Waymo数据集的关键贡献包括其对驾驶条件和地理位置的全面覆盖这对于不同任务如检测、跟踪和分割的鲁棒性和通用性至关重要。BDD100KBDD100K 数据集由伯克利DeepDrive中心于2018年发布是一个规模庞大且多样化的驾驶数据集以其规模和多样性而闻名。它包括100,000个大约40秒的视频。同时它为目标检测、跟踪、语义分割和车道线检测提供了各种标注标签。这个庞大的数据集推动了自动驾驶社区的进展成为研究人员和工程师提出和改进算法的具有挑战性和多功能的平台。RADIATERADIATE 是第一个公开的Radar数据集包含44,140帧在不同恶劣天气条件下收集的带标注的图像如雨天、雾天、阴天和雪天。它还整合了LiDAR和相机数据使驾驶环境的全面感知和理解成为可能。Argoverse 2Argoverse 2 作为Argoverse 1 的续集引入了更多样化和复杂的驾驶场景展示了迄今为止最大的自动驾驶分类法。它捕捉了六个城市和不同条件下的各种实际驾驶场景。Argoverse 2支持多个重要任务包括但不限于3D目标检测、语义分割和跟踪。总之Argoverse 2数据集提供了大量真实驾驶场景的多模态数据促进了算法的创新和进步并展示了其在自动驾驶中作为重要资源的实质潜力。
V2X
V2VNetV2VNet 引入的数据集专注于利用V2V通信允许自动车辆从多个视点共享信息这对于检测被遮挡目标和预测其他交通参与者的行为至关重要。该数据集使用名为Lidarsim 的高保真LiDAR仿真器创建该仿真器利用真实世界数据生成各种交通场景的逼真LiDAR点云。总的来说这项工作引起了对V2V作为提高自动车辆能力的有前途的途径的关注。DAIR-V2XDAIR-V2X 是在车辆基础设施协同自动驾驶领域的开创性资源提供大规模、多模态、多视图的真实世界数据。该数据集旨在解决车辆和基础设施传感器之间的时间不同步以及此类协作系统中涉及的数据传输成本等挑战。DAIR-V2X数据集对自动驾驶的影响很大因为它为车辆基础设施合作的复杂性设立了一个基准多亏了其来自真实世界的多种场景。Rope3DRope3D 是感知系统的重要贡献通过利用从路边相机收集的数据填补了自动驾驶中的关键差距。Rope3D包括50,000张图像处于不同的环境条件包括不同的照明白天、夜晚、黄昏和天气情况雨天、晴天、多云。总体而言Rope3D数据集是推动路边感知在自动驾驶中取得进展的先导工作同时也是研究人员和工程师开发更健壮、智能的自动驾驶系统的重要工具。V2V4RealV2V4Real 是第一个大规模的真实世界数据集用于处理V2V合作感知。该数据集从两辆配备有多模态传感器如LiDAR和相机的车辆中收集。V2V4Real关注一系列感知任务如合作3D目标检测、合作3D目标跟踪和Sim2Real域适应。这种多功能性使其成为开发和基准测试自动驾驶算法的宝贵资源。
无人机
UAVDTUAVDT 数据集包含80,000个准确标注的帧其中包括14种属性如天气条件、飞行姿态、相机视图、车辆类别和遮挡级别。该数据集专注于在城市环境中基于UAV的目标检测和跟踪。此外UAVDT基准测试包括密集场景、小型目标和显著的相机运动这对于当前最先进的方法来说都是具有挑战性的。DroneVehicleDroneVehicle 提出了一个大规模的基于无人机的数据集提供28,439个RGB-红外图像对用于解决低照明条件下的目标检测问题。此外它涵盖了各种场景如城市道路、住宅区和停车场。由于其在广泛条件下的独特无人机视角这个数据集是发展自动驾驶技术的重要一步。
其它
Pascal3DPascal3D 是PASCAL VOC 2022 的扩展通过为图像提供更丰富和多样化的标注来克服以前数据集的局限性。Pascal3D通过为12个刚性目标类别如汽车、公共汽车、自行车提供3D姿势标注并从ImageNet 添加更多图像实现了高度的可变性。TT 100K清华大学-腾讯100K 解决了在现实驾驶条件下检测和分类交通标志的挑战。它提供了100,000张图像包括30,000个交通标志实例。除了大规模的数据大小外高分辨率的图像涵盖了各种照明和天气条件使其对于交通标志识别的训练和验证具有鲁棒性。Mapillary Vistas 由于2017年提出主要旨在对街景进行语义分割。该数据集包含25,000张图像标有66个目标类别并包括37个类别的实例特定标注。它包含来自不同天气、时间和几何位置的图像有助于减轻对特定区域或条件的偏见。
预测、规划和控制数据集
预测、规划和控制数据集是促进训练和评估驾驶系统的基础用于预测交通动态、行人移动和其他影响驾驶决策的重要因素。通过仿真各种驾驶场景它们使自动驾驶车辆能够做出明智的决策穿越复杂的环境并在道路上保持安全和高效。因此作者根据数据大小、模态和引用数量详细展示与这些任务相关的几个高影响力的数据集。将预测、规划和控制数据集总结为任务特定和多任务两组。
任务特定数据集:
highD。基于无人机的highD 数据集提供了德国高速公路上自然车辆轨迹的大规模收集包含110,000辆汽车和卡车的后处理轨迹。该数据集旨在克服现有基于场景的安全验证测量方法的局限性这些方法通常无法捕捉道路用户的自然行为或包含具有足够质量的所有相关数据。PIE。由提出的行人意图估计PIE数据集在理解城市环境中的行人行为方面取得了重大进展。它包含在多伦多市中心记录的超过6小时的行车录像涵盖了各种光照条件。PIE数据集提供了对感知和视觉推理的丰富标注包括带有遮挡标志的边界框、过街意图置信度以及行人行为的文本标签。长时间的连续序列和标注有助于多个任务如轨迹预测和行人意图预测。USyd。USyd 在没有交通信号灯的城市交叉口背景下推动了驾驶员意图预测的进展这在城市设置中很常见由于缺乏明确的道路规则和信号构成了一项挑战。该数据集包括超过23,000辆车穿越五个不同的交叉口的数据使用车载LiDAR跟踪系统收集。数据模态包括详尽无遗的提供了横向和纵向坐标、航向和速度的车辆轨迹。这些信息对于预测驾驶行为至关重要考虑到人类驾驶模式中固有的不确定性。Argoverse。Argoverse 是3D目标跟踪和运动预测中的一个关键数据集。Argoverse提供了来自7个相机、前视双目图像和LiDAR点云的360°图像。记录的数据涵盖了来自290km映射车道线的300,000多条车辆轨迹。借助丰富的传感器数据和语义地图Argoverse对于推动预测系统的研究和开发至关重要。inD。inD 的重要性在于它大规模、高质量且多样化的轨迹数据对于道路用户预测模型和城市交叉口环境中自动车辆的基于场景的安全验证至关重要。它涵盖了大约11,500条不同的道路用户轨迹例如车辆、自行车和行人。这些轨迹的定位误差小于0.1米对于数据的可靠性至关重要。PePscenes。PePscenes 解决了在动态驾驶环境中理解和预测行人动作的需求。该数据集通过添加每帧2D/3D边界框和行为标注重点关注行人过马路行为增强了nuScenes 数据集。的一个关键属性是结合各种数据类型包括语义地图、场景图像、轨迹和自车状态这对于创建能够理解复杂交通场景的强大模型至关重要。openDD。openDD 数据集专注于分析和预测环状交叉口周围的交通场景这些场景复杂且不受交通信号灯约束。它是在使用高分辨率4K的无人机捕获的图像的基础上创建的跨足了来自501次单独飞行的62小时轨迹数据。该数据集不仅包含轨迹还包括描述道路拓扑结构的shapefiles和可扩展标注语言XML文件以及每个底层交叉口的参考图像。nuPlan。nuPlan 是自动驾驶中世界上第一个闭环机器学习规划基准。这个多模态数据集包括来自美国和亚洲四个城市的约1,500小时的人类驾驶数据展示了不同的交通模式如合并、变道、与骑自行车和行人的互动以及在施工区驾驶。nuPlan数据集的这些特征考虑了实际驾驶的动态和互动性质使其更适合进行更真实的评估。exiD。 exiD 轨迹数据集是2022年提出的对高度交互的高速公路场景具有重要意义。它利用无人机记录交通情况减少对交通的影响并确保高数据质量和效率。这个基于无人机的数据集在捕捉各种交互中的多样性方面超过了先前的数据集特别是涉及高速入口和出口的车道线变更。MONA。Munich Motion Dataset of Natural Driving (MONA) 是一个庞大的数据集包含来自130小时视频的702,000条轨迹覆盖了具有多个车道线的城市道路、市区高速公路以及它们的过渡。这个数据集展示了0.51米的平均整体位置精度展示了使用高度精确的定位和LiDAR传感器收集数据的质量。
多任务数据集:
INTERACTION。 INTERACTION 数据集涵盖了多样、复杂和关键的驾驶场景结合了全面的语义地图使其成为一个多功能平台可用于多种任务如运动预测、模仿学习以及决策和规划的验证。它包括不同国家的数据进一步提高了对不同文化驾驶行为进行分析的鲁棒性这对全球自动驾驶的发展至关重要。BLVD。 BLVD 基准有助于动态4D3D时间跟踪、5D4D交互交互事件识别和意图预测等任务这些对于更深入理解交通场景至关重要。BLVD提供了来自不同交通场景的约120,000帧包括目标密度低和高和照明条件白天和夜晚。这些帧被完全标注包括大量的3D标签涵盖了车辆、行人和骑手。rounD。由提出的rounD数据集对于场景分类、道路用户行为预测和驾驶员建模至关重要因为它收集了在环状交叉口的大量道路用户轨迹。该数据集利用装备有4K分辨率相机的无人机收集了超过六小时的视频记录了超过13,000名道路用户。广泛记录的交通情况和高质量的录像使rounD成为自动驾驶中不可或缺的数据集促进了对公共交通中自然驾驶行为的研究。Lyft Level 5。Lyft Level 5 是迄今为止最大规模的用于运动预测的自动驾驶数据集之一拥有超过1,000小时的数据。它包括17,000个25秒长的场景一个具有超过15,000个人工标注的高清语义地图8,500个车道线段和该区域的高分辨率航拍图像。它支持多个任务如运动预测、运动规划和仿真。详细标注的众多多模态数据使Lyft Level 5数据集成为预测和规划的重要基准。LOKI。LOKI 代表着长期和关键意图Long Term and Key Intentions是多agents轨迹预测和意图预测中的一个重要数据集。LOKI通过提供大规模、多样化的数据包括行人和车辆在内弥补了智能和安全关键系统的一个关键空白。该数据集通过利用带有相应LiDAR点云的相机图像提供了交通场景的多维视图使其成为社区中非常灵活的资源。SceNDD。SceNDD 引入了真实驾驶场景展示了多样的轨迹和驾驶行为可用于开发高效的运动规划和路径跟踪算法。它还适用于自动驾驶汽车不同配置并包含可以分解为时间戳进行详细分析的预测时间视角。总的来说SceNDD数据集是自动驾驶预测和规划研究的重要补充。DeepAccident。 合成数据集DeepAccident 是第一个为自动驾驶汽车提供直接且可解释的安全评估指标的工作。这个包含57,000个带标注帧和285,000个带标注样本的大规模数据集支持端到端的运动和事故预测对于提高自动驾驶系统在避免碰撞和确保安全方面的预测能力至关重要。此外这个多模态数据集对于各种基于V2X的感知任务如3D目标检测、跟踪和鸟瞰BEV语义分割都是多才多艺的。Talk2BEV。创新的数据集Talk2BEV 推动了从传统的自动驾驶任务转向在自动驾驶背景下将大型视觉语言模型与BEV地图相结合的趋势。Talk2BEV利用了视觉语言模型的最新进展允许对道路场景进行更灵活、全面的理解。该数据集包含超过20,000个多样的问题类别全部由人工标注并源自。所提出的Talk2BEV-Bench基准可用于多项任务包括决策制定、视觉和空间推理以及意图预测。V2X-Seq预测。轨迹预测数据集是现实世界数据集V2X-Seq 的重要组成部分包含约80,000个基础设施视图和80,000个车辆视图场景以及额外的50,000个协同视图场景。这种感知领域的多样性为研究和分析车辆基础设施协同VIC轨迹预测提供了更全面的视角。
端到端数据集
端到端已经成为自动驾驶中的一个趋势作为模块化架构的替代。一些多功能数据集如nuScenes 和Waymo 或仿真器如CARLA 提供了开发端到端自动驾驶的机会。同时一些工作提出了专门用于端到端驾驶的数据集。
DDD17。 DDD17 数据集因其使用事件型相机而显著该相机提供标准主动像素传感器APS图像和动态视觉传感器DVS时间对比事件的同时流提供了视觉数据的独特组合。此外DDD17捕捉了包括高速公路和城市驾驶在内的各种驾驶场景以及不同的天气条件为训练和测试端到端自动驾驶算法提供详尽而现实的数据。
在本调查中总结的其他数据集显示在表IV、表V、表VI中。 标注过程
自动驾驶算法的成功和可靠性不仅依赖于大量的数据还依赖于高质量的标注。本节首先解释了标注数据的方法。此外分析了确保标注质量的最重要方面。
标注是如何创建的
不同的自动驾驶任务需要特定类型的标注。例如目标检测需要实例的边界框标签分割基于像素或点级别的标注对于轨迹预测来说标注连续的轨迹至关重要。另一方面如下图11所示标注流程可以分为三种类型手动标注、半自动标注和全自动标注。在本节详细说明了不同类型标注的标注方法。 标注分割数据。标注分割数据的目标是为图像中的每个像素或LiDAR帧中的每个点分配一个标签以指示它属于哪个目标或区域。在标注之后属于同一目标的所有像素都用相同的类别进行标注。对于手动标注过程标注者首先在目标周围画出边界然后填充区域或直接涂抹像素。然而以这种方式生成像素/点级别标注是昂贵且低效的。
许多研究提出了全自动或半自动的标注方法以提高标注效率。提出了一种基于弱监督学习的完全自动标注方法用于分割图像中提出的可行驶路径。[265]是一种半自动标注方法利用目标先验生成分割mask。之后[266]提出了一种考虑20个类别的半自动方法。Polygon-RNN 提出了一种交互式分割标注工具遵循[268]的思路。[269]不使用图像信息生成像素级标签而是将3D信息转移到2D图像领域生成语义分割标注。对于标注3D数据[270]提出了一个图像辅助标注流程。[271]利用主动学习选择少量点并形成最小训练集以避免标注整个点云场景。[272]引入了一种使用半/弱监督学习进行标注的高效标注框架以标注室外点云。
标注2D/3D边界框。边界框标注的质量直接影响了自动驾驶车辆感知系统如目标检测在现实场景中的有效性和鲁棒性。标注过程通常涉及使用矩形框标注图像或使用长方体标注点云以精确包围感兴趣的目标。
Labelme 是一种专注于为目标检测标注图像的工具。然而由专业标注者生成边界框面临与手动分割标注相同的问题。Wang等人 提出了一种基于开源视频标注系统VATIC的半自动视频标注工具。[275]是另一种用于自动驾驶场景的视频标注工具。与白天标注相比处理夜间的边界框标注更具挑战性。[276]介绍了一种利用轨迹的半自动方法来解决这个问题。
与2D标注相比3D边界框包含了更丰富的空间信息如准确的位置、目标的宽度、长度、高度以及空间中的方向。因此标注高质量的3D标注需要一个更复杂的框架。Meng等人 应用了一个两阶段的弱监督学习框架使用人为循环来标注LiDAR点云。ViT-WSS3D 通过对LiDAR点和相应弱标签之间的全局交互建模来生成伪边界框。Apolloscape 采用了类似于的标注流程包括3D标注和2D标注两个分支分别处理静态背景/目标和移动目标。3D BAT 开发了一个标注工具箱以辅助在半自动标注中获取2D和3D标签。
标注轨迹。轨迹本质上是一系列点映射了目标随时间的路径反映了空间和时间信息。为自动驾驶标注轨迹数据的过程涉及对驾驶环境中各种实体的路径或运动模式进行标注如车辆、行人和骑车者。通常标注过程依赖于目标检测和跟踪的结果。
在轨迹标注的先前工作中[280]在线生成了用于演习的动作并被标注到轨迹中。[281]包括一个众包步骤后跟一个专家集成的精确过程。[282]开发了一个主动学习框架来标注驾驶轨迹。精确地预测行人的运动模式对于驾驶安全至关重要。Styles等人 引入了一种可扩展的机器标注方案用于无需人工努力的行人轨迹标注。
在合成数据上进行标注。由于在真实世界数据上进行手动标注的费时昂贵通过计算机图形和仿真器生成的合成数据提供了解决这个问题的替代方法。由于数据生成过程是可控的场景中每个目标的属性如位置、大小和运动都是已知的因此可以自动且准确地标注合成数据。
生成的合成场景被设计成模仿真实世界的条件包括多个目标、各种地貌、天气条件和光照变化。为了实现这个目标一些研究人员利用了《侠盗猎车手5》GTA5游戏引擎构建了数据集 。[284]基于多个游戏构建了一个实时系统用于生成各种自动驾驶任务的标注。SHIFT 、CAOS 和V2XSet 是基于CARLA 仿真器创建的而不是应用游戏视频。与[11]相比V2X-Sim 研究了使用多个仿真器 为V2X感知任务生成数据集。CODD 进一步利用生成用于合作驾驶的3D LiDAR点云。其他工作利用Unity开发平台 生成合成数据集。
标注的质量
现有基于监督学习的自动驾驶算法依赖于大量的标注数据。然而在质量低的标注上进行训练可能会对自动驾驶车辆的安全性和可靠性产生负面影响。因此确保标注的质量对于提高在复杂的现实环境中行驶时的准确性是至关重要的。根据研究标注质量受到多个因素的影响例如一致性、正确性、精度和验证。一致性是评估标注质量的首要标准。它涉及在整个数据集上保持一致性对于避免在训练在这些数据上的模型时产生混淆至关重要。例如如果特定类型的车辆被标注为汽车那么在所有其他情况下它应该被一致地进行相同的标注。标注精度是另一个重要的指标它指的是标签是否与目标或场景的实际状态相匹配。相比之下正确性强调标注的数据是否适用于数据集的目的和标注准则。在标注之后验证标注数据的准确性和完整性是至关重要的。这个过程可以通过专家或算法的手动审查来完成。验证有助于在问题影响自动驾驶车辆性能之前有效地防止数据集中的问题从而减少潜在的安全风险。[288]提出了一种面向数据的验证方法适用于专家标注的数据集。
KITTI 的一个标注失败案例如下图12所示。在相应的图像和LiDAR点云中说明了真值边界框蓝色。在图像的左侧汽车的标注用红色圈出不准确因为它未包含整个汽车目标。此外尽管相机和LiDAR清晰捕捉到两辆汽车绿色长方体突出显示但它们未被标注。 数据分析
这一部分将详细系统地从不同角度分析数据集例如全球数据的分布时间趋势以及数据分布。
全球分布
在图13中展示了191个自动驾驶数据集的全球分布概况。该图表显示美国处于领先地位拥有40个数据集占比21%突显了其在自动驾驶领域的领导地位。德国拥有24个数据集反映了其强大的汽车工业和对自动驾驶技术推动的影响。中国紧随其后拥有16个数据集表明中国在这一领域的兴趣和投资。另一个值得注意的点是全球范围内有11个数据集欧洲地区不包括德国有24个数据集。这种多样化的区域分布增强了收集到的数据的稳健性并突显了研究界和工业界的国际合作和努力。
另一方面尽管较小的部分代表了包括加拿大、韩国、英国、日本和新加坡在内的其他国家这些国家都是拥有坚实技术背景和积累的发达国家——这一统计数据反映了极端的地区偏见。美国、西欧和东亚的主导地位导致了自动驾驶系统在这些地区典型的环境条件下过度拟合的偏见。这种偏见可能导致自动驾驶车辆在各种或未知的地区和情况下无法正常运行。因此引入来自更广泛国家和地区的数据如非洲可以促进自动驾驶车辆的全面发展。
此外由CARLA 等仿真器生成的35个合成数据集占18.32%。由于实际驾驶环境录制的局限性这些合成数据集克服了这些缺点对于开发更强大和可靠的驾驶系统至关重要。 感知数据集的时间趋势
在图10中作者介绍了从2007年到2023年截至本文撰写时具有前50影响分数的感知数据集的时间趋势概览。这些数据集根据它们的数据来源领域进行了颜色编码并且合成数据集用红色外框标注清晰地展示了朝着多样化数据收集策略的进展。一个明显的趋势显示了多年来数据集的数量和种类的增加表明随着自动驾驶领域的不断发展需要高质量数据集。
总体而言由于自动驾驶汽车有效而准确地感知周围环境的能力的重要性大多数数据集提供了来自装备在自车上的传感器的感知视角车载。另一方面由于实际世界数据成本高昂一些研究人员提出了高影响力的合成数据集如VirtualKITTI 2016年以减轻对实际数据的依赖。在仿真器的有效性的推动下近年来发布了许多新颖的合成数据集。在时间线上像DAIR-V2X 2021年这样的V2X数据集也呈现出向合作驾驶系统的趋势。此外由于无人机提供的非遮挡视角基于无人机的数据集如2018年发布的UAVDT 在推动感知系统方面发挥着关键作用。
数据分布
在图14中介绍了这些数据集每帧目标数量的情况。值得注意的是Waymo 展示了大量帧数少于50个目标的情况同时在图表中占据了广泛的位置说明了它在每帧中从低到高的目标密度涵盖了各种场景。相反KITTI 展示了一个更为受限的分布和有限的数据规模。Argoverse 2 具有大量帧数的高目标计数其峰值约为70这表明了它在一般情况下复杂的环境表示。对于 ONCE 其目标密度均匀地分布在支持的感知范围内。像 nuScenes 和 ZOD 这样的数据集展示了类似的曲线快速上升然后缓慢下降暗示了环境复杂性的适度水平每帧中目标数量具有相当的可变性。 除了场景中目标数量之外基于与自车的距离的目标分布是揭示数据集的多样性和显著差异的另一个重要点如下图15所示。Waymo 数据集展示了大量标注目标在近场到中场场景中。相反Argoverse 2 和 ZOD 展示了更宽的检测范围有些帧甚至包括超过200米的边界框。nuScenes 的曲线意味着它在较短范围内的目标非常丰富这在城市驾驶场景中是典型的。然而随着距离的增加nuScenes 数据集的目标数量迅速减少。ONCE 数据集覆盖了目标在不同距离上更均匀的分布而KITTI 数据集更注重近距离检测。 讨论与未来工作
本文主要关注分析现有数据集这些数据集通常包含丰富的视觉数据并旨在完成模块化pipeline中的任务。然而随着技术的迅速发展尤其是大语言模型的出色性能下一代自动驾驶数据集出现了许多新的趋势提出了新的挑战和需求。
端到端驾驶数据集。与模块化设计的自动驾驶pipeline相比端到端架构简化了整体设计过程并减少了集成复杂性。UniAD 的成功验证了端到端模型的潜在能力。然而端到端自动驾驶的数据集数量有限 。因此引入专注于端到端驾驶的数据集对推动自动驾驶车辆的发展至关重要。另一方面在数据引擎中实施自动标注pipeline可以显著促进端到端驾驶框架和数据的开发 。
自动驾驶数据集中引入语言。视觉语言模型VLMs最近在许多领域取得了令人印象深刻的进展。其在为视觉任务提供语言信息方面的固有优势使得自动驾驶系统更具解释性和可靠性。强调了多模式大语言模型在各种自动驾驶任务中的重要作用例如感知 运动规划 和控制 。下面表 VII 中展示了包含语言标签的自动驾驶数据集。总体而言将语言纳入自动驾驶数据集是未来数据集发展的趋势。 通过VLMs生成数据。正如所提到的VLMs的强大能力可以用于生成自动驾驶数据。例如DriveGAN 通过在没有监督的情况下解开不同组件来生成高质量的自动驾驶数据。此外由于世界模型理解驾驶环境的能力一些工作探索了使用世界模型生成高质量驾驶视频。DriveDreamer 作为从真实场景中派生的先驱性工作解决了游戏环境或仿真设置的局限性。
域自适应。域自适应是开发自动驾驶车辆时面临的关键挑战 它指的是在一个数据集源域上训练的模型在另一个数据集目标域上能够稳定执行的能力。这个挑战表现在多个方面如环境条件的多样性 、传感器设置 或从合成到真实的转换 。
结论
本文对200多个现有的自动驾驶数据集进行了详尽而系统的回顾和分析。从传感器类型和模态、感知领域以及与自动驾驶数据集相关的任务开始。引入了一个称为影响分数的新型评估指标以验证感知数据集的影响力和重要性。随后展示了几个高影响力数据集涉及感知、预测、规划、控制和端到端自动驾驶。此外解释了自动驾驶数据集的标注方法并调查了影响标注质量的因素。
此外描述了收集到的数据集的年代和地理分布为理解当前自动驾驶数据集的发展提供了全面的视角。同时研究了几个数据集的数据分布为理解不同数据集之间的差异提供了一个具体的观点。最后讨论了下一代自动驾驶数据集的发展和趋势。 #关于BEV落地的点点滴滴
1: 21年的大争论
现在回看21年底组内决定做BEV障碍物的时候应该来说是一个幸运或者说有一点运气在里面。最开始面临的当时是大家每个人都熟悉的拍板的事情到底是按照业界成熟的2D检测方案或者说单目3D的的检测方案来做。还是说按照21 在自动驾驶届最火的那个Tesla Ai Day 的方案来做。争论和彷徨应该持续了有一个月左右的时间。很幸运的是最终我们老大直接拍板了决定做BEV 障碍物。现在回看为什么说幸运一个是在21年后学术届有很多优秀的BEV论文出来一个是行车感知这块一直没有作为一个正式项目立项给了我们足够的时间去试错(最开始只有2-3个人来做这件事情)。如果缺少这一些因素也许最后是做不出来的。这样可能往往一件成功的事情都伴随着一些幸运在里面吧。
2BEV 如何做方案
在21年10份的时候能够找到的BEV 障碍物检测的资料还是比较少的看的最多的就是21 年Tesla AI day 上面的BEV pipeline。我记得很清楚组内对21年的Tesla AI day 的pipeline 方案(感知部分)进行了拆解分析最后的难点卡在了2D image Feature 到 BEV Feature 的转换上面。其实那个时候还真不知道如何和Tranformer 结合来做这个。在这里不得不感慨CV 领域的开源文化有一天看到了 Patrick Langechuan Liu. (在这里很感谢刘兰个川持续关于自动驾驶经典论文的输出Paper notes不过近期看到刘兰个川从自动驾驶行业跳去做机器人和大模型去了。)写的一篇文章,里面有一个图感觉对2Dto BEV 的转换清楚了很多。如图1 图1 来自
https://towardsdatascience.com/monocular-bev-perception-with-transformers-in-autonomous-driving-c41e4a893944
然后我们就开始按图索骥开始设计我们的网络后面Detr3D DETR3D: 3D Object Detection from Multi-view Images via 3D-to-2D Queri 开源结合Detr3D 我们的BEV 障碍物网络在nuscenes 数据集上开始收敛还不错。在验证集上跑出一个视频效果大家都比较兴奋。那个时候我们只有2张40G的A100 现在回想哈哈我们真是无知者无畏。
3: 痛苦开始的22年
到22年的时候我们面临的两个问题一个是自己车型的BEV训练数据如何构建一个是如何把BEV 网络部署到车上。先说数据这面临两个问题一个是采集一个是标注还有一个是标定。采集我们搞了一台真值采集车但是因为没有搞硬同步导致7v(前视2V后视1V周视4V) 摄像头 和lidar 时间同步有问题然后我们就搞了一套所谓的软同步的方案只能说凑合着够用。然后说到标注其实在22年标注行业里面或者说我们选到标注供应商他们是没有标注过BEV 障碍物的, 然后我们就从零开始写标注文档(这个过程是真痛苦) 第一版的标注文档加上供应商提供的标注工具最后标注出来的数据一个字是真贵呀, 每标一帧都在滴血。经过1-2个月双方痛苦的磨合和优化过程最终价格在一个合理的范围内了不过现在回看我们在22年标注的数据量还是有点多了。标定最开始标定我们是求助外力来搞的但是效果是真不行。最终只能自己动手风衣足食磕磕绊绊搞了一个lidar 和7v 的联合标注。经过这一系列的操作在这里感谢商汤开源的标定工具https://github.com/pjlab-adg/sensorscalibration。我们终于搞到了质量还算可以的数据(现在回看我们应该提早为时序模型的数据进行布局)。然后就是部署了我记得很清楚上海刚好有疫情然后我们居家了3个月左右。我们差不多痛苦了1个多月在部署的时候有一些算子不支持(也主要是2D-to-3D 的算子)后面是转出来模型性能差然后优化。然后是Pytroch 的模型和转出来在工程上部署的模型掉点很严重我们曾一度想搞一个Fcos3D(https://arxiv.org/abs/2104.10956) 的网络先搞到板子上。组内的同学很给力的我们差不多就3-4个人力左右的情况下最后我们的模型能跑到10hz, 然后在大家的努力下我们差不多在22年78月份的时候我们的视觉 BEV 障碍物就能跑上车了。看到BEV 障碍物在车上实时跑起来的时候还是感觉到很兴奋的。跨相机的case 是真稳整个后处理pipeline 是真的很简洁的)。整个22年对我们来说收获还很大的BEV 障碍物跑的不错。但22年我们也面临了来自项目的压力我们曾面临着人力资源紧缺只有一个人力在投入在BEV 上面还好大家坚持了下。
4收获的23年
在前面差不多1年多的积累下也随着组内的资源越来越多23年我们做出来BEV 车道线还有前融合的BEV多任务模型端到端的红绿灯(一介书生城市自动驾驶红绿灯方案何去何从)目前都已经落地在项目中开始测试交付中。目前我们在探索时序的BEV以及大模型相关的(一介书生2024年自动驾驶标注行业是否会被世界模型所颠覆) 现在来看在21年投入去积累BEV技术是一个很恰当的时机当然抛开技术本身我们老大也顶下来很大的压力和质疑因为有人的地方就有江湖的。
#自动驾驶岗位 算法工程师
激光SLAM算法工程师视觉SLAM算法工程师多传感器融合算法工程师机器学习算法工程师计算机视觉算法工程师自然语言处理算法工程师决策算法工程师规划算法工程师控制算法工程师
非算法类工程师
软件平台开发工程师系统工程师功能安全工程师标定工程师仿真环境工程师测试工程师数据工程师UI开发工程师
下面详细介绍每个岗位的工作职责和需要学习的内容
2.算法工程师
2.1.激光SLAM算法工程师 岗位介绍
采集激光传感器数据根据点云数据对自动驾驶车辆的周围环境进行地图构建。负责实现基于激光传感器的SLAM算法设计和开发能够覆盖各种复杂场景的高精度地图更新和制作。
技能要求
使用c、c编程需要有滤波算法知识ESKF、EKF、UKF等同时需要学习G2O、ceres等用来优化非线性误差函数的c框架。熟悉开源SLAM框架如GLoam、kimera、VINS等优先
2.2.视觉SLAM算法工程师 岗位介绍
以VSLAM为基础研发机器人自主导航定位算法包括基于激光雷达、陀螺仪、里程计、视觉等多信息融合构建机器人运动模型
技能要求
学习常用的VSLAM算法如ORB-SLAM、SVO、DSO、MonoSLAMVINS以及RGB-D等ROS机器人操作系统需要有滤波算法知识ESKF、EKF、UKF等同时需要学习G2O、ceres等用来优化非线性误差函数的c框架。
2.3.多传感器融合算法工程师 岗位介绍
将相机、激光雷达、毫米波雷达等多传感器的信息处理和融合提高自 主驾驶车的环境感知能力负责基于多源信息融合的目标检测、跟踪、识别与定位负责基于多源信息融合的环境特征抽取为地图构建提供支持为基于基于多源信息融合的导航定位提供支持。
技能要求
掌握camera、毫米波雷达、激光雷达、惯性导航等相关数据解析融合算法计算机信息科学、电子工程或数学相关专业本科及以上学历具备扎实的计算机理论基础精度相机模型、多视觉几何、Bundle Adjustment 原理有SfM、几何测距等项目经验精通C/C熟悉Matlab良好的面向对象编程思想和编码习惯熟悉IMU、GPS、DR等惯导定位算法框架熟悉IMU、GPS、车身系统原理、硬件特性、标定算法
2.4.机器学习算法工程师
岗位介绍
该方向主要负责车辆行驶过程中产生的数据在工程上的应用偏向于数据分析方向如车辆行驶里程的影响分析、大数据分析建模等等。
技能要求
PythonC/C学习机器学习的基础理论算法如 LR、GBDT、SVM、DNN等等学习scikit-learn 等传统机器学习框架的模型训练熟悉 PyTorch、TensorFlow等深度学习框架偏神经网络部分等等。
2.5.计算机视觉算法工程师 岗位介绍
该方向主要基于摄像头传感器主要包括车道线检测、车辆等障碍物检测、可行驶区域检测、红绿灯等交通信息检测等等。
技能要求
C/CPythonOpenCV需要机器学习的基本算法 ( 降维、分类、回归等 )需要学习深度学习深度学习框架学习计算机视觉和图像处理的常用方法 ( 物体检测、跟踪、分割、分类识别等 ) 。
2.6.自然语言处理算法工程师
岗位介绍
该方向主要负责车载场景下的语音识别语音交互设计等等
技能要求
学习机器学习算法、深度学习算法RNN自然语言处理基本任务分词、词性标注、句法分析、关键字抽取需要使用机器学习方法聚类、分类、回归、排序等模型解决文本业务问题熟悉 PyTorch、TensorFlow等深度学习框架偏RNN部分等等。
2.7.决策算法工程师 岗位介绍
自动驾驶的决策是将感知模块传递的信息转化成车辆的行为达到驾驶的目标。例如汽车加速、减速、左转、右转、换道、超车都是决策模块的输出。决策需要考虑到汽车的安全性和舒适性保证乘客的安全的情况下尽快到达目标地点。
技能要求
c/c/python熟悉ROS系统学习常用的决策算法如决策状态机、决策树、马尔可夫决策过程POMDP等如果往深里学的话需要熟悉机器学习算法RNN、LSTM、RL掌握至少一种深度学习框架比如gym或者universe等深度强化学习平台熟悉车辆运动学和动力学模型。
2.8.规划算法工程师 岗位介绍
规划包括路径规划和速度规划规划算法中自动驾驶车辆首先通过路径规划确定车辆可行驶的路径然后选择该路径确定可行驶的速度。
技能要求
c/c/pythonROS机器人操作系统有些公司是用Matlab/simulink开发的学习常见路径规划算法例如A、D、RRT等学习一些曲线的表示方法如五次曲线、回旋线、三次样条曲线、B样条曲线等如果往深里学的话学习轨迹预测算法如MDP、POMDP、Came Theory等学习深度学习和强化学习技术也是加分项例如RNN、LSTM、Deep Q-Learning等有数学理论基础和背景熟悉车辆运动学和动力学模型。
2.9.控制算法工程师 岗位介绍
一般是对车辆横纵向动力学建模然后开发控制算法实现车辆运动控制等这个岗位跟车辆打交道较多对于传统车厂转型到自动驾驶领域的伙伴来说是个很好的切入机会。
技能要求
C/C、Matlab/Simulink学习自动控制理论基础学习现代控制理论学习PID、LQR、MPC算法学习车辆运动学、动力学模型对汽车的底盘有一定了解学习CarSim等仿真软件学习ACC、AEB、APA、LKA、LCC等辅助驾驶功能开发的是加分项拥有实车调试经验也是加分项。
3.非算法类工程师
3.1.软件平台开发工程师
岗位介绍
设计和实现自动驾驶软件平台包括内核修改/扩展、驱动程序实现/增强、中间件实现/增强、系统集成、性能/功耗优化、压力/稳定性/符合性测试负责搭建系统架构、编写底层驱动程序负责视觉相关算法在嵌入式处理器GPU、DSP、ARM等平台上的代码实现及性能优化、测试和维护协助算法工程师完成算法在嵌入平台上的移植、集成、测试和优化。
技能要求
C/C编程技巧、Python具有嵌入式操作系统和实时操作系统的内核或驱动开发经验熟悉QNX、ROS熟悉软件调试和debug工具了解车辆ADAS ECU和传感器如雷达、摄像头、超声波和激光雷达熟悉通用诊断服务UDS、控制器局域网CAN熟悉通信协议CAN、UDS、DoIP、SOME/IP、DDS、MQTT、REST等是加分项。
3.2.系统工程师
岗位介绍
负责客户需求对接以及与内部开发人员的需求释放负责无人驾驶软件系统框架构建 负责模块化、可验证的系统软件架构设计和实时性能优化与硬件、算法和测试团队合作集成并优化自动驾驶系统。
技能要求
拥有扎实的计算机基础理论知识如自动控制、模式识别、机器学习、计算机视觉、点云处理具有嵌入式操作系统和实时操作系统的内核或驱动开发经验具备很好的沟通表达能力和团队合作意识
3.3.功能安全工程师
岗位介绍
在产品全生命周期内对产品的功能安全进行支持负责无人/自动驾驶系统产品的功能安全系统设计,并对现有流程提出改进意见;负责无人/自动驾驶系统的危险分析(HARA, FMEAs, FMEDA, FTA;负责无人/自动驾驶系统的安全目标定义;负责无人/自动驾驶系统的安全需求定义;
技能要求
精通ISO26262并有自动驾驶或者ADAS系统功能安全项目实施经验在传统车厂做功能安全想要转行的也可以考虑了解FMEAFMEDAFMEA-MSRFTA等相应的方法
3.4标定工程师
岗位介绍
负责自动驾驶多传感器标定包括GPS、IMU、LiDAR、Camera、Radar 和 USS 等设计实现传感器内参外参标定算法搭建多传感器标定系统负责对标定参数进行相关车辆测试给出测试报告。
技能要求
C编程, 熟悉 Linux及ROS系统有传感器标定工作经历熟悉视觉或激光 SLAM 算法
3.5仿真环境工程师 岗位介绍
该方向需要参与自动驾驶相关仿真系统的搭建包括车辆动力学相关仿真各类虚拟传感器模型和虚拟场景的建模与仿真根据测试案例搭建测试场景执行自动驾驶算法仿真测试等等负责搭建无人驾驶模拟系统对汽车、传感器、环境进行软件模拟。模拟结果将与真实数据一同用于预测汽车在真实场景中的行为配合驾驶决策、路径规划、仿真算法等模块实现自动驾驶闭环仿真并可视化相关调试信息。
技能要求
MATLAB/simulink、Python/C熟练操作一种常用车辆动力学或无人车相关仿真软件比如Perscan、Carsim、Carmaker等熟悉机器人操作系统ROS等有的仿真岗位纯属于做仿真但有的岗位需要做仿真环境的开发这样的岗位对编程要求会更高一些。
3.6测试工程师
岗位介绍
该方向主要负责自动驾驶车辆的相关测试工作测试自动驾驶系统功能各项指标的性能评估其边界条件和失效模式负责自动化测试SIL、HIL的设计实现及智能驾驶产品的相关验证负责根据系统或产品的功能需求制定测试用例和测试计划负责制定完整的系统或产品的测试计划并实施最后撰写测试报告收集和测试系统的边界样例对智能驾驶系统的安全性进行评估对技术提出合理的反馈。
技能要求
熟悉Ubuntu/Linux操作系统会写python脚本熟悉CAN总线熟悉测试用例的编写方法和技巧熟悉图像识别算法熟悉深度学习掌握spark等大数据相关工具者加分熟悉激光雷达毫米波雷达超声波探头和摄像头的应用是加分项。
3.7大数据开发工程师
岗位介绍
数据包括后台数据架构和前台呈现。一辆自动驾驶车每天都要生成1个T的数据量。数据该怎样快速清洗、提炼、总结比如怎样迅速找出一次路测中最重要的几次介入disengagements。从而更高效的帮助工程师测试。负责自动驾驶大数据平台系统的设计、开发和优化负责自动驾驶数据标注与处理流程的可视化工具开发自动化标注平台的设计与研发。
技能要求
具备扎实的数据结构及算法功底精通Java/Python/C等至少一门高级编程语言熟悉Linux开发环境有基于SQL或No-SQL数据库的应用程序的设计、开发经验熟悉REST服务及Web标准熟悉一种主流前端开发框架如React/AngularJS能独立构建前端应用者加分熟悉自动驾驶及相关的Lidar、Camera等传感器数据者加分。
3.8.UI开发工程师
岗位介绍
每个公司都需要搭建内部工具用于验证整车开发。也需要给远程控制中心做各种交互页面通过一个UI远程控制自动驾驶车。同时也包括车厢内为乘客准备的UI。喜欢设计或者擅长前端的朋友可以考虑。
技能要求
具有优秀的审美和丰富的视觉表现力精通色彩、图形、信息和GUI设计原则及方法。 #SparseAD 端到端的范式使用统一的框架在自动驾驶系统中实现多任务。尽管这种范式具有简单性和清晰性但端到端的自动驾驶方法在子任务上的性能仍然远远落后于单任务方法。同时先前端到端方法中广泛使用的密集鸟瞰图BEV特征使得扩展到更多模态或任务变得成本高昂。这里提出了一种稀疏查询为中心的端到端自动驾驶范式SparseAD其中稀疏查询完全代表整个驾驶场景包括空间、时间和任务无需任何密集的BEV表示。具体来说设计了一个统一的稀疏架构用于包括检测、跟踪和在线地图绘制在内的感知任务。此外重新审视了运动预测和规划并设计了一个更合理的运动规划框架。在具有挑战性的nuScenes数据集上SparseAD在端到端方法中实现了最先进的全任务性能并显著缩小了端到端范式与单任务方法之间的性能差距。
领域背景
自动驾驶系统需要在复杂的驾驶场景中做出正确的决策以确保驾驶的安全性和舒适性。通常自动驾驶系统集成了多个任务如检测、跟踪、在线地图、运动预测和规划。如图1a所示传统的模块化范式将复杂的系统拆分为多个单独的任务每个任务都独立优化。在这种范式中独立的单任务模块之间需要手工进行后处理这使得整个流程变得更为繁琐。另一方面由于堆叠任务之间的场景信息损失压缩整个系统的误差会逐渐累积这可能导致潜在的安全问题。 关于上述问题端到端自动驾驶系统以原始传感器数据作为输入并以更简洁的方式返回规划结果。早期的工作提出跳过中间任务直接从原始传感器数据预测规划结果。尽管这种方法更为直接但在模型优化、可解释性和规划性能方面并不令人满意。另一种具有更好可解释性的多面范式是将自动驾驶的多个部分集成到一个模块化的端到端模型中其中引入了多维度的监督以提高对复杂驾驶场景的理解能力并带来多任务处理的能力。
如图1b所示在大多数先前的模块化端到端方法中整个驾驶场景通过密集的鸟瞰图BEV特征进行表示这些特征包括多传感器和时间信息并作为全栈驾驶任务包括感知、预测和规划的源输入。尽管密集的BEV特征在跨空间和时间的多模态和多任务中确实发挥了关键作用将之前使用BEV表示的端到端方法总结为Dense BEV-Centric范式。然而尽管这些方法具有简洁性和可解释性它们在自动驾驶的每个子任务上的性能仍然远远落后于相应的单任务方法。此外在Dense BEV-Centric范式下长期时间融合和多模态融合主要是通过多个BEV特征图来实现的这导致了计算成本、内存占用显著增加给实际部署带来了更大的负担。
这里提出了一种新颖的以稀疏查询为中心的端到端自动驾驶范式SparseAD。在该范式中整个驾驶场景中的空间和时间元素均由稀疏查询表示摒弃了传统的密集鸟瞰图BEV特征如图1c所示。这种稀疏表示使得端到端模型能够更高效地利用更长的历史信息并扩展到更多模态和任务同时显著降低了计算成本和内存占用。
具体来说重新设计了模块化端到端架构并将其简化为一个由稀疏感知和运动规划器组成的简洁结构。在稀疏感知模块中利用通用的时间解码器[将包括检测、跟踪和在线地图绘制在内的感知任务统一起来。在这个过程中多传感器特征和历史记忆被视为tokens而物体查询和地图查询则分别代表驾驶场景中的障碍物和道路元素。在运动规划器中以稀疏感知查询作为环境表示同时对自车和周围代理进行多模态运动预测以获取自车的多种初始规划方案。随后充分考虑多维度的驾驶约束生成最终的规划结果。
主要贡献
提出了一种新颖的以稀疏查询为中心的端到端自动驾驶范式SparseAD该范式摒弃了传统的密集鸟瞰图BEV表示方法因此具有巨大的潜力能够高效地扩展到更多模态和任务。将模块化的端到端架构简化为稀疏感知和运动规划两部分。在稀疏感知部分以完全稀疏的方式统一了检测、跟踪和在线地图绘制等感知任务而在运动规划部分则在更合理的框架下进行了运动预测和规划。在具有挑战性的nuScenes数据集上SparseAD在端到端方法中取得了最先进的性能并显著缩小了端到端范式与单任务方法之间的性能差距。这充分证明了所提出的稀疏端到端范式具有巨大的潜力。SparseAD不仅提高了自动驾驶系统的性能和效率还为未来的研究和应用提供了新的方向和可能性。
SparseAD网络结构
如图1c所示在提出的以稀疏查询为中心的范式中不同的稀疏查询完全代表了整个驾驶场景不仅负责模块之间的信息传递和交互还以端到端的方式在多任务中传播反向梯度以进行优化。与以往以密集鸟瞰图BEV为中心的方法不同SparseAD中没有使用任何视图投影和密集BEV特征从而避免了沉重的计算和内存负担SparseAD的详细架构如图2所示。 从架构示意图上看SparseAD主要由三部分组成包括传感器编码器、稀疏感知和运动规划器。具体来说传感器编码器将多视图相机图像、雷达或激光雷达点作为输入并将其编码成高维特征。这些特征随后与位置嵌入PE一起作为传感器tokens输入到稀疏感知模块中。在稀疏感知模块中来自传感器的原始数据将被聚合成多种稀疏感知查询如检测查询、跟踪查询和地图查询它们分别代表驾驶场景中的不同元素并将进一步传播到下游任务中。在运动规划器中感知查询被视为驾驶场景的稀疏表示并被充分利用于所有周围agent和自车。同时考虑了多方面的驾驶约束以生成既安全又符合动力学要求的最终规划。
此外架构中引入了端到端多任务记忆库用于统一存储整个驾驶场景的时序信息这使得系统能够受益于长时间历史信息的聚合从而完成全栈驾驶任务。
如图3所示SparseAD的稀疏感知模块以稀疏的方式统一了多个感知任务包括检测、跟踪和在线地图绘制。具体来说这里有两个结构完全相同的时序解码器它们利用来自记忆库的长期历史信息。其中一个解码器用于障碍物感知另一个用于在线地图绘制。 通过不同任务对应的感知查询进行信息聚合后检测和跟踪头以及地图部分别被用于解码和输出障碍物和地图元素。之后进行更新过程该过程会过滤并保存当前帧的高置信度感知查询并相应地更新记忆库这将有利于下一帧的感知过程。
通过这种方式SparseAD的稀疏感知模块实现了对驾驶场景的高效、准确的感知为后续的运动规划提供了重要的信息基础。同时通过利用记忆库中的历史信息模块能够进一步提高感知的准确性和稳定性确保自动驾驶系统的可靠运行。
稀疏感知
在障碍物感知方面在统一的解码器内采用联合检测和跟踪的方式无需任何额外的手工后处理。检测和跟踪查询之间存在明显的不平衡这可能导致检测性能的显著下降。为了缓解上述问题从多个角度改进了障碍物感知的性能。首先引入了两级记忆机制来跨帧传播时序信息。其中场景级记忆维持没有跨帧关联的查询信息而实例级记忆则保持跟踪障碍物相邻帧之间的对应关系。其次考虑到两者起源和任务的不同对场景级和实例级记忆采用了不同的更新策略。具体来说通过MLN来更新场景级记忆而实例级记忆则通过每个障碍物的未来预测进行更新。此外在训练过程中还对跟踪查询采用了增强策略以平衡两级记忆之间的监督从而增强检测和跟踪性能。之后通过检测和跟踪头部可以从检测或跟踪查询中解码出具有属性和唯一ID的3D边界框然后进一步用于下游任务。
在线地图构建是一个复杂而重要的任务。根据目前所了解的知识现有的在线地图构建方法大多依赖于密集的鸟瞰视图BEV特征来表示驾驶环境。这种方法在扩展感知范围或利用历史信息方面存在困难因为需要大量的内存和计算资源。我们坚信所有的地图元素都可以以稀疏的方式表示因此尝试在稀疏范式下完成在线地图构建。具体来说采用了与障碍物感知任务中相同的时序解码器结构。最初带有先验类别的地图查询被初始化为在驾驶平面上均匀分布。在时序解码器中地图查询与传感器标记和历史记忆标记进行交互。这些历史记忆标记实际上是由之前帧中高度可信的地图查询组成的。然后更新后的地图查询携带了当前帧地图元素的有效信息可以被推送到记忆库中以便在未来的帧或下游任务中使用。
显然在线地图构建的流程与障碍物感知大致相同。也就是说统一了包括检测、跟踪和在线地图构建在内的感知任务采用了一种通用的稀疏方式这种方式在扩展到更大范围例如100m × 100m或长期融合时更加高效而且不需要任何复杂的操作如可变形注意力或多点注意力。据我们所知这是第一个在稀疏方式下在统一感知架构中实现在线地图构建的。随后利用分段贝塞尔地图Head来回归每个稀疏地图元素的分段贝塞尔控制点这些控制点可以方便地转换以满足下游任务的要求。
Motion Planner
我们重新审视了自动驾驶系统中的运动预测与规划问题并发现许多先前的方法在预测周围车辆运动时忽略了本车ego-vehicle的动态。虽然这在大多数情况下可能不会显现出来但在诸如交叉口等场景中当近处车辆与本车之间交互紧密时这可能会带来潜在风险。受此启发设计了一个更加合理的运动规划框架。在这个框架中运动预测器同时预测周围车辆和本车的运动。随后本车的预测结果作为运动先验被用于后续的规划优化器。在规划过程中我们考虑了不同方面的约束以产生既满足安全性又符合动力学要求的最终规划结果。 如图4所示SparseAD中的运动规划器将感知查询包括轨迹查询和地图查询作为当前驾驶场景的稀疏表示。多模态运动查询被用作媒介以实现对驾驶场景的理解、对所有车辆包括本车之间交互的感知以及对不同未来可能性的博弈。随后本车的多模态运动查询被送入规划优化器其中充分考虑了包括高级指令、安全性和动力学在内的多个方面的驾驶约束。
运动预测器。遵循先前的方法通过标准的transformer层实现了运动查询与当前驾驶场景表示包括轨迹查询和地图查询之间的感知和整合。此外应用自车agent和跨模态交互来共同建模未来时空场景中周围agent和本车之间的交互。通过多层堆叠结构内部和之间的模块协同作用运动查询能够聚合来自静态和动态环境的丰富语义信息。
除了上述内容外还引入了两种策略来进一步提高运动预测器的性能。首先利用轨迹查询的实例级时间记忆进行简单直接的预测并将其作为周围agent运动查询初始化的一部分。通过这种方式运动预测器能够从上游任务中获得的先验知识中受益。其次得益于端到端记忆库能够以几乎可忽略的成本、以流式方式通过代理记忆聚合器从保存的历史运动查询中同化有用信息。
需要注意的是本车的多模态运动查询是同时更新的。通过这种方式可以获得本车的运动先验这可以进一步促进规划的学习过程。
规划优化器。借助运动预测器提供的运动先验获得了更好的初始化从而在训练过程中减少了绕行。作为运动规划器的关键组成部分成本函数的设计至关重要因为它将极大地影响甚至决定最终性能的质量。在提出的SparseAD运动规划器中主要考虑安全和动力学两大方面的约束旨在生成令人满意的规划结果。具体来说除了VAD中确定的约束外还重点关注本车与附近agent之间的动态安全关系并考虑它们在未来时刻的相对位置。例如如果agent i相对于本车持续保持在前方左侧区域从而阻止本车向左变道那么agent i将获得一个左标签表示agent i对本车施加了向左的约束。因此约束在纵向方向上被分为前、后或无在横向方向上被分为左、右或无。在规划器中我们从相应的查询中解码其他agent与本车在横向和纵向方向上的关系。这个过程涉及确定这些方向上其他代理与本车之间所有约束关系的概率。然后我们利用focal loss作为Ego-Agent关系EAR的成本函数有效地捕获附近agent带来的潜在风险 实验结果
在nuScenes数据集上进行了大量实验以证明方法的有效性和优越性。公正地说将对每个完整任务的性能进行评估并与之前的方法进行比较。本节实验使用了SparseAD的三种不同配置分别是仅使用图像输入的SparseAD-B和SparseAD-L以及使用雷达点云和图像多模态输入的SparseAD-BR。SparseAD-B和SparseAD-BR都使用V2-99作为图像骨干网络输入图像分辨率为1600 × 640。SparseAD-L则进一步利用ViTLarge作为图像骨干网络输入图像分辨率为1600×800。
在nuScenes验证数据集上的3D检测和3D多目标跟踪结果如下。“仅跟踪方法”指的是通过后期处理关联进行跟踪的方法。“端到端自动驾驶方法”指的是具备自动驾驶全栈任务能力的方法。表中的所有方法都是在全分辨率图像输入下进行评估的。†结果是通过官方开源代码复现的。-R表示使用了雷达点云输入。
与在线建图方法的性能比较如下结果是在[1.0m, 1.5m, 2.0m]的阈值下进行评估的。‡通过官方开源代码复现的结果。†根据SparseAD中规划模块的需求我们进一步将边界细分为路段和车道并分别进行评估。∗骨干网络和稀疏感知模块的成本。-R表示使用了雷达点云输入。
Multi-Task结果
障碍感知。在Tab. 2中将SparseAD的检测和跟踪性能与nuScenes验证集上的其他方法进行了比较。显然SparseAD-B在大多数流行的仅检测、仅跟踪和端到端多目标跟踪方法中表现出色同时与SOTA方法如StreamPETR、QTrack在相应任务上的性能相当。通过采用更先进的骨干网络进行扩展SparseAD-Large实现了整体更好的性能其mAP为53.6%NDS为62.5%AMOTA为60.6%整体上优于之前的最佳方法Sparse4Dv3。
在线建图。在Tab. 3中展示了SparseAD与其他先前方法在nuScenes验证集上的在线建图性能比较结果。需要指出的是根据规划的需求我们将边界细分为路段和车道并分别进行评估同时将范围从通常的60m × 30m扩展到102.4m × 102.4m以与障碍感知保持一致。在不失公平性的前提下SparseAD以稀疏的端到端方式实现了34.2%的mAP无需任何密集的BEV表示这优于大多数之前流行的方法如HDMapNet、VectorMapNet和MapTR在性能和训练成本方面都具有明显优势。尽管性能略逊于StreamMapNet但我们的方法证明了在线建图可以在统一的稀疏方式下完成无需任何密集的BEV表示这对于以显著较低成本实现端到端自动驾驶的实际部署具有重要意义。诚然如何有效利用其他模态如雷达的有用信息仍是一个值得进一步探索的任务。我们相信在稀疏方式下仍有很大的探索空间。
运动预测。在Tab. 4a中展示了运动预测的比较结果其中指标与VIP3D保持一致。SparseAD在所有端到端方法中实现了最佳性能具有最低的0.83m minADE、1.58m minFDE、18.7%的遗漏率以及最高的0.308 EPA优势巨大。此外得益于稀疏查询中心范式的效率和可扩展性SparseAD可以有效地扩展到更多模态并从先进的骨干网络中受益从而进一步显著提高预测性能。
规划。规划的结果呈现在Tab. 4b中。得益于上游感知模块和运动规划器的卓越设计SparseAD的所有版本在nuScenes验证数据集上都达到了最先进水平。具体来说与包括UniAD和VAD在内的所有其他方法相比SparseAD-B实现了最低的平均L2误差和碰撞率这证明了我们的方法和架构的优越性。与上游任务包括障碍感知和运动预测类似SparseAD通过雷达或更强大的骨干网络进一步提升了性能。 #视觉和Lidar里程计
自动驾驶的发展需要研究和开发准确可靠的自定位方法。其中包括视觉里程计方法在这种方法中精度可能优于基于GNSS的技术同时也适用于无GPS信号的区域。本文深入回顾了视觉和点云里程计SOTA方法并对其中一些技术在自动驾驶环境中的性能进行了直接比较。评估的方法包括相机、激光雷达和多模态方法并从共同的角度比较了基于特征知识和基于学习的算法。
在过去十年中自动驾驶一直是许多技术和科学研究的主题。它的许多好处如提高乘客安全性、舒适性和便利性、更好的交通流量、无人驾驶交通和降低了燃料消耗吸引了负责自动驾驶汽车技术进步的大型制造商的投资。对于任何自动驾驶智能体自定位的能力在每个导航任务中都是必不可少的。尽管GNSS全球导航卫星系统接收器通常是现代车辆自定位的主要来源但大众市场设备提供的精度和可靠性远远低于自动驾驶车辆所需的水平。因此由于定位误差、信号延迟和服务质量问题的不确定性自动驾驶车辆不会强依赖于卫星数据[1]。而且这一问题在城市场景中进一步加剧[1]由于此场景中卫星能见度有限、多径效应、干扰和其他误差。人类驾驶员自己的视觉感知能力弥补了所有这些限制。以同样的方式自动驾驶汽车可以配备传感器当与适当的里程计技术一起使用时传感器可以提供类似人类水平的精确的相对定位。
里程计可以被定义为使用局部传感器的数据来估计一个特定的起始点估计一段时间内车辆的姿态变化。通常这些方法试图通过传感器如车轮编码器、RADAR、惯性测量单元IMU、LiDAR来恢复车辆的位置和方向这些传感器在现代车辆中越来越普遍。同样重要的是要认识到这些传感器类型不是限制死的因为里程计方法可以是多模态的即不同的传感器可以通过一个算法一起使用。随着相机和激光雷达在现代车辆中的使用越来越普遍基于视觉和点云的里程计正在成为关键的方法。与GNSS不同这些传感器不需要外部信号。此外这些技术比车轮里程计更为稳健并且易于通过IMU或GPS进行补充[2]。
随着政府对驾驶员辅助和自动驾驶安全功能的需求增加自动驾驶相关领域的研究也在增加。参与感知领域的里程计对开发此类系统至关重要。本研究提供了视觉、点云和多模态里程计的概述并将这些类别与一个共同的基准进行了比较同时考虑了在完全相同的条件下获得的实际结果。此外深度学习DL技术的兴起使得有必要评估其相对于传统方法的发展现状。这项工作背后的另一个动机是使用一个众所周知的数据集KITTI-360[3]创建一个最先进的视觉、基于点云和多模态方法的无偏见基准。基准测试在具有挑战性的情况下测试不同的算法以验证所调研技术的优势和局限性。本文件还讨论了一些当前的问题这些问题可以帮助研究人员超越常见的视觉里程限制例如恶劣的天气条件、计算能力限制和动态目标的存在。
本调研主要贡献是
1视觉里程计相关和有前景的工作的分类和理论讨论从基于特征和外观的技术到利用深度学习能力的最新工作基于点云的里程计包括基于知识和学习的方法同时还分析了不同类型的传感器融合。在相同场景下使用通用评估程序对这些技术进行了分析
2对几种开源算法进行基准测试的大量实验特别关注动态环境、开放空间、亮度变化、密集植被、转向机动和高速等具有挑战性的情况
3识别自运动估计的当前挑战例如对场景外观的依赖性、高计算负载和移动目标的存在。分析和量化这些条件对不同类型所述方法性能的影响
4识别自运动估计的当前挑战例如对场景外观的依赖性、高计算负载和移动目标的存在。分析和量化这些条件对不同类型所述方法性能的影响
视觉里程计 现有的 VO 方法可以分为两类: 基于知识的方法和基于学习的方法。前者利用相机的几何关系来评估运动而后者则基于机器学习技术依赖于大量的数据来获得姿态预测能力。如下图所示基于知识的方法可以分为三个子组: 基于外观的、基于特征的和混合的这取决于如何使用视觉组件来生成里程计估计值。 基于知识的技术
基于特征的方法侧重于这样一个前提即每帧中的关键点或区域可以用来确定相机的运动。这些关键点由角、边、线和斑点组成这些图像模式在强度、颜色或纹理方面与周围环境不同因此更可能在多个图像中匹配良好[2] [4] [5]。对于特征提取通常采用 SIFT [6]、 SURF [7]、 ORB [8]和 BRISK [9]。基于特征的VO对于几何失真和照明不一致都有相当强的鲁棒性[10]。然而由于这些方法高度依赖于正确的对应关系因此只选取图像中的某些点就会丢弃一些有价值的信息因此必须尽量减少异常值的存在。下图描述了基于特征的算法所使用的pipline。 因为这些pipline通常遵循结构化的pipline其中涉及特征检测和匹配阶段(或特征跟踪) 然后是运动估计最后是优化步骤。尽管这些步骤通常是横向的但是每种技术提出它们的方式都是不同的。
在运动估计中最常用的方法包括特征-特征匹配(2D-2D) 它利用了纵向几何的约束。纵向约束与从不同角度看到的相同特征有关其中 P1和 P2是图像坐标上图像1和图像2中同一点的坐标E 是本质矩阵。通过选择一组匹配可以计算出运动参数(E 中隐含的) 从而使纵向约束带来的误差最小化。 ORB-SLAM2[12]是 VO 和SLAM中流行的算法。它是 ORB-SLAM [13]用于单目、多目和 RGB-D 相机的扩展。这种开源方法通常被认为是视觉里程计的基准。作为一种 SLAM 技术该算法由三个线程组成: 跟踪和局部建图里程计模块和闭环。运动估计是利用关键帧和局部地图上跟踪的 ORB 特征计算出来的特别强调多步光束法平差。VISO2[14]是2011年的另一个流行算法它可以使用立体相机构建环境的3D 地图。这种方法应用了著名的立体匹配方法将稀疏的特征集与使用卡尔曼滤波器的里程计方法相结合[15]。此外Cvisic和 Petrovi [16]-[18]的工作在基于视觉特征的方法领域具有特殊的相关性因为他们的结果使视觉方法的精度更接近基于 LiDAR 技术的精度水平。在[16]中作者提出了一个立体里程计算法其主要重点是仔细选择和跟踪特征(SOFT)和这些步骤对自运动估计的影响。旋转和平移分别计算以提高整个系统的性能。对于旋转Nister 的5点[19]以单目方式使用以概率地减少异常值和不完善的立体设备标定的有害影响同时利用旋转以后使用3点计算平移。此外该算法的一个扩展被提出来积分 IMU用卡尔曼滤波器估计旋转集成。第一个估计有助于进一步去除异常值和减轻计算成本的5点算法使用 P3P [20]和 Ransac [21]替代。当通过视觉里程计计算旋转时Kalman 会更新。后来Cvisic和 Petrovi用一个附加的建图线程扩展了 SOFT从而产生了 SOFT-SLAM [17]。这种方法最初是为自动驾驶飞行器设计的侧重于计算效率。SLAM 集成了 SOFT 可视里程计pipline并通过一个建图模块完成该建图模块增加了 SLAM 的特性如闭环和全局一致性约束。这些增加的能力使得这种技术在 KITTI 数据集[22]中的定位精度优于其最先进的替代方案如 ORB-SLAM2和 LSD-SLAM [23]。最近Cvisic 等人[18]重新审视了 KITTI 里程数据集的标定参数。在最后的工作中作者提出了一种新的一次性标定多相机 KITTI 装置参数的方法该方法可以获得较小的重投影误差直接影响 VO 算法的精度。将调整后的参数应用于 ORB-SLAM2、 SOFT 和 VISO2平移误差平均提高了28% 旋转误差平均提高了46% 。
另一方面基于特征的技术通过仅集中在少数几个选定的点来丢弃图像数据的重要部分。此外这些技术可能需要额外的计算成本在匹配或跟踪操作和离群点去除。反过来基于外观的 VO 技术利用捕获帧中的所有信息而不仅仅是使用关键点。这些方法通过分析图像像素的强度并最小化光度误差来估计相机的姿态这依赖于一帧中的像素在考虑移动传感器的同时保持其在第二帧中的强度的一致性原则[5]。通过这种方法可以减轻由重复模式引起的混叠效应并确保在有限纹理的场景中更加稳健因为在这些场景中很难检测到好的特征(例如雾或沙质环境)。基于外观的技术避免了提取和匹配特征以及运行异常去除算法所需的时间。另一方面与基于特征的 VO 相比它们对光照变化和相机突变运动敏感。基于外观的方法也称为直接方法一般分为基于区域匹配或基于光流的方法。前者通过在连续帧中对齐某些相应区域来估计相机的运动但是在场景中存在动态目标的情况下除了容易受到局部极小解的影响外还会出现失效问题。另一方面基于光流的技术利用环境场景的光流来估计基于运动模型的相机运动的6自由度(DoF)。下图在直接技术的通用pipline中汇总了两种方法。 为了减轻基于特征和基于外观的方法的缺点以及聚合每种方法的附加值还可以采用来自每个领域的不同方法。这些被称为混合技术[5]。
2017年恩格尔等[24]提出了直接稀疏里程计法(DSO)。这个方法包括一个直接和稀疏的方案因此不需要特征提取和配对操作。这种方法通过不断优化光度误差在一个有限的框架窗口。然而与典型的直接方法相比该方法同时对所有参数进行优化包括自运动、相机标定和三维点的反深度。通过考虑完全误差而不是仅仅考虑特定迭代的误差该策略限制了异常值的影响。作者得出结论有了合适的硬件(全局快门、精密镜头和高帧频) 直接方法在精度方面可以超过几何/间接方法这些方法在过去十年里一直主导着研究兴趣。传统(或几何)方法已经有了良好的基础尽管这些方法在其演化过程中产生了合理的结果但在复杂性增加的环境中它们仍然被证明是脆弱的。事实上仅仅依靠这些类型的技术变得极具挑战性因为通过手工制定来捕捉现实世界的复杂性是极其困难的。
基于学习的技术
如在不同领域所见数据驱动的基于学习的方法可以获得对场景的高层次理解而不需要明确的建模只要他们在足够大的代表性数据集上进行训练[25]。此外相机标定参数不需要事先知道; 平移可以用正确的尺度估计系统对图像噪声的鲁棒性更强[26]。因此近年来 VO 的范式发生了转变倾向于采用基于学习的方法。典型的数据驱动技术通常由多个具有不同功能的子网组成例如深度估计、特征提取和自运动估计[25]。它们可以用来补充传统的pipline也可以用来构建端到端的体系结构如下图所示。 对网络进行训练的方法是将输出与监督信号对接或根据调整和微调网络参数的cost函数对输出进行评估。
Yang 等[27]提出了深度虚拟立体里程计(DVSO) 它用一个基于深度学习的框架来补充 DSO。这项工作的核心是通过网络扩展 DSO 的能力从而产生精确的深度估计从而减少尺度漂移。提出的全卷积网络(FCN) StackNet 生成一对深度图用于模拟虚拟立体平台。通过比较反向扭曲的产出和原始输入以自监督的方式进行训练。这种技术在基于里程学习的方法中很常见因此可以避免使用真值而这些真值的获取成本很高。StackNet 的预测深度图被添加到原始 DSO 通用优化问题的预测深度图中作为额外的几何约束。深度视觉里程计法迄今未能取代传统的方法。然而这项工作超越了基于学习的替代方案更接近于传统的最先进的技术。实际上在 KITTI 选择的一组序列中DVSO 比 ORB-SLAM2的平移误差略有提高提高了2.2% 。此外虽然 DVSO 不是一个端到端的视觉里程计架构如 DeepVO [28] 在 KITTI 数据集中 DVSO 的翻译误差是9.3倍。
2020年同样是 DVSO 的作者Yang等人[29]提出了Deep Depth,Deep Pose和Deep Uncertainty也被称为 D3VO。D3VO 的总体结构与 DVSO 和 DSO 略有不同。在 D3VO 中深度是由一个称为 DepthNet 的卷积网络估计的它也预测与估计相关的不确定性。反过来相机的姿态是由另一个叫做 PoseNet 的深度卷积网络估计出来的除了变换之外PoseNet 还可以平衡当前帧和之前帧的照度这两个帧共同构成了一对网络输入以减少由于光照变化而产生的误差。不确定性在此均衡过程中尤为重要因为它有助于检测容易违反帧间光度一致性原则的非朗伯反射表面。DepthNet 和 PoseNet 都是以自监督和联合方式进行训练的。姿态预测基于以前的工作DVSO和DSO补充了一个直接跟踪前端模块和一个全局光束法平差后端模块。在轨迹精度方面结果略高于DVSO(在选定的 KITTI 序列中为10%)。
与以前的方法不同由 Wang 等人[28]提出的 DeepVO 是一种端到端的监督方法其重点是学习具有适当几何意义的特征提取并隐式建模一系列帧上的运动动力学。一对连续的图像被叠加并作为输入传递给卷积神经网络(CNN) 生成一个输入对的简洁描述然后被馈送给一个递归神经网络(RNN) 允许捕捉视频的连续属性。尽管如此与DVSO 和 D3VO 不同其结果有些令人不满意。然而这种方法允许非调优相关模型它可以作为端到端DL方法的概念验证。事实上计算机视觉中大多数常用的DL结构如 CNN 和 RNN并不适合 VO。这项工作可以作为一个起点催化新的 VO 应用研究。ESP-VO [30]通过计算姿态估计的不确定性扩展了这项工作这对传感器融合特别有用。按照类似的路径PoseCon-vGRU [31]是一种端到端的可比方法。PoseCon-vGRU 利用 DeepVO 的时间效率使用堆叠的门控循环单元(GRU)代替长短期内存模块(LSTM)。LSTM 和 GRU 是特定类型的 RNN它们通过学习和在内部存储与保持或不保持内部状态相关的内容来捕获连续输入之间的长期关系。这种类型的结构是特别重要的视觉里程计给予时间几何约束的序列框架。在 PoseConverGRU 中GRU 是首选的因为它们在性能方面非常接近于 LSTM但是用更少的参数和更少的时间实现类似的结果。尽管如此虽然取得了比 DeepVO 略好的结果但改善并不显着因此导致相同的结论。
DeepAVO [32]是另一种基于光流的 DL 方法其依赖于基于学习的光流提取器 PWC-Net [33]。它每个图像象限提供四分支网络以利用局部视觉线索。卷积块注意模块(CBAM)[34]机制被纳入到特征编码器之前的姿态估计。这种机制作为一个mask提取相关的特征集中在不同运动的像素丢弃前景和模糊的目标。同样依靠 PWC-NetZhao等[35]预测光流计算相机姿态的相对变换并通过三角测量重建场景的一些三维结构。然后这些结构被用来标定来自平行神经网络的深度预测解决姿态和深度预测之间尺度不一致的问题。这是一个阻碍学习过程和结果的问题因此笔者将姿势分支和深度分支的训练过程进行了划分利用两者的输出相互补充形成一致性。
ClusterVO[36]是一种动态感知的 VO 技术它可以在检索相机轨迹和被检测目标轨迹的同时分割动态目标。运动估计部分基于关键帧和滑动窗口优化(部分类似于 ORB-SLAM2)。VLocNet [37]提出了一种应用于视觉里程计的基于辅助学习的方法。除了一个 VO 专用网络作者提出了另一个模块来估计车辆的全局姿态在两个任务之间共享特征因为这两个任务在性质上非常相似。这种做法促进了一个更一致的学习和较少的易感性过度拟合。该技术在 VLocNet [38]中通过包含一个场景分割任务得到了进一步的扩展。
到目前为止视觉方法景观已经被传统的基于特征的方法所主导如 ORB-SLAM2和 SOFT-SLAM。最近直接的公式化方法已经取得了有趣的成果而作者也开始观察到一种趋势即整合基于学习的子模块以补充更传统的架构如 DVSO 和 D3VO。与此同时许多端到端的自运动估计方法已经出现尽管结果令人失望但在道路交通环境复杂性的抽象方面仍然有很大的潜力。
基于点云的里程计
点云帧通常以点云的形式表示点云由一组直接以世界坐标给出的3D点组成而VO则是以像素/图像坐标给出点。激光雷达传感器的工作原理是测量发射和反射的激光线的飞行时间或相移。要创建环境的3D点云需要多次执行此操作以覆盖整个扫描区域。基于点云的里程计方法的分类不像 VO 方法那样简单。将这些工作分类的最简单的方法是将它们分为以下几类: 基于知识的使用标准和传统算法的以及基于学习的使用机器和深度学习技术的。
Jonnavithula 等[39]帮助定义激光里程计算法的基本步骤: (1)预处理(2)特征提取(3)对应搜索(4)转换估计和(5)后处理(如下图所示)。 基于知识的技术
ICP [41]在90年代有了第一个版本可以被认为是基于 LiDAR 的里程计领域最有影响力的算法之一。在其最基本的版本中该方法通过两个步骤找到两个点云之间的转换: 数据关联和转换估计。数据关联步骤旨在找到两个点云之间的对应点这可以使用最近邻方法来完成。第二步通过计算每个点云的质心并对齐然后利用单值分解(SVD)计算点云的旋转最小化点对之间的距离。该算法进行多次迭代直到找到一个局部最小值。ICP 的基本概念被用于各种最先进的方法例如 CT-ICP [42] 这是 KITTI 自动驾驶基准上表现最好的里程计系统之一。ICP 算法考虑了传感器运动引起的点云畸变使得 ICP 算法能够实时工作就像在自动驾驶场景中发生的那样。这个公式使这种方法对传感器的高频运动具有鲁棒性这是该方法的主要强项。该算法估计每个激光雷达扫描的初始和最终位置同时通过插值执行弹性扫描匹配。与类似的方法不同最终姿态不一定对应于下一次滑动的初始姿态提供弹性和鲁棒性以应对传感器运动中更突然的变化。同时该方法提供了一个完整的建图模块和一个新的闭环过程。通过剪切特定阈值之间的 z 坐标地图的点被插入到二维高程网格中只有当传感器在 z 轴上的运动相对稳定时这种方法才有效。当构建一个新的网格时使用旋转不变的2D 特征将其与旧网格进行匹配。当一个匹配被验证ICP 被用来细化二维变换获得一个6自由度的闭环约束。
最近的另一种依赖于 ICP 基础的方法是 MULLS (多度量线性最小二乘)[43] 它提供了一个高效、低漂移的3D SLAM 系统。这种架构是专门设计的独立于激光雷达的规格不需要转换的激光雷达数据环或Range图像。首先对几何特征点进行提取和编码区分地面、立面、柱子等几类特征点。下一步涉及多度量线性最小二乘 ICP 的自运动估计基于选定的特征这是修改以提高准确性和效率。这种变化有四个基本步骤。首先在每个特征类别中确定点对应关系。然后在考虑点强度等因素的情况下计算每个对应关系的权重。然后根据点对应关系和计算出的权值计算出变换估计。最后作者使用统计指标来评价注册过程的质量。下图描述了在 LiDAR 收集的点云上执行的 MULLS 注册过程的一个例子。 另一项在这个领域具有高度相关性的工作是 LOAM [44]。该方法同时解决了不同频率下的里程计和周边建图问题。里程函数以较高的节奏运作并产生较低的保真度估计。同时建图模块在生成和细化全局地图的同时速度较慢并调整里程估计值。对于里程计在初始阶段提取点云特征将点云特征选取并分组为尖锐边缘和平面表面斑块。沿着激光雷达扫描假设传感器的恒定角速度和线速度捕获的点逐渐投影到前一帧。当特征被提取和匹配时ICP 的一个变体会产生新的估计。当扫描完成后建图模块细化对齐完成建图并产生更高精度的姿态估计再次传递回里程计模块。
其他的工作比如 LeGOLOAM [45]和 ELO [46] 使用了 LOAM 的变体这些变体专门设计为在保持或改进原始性能的同时具有较低的运行时间。LeGOLOAM 是轻量级和地面优化 LOAM 的缩写其开发目的是为了在计算能力较低且没有悬挂的车辆上实现(这会加剧点云失真)。基本的工作原理依赖于分割点云去除小的集群和保留点可能代表大的目标如树干和道路表面并保存在一个range图像中。然后从这些range图像中提取特征分为地面特征和非地面特征。关于里程计算法本身由于地面优化过程跨帧特征匹配变得更快。正如预期的那样这种方法提高了 LOAM 的效率使用的特性减少了72% 。ELO[46]是最近由zheng等人提出的。对于 LOAM 这样的方法来说以基于树的形式对点云进行编码是很常见的这种方法虽然在搜索方面很有效但在大规模的点云中会受到一定的限制。为了最大限度地提高效率该方法提出将激光雷达测量结果投影到球面图像上直接恢复点之间的邻域。问题在于在自动驾驶汽车中激光雷达传感器捕获了大量的地面点而这些地面点在球面几何学的投影中变得过于遥远。作为一种利用这些点的方式地面点投影在一个自上而下的鸟瞰角度。通过对地面点和非地面点的合理分割以及适当的二维投影使得帧匹配搜索方法的应用更加有效。关于运行时间作者认为 ELO 在一台普通笔记本电脑上可以达到169帧率。事实上这项工作记录的运行时间比 KITTI 里程计基准中十个最高位置的平均值低21倍。尽管在提高效率方面做出了努力但 ELO 的性能与MULLS 等其他方法相当。
其他一些工作也应该提到。例如F-LOAM [47]试图通过将 LOAM 的迭代过程转化为两阶段失真补偿方法来减少计算负担。该算法还利用了局部光滑度较高的边缘特征和平面光滑度较低的特征有利于匹配。通过这样的努力该方法在低功耗嵌入式计算单元上实现了20Hz 的周期频率。ISC-LOAM [48]类似于 F-LOAM但是使用点云的强度值和它们的几何形状来进一步提高循环闭合的能力。R-LOAM [49]通过将 LOAM 框架与关于引用目标的先前知识相结合以不同的方式对这种改进进行了处理。它需要事先了解障碍物的三维模型及其在全局坐标系上的位置。然而这种表述使 R-LOAM 不适合于自动驾驶环境。
基于学习的技术
一种不同类型的方法涉及使用深度学习技术来解决里程计问题。由于来自range传感器的数据是无序和稀疏的这是具有挑战性的应用典型的卷积为基础的 DL 模块。因此一些使用 DL 技术的方法将3D 点云转换成其他格式如range图像。LO-Net [50]是一种使用这种方法检索传感器里程估计的算法。LO-net 首先从点云格式传递到矩阵将点投影到圆柱坐标系中。然后对于每个点计算其各自的法向量。将包含当前时刻法向量和前一次激光雷达扫描法向量的矩阵传递给Siamese神经网络(SNN) 后者将输出合并并提供给卷积网络用于估计自运动参数。整个网络都是以监督的方式进行训练的。此外该算法还包含场景中动态目标的掩模估计模块和建图块通过扫描-建图匹配进一步细化估计。DeepLO [51]是另一种方法它首先将入射的点云投影到二维空间中。投影表示被一对包含点云顶点和法线的2D图所替代而且没有精度损失。从当前时刻和前一时刻的顶点建图被传递到一个完全卷积网络从中提取各自对的特征向量。这同样适用于法线的图它们被并行地提供给另一个类似的网络。然后将两个合成的特征向量相加并传递给第三个神经网络该神经网络预测运动参数。这个网络可以训练在监督的方式辅助序列真值或在无监督的方式通过一个误差函数其中包括一个版本的 ICP。LodoNet [52]也值得一提因为它使用 SIFT 将3D 数据转换成二维表示和每种形式的特征提取从而在连续扫描之间获得关键点对。然后这些通信被输入一个卷积神经网络pipline提取匹配的关键点对(MKPs)。MkPs 可以精确地返回到3D空间并输入一个为激光雷达里程计设计的卷积神经网络。另一项利用神经网络的工作是 PWCLO-net [53]。该算法以端到端的方式从原始的3D 点云中学习 LiDAR 里程计不需要将点云投影到2D 表示中。网络的输入是两个点云由一个孪生特征金字塔编码提取每个点云的层次特征。然后利用一个注意力cost体积来关联两个点云生成包含点相关信息的点嵌入特征。利用嵌入掩模从这些特征中获取姿态变换同时去除动态元素。
其他最近使用深度学习的相关工作是 PSF-LO [54] 它使用参数化的语义特征来促进注册任务并使用动态和静态目标分类器; 以及 CAE-LO [55] 与以前的方法一样使用无监督的深度学习并使用紧凑的2D 球形环投影。DMLO [56]也是一项有趣的工作通过将姿态估计分解为两部分来使特征匹配适用于 LiDAR 里程计: 使两个扫描之间的匹配网络和刚性变换估计运算变换估计运算。SuMa [57]扩展了 Behley 等人以前的工作[58] 并对自定位问题有不同的方法。通过分析语义surfel-based的地图变化来估计机器人的位置同时检测和去除动态目标提高姿态估计的精度。每个扫描的激光雷达帧被转换成一个二维投影。然后通过点云分割网络RangeNet [59]对每个帧进行分割因为每个点都属于一个语义标签。在此步骤之后图像被转换回一个更新世界地图的3D 投影。本节提供了基于点云的里程计的一般概念的概述。文章还分析了这一领域的几个工作以及它们的独特性从知识到基于学习的方法这些方法正在变得越来越流行就像视觉里程计一样。
多模态里程计
自动驾驶汽车行驶的道路环境是非常复杂的。自动驾驶车可以通过结合不同的传感器(如相机、激光雷达和IMU) 接近人类的感知能力从多模态感知中受益。随着这些传感器开始被汽车制造商广泛采用这种方法正变得越来越重要。
数据融合策略
数据融合依赖于从不同的传感器收集数据将允许从周围捕获更丰富和冗余的信息这反过来又能够降低状态估计的不确定性。这种方法还有助于减少个别传感模式的失败成本从而提高系统的鲁棒性。例如视觉里程计可能会受到光照变化、照明条件差和无纹理环境的影响; 激光雷达难以应对高速公路或长隧道等宽阔的开放空间以及恶劣的天气条件; 如果不定期调整IMU 的轨迹估计往往漂移得非常快。因此拥有不止一种模式应该可以弥补最终的短期或长期失败。在多模态方法中可以根据合并在系统框架上下文中发生的瞬间对数据融合进行分类(如下图)。 在早期融合中在任何预处理之前通常通过将一个或多个传感器投影到另一个传感器的输入空间在原始阶段合并数据。这种方法通常具有较低的计算成本但高度依赖于传感器间的空间和时间标定[60]。后期融合意味着数据的后处理合并。这是最常见的策略因为它需要更低的复杂性和更高的模块化。然而它带来了更高的计算费用并阻碍了每种数据类型的潜在有价值的中间特征的使用[60]。最重要的在后期融合中的局限性仅仅依赖于姿态估计它赋予融合层一个抽象级别在某些情况下可能会受到限制。最后中间融合是更加全面的技术因为它可以以许多可能的方式部署这取决于系统的体系结构特别是如果是基于DL 的。由于数据经过一定的处理后进行融合因此也称为特征级融合。在里程计的上下文中可以对数据如何被用来生成系统的输出进行分类。例如激光雷达测量可以补充图像同时估计自运动与视觉里程计或反之亦然或两种类型的里程计可以分开操作融合在更高的系统框架抽象层[61]。遵循第一种方法的系统通常表示为紧耦合而其他系统称为松耦合[62]。在这种情况下图像和点云通常是里程测量法估计的主要来源而 IMU 和全球定位系统提供便利的先验和/或轨迹漂移校正。
目前的数码相机技术相比其他传感器使相机具有非常有竞争力的价格和更小的尺寸和重量。相机通过提取颜色和纹理信息来记录周围场景的高分辨率图像这对于检测轮廓和物体特别有效而且对于 VO 来说可以识别在连续帧中容易跟踪的感兴趣点。然而相机是非常依赖于环境条件和照明面临着一些问题规模恢复。反过来激光雷达传感器可以检索自然深度信息并通常提供更宽的空间覆盖。channel的数量通常在16到128之间刷新频率可能在5到20Hz 之间变化。然而雨、雾和雪会对激光雷达的性能造成高达25%的负面影响[63]因此考虑这些现象非常重要。一些研究如在[60][64]证明了激光束的波长影响天气条件的不利影响。
在合并来自不同传感器的数据时标定也是一个关键的方面特别是在紧耦合系统中。每个传感器具有内部和外部标定参数捕捉传感器的内部几何特性并将世界帧与设备帧相关联。此外传感器必须联合标定以便由不同传感器检测到的完全相同特征的多个检测结果转换到系统公共帧中完全相同的位置理想情况下。最常见的技术使用具有众所周知尺寸的物理目标。这些结构必须具有易于检测的特征并根据每种传感器模式进行分割。每个传感器分割的特征构成了一组物理约束允许通过参数优化估计它们之间的旋转和平移。例如在[65]中作者仅使用一个简单的任意平面多边形进行相机-LiDAR 标定而在[66]中作者提出了一个具有四个锥形孔和金属反射镜的矩形块以允许相机LiDAR 和雷达的外部标定。[67]作者编制了一套公开可用的传感器外部标定工具包同时也提出了一些实际的考虑有时在标定传感器。在[68]-[71]中可以找到一些额外的技术主要用于相机-激光雷达融合以及用于多相机和相机-IMU 融合的 kalibr 工具包其使用来自[72]-[76]的技术。
Multi-scale detection 其中第一个运动估计是由启发于 DSO 的基于直接贴片的方法产生的[24]。通过应用滑动窗口优化技术保证局部一致性和实时性进一步提高了估计精度。如果最新的帧是关键帧候选则从相应的 LiDAR 扫描中提取特征并加入到全局图中然后允许在从扫描到建图的过程中再进行一个细化步骤。这个步骤允许使用整个激光雷达的覆盖角度而不仅仅是相应的拍摄角度。后端模块负责地图维护包括闭环和姿态图优化器以减少长途旅行中的累积漂移。此外DV-LOAM 提出了一个有见地的消融研究。结论表明这项工作所采用的直接和基于补丁的可视化 LiDAR 里程测量方法比单纯的 LiDAR 里程测量方法具有更高的精度因为它依赖于图像来检测点云中不易区分的边缘。此外它还受益于直接深度测量增强图像这使得该方法即使在图像模糊时也能工作。
从 LOAM 的同一作者V-LOAM [77]旨在减轻 LOAM 对平滑运动的依赖。相机集成到 V-LOAM 允许视觉里程测量作为激光雷达里程测量之前的估计和处理快速运动。类似于 LOAM 的架构V-LOAM 也使用双频模型。视觉块计算姿态转换的速度更快使用一种特征匹配方法它依赖于图像点其深度或者直接由激光雷达测量或者通过三角测量获得。同时当每个激光雷达扫描完成时假设线性运动不变新的点云不会失真。这些点被记录在一个由激光里程块维护的局部地图中如 LOAM 中。注册允许生成自运动估计纠正影响视觉估计的漂移。此外LiDAR-camera 组合还支持短期光照爆发期间的操作。
与 V-LOAM 不同由 J.Graeter 等[78]提出的 LIMO 利用激光雷达测量以紧耦合的方式补充摄像机图像的深度信息。从图像帧中选取突出点丢弃位于汽车和行人上的突出点以避免动态物体的影响。这是通过深度学习语义分割来完成的。将激光雷达点云投影到图像上通过平面拟合插值计算每个特征点的邻域深度。融合阶段还包括前景和地面分割。通过匹配特征姿态变换估计由应用光束法平差的改进后端块生成和调整。在这一块中特别强调仔细选择关键帧和地标以及使用修剪后的最小二乘法加强模块以减少异常值的存在。
一种进一步的方法是来自C.Chow等人的紧耦合可视激光雷达 SLAM (TVL-SLAM)[79] 其中视觉和 LiDAR 模块独立运行直到来自两者的数据合并时流水线中的某个点从而构成中间融合情况。关于里程测量领域视觉前端在视觉残差旁边生成初步的姿态估计。这一估计有助于激光前端残差的计算。融合发生在一个大规模的最佳化问题中其输入是两个模块的残差。在最后一步中模块之间的内部和内部一致性由一组约束来确保这些约束包括视觉标志重投影误差、扫描到地图配准和交叉约束因为两个前端代表相同的环境。此外该算法还具有传感器之间的外部标定技术和拒绝运动目标的多步技术。KAIST 数据集[80]的测试由拥挤道路环境中的具有挑战性的场景组成由于其多模态特征(仅 TVL-SLAM LiDAR 和 ORB-SLAM2的准确性分别提高了88% 和78%)证明了 TVL-SLAM 的优越性能。
Wisth 等[62]最近提出了一种紧耦合的 LiDAR-Visual-IMU 里程测量结构。状态估计被表述为一个具有多传感器因素的大规模姿态图最佳化问题。视觉地标的深度是通过 LiDAR 点的投影计算的如[78] 或通过立体匹配; 点云不失真到最接近的图像时间戳以确保时间同步使用 IMU 的运动先验; 平面/线特征提取类似于[44] 这减少了90% 的点为了效率的目的。实验表明对宽阔空间、黑暗隧道、密集的树叶和突然的运动具有相当强的鲁棒性。此外姿态图公式允许不同的模式独立地影响系统强调性能一致性的情况下其中一个传感器的故障。
Ramezani 等人的工作组成了一个不同类型的方法其主要焦点是通过惯性导航系统(INS)估计药剂里程。通过使用多状态约束卡尔曼滤波器来传播智能体的运动状态。同时在设置中集成了立体装置允许通过二维和三维特征匹配方法给车辆运动增加额外的约束限制了 IMU 估计的漂移。本节提供了几个例子说明如何组合来自不同传感器的数据以获得更准确的结果和更健壮的体系结构。通过与单一模式方法的直接比较上述许多技术显示了汇总不同模式和处理数据冗余的重要性。下表汇总所有参考的里程计技术以及各自的分类、类型和相关关键点。 视觉里程计基准到目前为止在里程计领域的一些最相关和创新的工作已经被简要地描述和评论包括视觉基于点云多模态方法。因此本节将包含对一些暴露问题的一个关键的分析技术支持的结果由作者获得的 KITTI 里程数据集。KITTI 数据集[22]包括总共22个视觉序列记录在一辆车上的激光雷达和 GPS/IMU 数据在常见的道路交通环境中采集其中11个包括各自的真值。此外KITTI 还提供了一个比较多种算法的评估工具并在计分板上对它们进行排名。结果根据三个指标进行评估: i) trel序列长度为100米至800米的平均相对平移误差(百分比) ; ii) rrel在轨迹上的 deg/100米的旋转误差; iii)以毫秒为单位的运行时间。表2和表3中的数据对应于 KITTI 里程计基准训练和评估序列中最佳技术的评估。 通过以下分析表值得注意的是不管它们的模式或技术性如何顶部位置之间几乎没有隔离。
事实上上表中的前三个位置获得了低于0.5% 的树状图并且每种方法对应于不同的传感模式即多传感器视觉和仅激光雷达。其余的地方都大致包括在0.70% 到0.90% 的范围内除了最后两个它们是 DL 端到端架构。类似地在上表中前五个位置构成了一个非常小的错误范围大约为0.06%同样来自每个模态的代表。
还可以观察到与基于学习的技术相比传统技术占主导地位。事实上在过去的几年中只有在轨迹精度方面有了很小的改进。最终重点将有所改变以进一步强化里程计系统并使其计算效率更高。与运行时或算法分配的数据不同量化和度量鲁棒性并非易事。对这些技术进行测试的最常见方法是在包含有挑战性场景的数据集中对它们进行评估。虽然 KITTI 被广泛使用因此适合进行比较但其他一些数据集如 KAIST [80]包括更具挑战性的序列。在这方面多模态系统取得了更好的结果如 KAIST 的c.Chou 等79和d.wish 等[62]的实验所显示的这些实验针对针对特定传感器模式的不利条件评估了他们各自的工作都经受住了测试并且没有显示出整体退化的迹象不像视觉或仅激光雷达方法。在效率方面ELO 脱颖而出无与伦比同时在准确性方面也表现得非常有竞争力。另一方面像 TVL-SLAM 这样的复杂方法需要增加计算量因为它们需要依靠并行运行的多个模块来实现这样的精度和鲁棒性其中一些可能是需要的例如优化和建图模块。这种架构的一个可能的解决方案是增强单个功能块例如将 ELO 或类似的方法集成到激光里程计前端。
开源方法的基准
为了扩展以前的方法[82] 对里程计进行结构良好和无偏倚的评估。一些开放源码的方法被选择。这些技术是针对从 KITTI-360数据集[3]中提取的一组具有挑战性的序列进行测试的这些序列从安静的住宅街道上的常规驾驶到繁忙的高速公路都有所不同。
KITTI-360是著名的 KITTI [22]自动驾驶数据集的继承者。它通过增加传感器如一对鱼眼摄像头和一个额外的激光扫描仪以及更长和更复杂的驱动器改进了以前的迭代。通过这种方法提取了11个序列并在下表中进行了简要描述。 每个序列 ID 的前两位数字对应于 KITTI-360数据集中的驱动器。这些序列构成了各种各样的环境特别是挑战里程计算法和评估相应的限制。一些挑战包括高亮度变化存在许多动态目标传感器堵塞和广泛开放的空间等等。
所选择的评估场景被用来测试一些视觉里程计方法在不同的情况下同化在不同条件下的最先进的表现同时讨论每种模式的局限性。选择了一些最流行和性能最好的算法: 可视里程计: ORB-SLAM2[12] LIBVISO2[14]和 SOFT1[16]和 SOFT-SLAM2[17]的开源实现。深度学习方法 SC-SfMLearner [83]和zhao等[35]的工作也进行了测试。 基于点云的里程计: MULLS[43]CT-ICP[42]F-LOAM[47]和ISC-LOAM[48]。 多模态里程计: Ramezani等人的工作[81] 将多目装置与IMU融合。这些方法之所以被选中是因为它们是开放源码的并且有良好的文档说明允许任何人实现它们。有些像 ORB-SLAM2被认为是 VO 领域的里程碑而其他像 CT-ICP 则是表现最好的在 KITTI 里程计基准上。
本集提供了一个良好的理解和所有视觉里程计类别的代表性包括知识和学习为基础的工作。
挑战分析 评估方法的性能将在下面的段落中讨论特别是关于一些特殊的挑战。
植物和开阔的道路 在03_02的顺序中车辆行驶在一条短直路上整个路边都有茂密的植物环绕如下图所示。 植被对于相机和激光雷达技术来说是一个特殊的挑战。由于重复和噪声的模式使得视觉方法的特征匹配/跟踪变得困难。密集的叶片由于表面的不规则性和多个小遮挡影响了激光束的有缺陷反射阻碍了点云的精确排列。即使一般来说视觉结果更好但是基于激光雷达的方法比纯视觉的方法表现更好平均误差低55%。原因可能是视觉技术依赖于路上的视觉线索激光雷达检测不到。除此之外相机的垂直视野比激光雷达的视野略宽这得益于更加鲜明的特征因为顶部的植被没有那么密集。序列07_01包含相对较宽的开放道路图10b这对激光雷达技术构成了挑战因为开放空间由于缺乏特征使得点云的排列变得困难。在这个序列中性能最好的视觉方法(ORB-SLAM2)比性能最好的基于LiDAR的CT-ICP技术的平移误差降低了20.3% 。同样值得注意的是 IMU 的免疫力因为它是本体感觉传感器对场景中的外部因素具有免疫力因为 Ramezani 等人(与 IMU 一起)在03_02中排名第二在07_01中排名第一。回转机动和隧道 序列06_01具有回转机动其中基于点云的方法的360度空间覆盖有助于更精确的旋转估计。在图中可以看到视觉方法出现的最明显的偏差。序列10_02具有一个黑暗的隧道通道其中视觉方法仅仅依赖于从缩小的窗口中提取的远距离特征如下图所示。 这个通道影响基于相机的里程计技术这可以在图9c 中观察到因为所有的视觉方法在最后的左转时开始漂移因为在弯道前发生的隧道穿越期间错误的前向自运动感知。因此视觉技术获得的平移误差几乎比基于点云的替代方案在序列10 _ 02中评估的误差大六倍。
动态目标序列 05_01具有少量大尺度视觉遮挡(如下图)。 这种场景对于纯粹的视觉技术来说尤其具有挑战性因为这些目标所占据的视野范围相当大难以提取出高质量的特征甚至由于光圈问题而阻碍了对运动目标的检测。下图展示了当一辆大型卡车在车辆人前面横穿而它是固定的时候偏差对视觉方法的影响。 从下表中可以看出基于激光雷达的方法在05_01中表现得更加准确平移误差小了10倍这要么是因为360度的场景覆盖要么是因为算法中包含了特定的动态目标抑制方法。 序列07_02包含几个启动和停止时刻其中有多个车辆的速度与车辆相似如下图所示。 类似于序列05_01多个动态目标扰乱视觉算法当无数汽车开始移动时车辆仍然保持静止造成自运动的错误感觉。ORB-SLAM2(图15)是这种效应的一个明显例子因为平移错误公式和公式分别是图12的8.7倍和7.0倍。高于这项技术的平均水平。 此外几乎所有其他视觉方法的性能都低于平均水平。LiDAR 方法对这些现象的鲁棒性增强如表5所示。再次关于场景中的运动目标IMU 的集成可以增加一个置信度量来估计姿态在这些情况下会有来自两个传感器的分歧信息。观察 Ramezani 等人在07_02序列中的两个版本(有和没有IMU) 作者可以看到IMU的参考影响因为平均平移漂移从6.58米下降到1.61米。
一般性能比较
基准测试的结果加强了基于激光雷达方法的普遍性。从上表5中可以看出当没有明显的退化迹象时激光雷达技术的轨迹误差始终低于其他方法如07_01和07_02。这表明这些估计不仅准确而且精确。请注意评估的误差是通过积分轨迹计算的; 因此少量具有显著偏差的估计值或多个具有较小偏差的估计值将导致轨迹误差在整个序列中逐渐传播或者不传播。实际上值得注意的是 CT-ICP 和 F-LOAM/ISC-LOAM 在大多数序列中占主导地位最后两个是相同方法的近似版本。除了基于学习的技术外纯视觉技术的平均平移误差为9.5米而基于点云技术的平均平移误差为5.4米。在点云里程计中周围的3D 结构是直接绘制的而 VO 中的输入是场景的2D投影受到像素离散化的影响因此精度有所下降。此外虽然视觉技术的感知只限于一小部分涉及的空间普通的激光雷达有一个360度的水平覆盖。这符合基于激光雷达技术的目的因为运动估计受益于空间中的离散点同时对离群点更有弹性。这些直接的比较有助于解释为什么点云方法通常更加精确和健壮。此外与原始 KITTI 数据集不同的是点云并非没有扭曲所以像 MULLS 这样的算法比通常的算法性能更差。
关于长序列如00_01和07_01(图9b 和9i) 无论该方法的传感模式如何沿着轨迹的漂移的积累通常会发生因为里程计是一个综合过程。出于这个原因总是值得依赖于偶尔校正轨迹的技术如 SLAM 算法中的建图和环闭合或精确 GPS 测量的集成。或者结合多个传感器如 Ramezani 等[81] 在自定位中提供冗余这可以避免与只有一个传感参考相比的漂移趋势。结合外感知(相机激光雷达雷达等)和本体感知传感器(IMU) 在最后一个例子是特别有用的方面的健壮性。这是因为影响这些传感器的错误性质非常明显而且它们不太可能受到相同环境条件的影响。
此外尽管 Ramezani 等[81]的工作仅在两个序列中超过了剩余的算法但在所有序列的平均误差方面超过了顶尖的 CT-ICP 约6% 的平均平移误差。这一结果表明包含第二种数据模态惯性可以实现更稳定的性能尽管在某些情况下表现不佳但在所有测试中仍然表现一致证明即使面对上述挑战它也能保持在正轨上。
就像原始 KITTI 数据集上显示的结果一样基于学习的方法呈现的结果仍然远远低于传统方法。尽管在KITTI-360上执行的测试在DL方法级别上没有显着的代表性但获得的误差大小和各自的轨迹表明它们的性能仍无法与经典拓扑的视觉方法相媲美即使与基线模型相比也是如此。从原始数据到姿态估计视觉里程计pipline反映了一个复杂的问题深度学习端到端方法还不能重现有竞争力的结果。
自运动的当前挑战和局限
值得注意的是最近的工作日益复杂随之而来的性能却没有以同样的速度增长。这种现象可能会指出传统的基于知识的方法开始显示出成熟的迹象并可能趋于发展瓶颈。这些技术发展的两个主要障碍与实际环境的高度复杂性和不可预测性密切相关。一方面里程计系统需要尽可能强大的各种不利条件如照明和天气这是直接相关的物理感应周围环境。另一方面算法应该具有最大可能的抽象性以便在软件层面上感知能够承受它可能遇到的各种场景无论是宽阔的开放区域还是拥挤的区域有许多动态的目标或植被。因此这是物理和软件领域的联合泛化问题。从更具体的角度来看与视觉和基于点云的里程计有关的最相关的障碍可以分为三类: 场景条件计算成本和动态目标。
场景条件
基于视觉的系统对环境的视觉外观非常敏感。视觉里程计更具体地说是基于特征的视觉输出在环境缺乏可以在后续帧中跟踪的相关数量的高质量特征时往往表现不佳。这可能发生在不同的场景条件下在夜间环境能见度很低或在恶劣的条件下如大雨或雾。像沙漠或开阔地围绕道路的情况也往往影响这些方法因为这种环境的无特征性质。光线的变化也会带来额外的困难特别是在直接视觉里程计的情况下因为高亮度的变化比如黑暗隧道的入口可能会产生显著的影响。发生这种情况是因为光照一致性假设假设在这种方法中使用的连续帧具有恒定的亮度在这些条件下不起作用。反过来基于激光雷达的技术不受光照条件的影响。但激光雷达受天气和大气条件的影响很大。Carballo 等[84]测试了12种不同的激光雷达模型在恶劣的天气条件下如大雾和降雨证明了一些局限性。例如在大雨中激光束反射到雨滴上在扫描中形成“雨柱”在点云中构成高噪音如下图所示。 如前所述激光束的波长可以影响传感器在不利条件下的性能[64]。基于激光的传感器也受到反射率的严重影响无法检测到反射率低的目标如玻璃。像 VO 一样这些方法也倾向于在没有明显突出线索的环境中失败例如被广阔开阔的田野包围的乡村道路。KITTI-360数据集的评估证实了这些局限性其中基于激光雷达的方法显示出性能下降的迹象。另一方面正如预期的那样当面对照明变化时基于激光雷达的方法没有报告任何性能问题。
计算成本
在计算能力和时间方面的计算成本限制也应该得到解决。在自动驾驶的情况下这一点尤其重要因为在自动驾驶的情况下估计数应该以足够高的速度提供以满足与自动驾驶车辆有关的严格的时间限制。许多作者使用高性能的硬件来开发他们的工作但因为移动机器人通常配备低级别的硬件。该设备可能无法以实时操作所需的频率运行算法。在视频录像中如果无人机有几个摄像头计算时间是必不可少的特别是采集的图像是高分辨率的这会使处理的数据量难以管理。减少计算负担的一种方法是仔细选择特征而不是使用整个原始图像。尽管如此特征提取/匹配和异常去除任务也可能耗费大量时间。
在基于点云的技术中同样的问题依然存在增加的成本与点云的无序性有关点云的预处理操作可能耗费大量时间。有效地排序和存储点云的一种方法是使用八叉树或 K-D 树它们允许快速的多维搜索。
动态目标
动态目标检测在讨论视觉和激光测距时非常有趣特别是在自动驾驶中因为这种类型的目标非常普遍即其他移动的汽车、行人和骑自行车的人。虽然有些作者考虑了动态目标但大多数作者没有考虑。这意味着假设世界是静态的这在估计车辆的自运动时有重要的含义。动态目标当不计入时会在轨迹估计中引入误差。如果认为运动目标是静态的里程计算将基于错误的假设姿态估计将不准确。同样值得注意的是由于传感器安装在移动的车辆上在自动驾驶领域检测动态目标可能特别复杂。因此检测到的运动有两个组成部分: 自运动(传感器的运动)和目标自身的运动都与同一固定帧有关。区分这些运动类型的一种方法是使用额外的传感器(如IMU或GPS)来补充里程计算法以推断自运动然后通过减牵引来推断被检测目标的运动。对具有挑战性的场景进行的评估显示当VO方法面临高度动态环境时除了相机和 IMU 融合方法之外其准确性显著下降[81]。在这种情况下基于LiDAR的方法也更加稳健。这是因为 VO算法在没有正确的masking操作时倾向于从运动目标中提取特征(运动目标通常具有显著的视觉特征如下图17所示。 运动分析技术例如光学和场景流是推断场景中目标运动的典型方法[85]。利用光流算法推导出的流场可以实现运动目标的分割方法。此外随着使用 Flownet [88]和 RAFT [89]等深度学习方法在光流估计方面的最新进展可以准确和及时地计算稠密流估计。上面章节中的一些公开的方法比如 ClusterVoSuMa 和 TVL-SLAM已经考虑到了这个问题因为他们使用了不同的技术比如语义分割或者重投影策略来过滤掉不需要的目标。虽然与里程计任务没有直接关系但几位作者提出了在自动驾驶环境下检测和分割动态目标的方法。其中一个例子是 Chen 等人[90]的工作他们从 LiDAR 扫描中创建残留图像并将它们提供给常规的点云分割网络以识别运动目标。Pfreundschuh 等[91]提出了一种用离线算法识别动态目标的方法然后使用标注数据训练一个能够实时检测移动障碍物的神经网络。FuseMODNet [92]是一个多模态方法的例子它使用相机和激光雷达来探测在弱光情况下移动的障碍物。
研究机会
多模态架构可以在一个传感器补偿另一个传感器失效的情况下提供更强的鲁棒性。然而多模态方法的进一步发展仍然是必要的和合理的因为从本车的角度对环境的表征与各自的结果之间存在着强烈的相关性这种相关性往往更好表征越完整。此外多样化和完整的收集数据集总是提供更好的洞察力和可靠性。由于这些原因视觉里程计算法的部分局限性特别是关于环境感应可以通过开发集成多个传感器的系统来减轻从而产生更准确和可行的估计。然而复杂场景和概括问题并没有明显的解决办法。在实践中关于现有的实际传感选项手工制定可靠的现实世界模型仍然非常具有挑战性即里程计问题受到许多因素的影响这些因素非常难以检测特别是难以推广。考虑到可能遇到的各种各样的情况从有几十个动态目标的城市景观到可能只有很少landmarks可以追踪的漫长的沙漠道路除了传感器和相关噪音的局限性。因此一个可行的选择是设计深度学习的能力来捕捉数据中更复杂的潜在特征而传统的方法迄今为止发现这很困难。然而基于学习的技术仍然远远不能满足需要至少在自动驾驶的情况下是这样。此外数据的可用性仍然不够大现有的数据逻辑结构如近年来主导计算机视觉的 CNN在学习顺序数据关系方面效果不佳。反过来RNN也能够解决这个问题但是在捕捉图像特征方面却不如CNN擅长的那样。因此经常发现 CNN 之后是 RNN因为通常的解决方案倾向于适应现有的结构而不是从头开始设计和裁剪它们。沿着这条路线由于深度学习的使用是高度灵活的[25]确定需要将新的技术和架构引入视觉/激光里程计作为未来的工作机会。此外最近的工作如 D3VO 开始接近传统的方法不是通过端到端架构其中的学习过程可能太复杂但通过学习为基础的子模块旨在补充系统链如深度预测模块例如。另一个似乎无人关注的提议是将深度学习算法集成到多模态体系结构中以努力利用两者的上述优势。虽然新的方法正在出现但是基于学习的里程计的全景仍然处于非常不成熟的状态因此需要进展到更先进和更适合在现实世界中使用的状态因为它已经在其他领域中使用。
结论
本文介绍了基于视觉和点云的里程计的一些基本要素并对目前的最新技术进行了广泛的综述。根据 KITTI 数据集获得的结果讨论了最佳性能技术。此外在 KITTI-360数据集的一系列具有挑战性的场景中评估了一组具有代表性的公开可用的方法包括视觉、点云、多模态和基于学习的方法。结果表明基于点云的方法在轨迹平移漂移方mask有优势比视觉方法提高了33.14% 。场景天气照明条件动态障碍和计算成本的高度复杂性和可变性被指数作为里程计算法进展的最大限制因素因为作者确定了当前传统方法的发展瓶颈。作为解决方案的一部分本文强调了多模态方法日益增长的稳健性以及研究和开发更好的基于深度学习的解决方案的必要性以利用这些方法的数据驱动建模能力因为目前的方法仍然不具有竞争力。因此加入深度学习算法和传感器融合也可能是一个有希望的突破性研究因为它仍然略有待探索。 #NeuroNCAP
本文提出了一种用于测试自动驾驶AD软件系统的多功能基于NeRF的仿真器其设计重点是传感器真实闭环评估和安全关键场景的创建。仿真器从真实世界的驾驶传感器数据序列中学习并能够重新配置和渲染新颖的场景。在这项工作中使用本文提出的仿真器来测试AD模型对安全关键场景的响应。评估表明尽管最先进的端到端规划器在开环环境中的标称驾驶场景中表现出色但在闭环环境中导航关键场景时他们表现出了不可忽略的缺陷。这突出了端到端规划器在安全性和现实可用性方面的进步需求。通过将我们的仿真器和场景作为一个易于运行的评估套件公开发布并邀请社区在受控但高度可配置且具有挑战性的传感器现实环境中探索、完善和验证他们的端到端模型。
开源链接https://github.com/atonderski/neuro-ncap
总结来说本文的主要贡献如下
发布了一个开源框架用于自动驾驶的真实感闭环仿真。受行业标准EuroNCAP的启发构建了无法在现实世界中安全收集的安全关键场景。使用仿真器和我们构建的场景设计了一个新的评估协议该协议侧重于碰撞而不是位移度量。本文发现尽管准确地感知了环境但两个SoTA端到端规划器在安全关键场景中严重失败这值得社区进一步探索。
相关工作回顾
端到端驾驶模型传统上自动驾驶任务被划分为不同的模块例如感知、预测和规划这些模块是单独构建的。胡等人认为这种划分有很多缺点跨模块的信息丢失、错误积累和特征错位。姜等人强调规划模块可能需要访问手工制作的界面中不存在的传感器数据的语义信息。这两项工作继续支持端到端规划。Pomerlau等人的开创性工作提出了这样一种规划器其中训练单个神经网络将传感器输入映射到输出轨迹。几十年的神经网络进步激发了人们对端到端规划的新兴趣。然而这些规划者的黑匣子性质使他们难以优化其结果也难以解释。胡等人和姜等人提出了两种具有中间输出的端到端神经网络规划器对应于模块化方法。他们的规划者被划分为多个模块但模块接口是学习的由深度特征向量组成。
端到端规划器的开环评估Pomerleau等人通过让其驾驶真实世界的测试车辆来评估他们的驾驶模型。这样的设置使得大规模测试成本高昂并且结果可能难以再现。最近在端到端规划方面的工作改为在开环中进行评估在该开环中模型根据记录的传感器数据预测计划。预测的计划从未被执行相反行动被固定在记录的内容上。这种设置也被用于目标级规划工作该工作假设了完美的感知并将静态环境的地图和动态对象的轨迹输入到模型中。这种开环评估构成了评估与现实部署之间的差距。此外性能通常被测量为记录中预测的计划和车辆驾驶的轨迹之间的距离。虽然零的误差对应于人类水平的驾驶但误差越低越好并不一定是真的。这可以通过考虑两个不同轨迹相同好的场景来实现。Codevilla等人对这些问题进行了研究发现开环评估与实际驾驶质量不一定相关。Dauner等人得出了类似的结论。
闭环评估和仿真考虑到上述开环评估问题闭环仿真变得很有吸引力。已经提出了几种对象级仿真器。然而这些仿真器不生成传感器数据这使得无法在闭环中测试端到端规划器。已经提出了许多手工制作的图形仿真器。这种仿真器面临的挑战有两个很难创建逼真的图像也很难创建捕捉真实世界多样性的图形资产。对世界模型的研究表明场景的未来——例如雅达利游戏——可以在潜在空间中预测并且潜在空间中的向量可以解码为传感器输入。胡等利用大规模的真实世界汽车数据集建立了一个世界模型。Amini等人提出了VISTA其中可以通过预测深度取消投影最近的图像并重新投影在局部轨迹周围合成新的视图。杨等人提出使用神经辐射场NeRF来创建场景的真实感传感器输入。该方法随后由Tonderski等人进行了改进。具有更准确的传感器建模和更高的渲染质量特别是对于此处考虑的360度设置。
新车评估计划新车评估计划NCAP由美国交通部国家公路安全管理局于1979年推出旨在为消费者提供有关汽车相对安全潜力的信息。NCAP对车辆进行了碰撞测试并根据严重受伤的概率对车辆进行评分。1996年提出了一项类似的欧洲协议即欧洲新车评估计划Euro NCAP。2009年欧洲NCAP进行了全面改革以纳入新兴防撞系统的测试。最初这包括电子稳定控制和速度辅助系统但后来扩展到包括其他系统如自动紧急制动和自动紧急转向。在这项工作中我们从欧洲NCAP自动防撞评估协议中获得了灵感。该协议提供了除非采取措施否则将发生崩溃的场景。为了获得满分车辆需要刹车或转向以避免事故发生。如果冲击速度充分降低则会获得部分分数。
方法详解
闭环仿真
我们的闭环仿真重复执行四个步骤。首先在给定ego车辆的状态和相机校准的情况下渲染高质量的相机输入。渲染器是根据驾驶车辆的日志构建的。其次在给定渲染的相机输入和自车状态的情况下端到端规划器预测未来自车轨迹。第三控制器将计划轨迹转换为一组控制输入。第四在给定控制输入的情况下车辆模型在时间上向前传播自我状态。此过程如图2所示。接下来我们详细介绍四个步骤中的每一个。 神经渲染器为了仿真新颖的传感器数据我们采用了神经渲染器。NeRF从收集的真实世界数据的日志中学习3D环境的隐含表示。一旦经过训练NeRF就可以从所述场景中渲染传感器逼真的新颖视图。最近的进步增加了通过更改场景中动态对象的相应三维边界框来编辑动态对象的能力。具体来说参与者可以被移除、添加或设置为遵循新的轨迹在我们的案例中这使得能够创建安全关键场景。例如为了仿真一种罕见但关键的安全场景可以将原本在相邻车道上行驶的车辆定位为静止并与自身车辆位于同一车道上。这种新颖的情况需要自车刹车或执行精确的超车动作。
有两件事需要注意。首先最近提出的NeuRAD还支持激光雷达数据的渲染。然而由于最先进的端到端规划者只消耗相机数据我们在这项工作中只关注相机数据。其次正如我们在实验中所示与真实数据相比现代NeRF引入的领域差距足够小端到端计划者的感知部分仍能以高性能运行。然而我们预计随着神经渲染的未来发展这一差距将进一步缩小。
AD模型最近关于端到端规划的工作描述了一个消耗i原始传感器数据的系统ii自车状态以及iii预测计划轨迹的高级计划。计划的轨迹包括在某个频率和某个时间范围的路点。需要注意的是虽然我们的主要目标是分析最先进的端到端规划器但该模块可以用任何类型的规划器取代例如模块化检测器-跟踪器-规划器管道。
控制器为了应用车辆模型需要将路点转换为一系列控制信号对应于一系列转向角δ和加速度a命令。继Caesar等人之后我们用线性二次型调节器LQR实现了这一点。请注意虽然我们只分析输出路点的规划器但规划器可以直接输出一系列控制信号。
车辆模型给定一组由计划轨迹产生的控制信号车辆状态通过时间传播。为此我们遵循先前的闭环仿真器并采用离散版本的运动自行车模型。它可以正式地描述为 评估
与常见的评估实践即大规模数据集的平均性能相反我们将评估重点放在一小部分精心设计的安全关键场景上。这些场景经过精心设计任何无法成功处理所有场景的模型都应被视为不安全。我们从行业标准的欧洲NCAP测试中获得了灵感见第2节并定义了三种类型的场景每种场景的特征都是我们即将碰撞的参与者的行为静止、正面和侧面。根据欧洲NCAP命名法我们将此参与者称为目标参与者。其目的是控制自车以避免与目标行为者发生碰撞或至少降低碰撞速度。
对于每种场景类型我们都会创建多个场景。每个场景都基于从真实世界中大约20秒的驾驶中收集的数据。自车和目标参与者状态被初始化这样如果保持当前速度和转向角碰撞将在未来约4秒发生。所有非平稳演员都被从场景中移除我们随机选择其中一个作为目标演员考虑到演员是否已经被足够近的观察到并且在必要的角度下以产生逼真的渲染。由于我们的渲染器仅限于僵硬的参与者因此我们将行人排除在该选择之外。最后我们在特定场景的间隔内随机抖动目标演员的位置、旋转和速度。在评估过程中我们将每个场景运行大量的运行使用固定的随机种子并计算平均结果。接下来我们将描述每种类型场景的特征。 静止这是一种相对简单的场景其中一个静止的目标演员被放置在自车车道上。目标车辆可以任意旋转放置但在整个场景中都将保持静止。这意味着自车可以进行剧烈的刹车或转向操作以避免碰撞。见图3a。
正面正面场景包括一个目标演员他正朝相反的方向行驶并在与自车的碰撞路径上漂移到自我车道上。因此ego车辆不能通过断裂来避免碰撞只会降低碰撞速度。为了完全避免碰撞自车必须执行转向操作。见图3b。
侧面侧面碰撞场景的特点是目标演员从垂直方向穿过我们的车道。如果自车的当前速度保持不变就会发生侧面碰撞。自车可以通过为迎面而来的目标行为者刹车或者在超速经过目标行为者时进行轻微的转向操纵来避免碰撞。见图3c。
NeuroNCAP评分对于每个场景都会计算一个评分。只有完全避免碰撞才能获得满分。成功降低冲击速度可获得部分分数。本着五星级欧洲NCAP评级系统的精神我们将NeuroNCAP评分NNS计算为 实验
数据集虽然有许多针对自动驾驶的数据集但nuScenes在端到端规划方面得到了最广泛的适应。它以具有高度互动场景的城市环境为特色适用于我们的安全关键场景生成。由于其广泛的适应性它还允许我们使用我们评估的模型的官方实现和网络权重。NuScenes分为1000个序列其中150个保留用于验证。从这150个序列中我们选择了14个不同的序列——根据场景中特工的行为这些序列被认为是合适的——作为我们安全关键场景的基础。
场景每个场景都是手工设计的考虑哪些参与者适合给定的序列、最合理的碰撞轨迹以及定义不同类型随机化的允许范围。在评估过程中我们将每个场景运行100次使用固定的随机种子并对结果进行平均。并不是所有的序列都可以用于所有类型的场景例如我们无法仿真一条直线路上的真实侧面碰撞。因此我们为每种场景类型选择合适的序列。关于每个场景的更多细节和定性示例我们参考补充材料。
神经渲染器作为我们的渲染器我们选择使用NeuRAD这是一款专门为自动驾驶开发的SotA神经渲染器经验证可与nuScenes很好地配合使用。由于我们希望最大限度地提高重建质量我们使用更大的配置NeuRAD-L并使用默认的超参数训练100k步。由于nuScenes中的姿态信息仅限于鸟瞰平面我们采用姿态优化来恢复丢失的信息。最后我们采用了沿对称轴翻转演员的方式以实现从所有视点对演员的逼真渲染。
AD模型根据我们提出的评估协议我们评估了目前的两种SotA端到端驱动模型即UniAD和VAD。在这两种情况下我们都使用了作者提供的预先训练的权重这些权重在同一数据集上训练而不会对所述模型的配置进行任何更改。这两种型号都消耗360°摄像头输入以及can总线信号和高级命令右、左或直并在未来3秒内输出一系列未来路线点。虽然在我们的场景中这比碰撞的初始时间TTC更短但这不是一个问题因为规避机动可以而且应该在最终航路点与当前参与者位置相交之前开始。此外我们的场景设计得相当宽松因此TTC3s的计划仍然可以成功避免碰撞。
这两个模型之间的一个主要区别是UniAD将防撞优化后处理步骤应用于它们的预测轨迹。使用具有基于预测占用率和未优化输出轨迹的成本函数的经典求解器来执行优化。当在开环中评估时这种优化被证明可以显著降低碰撞率我们现在可以在更有趣的闭环设置中研究它。为了实现更直接的可比分析我们对VAD实现了相同的防撞优化。然而由于VAD不能直接预测未来的占用我们将其预测的未来对象光栅化并将其用作未来的占用。请注意这种方法可能高估了占用率因为所有未来模式都被视为具有同等可能性。
为了进行比较我们基于UniAD/VAD的感知输出实现了一种天真的基线方法。规划逻辑只是一个等速模型除非我们在自车前方的走廊中观察到物体在这种情况下我们会执行制动操作。走廊被定义为横向±2米纵向范围从0到2维戈米即如果TTC2s且前方有物体我们会刹车。
实验结果
我们使用图4中每种场景类型的渲染前置摄像头图像以及计划轨迹的重叠投影来增强定量分析。图4a描绘了一个成功的回避动作同时也突出了我们呈现复杂实体如摩托车手的能力。然而如果没有后期处理规划者似乎容易忽视安全关键事件如图4b所示。 限制
我们看到以下限制。首先神经渲染器在场景和场景中受到限制例如没有雨它能够准确渲染。此外自车轨迹的大偏差和非常近的物体会导致视觉伪影见图4。其次我们采用了一个简化的车辆模型它不建模例如延迟、摩擦或悬架。此外我们不考虑路面方面如颠簸、坑洞、砾石等。第三我们对所有车型都采用了单一控制器即使它们是紧密耦合的。我们的评估协议允许提交直接输出控制信号的AD模型。第四神经渲染器无法处理可变形对象例如行人。我们希望神经渲染的进一步进步将解除这一限制并实现一套新的安全关键场景重点关注弱势道路使用者。第五目标行动者遵循预定的轨迹而不动态地对自车做出反应。虽然这遵循了EuroNCAP的设置但我们认为未来有多个参与者的场景将需要反应行为。
结论
总之我们的仿真环境提供了一种新的方法来评估自动驾驶模型的安全性利用真实世界的传感器数据和受欧洲NCAP启发的安全协议。通过NeuroNCAP框架包括静止、正面和侧面碰撞场景我们暴露了当前SotA规划者的重大漏洞。这些发现不仅强调了在端到端规划者的安全性方面取得进展的迫切需要而且为未来的研究提供了有希望的途径。通过向更广泛的研究界公开我们的评估套件我们的目标是促进更安全的自动驾驶方面的进展。展望未来我们预计将开发该套件以应对更广泛的场景集成更精细的车辆模型并采用先进的神经渲染技术从而为安全评估设定新的基准。 #RoadBEV 原标题RoadBEV: Road Surface Reconstruction in Bird’s Eye View
论文链接https://arxiv.org/pdf/2404.06605.pdf
代码链接https://github.com/ztsrxh/RoadBEV
作者单位清华大学 加州大学伯克利分校
论文思路
道路表面状况尤其是几何轮廓极大地影响自动驾驶车辆的驾驶性能。基于视觉的在线道路重建有望提前捕获道路信息。现有的解决方案如单目深度估计和立体匹配的性能表现一般。最近的鸟瞰视角BEV感知技术为更可靠和精确的重建提供了巨大潜力。本文统一提出了两种简单而有效的BEV道路高程重建(road elevation reconstruction)模型分别命名为RoadBEV-mono和RoadBEV-stereo它们分别利用单目和立体图像估计道路高程。前者直接基于从图像视图中查询的体素特征拟合高程值而后者有效地基于表示左右体素特征差异的BEV体积识别道路高程模式。深入的分析揭示了它们与透视视图的一致性和差异。在真实世界数据集上的实验验证了模型的有效性和优越性。RoadBEV-mono和RoadBEV-stereo的高程误差分别为1.83厘米和0.56厘米。基于单目图像的BEV估计性能提高了50%。本文的模型对实际应用充满希望为基于视觉的BEV自动驾驶感知提供了宝贵的参考。
主要贡献
本文首次从理论和实验两个方面展示了鸟瞰视角下道路表面重建的必要性和优越性。
对于单目和立体基础方案本文分别提出了两个模型分别命名为RoadBEV-mono和RoadBEV-stereo。本文详细解释了它们的机制。
本文全面测试和分析了所提出模型的性能为未来的研究提供了宝贵的见解和展望。
网络设计
近年来无人地面车辆UGVs的快速发展对车载感知系统提出了更高的要求。实时理解驾驶环境和条件对于准确的运动规划和控制至关重要[1]-[3]。对于车辆来说道路是与物理世界接触的唯一媒介。道路表面状况决定了许多车辆特性和驾驶性能[4]。如图1a所示道路的不平整性如颠簸和坑洼会加剧乘用车的乘坐体验这是直观可感知的。实时道路表面状况感知特别是几何高程(geometry elevation)极大地有助于提升乘坐舒适度[5][6]。
与无人地面车辆UGVs中的其他感知任务如分割和检测相比道路表面重建(road surface reconstruction)RSR是一种新兴技术最近越来越受到关注。与现有的感知流程类似RSR通常利用车载激光雷达LiDAR和摄像头传感器来保留道路表面信息。激光雷达直接扫描道路轮廓并派生出点云[7][8]。车辆轨迹上的道路高程可以直接提取无需复杂算法。然而激光雷达传感器成本较高限制了它们在经济型量产车辆上的应用。与车辆和行人等体积较大的交通物体不同道路的不平整性通常幅度较小因此点云的准确性至关重要。实时道路扫描上的运动补偿和过滤是必需的这进一步要求在厘米级别的高精度定位。
基于图像的道路表面重建RSR作为一个三维视觉任务在精度和分辨率方面比激光雷达LiDAR更有前景。它还保留了道路表面纹理使得道路感知更加全面。基于视觉的道路高程重建实际上是一个深度估计问题。对于单目相机可以基于单张图片实施单目深度估计或者基于序列实施多视角立体MVS来直接估计深度[9]。对于双目相机双目匹配回归视差图这可以转换为深度[10][11]。给定相机参数就可以恢复相机坐标系中的道路点云。通过初步的后处理流程最终获得道路结构和高程信息。在真值GT标签的指导下可以实现高精度和可靠的RSR。
然而图像视角下的道路表面重建RSR存在固有的缺点。对于特定像素的深度估计实际上是沿着垂直于图像平面方向寻找最优箱体(optimal bins)如图1b中的橙色点所示。深度方向与道路表面存在一定的角度偏差。道路轮廓特征的变化和趋势与搜索方向上的变化和趋势不一致。在深度视图中关于道路高程变化的信息线索是稀疏的。此外每个像素的深度搜索范围是相同的导致模型捕捉到的是全局几何层次结构而不是局部表面结构。由于全局但粗糙的深度搜索精细的道路高程信息被破坏。由于本文关注的是垂直方向上的高程因此在深度方向上所做的努力被浪费了。在透视视图中远距离的纹理细节丢失这进一步为有效的深度回归带来了挑战除非进一步引入先验约束[12]。
从俯视图即鸟瞰图BEV估计道路高程是一个自然的想法因为高程本质上描述了垂直方向的振动。鸟瞰图是一种有效的范式用于以统一坐标表示多模态和多视图数据[13][14]。最近在三维目标检测和分割任务上取得的 SOTA 性能是通过基于鸟瞰图的方法实现的[15]这与透视视图不同后者通过在视图转换的图像特征上引入估计头部来进行。图1展示了本文的动机。与在图像视图中关注全局结构不同鸟瞰图中的重建直接在垂直方向上的一个特定小范围内识别道路特征。在鸟瞰图中投影的道路特征密集地反映了结构和轮廓变化有助于进行有效和精细化的搜索。透视效应的影响也被抑制因为道路在垂直于观察角度的平面上被统一表示。基于鸟瞰图特征的道路重建有望实现更高的性能。
本文重建了BEV下的道路表面以解决上述识别出的问题。特别地本文关注道路几何即高程(elevation)。为了利用单目和双目图像并展示鸟瞰图感知的广泛可行性本文提出了两个子模型分别命名为RoadBEV-mono和RoadBEV-stereo。遵循鸟瞰图的范例本文定义了覆盖潜在道路起伏的感兴趣体素。这些体素通过3D-2D投影查询像素特征。对于RoadBEV-mono本文在重塑的体素特征上引入了高程估计头。RoadBEV-stereo的结构与图像视图中的双目匹配保持一致。基于左右体素特征在鸟瞰图中构建了一个4D代价体积该体积通过3D卷积进行聚合。高程回归被视为对预定义箱体的分类以实现更高效的模型学习。本文在本文作者之前发布的真实世界数据集上验证了这些模型显示出它们比传统的单目深度估计和双目匹配方法有着巨大的优势。 图1. 本文的动机。a无论是单目还是双目配置本文在鸟瞰图BEV中的重建方法都优于图像视图中的方法。b在图像视图中进行深度估计时搜索方向与道路高程方向存在偏差。在深度视图中道路轮廓特征是稀疏的。坑洼不容易被识别。c在鸟瞰图中能够精确捕捉到轮廓振动例如坑洼、路边台阶乃至车辙。垂直方向上的道路高程特征更加密集也更容易识别。 图2. 坐标示意及真值GT高程标签的生成。a坐标b图像视图中的感兴趣区域ROIc鸟瞰图中的感兴趣区域ROId在网格中生成真值GT标签 图3. 道路图像及真值GT高程图的示例。 图4. 图像视图中感兴趣的特征体素。位于相同水平位置的堆叠体素的中心被投影到红色线段上的像素点。 图5. RoadBEV-mono的架构。本文利用3D到2D的投影来查询像素特征。高程估计头部使用2D卷积在重塑后的鸟瞰图BEV特征上提取特征。 图6. RoadBEV-mono的机制。体素以侧视图展示。 图7. RoadBEV-stereo的架构。定义在左相机坐标系下的体素查询左右特征图的像素特征。本文通过左右体素特征之间的相减在鸟瞰图BEV中构建差异体积。然后3D卷积对鸟瞰图中的4D体积进行聚合。 图8. RoadBEV-stereo的机制。
实验结果 图9. (a) RoadBEV-mono和 (b) RoadBEV-stereo的训练损失。 图10. 在单目和双目基础上与SOTA模型的距离方向上的高程误差比较。 图11. 由RoadBEV-mono重建的道路表面可视化。 图12. 由RoadBEV-stereo重建的道路表面可视化。
总结
本文首次在鸟瞰图中重建了道路表面的高程。本文分别提出并分析了基于单目和双目图像的两种模型分别命名为RoadBEV-mono和RoadBEV-stereo。本文发现BEV中的单目估计和双目匹配与透视视图中的机制相同通过缩小搜索范围和直接在高程方向挖掘特征而得到改进。在真实世界数据集上的全面实验验证了所提出的BEV体积、估计头和参数设置的可行性和优越性。对于单目相机在BEV中的重建性能比透视视图提高了50%。同时在BEV中使用双目相机的性能是单目的三倍。本文提供了关于模型的深入分析和指导。本文的开创性探索也为与BEV感知、3D重建和3D检测相关的进一步研究和应用提供了宝贵的参考。 #RSRD~ 首个自动驾驶路面重建数据集
作者构建了路面重建数据集Road Surface Reconstruction Dataset, RSRD该数据集含有100万张精确标注的路面图像。这是首个专门面向自动驾驶路面感知的高精度、多模态和大规模数据集可作为诸多计算机视觉和自动驾驶应用的测试基准。
数据集主页https://thu-rsxd.com/rsrd
背景
近年来智能和自动驾驶车辆的快速发展对驾乘舒适性也提出了更高的要求。路面作为车辆与物理世界有接触的唯一媒介对车辆行驶性能有决定性影响。提前感知路面状态尤其是重建路面几何轮廓信息能为后续决策规划和动力学控制系统提供关键参考信息。基于此实际背景我们构建并发布了该路面重建数据集Road Surface Reconstruction Dataset, RSRD。这是首个专门面向自动驾驶路面感知的高精度、多模态和大规模数据集可作为诸多计算机视觉和自动驾驶应用的测试基准。
此外我们于2022年发布了首个大规模路面分类数据集RSCD含有100万张精确标注的路面图像。此数据集与之结合, 能够提供更加准确、全面的路面状态信息赋能高阶自动驾驶。 数据采集
我们搭建了实车数据采集系统包含IMU、双目摄像头、激光雷达和RTK高精定位单元。不同于现有自动驾驶感知数据集我们专注于路面区域并保留细致的路面纹理信息。我们在城市和乡村区域开展实验覆盖众多水泥和沥青路面工况并包含常见路面不平如凹坑、裂缝和减速带。激光雷达点云经过运动补偿和多帧融合处理为深度学习模型提供高精度、密集的真实标签。更多细节请参考数据集网页。
数据集内容
我们提供约2800对含有密集点云标签和13000对有稀疏标签的样本。具体包含以下数据
精准校正的双目图像。分辨率为1920*1080路面预瞄距离约在12米。经过准确运动补偿和多帧融合的激光雷达点云。路面区域的点云密度高保留细节的路面轮廓变化。由点云生成的单目深度和双目视差真值图。运动位姿信息。经过严格筛选仅保留定位精度在厘米级的片段。标定参数。因为提供的数据均经过准确的预处理流程仅提供关键的传感器标定参数研究人员可直接在数据上开发算法。
此外我们提供半分辨率960*540的版本研究人员可根据条件和需求选择。
数据集性能 上图左侧为点云标签数量的统计直方图。大部分图像有8万~10万个真值标签对于960*540大小的图像GT比例在17%左右。右图统计了路面纵向方向上每40cm间隔内点云扫描线的平均数量。在9米的预瞄距离内能保证每20cm有一条雷达扫描。路面区域点云密度显著高于现有数据集为高精度、高可靠的路面感知提供坚实基础。
应用和基准
该数据集面向路面重建应用同时作为诸多下游任务的测试基准例如
单目深度估计和运动恢复结构SfM立体匹配和多视立体视觉MVS路面点云分割定位与建图路面不平检测与分割需要额外标注
作为基线我们开源了基于立体匹配和BEV进行路面重建的代码更多细节请参考数据集网页。下图为重建的可视化效果 基于单目深度估计的路面重建 基于BEV的路面重建 #运动规划~搜索算法
16-18年做过一阵子无人驾驶那时候痴迷于移动规划然而当时可学习的资料非常少网上的论文也不算太多。基本就是Darpa的几十篇无人越野几次比赛的文章基本没有成系统的文章和代码讲解实现。所以对移动规划的认识不算全面这几年随着自动驾驶、无人机的研究和应用的增多很多的论文课程成体系的开始介绍这方面的内容。对于一个理工男来说机器人并且是能自动的、智能规划的相信没有多少理工男是可以抗拒不想去做进一步了解的。所以一直在收集资料筹划这哪一天可以出一个这方面系列然后在code一个项目出来在机器人上捣腾各种实现。再一次加速本人对这一想法落实是两年前看到fast-lab高飞团队出的一系列飞行走廊解决无人机路径规划的工作视频。第一次看到视频时候真被震惊到移动规划原来还可以这么玩如此优美的数学框架。讲了这么多只是想致敬过去的经历开启这个专题第一讲。这个系列主线就是围绕高飞老师《移动机器人动态规划》课程讲稿里面会补充一些算法细节和自己的思考。这个课程对移动规划体系框架构建非常棒内容排布的也非常好唯一缺憾就是对于动态不确定障碍物的规划会少一些因为课程本来就是针对无人机设计的。
现代机器人学和自动驾驶等领域路径规划是一个重要的主题. 它涉及到在给定的环境中找到从起点到终点的最优路径. 这个过程通常分为两个部分前端路径搜索和后端轨迹规划. 前端路径搜索在地图中搜索出一条避开障碍物的轨迹而后端轨迹规划则对搜索到的轨迹进行优化使其符合机器人的运动学和动力学约束. 实环境中的机器人运动规划是一个比较复杂的问题对于复杂的问题人类的解法一般都是分步求解先做个大概、然后在大概轮廓上逐步的复杂精细。机器人运动规划的学院派解法也是如此
1.前端路径规划
基于搜索的方法通用图搜索深度优先搜索DFS广度优先搜索BFSDijkstra 和 A* 搜索跳点搜索基于采样的方法概率路线图PRM快速探索随机树RRTRRT有信息的 RRT带动力学约束路径规划状态-状态边界值最优控制问题状态栅格搜索动力学RRT*混合A*
2.后端轨迹生成
最小抖动轨迹生成微分平坦性最小抖动优化最小抖动的闭式解时间分配实际应用软硬约束轨迹优化软约束轨迹优化硬约束轨迹优化
3.不确定性状态求解移动障碍物、突变环境、设备建模变化
基于马尔可夫决策过程的规划MDP规划中的不确定性和马尔可夫决策过程最小最大成本规划和期望成本最小规划值迭代和实时动态规划机器人规划的模型预测控制MPC线性模型预测控制非线性模型预测控制
前端——搜索路径规划
在开始这部分内容介绍前需要介绍几个概念。介绍这几个概念的目的在于更贴近实际的去理解搜索在业务中应用。搜索路径规划中是把机器人当成一个质点来考虑的然而实际的机器人是有一定形状和占用空间的如果把机器人当成质点来考虑很可能是会搜索出一条实际上不可行的会碰到障碍物的路径的。为了解决这个问题呢我们可以简单的物体的形状转移到地图让地图障碍物区域加上物体占用空间。在这样的地图里把机器人当成质点来搜索可行路径。 在配置空间中规划¹²³
机器人在C-space中被表示为一个点例如位置在R3中的一个点姿态在 (3)中的一个点等等⁴⁷⁸障碍物需要在配置空间中表示在运动规划之前的一次性工作称为配置空间障碍物或C-障碍⁴⁵⁶C-space (C-障碍) ∪ (C-自由)⁴⁵⁶路径规划是在C-自由中找到从起点qstart到目标点qgoal的路径⁹[10]¹⁵ 在工作空间中
机器人有形状和大小即难以进行运动规划在配置空间C-space中机器人是一个点即易于进行运动规划⁶在进行运动规划之前障碍物在C-space中表示⁸[10]在C-space中表示障碍物可能非常复杂。因此在实践中使用近似但更保守的表示。
如果我们保守地将机器人建模为半径为 _ 的球那么可以通过在所有方向上膨胀障碍物 _ 来构造C-space1。这是一种常见的机器人碰撞检测方法通过确保球体中心在膨胀地图的自由空间中来实现碰撞评估1。然而这种保守的方法并未考虑到机器人的形状和大小。
构建地图
在路径规划中构建搜索地图是一个关键步骤。这通常涉及到将实际环境抽象为一个图Graph其中节点Nodes代表可能的位置边Edges代表从一个位置到另一个位置的移动。以下是一个详细的例子 假设我们有一个机器人需要在一个室内环境中导航。这个环境可以是一个房间有一些障碍物比如桌子和椅子。
定义节点Nodes首先我们需要确定节点的位置。在这个例子中我们可以将房间的每一个可达的位置定义为一个节点。例如我们可以创建一个网格Grid每一个网格单元都是一个节点。定义边Edges然后我们需要确定边。如果机器人可以直接从一个节点移动到另一个节点那么这两个节点之间就有一条边。在我们的例子中如果两个网格单元相邻并且没有障碍物阻挡那么这两个网格单元即节点之间就有一条边。定义权重Weights最后我们需要为每一条边定义一个权重。权重可以根据实际的移动成本来确定。例如如果从一个节点到另一个节点的距离更远或者路径上有斜坡那么这条边的权重就应该更大。
地图种类
栅格地图Grid Map则是把环境划分成一系列栅格在数学视角下是由边联结起来的结点的集合一个基于图块拼接的地图可以看成是一个栅格图每个图块(tile)是一个结点图块之间的连接关系如短线。 概率图Cost Map如果在栅格图的基础上每一栅格给定一个可能值表示该栅格被占据的概率则该图为概率图。 特征地图Feature Map特征地图用有关的几何特征如点、直线、面表示环境。常见于vSLAM视觉SLAM技术中。它一般通过如GPS、UWB以及摄像头配合稀疏方式的vSLAM算法产生优点是相对数据存储量和运算量比较小多见于最早的SLAM算法中。 拓扑地图Topological Map是指地图学中一种统计地图, 一种保持点与线相对位置关系正确而不一定保持图形形状与面积、距离、方向正确的抽象地图。包括有有向图和无向图字面意思。 栅格地图 概率图 特征地图 拓扑地图-有向图 拓扑地图-无向图
搜索算法介绍
有了这么多种的地图那么对应每种图可以用什么对应的算法来做路径的规划呢下面是地图对应路径搜索算法
1. 栅格地图 / 概率图1. Dijkstra2. BFSBest-First-Search3. A*4. hybrid A*5. D *6. RRT7. RRT*8. 蚁群算法9. Rectangular Symmetry Reduction (RSR) 10. BUG11. Beam search12. Iterative Deepeningc13. Dynamic weighting14. Bidirectional search15. Dynamic A* and Lifelong Planning A *16. Jump Point Search17. Theta *2. 拓扑地图1. Dijkstra2. BFSBest-First-Search3. A*4. CH5. HH6. CRP
图搜索算法结构
:::success
维护一个容器来存储所有待访问的节点该容器以起始状态XS进行初始化循环根据某个预定义的评分函数从容器中移除一个节点访问一个节点扩展获取该节点的所有邻居发现所有的邻居将它们邻居推入容器扩展获取该节点的所有邻居结束循环 :::
通用搜索算法结构
常用的图搜索有3大类的搜索结构其它算法都是在这三个大的框架之下做改进。深度优先搜索Depth-First Search, DFS
原理DFS是一种用于遍历或搜索树或图的算法。这个算法会尽可能深地搜索树的分支。当节点v的所在边都己被探寻过搜索将回溯到发现节点v的那条边的起始节点。这一过程一直进行到已发现从源节点可达的所有节点为止。如果还存在未被发现的节点则选择其中一个作为源节点并重复以上过程整个进程反复进行直到所有节点都被访问为止。优点实现简单当目标明确时搜索效率高。缺点不保证找到最短路径有可能会导致搜索陷入无限循环。
广度优先搜索Breadth-First Search, BFS
原理BFS是一种广度优先的搜索算法用于搜索树或图。这个算法从根节点开始沿着树的宽度遍历树的节点如果所有节点均被访问则算法结束。优点可以找到最短路径结果可靠。缺点空间复杂度高当解空间大时内存消耗大。
贪婪搜索Greedy Search
原理贪婪搜索是一种在每一步选择中都采取在当前看来最好的选择希望通过一系列的最优选择能够产生一个全局最优的解决方案。优点简单易于实现计算速度快。缺点不能保证找到全局最优解只能保证找到局部最优解。深度优先搜索DFSDFS会沿着一条路径不断往下搜索直到不能再继续为止然后再折返开始搜索下一条路径。这种搜索策略可以看作是“先入后出”因此在实现DFS时通常使用栈Stack这种数据结构。DFS的优点是实现简单当目标明确时搜索效率高。然而DFS的缺点是不保证找到最短路径有可能会导致搜索陷入无限循环。广度优先搜索BFS相比之下BFS会根据离起点的距离按照从近到远的顺序对各节点进行搜索。这种搜索策略可以看作是“先入先出”因此在实现BFS时通常使用队列Queue这种数据结构。BFS的优点是可以找到最短路径结果可靠。然而BFS的缺点是空间复杂度高当解空间大时内存消耗大。 算法核心的三个问题是
问题1何时结束循环可能的选项当容器为空时结束循环问题2如果图是循环的怎么办当一个节点从容器中移除扩展/访问后它就不应该再被添加回容器问题3如何移除正确的节点以便尽快到达目标状态从而减少图节点的扩展。
深度优先算法数据结构维护一个后进先出LIFO的容器即栈算法移除/扩展容器中最深的节点 #生成示例数据
graph {}
graph[A] [B, D, F]
graph[B] [C, E]
graph[D] [C]
graph[F] [G, H]
graph[C] []
graph[E] []
graph[G] []
graph[H] []from collections import deque
search_queue deque() # 创建一个节点列表
search_queue graph[A] # 表示将A的相邻节点都添加到节点列表中
from collections import dequedef search(start_node):search_queue deque()search_queue graph[start_node]searched [] # 这个数组用于记录检查过的节点while search_queue: # 只要节点列表不为空node search_queue.pop() #深度优先#node search_queue.popleft() # 广度优先取出节点列表中最左边的节点print(node, end ) # 打印出当前节点if not node in searched: # 如果这个节点没检查过if node G: # 检查这个节点是否为终点Gprint(\nfind the destination!)return Trueelse:search_queue graph[node] # 将此节点的相邻节点都添加到节点列表中searched.append(node) # 将这个节点标记为检查过# 如果节点列表为空仍没找到终点则返回Falsereturn Falseprint(search(A))
广度优先搜索算法 数据结构维护一个先进先出FIFO的容器即队列算法操作移除/扩展容器中最浅的节点。具体代码参考上面深度搜索算法把“node search_queue.pop() #深度优先”换成“node search_queue.popleft() # 广度优先取出节点列表中最左边的节点”即可。可以看出BFS和DFS差别就在于根据“先入”或“后入”的原则从边界中选择下一个节点。 贪婪搜索Greedy Search贪心算法的特点是考虑了从目标节点找到任意点的代价而一般算法考虑的是从起始节点到任意点的代价。即贪心算法考虑的是如何快速的找到目标节点使得到达目标节点的时间成本最小而一般算法考虑的是目标节点到达目标节点的花费代价是最小的而不是快速找到目标节点。基于贪心策略试图向目标移动尽管这不是正确的路径。由于它仅仅考虑到达目标的代价而忽略了当前已花费的代价于是尽管路径变得很长它仍然继续走下去。 贪婪算法中“行动的成本”可以用启发式函数h(n)来算从任意结点n到目标结点的最小代价评估值启发函数决定了贪婪算法运算书读所以选择一个好的启发函数很重要。
实际的搜索问题中从一个节点到其邻居有一个“C”的成本可以作为启发函数计算代价的有长度时间能量等当所有权重都为1时贪婪算法找到最优解对于一般情况如何尽快找到最小成本路径 Dijkstra算法 Dijkstra算法算是贪心思想实现的其可以适用与拓扑图或者栅格图具体实现方法是首先把起点到所有点的距离存下来找个最短的然后松弛一次再找出最短的所谓的松弛操作就是遍历一遍看通过刚刚找到的距离最短的点作为中转站会不会更近如果更近了就更新距离这样把所有的点找遍之后就存下了起点到其他所有点的最短距离 策略扩展/访问具有最低累积成本g(n)的节点g(n)从起始状态到节点“n”的累积成本的当前最佳估计更新所有未扩展邻居“m”的累积成本g(m)已经被扩展/访问的节点保证具有从起始状态到该节点的最小成本 :::success维护一个优先队列来存储所有待扩展的节点用起始状态XS初始化优先队列设置g(XS)0, 对图中的其他所有节点设置g(n)无穷循环:如果队列为空,返回FALSE并退出循环从优先队列中取出g(n)最小的节点“n”将节点“n”标记为已扩展如果节点“n”是目标状态,返回TRUE并退出循环对节点“n”的所有未扩展的邻居节点“m”:如果g(m) 无穷g(m) g(n) Cnm将节点“m”加入队列如果g(m) g(n) Cnmg(m) g(n) Cnm结束对邻居节点的循环结束主循环 ::: BFSBest-First-Search算法 BFSBest-First-Search算法也是可以看作基于启发式的深度优先算法其按照和Dijkstra类似的流程运行不同的是它能够评估任意结点到目标点的代价即启发式函数。与选择离初始结点最近的结点不同的是它选择离目标最近的结点。BFS不能保证找到一条最短路径。但是它比Dijkstra算法快的多因为它用了一个启发式函数heuristic 能快速地导向目标结点。例如如果目标位于出发点的南方BFS将趋向于导向南方的路径。在下面的图中越黄的结点代表越高的启发值移动到目标的代价高而越黑的结点代表越低的启发值移动到目标的代价低。这表明了与Dijkstra 算法相比BFS运行得更快。 然而这两个例子都仅仅是最简单的情况——地图中没有障碍物最短路径是直线的。现在我们来考虑前边描述的凹型障碍物。Dijkstra算法运行得较慢但确实能保证找到一条最短路径 另一方面BFS运行得较快但是它找到的路径明显不是一条好的路径 由于BFS是基于贪心策略的它试图向目标移动尽管这不是正确的路径。由于它仅仅考虑到达目标的代价而忽略了当前已花费的代价于是尽管路径变得很长它仍然继续走下去。 结合两者的优点不是更好吗1968年发明的A算法就是把启发式方法heuristic approaches如BFS和常规方法如Dijsktra算法结合在一起的算法。有点不同的是类似BFS的启发式方法经常给出一个近似解而不是保证最佳解。然而尽管A基于无法保证最佳解的启发式方法A却能保证找到一条最短路径。A: 带有启发式函数的Dijkstra算法* 把Dijkstra算法靠近初始点的结点和BFS算法靠近目标点的结点的信息块结合起来。在A的标准术语中g(n)表示从初始结点到任意结点n的代价h(n)表示从结点n到目标点的启发式评估代价heuristic estimated cost。当从初始点向目标点移动时A* 权衡这两者。每次进行主循环时它检查f(n)最小的结点n其中f(n) g(n) h(n)。
累积成本g(n): 从起始状态到节点“n”的累积成本的当前最佳估计启发式函数h(n): 从节点n到目标状态即目标成本的预计最小成本从起始状态到通过节点“n”的目标状态的最小预计成本是 f(n) g(n) h(n)策略: 扩展具有最便宜的 f(n) g(n) h(n) 的节点更新所有未扩展邻居“m”的节点“n”的累积成本 g(m)已经扩展的节点保证具有从起始状态到该节点的最小成本 :::success维护一个优先队列来存储所有待扩展的节点对所有节点预定义启发函数h(n)用起始状态XS初始化优先队列设置g(XS)0,对图中的其他节点设置g(n)无穷循环:如果队列为空,返回FALSE并退出循环从队列中取出f(n)g(n)h(n)最小的节点“n”将节点“n”标记为已扩展如果节点“n”是目标状态,返回TRUE并退出循环对节点“n”的所有未扩展邻居节点“m”:如果g(m)无穷g(m) g(n) Cnm将节点“m”加入队列如果g(m)g(n)Cnmg(m) g(n) Cnm结束对邻居节点循环结束主循环 ::: 通过对启发式函数的调节可以达成控制A* 的行为一种极端情况如果h(n)是0则只有g(n)起作用此时A* 演变成Dijkstra算法这保证能找到最短路径。如果h(n)经常都比从n移动到目标的实际代价小或者相等则A保证能找到一条最短路径。h(n)越小A扩展的结点越多运行就得越慢。如果h(n)精确地等于从n移动到目标的代价则A 将会仅仅寻找最佳路径而不扩展别的任何结点这会运行得非常快。尽管这不可能在所有情况下发生但是你仍可以在一些特殊情况下让它们精确地相等。只要提供完美的信息A会运行得很完美认识这一点很好。如果h(n)有时比从n移动到目标的实际代价高则A* 不能保证找到一条最短路径但它运行得更快。另一种极端情况如果h(n)比g(n)大很多则只有h(n)起作用A* 就演变成了BFS算法。 如果目标的引力太低会得到最短路径不过速度变慢了如果目标引力太高那就放弃了最短路径但A运行得更快所以最优路径和最快搜索在复杂情况下需要有一个取舍/平衡。 A的这个特性非常有用。例如你会发现在某些情况下你希望得到一条好的路径而不是一条完美的路径为了权衡g(n)和h(n)你可以修改任意一个。 如果alpha是0则改进后的代价函数的值总是1。这种情况下地形代价被完全忽略A工作变成简单地判断一个网格可否通过。如果alpha是1则最初的代价函数将起作用然后你得到了A的所有优点。你可以设置alpha的值为0到1的任意值。 可以考虑对启发式函数的返回值做选择绝对最小代价或者期望最小代价。例如如果你的地图大部分地形代价为2其它一些地方是代价为1的道路那么你可以考虑让启发式函数不考虑道路而只返回2距离。 速度和精确度之间的选择并不是全局固定对。在地图上的某些区域精确度是重要的你可以基于此进行动态选择。例如假设我们可能在某点停止重新计算路径或者改变方向则在接近当前位置的地方选择一条好的路径则是更重要的对于在地图上的一个安全区域最短路径也许并不十分重要但是当从一个危险区域脱离对时候轨迹的精度是最重要的。 同样通过对g(n)或者f(n)的调节也可以达成A具体动作的控制
通过加上障碍物cost function到g(n)或者f(n)这两个动作是一个意思可以实现规划路径在障碍物中间。通过加上车辆几何或者轨迹kappa平滑度cost function的到g(n)或者f(n)可以实现规划出来的路径是平滑变化的。通过加上到way point的cost function的到g(n)或者f(n)规划出来的路径则倾向于走way points的方向。构造精确启发函数的一种方法是预先计算任意一对结点之间最短路径的长度。有几种方法可以近似模拟这种启发函数
1. 【降采样地图-预计算】在密集栅格图的基础上添加一个分辨率更大的稀疏栅格图。预计算稀疏图中任意两个栅格的最短路径。2. 【waypoings-预计算】在密集栅格图上预计算任意两个way points的的最短路径。
通过以上方法添加一个启发函数h’用于评估从任意位置到达邻近导航点/中继点waypoints的代价。最终的启发式函数可以是 h(n) h(n, w1) distance(w1, w2), h(w2, goal)网格地图中的启发式算法 在网格地图中有一些众所周知的启发式函数计算方法
1. 曼哈顿距离
2. 对角线距离
3. 欧几里得距离
4. 欧几里德距离平方
曼哈顿距离 标准的启发式函数是曼哈顿距离Manhattan distance。考虑代价函数并找到从一个位置移动到邻近位置的最小代价D。因此h是曼哈顿距离的D倍 H(n) D \ * (abs ( n.x – goal.x ) abs ( n.y – goal.y ) ) 对角线距离 如果在地图中允许对角运动那么需要考虑对角线距离。4 east, 4 north的曼哈顿距离将变成8D。然而可以简单地移动4 northeast代替所以启发函数应该是4D。这个函数使用对角线假设直线和对角线的代价都是D
H(n) D * max(abs(n.x - goal.x), abs(n.y - goal.y)) 如果对角线运动的代价不是D但类似于D2 sqrt(2) * D则准确的计算方法如下
h_diagonal(n) min(abs(n.x - goal.x), abs(n.y - goal.y))h_straight(n) (abs(n.x - goal.x) abs(n.y - goal.y))H(n) D2\* h_diagonal(n) D\* (h_straight(n) - 2\ *h_diagonal(n)))
计算h_diagonal(n)沿着斜线可以移动的步数h_straight(n)曼哈顿距离然后合并这两项让所有的斜线步都乘以D2剩下的所有直线步(注意这里是曼哈顿距离的步数减去2倍的斜线步数)都乘以D。 欧几里德距离 如果单位可以沿着任意角度移动而不是网格方向那么应该使用直线距离 H(n) D* sqrt((n.x-goal.x)^2 (n.y-goal.y)^2)
然而如果是这样的话直接使用A时将会遇到麻烦因为代价函数g不匹配启发函数h。因为欧几里得距离比曼哈顿距离和对角线距离都短你仍可以得到最短路径不过A将运行得更久一些 欧几里德距离平方 还有一个方法是使用距离的平方替代距离避免进行平方根开方运算从而减少计算消耗 H(n) D* ((n.x-goal.x)^2 (n.y-goal.y)^2)
不过这样做会明显地导致衡量单位的问题。当A计算f(n) g(n) h(n)距离的平方将比g的代价大很多并且会因为启发式函数评估值过高而停止。对于更长的距离这样做会靠近g(n)的极端情况而不再计算任何东西A退化成BFS 启发函数的启发因子 导致A搜索低性能的另外一个原因是启发函数的启发因子。当某些路径具有相同的f值的时候它们都会被探索比较函数无法打破比较平衡点尽管我们这时候只需要搜索其中的一条下图为没有添加启发因子的效果 为了解决这个问题我们可以为启发函数添加一个较小的启发因子。启发因子对于每个结点必须是确定的唯一的而且它必须让f值体现区别。因为A将会对f值进行堆排序让f值不同意味着只有一个f值会被检测。
一种添加启发因子的方式是稍微改变h的衡量单位。如果我们减少衡量单位那么当我们朝着目标移动的时候f将逐渐增加。很不幸这意味着A倾向于扩展到靠近初始点的结点而不是靠近目标的结点。我们可以稍微的微调h的衡量单位甚至是0.1%A就会倾向于扩展到靠近目标的结点。 heuristic \ \ * (1.0 p)
其中这里的启发因子需要满足
p 移动一步的最小代价 / 期望的最长路径长度。
假设你不希望你的路径超过1000步step你可以使p 1 / 1000。添加这个附加值的结果是A比以前搜索的结点更少了。如下图所示。 当存在障碍物时当然仍要在它们周围寻找路径但要意识到当绕过障碍物以后A搜索的区域非常少 Steven van Dijk的建议是直接把h放到比较函数中。当f值相等时比较函数将会通过比较两个节点h的大小实现启发因子的功能打破比较平衡点。Cris Fuhrman的建议的启发因子是给每个节点加一个决定性的任意数例如所在坐标系中位置的hash值最后一种方法类似于frenet坐标系的做法对比起点到终点的直连线段的投影距离计算方法入下
dx1 current.x - goal.x
dy1 current.y - goal.y
dx2 start.x - goal.x
dy2 start.y - goal.y
cross abs(dx1*dy2 - dx2*dy1)
heuristic cross*0.001
其目的是计算初始-目标向量和当前-目标向量的向量叉乘cross-product。当向量偏离方向后其叉乘将会提供一个较大的启发因子。结果是这段代码选择的路径稍微倾向于从初始点到目标点的直线。当没有障碍物时A不仅搜索很少的区域而且它找到的路径看起来非常棒 跳点搜索 Jump Point Search (JPS) 是一种改进的 A_ 算法它保留了 A_ 算法的主体框架但在寻找后继节点的操作上进行了优化。在 A 算法中会将当前节点的所有未访问邻居节点加入 openlist。而 JPS 则使用一些方法将有“价值”的节点加入 openlist。JPS 的核心就是寻找跳点 (Jump Point)在 JPS 中就是将跳点加入 openlist。跳点就是路径的转折点。 JPS明智地进行探索因为它总是根据规则向前看。强调了其在搜索过程中的智能性和前瞻性。 JPS 算法的基本流程与 A 一致代价函数 f(n) 仍然表示如下f(n)g(n)h(n)。 JPS 算法的优点在于由于它只扩展跳点跳点间的栅格被跳过不加入 OpenList因此它的搜索效率比 A 算法提高了一个等级。 在实现JPS前先了解它的规则
强迫邻居节点X的邻居节点有障碍物且X的父节点P经过X到达N的距离代价比不经过X到达N的任一路径的距离代价都小则称N是X的强迫邻居。 2. 跳点(Jump Point)什么样的节点可以作为跳点 (1)节点 A 是起点、终点. (2)节点A 至少有一个强迫邻居. (3)父节点在斜方向(斜向搜索)节点A的水平或者垂直方向上有满足 (1)、(2) 的节点 在搜索过程中它可以将水平和垂直方向两个分量分解为一个方向为(1, 0)的水平搜索一个方向为(0, 1)的垂直搜索 同理斜向有四种方向 左上 (-1, 1) ——对应的水平 (-1, 0)垂直 ( 0, 1) 右上 ( 1, 1) ——对应的水平 ( 1, 0)垂直 ( 0, 1) 右下 ( 1, -1) ——对应的水平 ( 1, 0)垂直 ( 0, -1) 左下 (-1, -1) ——对应的水平 (-1, 0)垂直 ( 0, -1) 如上所说(3)的情形即为如下 递归应用直线剪枝规则并将 y 识别为 x 的跳点后继。这个节点很有趣因为它有一个邻居 z除非通过访问 x 然后 y 的路径否则无法最优地到达。递归应用对角线剪枝规则并将 y 识别为 x 的跳点后继。在每次对角线步骤之前我们首先递归直线。只有当两次直线递归都未能识别出跳点时我们才再次对角线步进。节点 wx 的强制邻居正常扩展。也推入开放列表优先队列。 记住:你只能直线跳跃或对角线跳跃;不能分段跳跃。:::success维护一个优先队列来存储所有待扩展的节点对所有节点预先定义启发函数h(n)用起始状态XS初始化优先队列设置g(XS)0,对图中的其他节点设置g(n)无穷循环:如果队列为空,返回FALSE并退出循环从队列中取出f(n)g(n)h(n)最小的节点“n”将节点“n”标记为已扩展如果节点“n”是目标状态,返回TRUE并退出循环对节点“n”的所有未扩展邻居节点“m”:如果g(m)无穷g(m) g(n) Cnm将节点“m”加入队列如果g(m)g(n)Cnmg(m) g(n) Cnm结束对邻居节点的循环结束主循环 ::: openlist查找具体流程如下²初始化起点节点 start 将起点周围四个角落的空闲节点相对于起点的相对位置加入起点节点的 forced_neighbor_list。创建一个 openlist 将 start 加入 openlist。while openlist is not empty:node ← openlist.Pop ()从 node 开始跳跃首先进行直线跳跃再进行对角线跳跃。用 parent 表示从 node 进行对角线跳跃得到的节点用 current 表示从 parent 进行直线跳跃得到的节点。如果 current 是跳点而 parent 与 node 是同一个节点则将 current 加入 openlist同时将 current 的父节点指向 node如果 current 是跳点而 parent 与 node 不是同一个节点则将 parent 和 current 加入 openlist同时将 current 的父节点指向 parent将 parent 的父节点指向 node如果 current 是障碍物或者边界则进行对角线跳跃如果 parent 是障碍物或者边界则进入下一轮循环。
例子 扩展—对角线移动最终找到一个关键节点,将其加入开放列表。从开放列表中弹出它(唯一的节点)。垂直扩展,在障碍物处结束。 水平扩展,遇到一个具有强制邻居的节点。将其添加到开放列表。 对角线扩展,扩展后没有发现任何新的节点。完成当前节点的扩展。 对角线移动。先沿垂直和水平方向扩展。 没有发现任何新的节点。对角线移动。
更详细跳点搜索可以参考下面文章 也致敬这个大佬~
小结
本文介绍了motion plan学院派的框架
前端路径规划后端轨迹生成不确定障碍物预估规划
并且详细介绍了前端路径规划常用的搜索规划介绍了搜索规划的一些前置知识
c-space为了方便物体质点化处理建图时把物体形状构建转移到图各种不同图如何构建成适合搜索算法的数据格式以及不同图适合的搜索算法搜索算法的三个基本框架深度搜索、广度搜索、贪心搜索
详细介绍了了几种贪心搜索算法原理和实现思路
Dijkstra算法A* 搜索跳点搜索
并且介绍了累计成本启发函数以及这两个函数的物理意义如何调控两个参数来实现计算速度和最优路径的平衡。
累积成本g(n): 从起始状态到节点“n”的累积成本的当前最佳估计启发式函数h(n): 从节点n到目标状态即目标成本的预计最小成本