汽车行业正在为2级(脚离开油门或刹车)和3级(手离开方向盘)车辆提供高级驾驶员辅助系统(ADAS)的首批实现方案,尽管从4级(眼睛离开道路)到5级(全自动驾驶)车辆的自动驾驶(AD)系统还处于努力开发当中。事实证明,这一挑战比几年前所预期的要更加困难。
实现自动驾驶系统归根结底是要在没有人工协助的情况下,将车辆安全地从A点移动到B点。这可以通过包括感知、运动规划和运动执行的所谓的驾驶控制回路的三阶段状态机来完成。“感知”用于学习和理解驾驶环境,以及车辆位置或在地图上的定位。感知阶段将环境和定位数据提供给计算车辆轨迹的“运动或路径规划”,然后由“运动执行”执行。如果感知产生了不准确的数据,那么轨迹就会有缺陷。在最坏的情况下,它会导致灾难性的后果。
成功的自动驾驶系统实现依赖于状态机架构,借此就可准确地理解环境,制定有效的运动规划,并完美地履行其执行。
要构建可行且完美的4级自动驾驶控制回路,其理想体系结构必须至少满足七个基本要求。
第一,能提供POPS级别的大量可用的算力。这里关键的是“可用”这个词。工程师需要知道的是在任何给定的实例中可以使用多少理论上的OPS。
第二,能支持人工智能(AI)和数字信号处理(DSP)的结合。在支持4级功能的车辆中,除了导航数据外,通常还有40到70个传感器用于自动驾驶功能,包括雷达、激光雷达、摄像头和超声波传感器的组合。
所有这些传感器都会实时生成大量数据。根据数据类型的不同,例如,算法处理可能需要用纯AI来进行分割和对象检测;或者需要用纯信号处理来进行聚类和变换、信号预处理和信号融合;或者需要将AI和信号处理组合起来,实现诸如占位栅格映射或感知融合的功能。
我们必须考虑到法律和责任方面。直到3级自动驾驶,总会有一个人在控制车辆。在4级自动驾驶,车辆应该处于控制状态,并能够像人类驾驶员在相同情况下一样操控车辆。
如果4级车辆发生事故,由于没有驾驶员,则在将责任和义务从驾驶员转移到OEM时,它们就会成为一个问题。能够证明自动驾驶系统的可靠性和功能性就变得至关重要。仅有AI处理是不够的。答案是通过全面的解决方案来解决这个问题。
第三,尽可能降低延迟。典型的传感器周期时间为30ms。这意味着控制回路需要在20到25ms内完成其任务,以便留出处理异常的裕量。
第四,降低能耗。所有主要汽车制造商都在进行从内燃机转向电动发动机。在不久的将来,道路上所有的车辆都将是电动的,重点将是尽量减少由于大量负载而造成的电池负担。
目前预计可行的4级自动驾驶架构每个可用的TOPS会消耗约0.1W,从长远来看,这一消耗有望进一步降低。此外还有散热问题。汽车公司不希望处于需要设计特定、奇特的散热解决方案的境地。
第五,保证确定性处理。例如,在粒子滤波器中,工程师可能想要进行排序。他们对平均排序时间不感兴趣,但需要知道最小和最大排序时间,从而确保他们在允许的时间内处理整个回路。
第六,需要有商业上可行的成本结构,以便从高端汽车迁移到中低端车型。目前,还没有商业上可行的4级/5级解决方案问世。
第七,支持可再编程。如今,软件定义汽车(SDV)已成为新一代车辆架构的一部分。然而,为了适应更新的机器学习算法,例如联邦学习和其他尚未出现的算法,可再编程也是必要的。今天使用的任何算法在未来两三年都不会相同。一个可行的解决方案必须要能处理这个问题。
图1:上述要求对于实现4级自动驾驶控制回路至关重要。(图片来源:VSORA)
自动驾驶技术现处于怎样的发展阶段?市场上又有哪些领先解决方案?2022年12月28日,由AspenCore和上海市交通电子行业协会合办的“中国国际汽车电子高峰论坛”,将在上海浦东喜来登由由大酒店隆重举行。会议特设“智能驾驶与预期功能安全”分论坛,邀请到泛亚汽车、移远通信、英博超算、映驰科技和上海汽检发表精彩主题演讲。另有“智能座舱与人机交互”、“电驱电控系统与功率半导体”、“动力电池与智能充电技术”分论坛也将在同期举行。欢迎大家前来学习交流。点击这里报名参加。
随着车辆的移动,车辆周围的对象也会移动,这就会迫使驾驶控制回路动态地重新计算运动规划。这种动态重新规划通常由局部运动规划器来处理,该规划器会使用全局规划器和周围环境信息生成最佳轨迹。这是因为需要进行短期环境预测来评估规划轨迹的有效性。
这可以通过不同的方式来完成。也就是说,通过基于对象的表示、基于栅格的表示或两者的组合。基于栅格的表示支持处理具有大量对象的复杂场景,并且重要的是,它在进行对象提取时对错误或遗漏目标等缺陷不太敏感。
动态占位栅格地图(DOGMa)是本地环境基于栅格的表示。它会估计栅格中单个单元格的占位概率。它还会考虑每个单元格的动力学属性:速度、加速度和转弯比。通过这样做,它可以预测近期的占位率。
DOGMa是一种用于执行短期环境预测的强大方法。
为了在感知阶段实现精确稳定的车辆定位,我们必须对车辆的传感器和道路基础设施一起处理。给定环境地图,粒子滤波算法就可以估计自动驾驶车辆在移动和感知环境时的位置和方向。粒子滤波器使用多个称为粒子的样本来理解对象或占据栅格中一个单元格的多个对象。粒子滤波是一种有效表示任意非高斯分布的方法。由于粒子是随机产生的,只要粒子数量足够多,它们就可以准确地表示非高斯噪声的性质。
为了对占位栅格地图进行填充,针对每种类型的传感器所收集的传感器数据要经过许多预处理步骤,例如地面识别和光线追踪。然后使用预处理的数据为每种传感器类型创建测量栅格。最后,将所有传感器类型的所有测量栅格和导航数据组合成粒子滤波器所能作用的完整测量栅格。
粒子滤波器会为单个单元格中的每个粒子捕获许多不同的参数。通过对数据进行聚类,它可以跟踪更大的对象,从而简化进一步的处理阶段,并支持处理诸如对象部分隐藏或完全隐藏的情况。
一个基于公开博士论文“A Random Finite Set Approach for Dynamic Occupancy Grid Maps with Real-Time Application”(动态占位栅格地图的随机有限集方法及其实时应用)的系统,就是个很好的模型。在一个示例中,DSP实现在每个周期中使用了800万个单元格、1,600万个粒子和150万个新粒子。为了处理这个问题,一个单芯片DSP配置使用了1,024个运行频率为2GHz的ALU。
粒子滤波器的典型商业实现很可能使用激光雷达、雷达和摄像头的组合。在此示例中,该芯片仅处理通过从KITTI数据库中各种场景获取的激光雷达点云所捕获的激光雷达数据——KITTI数据库是一种广泛使用的开放数据库,它起源于德国卡尔斯鲁厄理工学院。使用点云,芯片就能执行地面识别,使用Bresenham直线算法的光线追踪,然后创建测量栅格。遵循一组类似的步骤,将其他传感器与激光雷达数据融合起来将是一项简单的任务。
我们设置了一个10×10mm单元格大小的栅格。对于800万个单元格,栅格为280×280m。经过处理的数据——其中对每个单元格都识别出了粒子及其各自的速度——将以不同的方式显示信息。一种方法是将处理后的数据视频流进行显示并将其与参考视频进行比较。更重要的是能够创建360°的视场,其中,对于每个方向均为140m的视场,车辆(自主车辆)位于栅格的中心(图2)。
图2:这是DOGMa和粒子滤波器通过自动驾驶处理器处理KITTI场景18的结果的视频流表示。左侧的视频流显示了驾驶员对环境的视场或参考视场以及在不同方向上移动的车辆。栅格设置成10×10cm的单元格大小。对于800万个单元格,这就是个280×280m的栅格。在右侧,上图显示了处理后的数据视频流与参考视频的对比。下图是360°视场,其中自我车辆位于栅格的中心,视场的每个方向均为140m。(图片来源:VSORA)
这被称为动态占位栅格映射。为了跟随车辆和对象的运动,我们对栅格的各种元素都进行了人工着色。具体来说,白色表示地面上没有障碍物。灰色表示不明区域。黑色表示静止的对象。任何有颜色的对象都表示动态对象,其中特定的颜色显示了该对象的运动方向,例如黄色向后移动、红色向右转和蓝色向前移动。
顶部区域显示了与视频相同的驾驶员视场,但输出基于经过粒子滤波器实现处理后所生成的数据。这里还可以看到每个动态对象的速度,单位为m/s。
随着车辆的移动,还会有关于周围地区的信息提供。越来越多的灰色变成白色,表明已将此确定为空闲空间。它没有完全着色,因为粒子滤波器会执行一些预测未来的元素或跟踪隐藏的粒子。如果一辆车挡住了另一辆车或另一个对象的视场,这并不一定意味着那个对象已经消失了。这只是意味着它不在视场以内,并会对要跟踪该对象多长时间做出决策。
处理粒子滤波器是项计算密集型工作。CPU、GPU和FPGA等传统处理引擎通常无法提供任务所需的“可用”性能,而且它们的延迟超过了自动驾驶应用的最大分配时间。在此,专用ASIC就可完成要求很高的工作。
在这种情况下,粒子滤波器的处理利用了1,024个ALU中的87%,这也得益于ALU内核本机指令的高效率。总延迟为6ms,这是实现自动驾驶汽车的有效方法。
Jan Pantzar是VSORA公司的销售和营销副总裁,VSORA是家位于法国的面向AI和ADAS应用的IP和芯片解决方案供应商。
Lauro Rizzatti博士是位硬件仿真方面的验证顾问和行业专家。
(原文刊登于EDN美国版,参考链接:Implementation basics for autonomous driving vehicles,由Franklin Zhao编译。)
本文为《电子技术设计》2022年12月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里。