根据自动驾驶传感器套件捕获的原始数据和它可以访问的现有地图,自动驾驶系统需要构建和更新其环境地图,同时跟踪其位置。同时定位和映射(SLAM)算法让车辆实现了这一点。一旦它在地图上的位置已知,系统就可以开始规划从一个点到另一个点的路径。SLAM是一个复杂的过程,因为定位需要一个地图,而定位需要一个好的位置估计。尽管长期以来一直被认为是机器人实现自主的一个基本的鸡或蛋问题,但在80年代中期和90年代的突破性研究在概念和理论层面上解决了SLAM问题。从那时起,各种各样的SLAM方法被开发出来,其中大多数使用概率概念。为了更精确地执行SLAM,传感器融合开始发挥作用。传感器融合是将来自多个传感器的数据与数据库相结合,以获得更好的信息的过程。它是一个多层次的过程,处理数据的关联、关联和组合,能够获得比单独使用单个数据源更便宜、更高质量或更相关的信息。对于从传感器数据到运动所需的所有处理和决策,通常使用两种不同的人工智能方法:
- 每个步骤(传感、定位和映射、路径规划、运动控制)由一个特定的软件元素处理,管道的每个组件将数据馈送到下一个组件,或者
- 基于深入学习的端到端解决方案,可以处理所有这些功能。
哪一种方法最适合于自动驾驶,目前没有定论,传统的,也是最常见的方法包括将自动驾驶问题分解成若干子问题,并用计算机视觉、传感器融合、定位、控制理论和路径规划的专用机器学习算法技术依次解决每个子问题。端到端(e2e)学习作为解决自动驾驶车辆复杂人工智能系统挑战的一种潜在方法,越来越受到人们的关注。端到端(e2e)学习将迭代学习作为一个整体应用于复杂系统,并在深度学习的背景下得到了推广。端到端的方法试图创建一个自动驾驶系统,其中包含一个单一的、全面的软件组件,可以将传感器输入直接映射到驾驶动作。由于在深度学习方面的突破,e2e系统的能力得到了提高,因此它们现在被认为是一个可行的选择。这些系统可以用一种或多种不同类型的机器学习方法来创建,例如卷积神经网络或强化学习,我们将在本报告后面详细阐述首先,我们将回顾如何处理来自传感器的数据,以就机器人车辆的运动做出决定。根据车上使用的传感器的不同,可以使用不同的软件方案从传感器信号中提取有用的信息。有几种算法可用于识别图像中的对象。最简单的方法是边缘检测,即评估不同像素中光或颜色强度的变化。[69]人们会期望属于同一对象的像素具有相似的光特性;因此,观察光强度的变化可以帮助分离对象或检测一个对象转向下一个对象的位置。这种方法的问题在于,在低光照强度(比如晚上)情况下,算法不能很好地执行,因为它依赖于光照强度的差异。此外,由于这种分析必须在每个镜头和多个像素上进行,因此计算成本很高。激光雷达数据可以用来计算车辆的运动,原理相同。通过比较在连续瞬间拍摄的两个点云,一些物体将离传感器更近或更远。一种称为迭代最近点的软件技术迭代地修正了两个点云之间的转换,从而能够计算出车辆的平移和旋转。虽然上述方法很有用,但它消耗了大量的计算时间,并且不容易扩展到自动驾驶车辆在不断变化的环境中运行的情况。这就是机器学习发挥作用的地方,它依赖于已经学会从现有数据执行任务的计算机算法。目前,不同类型的机器学习算法正被用于自动驾驶汽车的不同应用。本质上,机器学习根据提供的一组训练数据,将一组输入映射到一组输出。卷积神经网络(CNN)、递归神经网络(RNN)和深度强化学习(DRL)是应用于自主驾驶的最常见的深度学习方法。CNNs主要用于处理图像和空间信息,提取感兴趣的特征,识别环境中的目标。这些神经网络由一个卷积层组成:一组滤波器,试图区分图像的元素或输入数据来标记它们。这个卷积层的输出被输入到一个算法中,该算法将它们结合起来预测图像的最佳描述。最后一个软件组件通常称为对象分类器,因为它可以对图像中的对象进行分类,例如街道标志或其他汽车。RNN是处理视频等时间信息的强大工具。在这些网络中,前面步骤的输出作为输入输入输入到网络中,从而允许信息和知识在网络中持续存在并被上下文化。DRL结合了深度学习(DL)和强化学习。DRL方法允许软件定义的“代理”学习使用奖励功能在虚拟环境中实现其目标的最佳可能操作。这些面向目标的算法学习如何实现一个目标,或者如何在多个步骤中沿着特定维度最大化。尽管前景看好,但DRL面临的一个挑战是设计正确的奖励功能来驾驶车辆。深度强化学习在自主车辆中的应用仍处于初级阶段。这些方法不一定是孤立的。例如,像特斯拉这样的公司依赖于混合形式,这种形式试图同时使用多种方法来提高精度和减少计算需求。多任务同时训练网络是深度学习中的一种常见做法,通常称为多任务训练或辅助任务训练。这是为了避免过度拟合,这是神经网络的一个常见问题。当一个机器学习算法为一个特定的任务训练时,它可以变得如此专注于模仿它所训练的数据,以至于当试图进行插值或外推时,它的输出变得不现实。通过在多个任务上训练机器学习算法,网络的核心将专门寻找对所有目的都有用的通用特征,而不是只专注于一个任务。这可以使输出更真实,对应用程序更有用。为了使用这些算法,需要在表示真实场景的数据集上对它们进行训练。对于任何机器学习过程,数据集的一部分用于培训,另一部分用于验证和测试。因此,许多数据集,包括街道对象的语义分割、标志分类、行人检测和深度预测,已经被包括Aptiv、Lyft、Waymo和Baidu在内的研究人员和公司公开提供。这大大有助于推进机器学习算法的能力收集数据的一种方法是使用原型车。这些汽车是由司机驾驶的。车上的感知传感器用来收集有关环境的信息。同时,车载电脑将记录来自踏板、方向盘的传感器读数,以及描述驾驶员行为的所有其他信息。由于需要由人类收集和标记大量数据,这是一个代价高昂的过程。特斯拉人工智能主管安德烈·卡普西(Andrej Karpathy)表示,他所在团队的大部分工作都致力于获得越来越好的数据或者,也可以使用模拟器。”国家仪器公司(National Instruments)全球汽车战略主管杰米·史密斯(Jamie Smith)表示:“目前的物理测试还不够,因此需要进行虚拟测试。”。这降低了数据采集的成本,但也带来了现实主义的问题:这些虚拟场景是由人类定义的,比真实车辆所经历的随机性小。在这一领域,有越来越多的研究称之为虚拟到真实的转换,研究在真实世界中传递在模拟中收集到的知识的方法利用来自传感器和这些算法的所有数据,自动驾驶车辆可以检测到周围的物体。下一步,它需要规划找到一条路径。当车辆知道其环境中的物体及其位置时,可以使用voronoi图(最大化车辆与物体之间的距离)、占用网格算法或驾驶走廊算法来确定车辆的大范围路径。但是,这些传统方法不足以满足车辆正在与周围的其他移动对象交互,其输出需要微调。一些自动驾驶汽车不仅依靠机器学习算法来感知环境,而且依靠这些数据来控制汽车。路径规划可以通过模仿学习教给CNN,CNN试图模仿司机的行为。在更先进的算法中,使用DRL,其中奖励以可接受的方式驾驶的自治系统。通常,这些方法与经典的运动规划和轨迹优化方法相结合,以确保路径的鲁棒性。此外,制造商还可以在模型试图确定最佳路径时考虑其他目标,如节能。在车辆运行过程中训练神经网络和推理需要巨大的计算能力。直到最近,大多数机器学习任务都是在基于云的基础设施上执行的,计算能力和冷却能力都过大。对于自动驾驶车辆,这不再可能,因为车辆需要能够同时对新数据作出反应。因此,操作车辆所需的部分处理需要在车上进行,而模型改进可以在云端进行。机器学习的最新进展集中在如何有效地处理由自动驾驶车辆上的传感器产生的大量数据以降低计算成本上,使用诸如attention或core set等概念。此外,芯片制造和小型化的进展正在增加计算能力安装在自主车辆上。随着网络协议的进步,汽车可能能够依靠低延迟的基于网络的数据处理来帮助他们进行自主操作。
﹀
﹀
﹀
一辆车是如何根据这些信息行动的?在目前由人类驾驶的汽车中,车辆的转向、制动或信号等动作通常由驾驶员控制。来自驾驶员的机械信号由电子控制单元(ECU)转换为驱动指令,由汽车上的电动或液压执行器执行。目前有少数车型包含线控驱动系统,其中像方向盘柱这样的机械系统被电子系统取代。在(半)自动汽车中,这种功能被直接与ECU通信的驱动控制软件所取代。这可以提供改变车辆结构和减少部件数量的机会,特别是那些专门用于将驾驶员的机械信号转换为ecu的电信号的部件。今天的车辆包含多个ECU,从标准车中的15-20个到高端车中的100个左右。ECU是一个简单的计算单元,有自己的微控制器和内存,它使用这些处理输入数据,将其输入到它控制的子系统的输出命令中,例如移动自动变速箱。一般来说,ecu可以负责控制车辆的操作、安全功能或运行信息娱乐和内部应用程序。大多数ecu支持单一应用程序,如电子动力转向、本地运行算法和处理传感器数据。不断增长的需求和复杂性要求工程师为需要进行传感器融合的系统设计正确的电子体系结构,同时以同步的方式将决策分发给执行指令的较低级别子系统。理论上,在可能的设置的一个极端,可以选择一个完全分布式的架构,其中每个传感单元处理其原始数据并与网络中的其他节点通信。在频谱的另一端,我们有一个集中的体系结构,所有的远程控制单元(RCU)都直接连接到一个中央控制点,该控制点收集所有信息并执行传感器融合过程。在这个频谱的中间是混合解决方案,它将在更高抽象级别工作的中央单元与执行专用传感器处理和/或执行决策算法的域结合起来。这些域可以基于车辆内的位置,例如车辆前部和后部的域、它们控制的功能类型或它们处理的传感器类型(例如摄像头)。在集中式体系结构中,来自不同传感器的测量是独立的量,不受其他节点的影响。数据在系统边缘节点不被修改或过滤,为传感器融合提供了最大可能的信息,并且具有低延迟。面临的挑战是,需要将大量数据传输到中央单位并在那里进行处理。这不仅需要一台功能强大的中央计算机,还需要一个高带宽的重型线束。今天的车辆包含超过一公里的电线,重数十公斤分布式体系结构可以用较轻的电气系统实现,但更复杂。虽然在这种架构中,与带宽和集中处理相关的需求大大减少,但它在驱动和感知阶段之间引入了延迟,并增加了数据验证的挑战。
功率、热管理、重量和尺寸挑战
除了增加系统的复杂性之外,自动化还对车辆部件的功耗、热管理、重量和尺寸提出了挑战。
无论体系结构是分布式的还是集中式的,自动驾驶系统的功率需求都是非常重要的。这方面的主要驱动力是计算需求,对于完全自主的汽车来说,计算需求很容易比目前生产中最先进的汽车高出100倍。
自动驾驶汽车的这种动力饥渴增加了对电池性能和系统中半导体元件性能的要求。对于全电动汽车,行驶里程受到这一电力需求的负面影响。因此,像Waymo和福特这样的一些公司选择专注于混合动力汽车,而Uber则使用全汽油suv车队。然而,专家指出,由于内燃机在产生用于车载计算的电力方面效率低下,全电动最终成为自动驾驶动力系统的首选。
处理需求的增加和更高的功率吞吐量使系统升温。为了使电子部件正常可靠地工作,它们必须保持在一定的温度范围内,而不管车辆的外部条件如何。冷却系统,特别是那些基于液体的冷却系统,可以进一步增加车辆的重量和尺寸。
额外的部件、额外的布线和热管理系统对减轻车辆任何部件的重量、尺寸和热性能都施加了压力。从减少大型部件(如激光雷达)的重量到微型部件(如构成电子电路的半导体部件),汽车部件供应商有很大的动力相应地改变其产品。
半导体公司正在制造占地面积更小、热性能更高、干扰更低的组件,同时实际上提高了可靠性。除了发展各种硅元件,如MOSFET、双极晶体管、二极管和集成电路外,该行业还着眼于使用新型材料。基于氮化镓(GaN)的元件被认为对未来的电子产品有很大的影响。与硅相比,氮化镓能在给定的导通电阻和击穿电压下产生更小的器件,因为它能更有效地传导电子。
要执行所有的算法和进程以实现自动驾驶,需要大量的计算,因此需要强大的处理器。一辆完全自主的汽车可能比迄今为止开发的任何软件平台或操作系统包含更多的代码行。GPU加速处理是目前的行业标准,Nvidia是市场领导者。然而,越来越多的公司正在寻求不同的解决方案;Nvidia的大部分竞争对手都把他们的芯片设计集中在张量处理单元(TPU)上,这加速了张量运算,而张量运算是深度学习算法的核心工作量。另一方面,gpu是为图形处理而开发的,因此阻止了深度学习算法充分利用芯片的能力。
由此可见,随着汽车自动化水平的提高,作为汽车软件的体形都将发生显著变化。除此之外,车辆中更大的自主性也会影响你作为用户将如何与他们互动。