使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统

发布于 2023-11-7 10:51
浏览
0收藏

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

摘要

自动泊车成为现代车辆的一种标准功能。现有的泊车系统构建构建一张局部地图,以便能够向检测到的车位规划行为动作。下一代泊车系统具有这样一种用例,即它们构建车辆经常停放环境的永久地图,例如家庭停车场或者公司停车场。当下次尝试泊车时,预先构建的地图有助于更好地重定位车辆。这是通过使用视觉SLAM流程增强泊车系统来实现的,该功能在汽车行业中被称为训练轨迹泊车(记忆泊车)。在本文中,我们讨论了训练轨迹的自主泊车系统的用例、设计和实现。

介绍

大体上,自动驾驶(AD)用例能够根据运行速度划分为三种场景,即高速公路驾驶、中速城市驾驶和低速泊车操作(Vision-based driver assistance systems: Survey, taxonomy and advances)。高速公路驾驶用例的定义和结构相对完善,因此像高速公路车道保持辅助这类功能最为成熟,并且已经在市场上部署。城市驾驶用例对应于中速,它们是高度非结构化的并且最具挑战性。泊车是一种低速用例,并且就场景结构性而言,它处于中间的位置。相对而言,泊车的驾驶规则以及它相关的道路基础设施(道路标记和交通标志)没有很好地定义,但是更容易处理,这是因为它是低速场景下的操作。泊车需要近场感知,而不是由前视相机提供的典型的远场感知。这通常通过四个鱼眼相机实现,它们提供车辆近场附近的全方位360°覆盖(图1)。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

车辆重复停放在相同的区域是非常常见的,例如:车主的住宅区域,要么是车库或者住宅和办公区前方。这些区域的精确地图将有助于自主的操作行为,以便更有效率地泊车。这能够通过视觉SLAM方法来实现,它构建停车区域的地图,该地图之后被用于重定位。通常,这些停车区域是私人区域,因此不能通过商业建图公司(如TomTom、HERE等)进行制图。因此,车辆必须具备智能来学习频繁泊车区域的地图绘制,然后利用该地图进行重定位。在本文中,我们描述了本文系统,它使用一种商用的汽车级相机和嵌入式系统来提供这项功能。


视觉同时定位和建图是机器人和自动驾驶领域中一个研究热点。主要存在三种类型的方法,即(1)基于特征的方法;(2)直接SLAM方法;(3)CNN方法。基于特征的方法利用描述性的图像特征进行跟踪和深度估计,这通常生成一张稀疏的地图。MonoSLAM、PTAM(并行跟踪和建图)和​​ORB-SLAM​​​是这种类型的开创性算法。直接SLAM方法在整张图像上工作(而不是稀疏的特征)来帮助构建稠密的地图。DTAM(稠密跟踪和建图)和LSD-SLAM(大规模半稠密SLAM)是主流的直接法,它们基于最小化光度误差。基于CNN的方法对于视觉SLAM问题是相对不成熟的,这在Stefan Milz等人的工作(Visual slam for automated driving: Exploring the applications of deep learning)中经过详细讨论。特别对于使用环视鱼眼相机的泊车场景,一些工作(Evaluation of fisheye-camera based visual multi-session localization in a real-world scenario、Auto-mated valet parking and charging for e-mobility、​​​AVPSLAM: semantic visual mapping and localization for autonomous vehicles in the parking lot​​)探索了视觉SLAM。一般而言,在鱼眼相机上执行感知任务的工作非常有限,但是最近在物体检测、深度估计、脏污检测、拖车检测和多任务模型等任务上取得不错的进展。


本文剩余部分的结构如下。第二节提供了基于训练轨迹的泊车系统用例的概述。第三节详细介绍基于训练轨迹的泊车系统及其组成模块的系统架构。第四节详细讨论了视觉SLAM方法及其面对的挑战。第五节详细介绍使用的数据集和基准结果。最后,第六节总结了本文,并且提供可能的未来研究方向。

基于训练轨迹的泊车系统

基于训练轨迹的泊车通过两阶段工作:训练阶段和回放阶段。在训练阶段,人类驾驶员驾驶车辆到需要的地方(例如,汽车棚、车库等)泊车。轨迹和它周围的其它信息被存储起来,用于以后自动地回放。在回放阶段,训练的轨迹被加载到车辆上,并且软件能够识别当前车辆相对于整条路径学习轨迹的位置,如图2所示。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区


这里“训练”指的是这个词的一般意义,并不是专门指机器学习术语。目前,我们在VSLAM流程中没有使用任何机器学习方法,这可能会引起混淆,但是这类名称在汽车行业已经很成熟。有时,它也被称为记忆泊车。在机器人学文献中,一个密切相关的问题是多段建图和定位。


在训练阶段融合里程计和超声传感器信息提供了更精确的轨迹来回放。然后,车辆控制规划使用这个计算得到的车辆位置来规划一条返回停车位置的路线,并且控制转向和加速度以便车辆自己行驶到那里。视觉SLAM算法被用于训练和回放阶段来计算并且识别被训练轨迹和车辆位置。训练轨迹泊车的这些阶段被用于如下描述的不同用例中。


A.家庭泊车


驾驶员经常在他们的家庭区域泊车,并且其思想是要学习家庭区域来自动地进行泊车操作。一个家庭泊车系统使用计算机视觉技术在已经存储的轨迹内进行自车定位,以便车辆能够使用存储的轨迹完全自动地行驶到停车位。在这类应用中,驾驶员训练系统来检测路标,并且将它用于定位。


B.自主反向泊出


这促进驾驶员对其任何操作进行反向(例如,驶入死路、停车)。通常,不同的训练轨迹被存储在永久内存的缓冲区中,然后用户能够基于车辆当前位置选择自主泊入或者泊出的首选轨迹。用于泊出的自主回放的轨迹被连续记录,通常不需要任何手动触发。


C.代客泊车


代客泊车是最先进的泊车形式,它需要L4级别的自动化程度。该系统必须自主地执行导航来寻找停车位,选择最佳的停车位并且自主地进行泊车。在未知环境中完成这项任务是相当有挑战性的。因此,需要努力创建带有人工路标(特殊的QR码标记)的基础设施地图,它能够被车辆利用来构建高效的局部地图。

泊车系统框架

本文系统的框架图如图3所示,并且在本节中进行描述。本节讨论了泊车系统所需要的必要计算机视觉模块。下一节详细讨论了基于训练轨迹的泊车所需要的视觉SLAM。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区


A.平台概述


传感器:车辆装置由商业部署的汽车级传感器组成,如图1所示。泊车系统所需要的基础传感器为鱼眼相机(用于提供轨迹信息)和超声传感器(用于泊车途中的近距离障碍物检测)。车辆上安装有四个鱼眼相机(在图1中标记为绿色),其像素分辨率为100万像素且具有190°的宽水平视角。四个相机一起覆盖了车辆周围整个360°的视场范围。这些相机被设计用于提供10米内的最佳近场感知,并且在25米内的感知能力略有下降。车辆上还安装了12个超声传感器阵列(在图1中标记为灰色),其覆盖了车辆前方和后方的区域。它们提供了车辆周围的鲁棒且安全网络用于避障,这对于一个鲁棒的系统而言是必要的。通常,一个超声传感器由具有调制脉冲的单个膜组成,用于以51.2kHz的中心频率发送和接收数据。传感器提供来自压电元件的原始数据,随后通过一个模拟滤波器组件来进行数字转换前的信号过滤。检测和定位物体的进一步处理步骤由电子控制单元(ECU)完成。激光雷达主要不用于泊车,因为它着重于远场感知。


SOCs:尽管自动驾驶原型在大型PCs上展示其性能,但是它们必须被部署在低功率且低成本的嵌入式系统上。尽管汽车嵌入式系统的计算能力快速增长,但是对于部署计算机视觉算法仍然是相当有挑战性的。在图3左上角区域展示了一个称为ECU的典型汽车嵌入式系统。典型的汽车SOC供应商包括Texas Instruments TDAx、Renesas V3H和Nvidia Xavier平台。大多数这些SOCs提供定制的计算机视觉硬件加速器,用于稠密光流、双目视差和深度学习。一个典型的SOC系统具有1到10TOPS的计算能力,并且消耗少于10w的功率。


软件架构:在将数据传给视觉算法之前典型的预处理算法包括鱼眼畸变校正、对比度增强和去噪声。使用计算机视觉算法来检测物体,然后它们被传给地图来规划车辆行为从而完成自主泊车。来自四个相机的图像坐标系中的物体被转换到世界中心坐标系下。深度估计提供由语义分割检测到的物体(例如行人和车辆)的定位。类似地,使用连接组件算法提取道路物体(例如车道线和路缘),并且将它们投影到世界坐标系下用以建图。此外,也能够从其它传感器(例如超声或者激光雷达)提取物体,然后将其融合到之前使用的地图中。


车辆控制和规划单元使用地图和车辆当前位置来规划一条返回停车位置的路线,并且控制转向和加速度以便于车辆自己行驶到那里。GPS能够别用于提供轨迹起始位置处的车辆粗略定位。同样重要的是,系统软件有能力检测行驶路径上的障碍物或者行人,并且相应地改变轨迹的行驶方向。系统应该能够利用自动紧急制动(AEB)功能以支持车辆在一组条件下应用紧急制动。


B.泊车系统中标准计算机视觉模块


除了传统的特征匹配外,现代的VSLAM系统使用语义信息来增强重定位的鲁棒性。一种实际的做法是识别场景中动态和可移动物体,并且为场景中这些物体携带的特征赋予零权重或者很小的权重。


语义分割:感兴趣的主要物体为道路物体,例如可通行空间、道路标记、路缘等,以及动态物体,例如车辆、行人和骑行者。它们都能够通过一个统一的语义分割网络进行实时地检测。这些物体通常被检测用于自动驾驶中的导航和障碍物检测。特别是对于我们的应用,动态物体有助于消除地图中不稳定的特征点,因为在重定位过程中这些特征点可能不在同一位置。然而,静态物体(如车道线和道路标记)提供了泊车过程中能够穿行的有效轨迹。


通用障碍物检测:为了获得鲁棒的系统,有必要使用外观之外的其它线索来检测物体。为所有可能的物体训练一个基于外观的语义分割网络实际上是相当有挑战性的,存在一些非常罕见的物体类别,如袋鼠或者建筑卡车。运动和深度在汽车场景中是这类非常有用的线索。通常,深度被用于检测静态物体,以及运动被用于检测动态物体。如上所述,大多数汽车SOCs提供稠密光流和能够被利用的双目硬件加速器。双目加速器能够被用于单目相机的运动双目。图4展示由运动双目算法计算的深度。在这种情况下,鱼眼畸变流形是在点云下方可视化的分段平面。此外,它们还能够使用高效的多任务网络来计算。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

针对泊车的视觉SLAM

A.建图概述


建图是自动驾驶的关键基础之一。自动驾驶很多首次成功演示(例如谷歌)主要依赖于预先建图区域的定位。图5展示由TomTom RoadDNA提供的用于自动驾驶的商业高精度地图服务。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

他们为大部分欧洲城市提供高度稠密的语义3D点云地图和定位服务,其典型的定位精度为10cm。当存在精确的定位时,高精度地图能够被作为主要的线索,因为已经存在较强的先验语义分割并且能够通过在线分割算法优化。然而,这种服务成本高昂,因为它需要在世界各区域定期维护和升级。由于隐私法和可访问性,这种商业服务不能够在所有情况下被使用,必须在车辆嵌入式系统内构建建图机制。例如,在很多国家(如德国)中私人住宅区不能够被合法地建图。图6展示了由本文系统生成的点云。由于车辆上可用的计算资源有限,因此与稠密的高精度地图相比,这些点云是相当稀疏的。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

B.VSLAM流程


视觉同时定位和建图(VSLAM)是一种构建车辆周围环境地图且同时计算出车辆在环境中当前位置的算法。车辆上安装的相机从四个相机中任意一个或者若干个相机组合来产生宽视角的图像。接着,对车辆周围环境建图并且跟踪所建地图的过程紧随其后,这构成了VSLAM的基本流程,如图7所示。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区


建图是从被跟踪传感器数据中生成地图的过程,该地图由训练轨迹和它相关联的路标组成。训练轨迹是一组关键位姿,其周围有跨越车辆起点到终点位置的路标。这些路标使用鲁棒的图像特征来表示,它们在被捕获图像上是唯一的。在回顾最先进的视觉SLAM流程的优势和缺陷之后,我们总结得到,基于特征的方法相比于直接法更合适,因为它需要更少的内存,并且对场景中的动态物体和结构变化不敏感。图像中一个明显特征可以是强度以特定方式变化的像素区域,或者是边缘或角点。为了估计世界中的路标,对特征进行跟踪,其中能够匹配两个或者更多视图上的相同特征。一旦车辆移动足够距离,VSLAM获取另一张图像,并且提取特征。对应的特征被重构以获取它们在真实世界中的坐标和位姿。


帧到帧的三维重建和视觉里程计可能具有漂移,因此它们需要全局修正。这通过联合优化3D点和相机位置的BA步骤来实现。这是一个计算量非常大的步骤,因为3D点的高重投影误差增加了迭代次数以降低代价值,并且因此不能对每一帧执行该步骤。它通常在N帧中执行一次,并且被称为滑动窗口BA。在训练结束时,还执行全局BA,其中优化所有关键帧(不是轨迹上的每一帧)以确保内部VSLAM地图的全局一致性。


最终优化的轨迹在永久内存中被保存为地图,并且算法使用它来重定位车辆位姿以实现车辆的自动操作。在此过程中,实时获取的相机图像被搜索特征,并且与来自训练地图的帧进行匹配。如果来自实时图像的特征与地图相匹配,优化模块(BA)就能够估计车辆的当前位置,其相对于轨迹训练过程中的位置。


C.技术挑战


基于我们的经验,我们下面简要列出部署这个系统所涉及的实际挑战:


1)光照或者天气条件变化会导致场景在视觉上有所不同。例如,如果在白天/夜晚或者夏天/冬天等时候完成定位和建图,则算法性能将显著降低,因为存在较少的特征匹配关系。


2)住宅区具有相似的结构,这使得很难匹配唯一的特征。因此,需要通过更特殊的特征或者更高级的语义来增强系统。


3)大多数当代汽车无法访问云端基础设施,因此需要在车辆的嵌入式系统中完成建图。所以,在轨迹结束时,驾驶员需要额外等待一段时间以完成地图的全局BA。


4)SLAM方法需要良好的初始化,从而能够有效地匹配沿着轨迹的特征。通常通过带有噪声的GPS信号来完成,这可能造成不可靠的重定位。


5)由于物体移动,因此场景中结构变化相当常见,因此必须动态更新地图以包含这些新的变化。


6)车载相机通常具有卷帘快门,因此必须对其补偿,特别是在相对更高速度的情况下

7)利用多个相机之间的度量距离能够求解尺度模糊性,但是由于估计中存在噪声,因此仍然存在尺度漂移的可能性。

结果

测试车辆由4个100万像素且具有190°水平FOV的RGB鱼眼相机(如图1所示)和一个Velodyne HDL-64E激光雷达组成。GNSS(NovAtel Propak6)和IMU传感器(SPAN-IGM-A 1)被用于以厘米级精度提供真值标注。对于每个对应的图像帧获取的六自由度车辆位姿被转换到一个序列通过某种滤波来移除异常值并平滑噪声。这个集合中的每个元素在光照、天气条件和场景中出现物体等情况下都有变化。这些场景是在爱尔兰的测试区域中捕获的(如图8所示),它是为测试各种泊车场景而设计的。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

视频(https://streamable.com/d6b97)展示了车辆重定位之前训练序列的采样定性结果。这个序列展示办公区泊车场景,其中车辆停在停车场入口处,并且导航到一个先前穿过的指定停车区域。在其它序列中,存在类似家庭泊车的场景,其中车辆沿着更简单的轨迹行驶到狭窄的车库停车场。在该视频中,显示了当前的前(右)和后(左)视图图像。中间区域显示了训练的轨迹地图(车辆位姿显示为白点),其周围有稀疏的特征。

表格1展示我们数据集中少数选定场景的结果。

使用环视相机视觉SLAM的基于训练轨迹的自主泊车系统 -汽车开发者社区

这些场景在时间/天和横向/角度偏移都发生变化,导致视频序列中光照和结构改变。重定位效率受到训练场景和回放场景之间的变化量的影响。表格中的前三列指的是训练和回放场景,它们由记录时间(yymmdd_hhmmss)所表示。第四列和第五列为采集训练和回放场景之间的时间差别,以及训练和回放场景起始位置的距离差异。接下来两列为整条轨迹上位置和角度的平均偏移。最后一列为平均重定位百分比,它定义为估计位姿在姿态容差2°和位置容差0.05米范围内的实例百分比。场景6是最具挑战性的场景,因为在光照和横向偏移方面都存在很大变化,所以它的重定位成功率相对较差。

总结

在本文中,我们提供一种工业化的基于训练轨迹的自主泊车系统概述。我们讨论了基于训练轨迹的泊车用例,并且展示如何使用视觉SLAM流程来扩展当前的泊车系统。我们详细地描述了视觉SLAM流程,并且列出商业部署中遇到的实际的挑战。在未来的工作中,我们计划探索一个统一的多任务网络来执行视觉SLAM和其它物体检测模块。


文章转载自公众号:自动驾驶专栏

分类
收藏
回复
举报
回复
相关推荐