一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

用于自主机器应用的虚拟环境场景和观察器的制作方法

2022-08-21 07:16:32 来源:中国专利 TAG:

用于自主机器应用的虚拟环境场景和观察器


背景技术:

1.在自主或半自主车辆的开发过程中(并且由于此类系统的安全关键性质),能够在大量情况和环境中准确且可靠地测试车辆的功能和性能对于确保车辆安全执行是至关重要的。具体地,测试可以用于验证车辆可以安全地在现实世界环境内操作。测试自主车辆(包括车辆的硬件和/或底层软件)的一种方式是使用模拟环境。例如,可以针对从虚拟表示或变化环境(例如,视觉或虚拟环境、抽象计算环境等)内收集的数据来测试对应于自主或半自主软件栈(诸如用于对象检测、车道和道路边界检测、安全分析、可驾驶自由空间分析、在车辆操纵期间的控制生成等)的一个或更多个抽象表示和/或计算模型(例如,机器学习模型、深度神经网络(dnn)、计算机视觉算法等)。
2.例如,在常规系统中,在测试自主车辆的尝试中,感兴趣的场景可以在虚拟和/或计算环境内被硬编码(或手动创建)。例如,测试者可以尝试通过手动定义虚拟和/或计算环境中的特定场景、交通、代理和/或行动者来对其场景进行编程(例如,使用诸如python、matlab、simulink规范等编程语言)。然而,由于用于验证和校验自主车辆的场景的复杂性,以这种方式创建场景经常导致错误和/或不理解整个域、搜索空间和/或所有可能的测试目标和/或安全关键系统要求(例如,在代码、场景等中)的有意义覆盖范围。此外,因为必须手动地定义每个场景,并且还必须手动地定义场景的任何变化,所以以适合于验证和校验自主系统以实现所需安全水平的规模测试全范围场景的能力是有挑战性的任务。因此,这些常规系统不提供用于容易地定义数百万个感兴趣的角落场景及其变型的直观方法。此外,因为这些常规系统一般依赖于模块级和/或标准应用测试,所以常规系统未能提供对与安全关键系统行为有关的场景的有效端到端评估。


技术实现要素:

3.本公开的实施例涉及使用模拟环境来训练、测试和验证自主机器。公开了允许基于所定义的观察器来生成虚拟环境场景并校验与所生成的环境场景相关的自主机器的功能和性能的系统和方法。
4.与常规系统(诸如以上所描述的那些系统)相比,本公开的系统和方法允许使用声明性描述(例如,声明性范例、一阶逻辑)来定义场景,以实现在模拟校验搜索空间内创建有意义的表示的自动化和算法增强的方式。具体地,感兴趣的行为可以用描述和/或声明性方式来定义,并且本系统的框架然后可以在实施例中自动地将声明性描述转换成过程性描述,该过程性描述可以用于以技术上有意义的方式(例如,覆盖信号的所有等价类、覆盖某些组成中的多个信号的所有相关组合等)来生成所定义的场景的一个或更多个实例和/或变化。这样的变化可以在用户不必手动定义(例如,手动编码)超出场景和评估器和/或观察器的初始声明性描述的任何内容的情况下生成。
5.此外,可以使用声明性描述内的任何级别的细节,并且在省略细节的情况下,系统和/或系统计算引擎可以确定与未定义标准相对应的具体值和/或参数,以便生成一个或更多个场景和/或观察器(包括它们中的很多缩放成数百万)。例如,如果感兴趣的行为涉及汽
车转弯,则声明性描述可能是“汽车向右转弯”。本公开的系统可采取该声明性描述并确定代表来填充在该场景中未明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待条件等)。使用这些各种度量,系统可以构建定义场景的不同变化,对照这些定义场景测试自主车辆的虚拟实例,确定和评估自主系统的功能和/或性能,并将结果反馈至系统以用于生成更准确地符合期望场景的更新场景,和/或更新自主系统的特征或模块(例如,用于被测系统的自我监控或自我修复目的,以提升其自身的功能)。结果,本公开的系统提供了端对端解决方案,用于使用一阶逻辑声明性语言来定义抽象和/或具体场景、评估器/观察器和/或覆盖模型,该一阶逻辑声明性语言可用谓词、计算世界模型或其组合来丰富。
附图说明
6.下面参考附图详细描述用于使用模拟环境来训练、测试和验证自主机器的本系统和方法,其中:
7.图1a是根据本公开的一些实施例的用于基于所定义的观察器生成虚拟环境场景并校验与所生成的虚拟环境场景相关的自主机器的功能和性能的示例系统;
8.图1b包括根据本公开的一些实施例的用于基于所定义的观察器生成虚拟环境场景并校验与所生成的虚拟环境场景相关的自主机器的功能和性能的数据流程图;
9.图2a-2e包括根据本公开的一些实施例的用于生成虚拟环境场景的域本体的表示;
10.图3是示出了根据本公开的一些实施例的用于生成与描述定义的可观察量的可解释描述相关的多个场景的方法的流程图;
11.图4是示出了根据本公开的一些实施例的用于生成和分析与描述定义的可观察量的声明性描述有关的多个场景的方法的流程图;
12.图5是示出了根据本公开的一些实施例的用于生成并评估包括由声明性语言表示的可观察量的多个场景的方法的流程图;
13.图6a-6f包括适用于实施本公开的至少一些实施例的示例性模拟系统的组件、特征和功能的示例图示;
14.图7a是根据本公开的一些实施例的在运行时的模拟系统的示例图示;
15.图7b包括根据本公开的一些实施例的用于模拟系统的基于云的架构;
16.图8a是根据本公开一些实施例的示例自主车辆的图示;
17.图8b是根据本公开的一些实施例的图8a的示例自主车辆的相机位置和视野的示例;
18.图8c是根据本公开的一些实施例的图8a的示例自主车辆的示例系统架构的框图;
19.图8d是根据本公开的一些实施例的用于在基于云的服务器与图8a的示例自主车辆之间通信的系统图;和
20.图9是适合用于实现本公开的一些实施例的示例计算设备的框图。
具体实施方式
21.所公开的系统和方法涉及校验模拟环境中的自主机器或对象的功能和性能。虽然
可相对于示例自主车辆102(在本文中可替代地称为“车辆102”或“本车102”,相对于图8a至图8d描述了其示例)来描述本公开,但是这并非旨在限制。例如,本文所述的系统和方法可由但不限于非自主车辆、半自主车辆(例如,在一个或更多个高级驾驶员辅助系统(adas)中)、机器人、仓库车辆、越野车辆、飞行船只、船、摆渡车、紧急响应车辆、摩托车、电动自行车或机动自行车、飞机、施工车辆、水下船、无人机和/或其他车辆类型使用。此外,尽管本公开可以关于自主驾驶或adas系统进行描述,但是这不旨在是限制性的。例如,本文所述的系统和方法可用于机器人(例如,用于在模拟环境中测试、校验和/或验证机器人系统)、空中系统(例如,用于在模拟环境中测试飞机)、船上系统和/或可采用虚拟或模拟环境中的测试的其他技术领域。
22.设计观察器和评估器
23.现在参见图1a,图1a是根据本公开的一些实施例的用于基于所定义的观察器来生成虚拟环境场景并校验所生成的虚拟环境中的自主机器的功能和性能、游戏环境的性能、场景和其中的虚拟行动者、土木工程和/或街道规划架构、所生成的虚拟环境场景内的挖掘和/或其他工业相关应用和/或用于其他技术或应用空间的示例系统100a。照此,虽然本公开主要相对于虚拟环境中的自主或半自主机器来描述,但是这不旨在是限制性的,并且本文所描述的方法和系统可以在任何技术空间中实现。
24.特别地,关于观察器,可使用可解释的描述来定义观察器。例如,系统100a可用于以描述性和/或声明性方式来定义感兴趣的行为。此外,示例系统100a的框架然后可以将可解释的描述转换成过程描述,所述过程描述可以用于以技术上有意义的方式(例如,覆盖信号的所有等价类、覆盖某个组成中的多个信号的所有相关组合等)来生成所定义的场景的一个或更多个实例和/或变化。在实施例中,该转换可自动执行。在一些示例中,系统100a可包括在此描述的其他系统(诸如图6a-6e、7a-7b和8a-8d的系统)的组件、特征和/或功能中的一些或全部,和/或可包括这些系统的附加和/或替代的组件、特征和功能。应当理解,本文所述的这种和其他布置仅作为示例进行阐述。除了或代替所示的布置和元件,可使用其他布置和元件(例如,机器、接口、功能、次序、功能分组等),并且可完全省略一些元件。进一步,本文描述的许多元件是可以被实现为分立或分布式组件或与其他组件结合、并且以任何合适的组合和位置的功能实体。本文描述为由实体执行的各个功能可由硬件、固件和/或软件执行。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。
25.图1a还包括根据本公开的一些实施例的定义、确定、生成和实现虚拟环境场景的过程118的数据流程图。过程118可包括场景设计器122、场景确定器124、场景生成器126、模拟实施器128和/或分析器132。过程118可包括循环,借此来自分析器132的数据可用于测试自主车辆相对于这些定义的场景的虚拟实例,并确定和评估自动系统的功能和/或性能。例如,该系统可用于确定所定义的场景的覆盖率(例如,在捕捉所提出的行为和/或场景时的功效)、评估所定义的场景的变化、和/或分析检验器在所定义的场景的变化中的(一个或更多个)行为。基于这个分析的结果,在实例中,该系统可以生成更精确地符合所希望的场景的更新场景,使得该自主系统的特征、功能、和/或组件在所希望的场景上被完全测试和校验(例如,出于在测系统的自我监测或自我修复的目的以提升其自身的功能)。
26.(一个或更多个)数据存储120可存储域本体,以基于定义的声明性描述来提供与操作设计域内的行动者行为和关系有关的规范。具体地,这种域本体可以提供模拟环境的
操作设计领域底层的基本概念的术语和分类学。本体可提供可用于表示与模拟环境相关的复杂知识的知识表示手段。例如,本体可以提供与计算模拟对象、模拟对象的分组、管理各个模拟对象之间的交互的关系和规则等相关的信息。域本体表示通常可以使测试系统的模型之间能够语义互操作,并且可以定义可以使用的公理和从公理逻辑推导的事实。
27.场景设计器122可以接收定义自主驾驶校验搜索空间内的场景的声明性描述。这样的声明性描述可以包括声明性范例、一阶逻辑或其他可解释的描述,这些描述能够以自动化和算法增强的方式创建有意义的代表。具体而言,场景设计器122可以接收以描述和/或声明性方式定义的感兴趣行为。此外,可以使用声明性描述内的任何级别的细节。例如,如果感兴趣的行为涉及汽车转弯,则声明性描述可以是“汽车向右转弯”。
28.场景确定器124可包括以技术上有意义的方式生成所定义的场景的一个或更多个实例和/或变化(例如,覆盖信号的所有等价类、覆盖某个组成中的多个信号的所有相关组合等)。例如,场景确定器124可将声明性描述转换成过程性描述。该过程性描述随后可用于生成所定义的场景的一个或更多个实例和/或变化。这样的变化可以在用户不必手动定义(例如,手动编码)超出场景和评估器和/或观察器的初始声明性描述的任何内容的情况下生成。例如,在声明性描述中省去细节或参数的情况下,场景确定器124可确定对应于未定义标准的具体值和/或参数,以便生成一个或更多个场景和/或观察器(包括它们中的很多缩放成数百万)。具体而言,场景确定器124可采取声明性描述(例如,由场景设计器122接收)并确定代表来填充在该场景中未明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待条件等)。使用这些各种度量,场景确定器124可构建所定义的场景的不同变化。
29.场景生成器126可用于生成定义场景的变化。使用由场景确定器124确定的数据,场景生成器126可以以技术上有意义的方式生成所定义的场景的一个或更多个实例和/或变化。这可以包括生成不同物理环境中的场景的变化,具有不同的行动者、不同的路径结构、不同的速度、速率、行动者在环境中的不同移动、不同的静止物体、不同的等待条件、交通等,和/或具有其他差异,这些差异可以尝试在足够的变化中捕获所定义的可观察量以帮助训练自主车辆的底层系统以在任何现实世界场景中安全且有效的操作。
30.模拟实施器128可用于实施所生成的场景。例如,在生成定义场景的不同变化之后(例如,使用场景生成器126),模拟实施器128可运行定义场景的变化。模拟实施器128可用于针对使用场景生成器126生成的定义场景测试自主车辆102、半自主车辆和/或其组件或特征的虚拟实例。
31.分析器132可用于确定和评估自主系统的功能和/或性能。例如,分析器132可评估所生成的场景的准确度、在测系统的准确度、和/或要求和/或测试目标的覆盖率。具体地,在一些实施例中,分析器132可确定所定义的场景的覆盖率(例如,场景实际表现用于生成场景的定义和/或测试目标的程度)。在另外的实施例中,分析器132可以评估所定义的场景的变化(例如,场景是否足够多样以提供对各种可能性的充分测试)。在其他实施例中,分析器132可以分析检验器在所定义的场景的变体中的(一个或更多个)行为。
32.更详细地,分析器132可用于确定定义的场景的覆盖率。具体地,分析器132可以使用覆盖率检验器来评估所定义的场景的变化以确定与所定义的场景相关的测试的完整性。覆盖率检验器可用于基于所定义的场景的变化来分析模拟,并且以此方式,覆盖率收集器
可用于确定与场景相关的控制值是否实际上在模拟中导致期望的可观察量。分析器132可以使用覆盖率检验器来分析所定义的场景的变化,以确认基于变化的模拟实际上按计划运行(例如,包括在声明性描述中和/或在引擎可理解的可解释描述中描述的期望可观察量)。覆盖率可以使用所定义的场景的多少变化满足用户指定的声明性描述的百分比(例如,90%)和/或任何其他关键性能指标(kpi)度量来表示。覆盖率还可指示非覆盖场景的关键性。例如,如果存在90%的覆盖率但是非覆盖场景是非常关键的,则覆盖率检验器可以做出该确定并且提供相同的指示。当覆盖率检验器指示不满足覆盖率时(例如,基于百分比或当非覆盖场景高度关键时),可以运行所定义的场景的额外变化——例如,基于从分析器132到系统中的反馈,该反馈可以基于所识别的问题自动生成。
33.此外,分析器132可用于评估所定义的场景的变化。具体地,分析器132可使用上下文特定的评估器来将功能和性能与预期的行为、预期的参数和/或任何种类的基值(ground truth)进行比较。此外,场景质量度量可用于确定所定义场景的变化有多好(例如,变化是否实现可观察量、变化是否跨不同平台上的多个测试可重用等)。这样的评估器可以在被测系统的执行期间实时地、离线地和/或以以上情况的任何组合来运行。在一些情况下,评估器可以在系统的后台中运行,这可以在任何给定的场景中主动搜索问题或缺陷——例如,在运行时期间。例如,评估器可以用于确定错误的根源。具体地,评估器可用于在模拟运行时获取自主车辆102(或其虚拟表示)的状态,然后可基于预期行为搜索用户指定的声明性描述的目标。在一些实施例中,可以同时运行多个评估器,并且基于这些评估器中的每一个的分析,可以优化搜索空间(例如,以帮助调试,因为可以忽略不是根本原因的其他问题)。
34.进一步,分析器132可用于分析检验器在所定义场景的变化中的行为。检验器可以类似于先前讨论的评估器,除了检验器可以包括基于枚举和/或二进制评估手段之外。例如,检验器可以确定是否发生了某事。具体地,检验器可以添加“断言”,如果发生某事,断言将生成通过标记。检验器可以评估变化以确定在整个场景执行期间条件是否成立(例如,在整个场景执行期间,本车始终与其前面的汽车保持安全距离)。
35.此外,分析器132可评估自主系统的特征、功能或组件(例如,硬件或软件)的个体或组合,并使用来自评估的反馈来更新场景和/或生成虚拟计算环境内的新场景,以进一步或充分测试特征、功能和/或组件,和/或更新自主系统本身(例如,更新dnn或用于重新测试的其他机器学习算法,以提高准确度、更新传感器模型或校准信息等)。具体地,分析器132可以进一步将分析结果反馈至系统100a以用于生成更准确地符合期望的场景的更新场景,和/或更新自主系统的特征或模块(例如,出于被测系统的自我监测或自我修复目的以提升其自身的功能)。
36.现在参见图1b,图1b包括用于基于定义的观察器生成虚拟环境场景并验证与所生成的虚拟环境场景相关的自主机器的功能和性能的过程100b的数据流程图。过程100b可包括场景设计器122,其可除了使用域本体130以外还使用声明性描述来定义场景生成器126的信息。可以使用数据集存储120(例如,处理不可变数据集以供进一步处理的服务)来存储域本体。域本体130可以用于确定与和声明性描述相关的定义和未定义标准对应的具体值和/或参数,以便生成一个或更多个场景和/或观察器。例如,场景确定器124可采取声明性描述(例如,由场景设计器122接收)并访问域本体130以确定代表来填充未在场景中明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待
条件等)。使用所选值(例如,各种度量),可由场景生成器126构建所定义的场景的不同变化。例如,场景生成器126可以使用来自域本体130的选定值来生成定义场景的一个或更多个实例和/或变化。一旦生成了所定义场景的变化(这些变化可以各自包括至少一些不同的选定值),模拟实施器128可以用于使用所定义的场景的变化来运行模拟。
37.在一些实施例中,可以对系统的性能进行评估,并且评估的输出可以用于为用户生成通知或信息。例如,在覆盖率低于期望水平的情况下,该信息可以用图形用户界面(gui)填充(例如,“该模拟的覆盖率是87%)。作为另一个示例,当覆盖率高(例如,高于阈值)但是场景错过关键方面时,该信息可填充在gui中(例如,“覆盖率是90%,但是安全关键测试变化没有被捕获”)。类似地,在自主或半自主车辆的特征的性能不足或充分的情况下,此信息也可被填充在gui内(例如,“用于以低于期望准确度水平的78%准确度执行的对象检测的dnn”)。在填充该信息的任何示例中,性能问题、覆盖未命中等的根本原因也可以由系统(例如,自动地)确定并且在gui内填充(例如,“覆盖率低于阈值覆盖率,但模拟9、17和30不匹配所定义的可观察量”)。在这样的示例中,系统还可以生成新的命令或声明性描述以解决后续或更新的场景中的这些问题。因此,该过程可以包括端到端解决方案,该解决方案可以包括在整个过程中自动校正以及为用户生成信息。
38.域本体
39.域本体200(例如,由在本文中更详细描述的至少本体200a、200b、200c、200d和200e表示)可以涉及定义明确的操作设计域(“odd”)的概念。可能难以精确地和完全地定义odd内的操作要求。例如,常规验证和校验系统不提供odd内的行动者行为和关系的完整规范。进一步,定义行动者与正在进行测试的本车之间的交互可能是困难的。本公开的系统允许使用可观察的期望系统结果(例如,安全地完成特定使命、任务或目标)来定义这样的交互。具体地,可以使用声明性描述和/或一阶逻辑来定义可观察的期望系统结果,如本文所描述的。
40.具体地,本公开的系统可以使用域本体来基于所定义的声明性描述提供与odd内的行动者行为和关系有关的规范。具体地,这种域本体可以提供模拟环境的odd底层的基本概念的术语和分类。本体可提供可用于表示与模拟环境相关的复杂知识的知识表示手段。例如,本体可以提供与计算模拟对象、模拟对象的分组、管理各个模拟对象之间的交互的关系和规则等相关的信息。域本体表示通常可以使测试系统的模型之间能够语义互操作,并且可以定义可以使用的公理和从公理逻辑推导的事实。
41.域本体可以包括代表最普遍(例如,抽象)概念的上部本体,该概念在与自主车辆域相关的其他更专业的下级本体(例如,地图、行动者、控件等)的下面。通常,实体可以是存在于计算模拟环境中的任何事物。对于非限制性示例,实体可以被划分为实例(你的汽车,我的suv)和通用或类型(汽车,suv)。进一步,连续体可以是在维持其身份时随着时间持续、持久、或持续存在的实体。在实施例中,连续体还可以包括空间区域。材料实体(例如,连续体)可以保持其身份,即使在获得和失去物质部分时也是如此。这样,可以将连续体与可以在连续的时间部分或阶段中自身展开的发生体进行对比。在这个意义上,连续体可不包括时间部分。实体可通过实例和类型两者级别的关系来链接。
42.以这种方式,计算引擎中的域本体表示可以包括与模拟环境的不同方面有关的各种本体。每个本体可以包括层级类别和/或对象集合。关于这些层级类别或对象集合,本体
可以定义相关属性和特征(例如,层级类别或对象集合的属性)。本体可以进一步定义对象之间的关系和角色以及公理,公理约束与分层类别或对象集合有关的概念或角色。例如,每个本体可以包括原始概念(例如,对象、活动、活动发生、时间点等)、约束、函数(例如,开始、结束)和关系(发生、参与、之间、之前、存在、发生)。包括域本体的本体可以包括行动者本体、地图本体、环境本体、控制本体、和/或其他本体,诸如但不限于在此描述的那些。
43.作为示例,并且参照图2a,图2a描述了本公开的系统可以关于所期望的场景和/或观察器的声明性描述如何利用域本体。声明性描述202可用于描述期望的场景、观察器和/或评估器。在一些实施例中,声明性描述202可以使用一阶逻辑来描述,并且通常可以描述在特定时间和空间中并行和/或顺序发生的可观察量。以此方式,声明性描述202可定义域本体200a中的至少第一层。该第一层可以描述时间上或特定空间中的特定时刻,并且可以是非域特定的(例如,自主设备、自主机器人、智能设备等)。域本体200a中的下一个第二层可以是自主机器特定204,并且可以基于与自主机器相关的谓词和功能。这些谓词和功能可以是在特定时间或或地图上的特定空间中描述某些事实(例如,可观察的)的原语。域本体200a中的第三层然后可以将所引用的原语拼接在一起,并且如此,可以是属性特定层206,其中可以指定行为。
44.可以使用这些层(和/或额外或替代层)使得当用户在最顶层中指定期望场景的声明性描述时,该系统可以采取该声明性描述并将其反转。例如,该系统可使用下一层(例如,自主车辆特定层204)将用户指定的声明性描述(例如,声明性描述202)分解成其组成部分(例如,原语)。由此,系统可以开始评估那些原语(例如,使用属性特定层206)。例如,系统可以通过时间序列数据扫描时间变量,然后根据用户指定的声明性描述评估定义的信息。
45.参照图2b-2e,图2b-2e描述了具体示例域本体。图2b描述了示例性行动者本体200b。行动者本体200b可以包括静态和/或动态行动者。静态行动者可以包括(例如,模拟环境的)地图上不改变或不移动的对象,诸如基础设施、屏障、建筑物、分隔物、车道、交叉口、交通信号、道路标志等。动态行动者可以包括地图上改变和/或移动的对象。这种改变和/或移动可以是自发的或基于外力或场景命令的影响。动态行动者的示例可包括本车的部件(例如,传感器、机械部件、计算部件)、环境中的其他对象(例如,人、动物、不同类型的车辆)等。
46.图2c描绘了示例道路网络本体200c。道路网络本体200c可包括路径结构信息。这种路径结构信息的示例包括车道的数量、曲率、等待条件的位置或等待条件的类型中的至少一个。
47.图2d描绘了示例环境本体200d。环境本体200d可以包括与环境相关的信息。这样的环境信息的示例包括天气条件(例如,太阳、云、雪、温度等)和可见度条件(例如,照明、雾等)。
48.图2e描绘了示例控制本体200e。控制本体200e可以包括控制信息。该控制信息可涉及场景内自主车辆的具体路线、任务、路径或轨迹。这种控制信息的示例包括至少一个驾驶命令、交通信号、目的地、地图位置等。
49.现在参照图3、图4和图5,本文中描述的方法300、400和500的每个框包括可使用硬件、固件和/或软件中的任一个或组合执行的计算过程。例如,各个功能可以通过处理器执行存储在存储器中的指令来实现。所述方法还可实施为存储于计算机存储介质上的计算机
可用指令。仅举几例,所述方法可由独立应用、服务或托管服务(独立或与其他托管服务组合)或到另一产品的插件提供。此外,举例来说,相对于图1a的系统100a、图6a-6c的模拟系统600和图7a-7b的模拟系统700来描述方法300、400和500。然而,这些方法可以另外地或可替代地由任何一个系统或系统的任何组合来执行,这些系统包括但不限于在此描述的那些系统。
50.图3是示出了根据本公开的一些实施例的用于生成与描述定义的可观察量的可解释描述相关的多个模拟场景的方法300的流程图。在框b302处,方法300包括接收描述定义的可观察量的可解释描述。例如,场景设计器122可以接收定义自主驾驶校验搜索空间内的场景的可解释的描述。在一些实施例中,场景设计器122可以接收以描述和/或声明性方式定义的感兴趣行为。在一些示例中,可解释的描述可以表示声明性范例、一阶逻辑或其他可解释的描述,其能够以自动化和算法增强的方式创建有意义的代表。
51.在框b304处,方法300包括确定路径结构信息和动态行动者信息。例如,场景确定器124可采取声明性描述(例如,由场景设计器122接收)并访问域本体130。域本体130可用于确定路径结构信息和动态行动者信息。该路径结构信息和动态行动者信息可用于确定代表来填充声明性描述中未明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待条件等)。在实施例中,可以使用道路网络本体200c来确定路径结构信息。道路网络本体200c可包括路径结构信息,该路径结构信息包括车道数量、曲率、等待条件位置或等待条件类型中的至少一个。在实施例中,动态行动者信息可使用行动者本体200b来确定。行动者本体200b可包括静态行动者(地图上不改变或移动的对象,诸如基础设施)和动态行动者(地图上改变和/或移动的对象)。
52.在框b306处,方法300包括生成表示与可解释描述相关的多个场景的数据。例如,至少部分基于从域本体130接收的路径结构信息和动态行动者信息,场景确定器124可以生成表示多个场景的数据。例如,场景确定器124可采取声明性描述(例如,由场景设计器122接收)并访问域本体130以确定代表来填充未在场景中明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待条件等)。使用所选择的值(例如,各种度量),可以建立所定义的场景的不同变化。
53.在框b308处,方法300至少部分地基于该数据生成多个场景。场景生成器126可以用于生成所定义的场景的变化。例如,场景生成器126可以使用来自域本体130的选定值来生成与定义场景相关的多个场景。
54.图4是示出了根据本公开的一些实施例的用于生成和分析与描述定义的可观察量的声明性描述有关的多个场景的方法400的流程图。例如,在一些实施例中,方法400可以用于确定与期望的可观察量相关的功能和性能的准确度。在另外的实施例中,方法400可用于鉴于期望的可观察量来确定覆盖率值。在框b402处,方法400包括接收期望的可观察量的声明性描述。例如,场景设计器122可以接收定义自主驾驶校验搜索空间内的场景的声明性描述。在一些实施例中,声明性描述可指示以描述和/或声明性方式定义的感兴趣的行为。
55.在框b404处,方法400包括确定用于生成与模拟系统内的可观察量相关的多个场景的命令。例如,可以使用与用于校验自主车辆的模拟环境相关的域本体来确定命令。进一步,可以至少部分地基于声明性描述来确定命令。例如,场景确定器124可采取声明性描述(例如,由场景设计器122接收)并访问域本体130。域本体130可用于确定命令,其中命令可
涉及确定代表以填充在声明性描述中未明确定义的不同度量(例如,交通、转弯速度、激进驾驶、车辆数量、车辆类型、建筑物位置、树、等待条件等)。
56.在框b406处,方法400包括生成多个场景。例如,场景生成器126可以用于生成所定义的场景的变化。例如,场景生成器126可以使用来自域本体130的信息生成与所定义的场景相关的多个场景。
57.在框b408处,方法400包括运行多个场景的模拟。例如,模拟实施器128可用于实施所生成的场景。在(例如,使用场景生成器126)生成定义场景的不同变化之后,模拟实施器128可运行定义场景的变化。模拟实施器128可用于针对使用场景生成器126生成的定义场景测试自主车辆的虚拟实例。
58.在框b410处,方法400包括鉴于期望的可观察量,基于对多个场景的分析来确定被测系统的功能和性能的准确度。例如,分析器132可以用于鉴于期望的可观察量,基于多个场景来确定功能和性能的准确度或精度。具体地,分析器132可使用上下文特定的评估器来将功能和性能与预期的行为、预期的参数和/或任何种类的基值进行比较。此外,分析器132可使用一个或更多个场景质量度量来确定所定义的场景的变化有多好(例如,变化是否实现可观察量、变化是否跨不同平台上的多个测试可重用等)。
59.在框b412处,方法400包括鉴于期望的可观察量基于多个场景来确定用于选择元素的覆盖率值。例如,分析器132可以使用覆盖率检验器来评估所定义的场景的变化以确定与所定义的场景相关的测试的完整性。分析器132可以使用覆盖率检验器来分析所定义的场景的变化,以确认基于变化的模拟实际上按计划运行(例如,包括在声明性描述中和/或在引擎可理解的可解释描述中描述的期望可观察量)。
60.图5是示出了根据本公开的一些实施例用于生成和评估包括由声明性语言表示的可观察量的多个场景的方法500的流程图。在框b502处,方法500包括访问与用于测试自主车辆的模拟环境相关的域本体。例如,域本体130可以包括模拟环境的操作设计领域底层的基本概念的术语和分类。
61.在框b504处,方法500包括基于场景的声明性语言描述从域本体选择值。例如,场景确定器124可采取场景的声明性描述并访问域本体130。域本体130可用于确定对应于与场景的声明性描述相关的定义和/或未定义标准的具体值和/或参数。
62.在框b506处,方法500包括在模拟环境内生成包括由声明性语言表示的可观察量的多个场景。例如,场景生成器126可用于生成多个场景。例如,场景生成器126可以使用来自域本体130的信息生成包括由声明性语言表示的可观察量的多个场景。
63.在框b508处,方法500包括通过模拟环境内的多个场景执行虚拟自主车辆的至少一个特征的模拟。例如,模拟实施器128可用于实施所生成的场景。在(例如,使用场景生成器126)生成定义场景的不同变化之后,模拟实施器128可运行定义场景的变化。模拟实施器128可用于针对使用场景生成器126生成的定义场景来测试自主车辆的虚拟实例和/或自主车辆的实际硬件或软件(例如,hil或sil)。
64.在框b510处,方法500包括在模拟期间评估至少一个特征的性能。例如,分析器132可用于在模拟期间评估自主车辆102(或其虚拟表示)的至少一个特征、功能和/或组件(例如,硬件或软件)的性能。
65.模拟系统
66.例如,由在本文中更详细描述的模拟系统600a、600b、600c和600d表示的模拟系统600可生成模拟虚拟世界或环境(例如,模拟环境)的全局模拟,该虚拟世界或环境可包括人工智能(ai)车辆或其他对象(例如,行人、动物等)、环内硬件(hil)车辆或其他对象、环内软件(sil)车辆或其他对象、和/或环内人员(pil)车辆或其他对象。全局模拟可以维持在引擎(例如,游戏引擎)或其他软件开发环境内,其可以包括渲染引擎(例如,用于2d和/或3d图形)、物理引擎(例如,用于冲突检测、冲突响应等)、声音、脚本、动画、ai、联网、流传输、存储器管理、线程、定位支持、场景图形、电影和/或其他特征。在一些示例中,如本文所描述的,模拟系统600内的一个或更多个车辆或对象(例如,hil对象、sil对象、pil对象、ai对象等)可被保持在它们自己的引擎实例内。在这样的示例中,每个虚拟对象的每个虚拟传感器可以包括它们自己的引擎实例(例如,虚拟相机的实例、虚拟lidar传感器的第二实例、另一虚拟lidar传感器的第三实例等)。这样,引擎的实例可以用于相对于传感器对全局模拟的感知来处理每个传感器的传感器数据。照此,对于虚拟相机,实例可以用于相对于相机在模拟环境中的视场处理图像数据。作为另一示例,对于imu传感器,实例可以用于处理在模拟环境中对象的imu数据(例如,表示取向)。
67.ai(例如,机器人)车辆或其他对象可包括行人、动物、第三方车辆、车辆和/或其他对象类型。模拟环境中的ai对象可使用人工智能(例如,机器学习,诸如神经网络、基于规则的控制、其组合等)以模拟或仿真相应的现实世界对象将如何表现的方式来控制。在一些示例中,ai对象的规则或动作可以从一个或更多个hil对象、sil对象和/或pil对象学习。在模拟环境中的ai对象(例如,机器人)对应于行人的示例中,机器人可以被训练为在多个不同场景或环境(例如,跑步、步行、慢跑、不关注、在电话、下雨、下雪、在城市、在郊区、在农村社区等)中的任意场景或环境中像行人一样行动。照此,当模拟的环境用于测试车辆性能(例如,对于hil或sil实施例)时,机器人(例如,行人)可能会像现实世界的行人一样行事(例如,通过在下雨或黑暗条件下乱穿马路、未能注意停止标志或交通灯等),以便更准确地模拟现实世界环境。该方法可以用于模拟环境中的任何ai机器人,诸如车辆、骑自行车者或摩托车,其ai机器人也可以被训练成表现得像现实世界的对象那样(例如,穿梭进出车流、转弯、无信号或突然改变车道、意外刹车等)。
68.可以远离感兴趣的车辆(例如,在模拟环境中的本车)的ai对象可以以简化的形式表示,例如,径向距离函数,或者平面中的已知位置处的点的列表,具有相关联的瞬时运动矢量。照此,可以对ai对象进行建模,与如何在视频游戏引擎中对ai代理进行建模类似。
69.hil车辆或对象可以使用在物理车辆或对象中使用的硬件,以至少帮助模拟环境中的hil车辆或对象的一些控制。例如,在hil环境中控制的车辆可在用于在模拟环境中控制车辆的数据流回路中使用一个或更多个soc 804(图8c)、cpu 818、gpu 820等。在一些示例中,来自车辆的硬件可以是nvidia drive agx计算平台和/或nvidia drive px计算平台。例如,车辆硬件(例如,车辆硬件104)可以包括在2018年11月9日提交的美国非临时申请no.16/186,473中所描述的部件和/或功能性中的一些或全部,其通过引用全文并入本文。在这样的示例中,可以使用被配置为用于安装在现实世界自主车辆(例如,车辆102)内以执行(一个或更多个)软件栈642(例如,自主驾驶软件栈)的至少一部分的硬件来生成控制决策中的至少一些。
70.sil车辆或对象可以使用软件来模拟或仿真来自hil车辆或对象的硬件。例如,代替使用可以被配置成用于在物理车辆(例如,车辆102)中使用的实际硬件,软件、硬件或其组合可以用于模拟或仿真实际硬件(例如,模拟soc 804)。
71.pil车辆或对象可使用允许远程操作者(例如,人、机器人等)在模拟环境内控制pil车辆或对象的一个或更多个硬件组件。例如,人或机器人可使用远程控制系统(例如,包括一个或更多个踏板、方向盘、vr系统等)来控制pil车辆,诸如于2019年3月27日提交的美国非临时申请no.16/366,506描述的远程控制系统,并且特此将其通过引用全文并入本文。在一些示例中,远程操作者可使用vr头盔和cpu(例如,x86处理器)、gpu或它们的组合来控制自动驾驶等级0、1或2(例如,根据汽车工程师协会文档j3016)的虚拟车辆。在其他示例中,远程操作者可控制使用一个或更多个高级soc平台建模的高级ai辅助的2级、3级或4级车辆。在一些示例中,pil车辆或对象可以被记录和/或跟踪,并且记录和/或跟踪数据可以用于训练或以其他方式至少部分地有助于ai对象(如在此描述的那些)的控制。
72.现在参考图6a,图6a是根据本公开的一些实施例的模拟系统600a的示例图示。模拟系统600a可以生成模拟环境610,该模拟环境可以包括ai对象612(例如,ai对象612a和612b)、hil对象614、sil对象616、pil对象618、和/或其他对象类型。模拟环境610可包括驾驶环境的特征,诸如道路、桥梁、隧道、街道标志、停车灯、人行道、建筑物、树木和树叶、太阳、月亮、反射、阴影等,以努力在模拟环境610内准确地模拟现实世界环境。在一些示例中,在模拟环境610内的驾驶环境的特征可以通过包括碎片、油漆、涂鸦、磨损和撕裂、损坏等而更真实。虽然关于驾驶环境进行了描述,但是这不旨在是限制性的,并且模拟的环境可以包括室内环境(例如,用于机器人、无人机等)、空中环境(例如,用于uav、无人机、飞机等)、水上环境(例如,用于小船、大船、潜水艇等)和/或另一种环境类型。
73.可使用虚拟数据、现实世界数据或其组合来生成模拟环境610。例如,所模拟的环境可包括使用虚拟数据增强或改变以产生组合数据的现实世界数据,所述组合数据可用以模拟具有不同和/或添加的元素(例如,附加ai对象、环境特征、天气条件等)的某些场景或情形。例如,预记录视频可被增强或改变以包括附加行人、障碍物等,使得虚拟对象(例如,执行作为hil对象和/或sil对象的(一个或更多个)软件栈642)可针对现实世界数据中的变化来测试。
74.可使用光栅化、光线追踪、使用诸如生成对抗网络(gan)之类的dnn、另一渲染技术和/或其组合来生成模拟的环境。例如,为了创建更真实、现实的照明条件(例如,阴影、反射、眩光、全局照明、环境遮挡等),模拟系统600a可以使用实时光线追踪。在一个或更多个实施例中,模拟系统600a可以使用一个或更多个硬件加速器来执行实时光线追踪。光线追踪可以用于模拟lidar传感器用于lidar数据的准确生成。例如,可以使用光线投射来试图模拟lidar反射率。在任何示例中,由模拟系统600a使用的光线追踪技术可以包括以下所描述的一种或更多种技术:2018年3月17日提交的美国临时专利申请no.62/644385,2018年3月17日提交的美国临时专利申请no.62/644386,2018年3月19日提交的美国临时专利申请no.62/644601和2018年3月19日提交的美国临时申请no.62/644806,2019年3月15日提交的美国非临时专利申请no.16/354983和/或2019年3月15日提交的美国非临时专利申请no.16/355214,每个申请特此通过引用以其全文并入在此。
75.在一些示例中,可以至少部分地使用诸如生成对抗神经网络(gan)之类的一个或
更多个dnn来呈现所模拟的环境。例如,可收集现实世界数据,诸如由自主车辆(例如,相机、lidar传感器、radar传感器等)、机器人和/或其他对象捕捉的现实世界数据,以及可由任何传感器捕捉的现实世界数据(例如,从数据存储、诸如搜索引擎等在线资源拉取的图像或视频)。现实世界数据然后可被分段、分类和/或归类,诸如通过基于类别标记现实世界数据的不同部分(例如,对于风景的图像,图像的部分-诸如像素或像素组-可被标记为汽车、天空、树、道路、建筑物、水、瀑布、车辆、公共汽车、卡车、轿车等)。gan(或其他dnn)可随后使用分段、分类和/或归类的数据来训练以生成不同类型的对象、风景和/或作为模拟环境内的图形的其他特征的新版本。
76.模拟系统600的(一个或更多个)模拟器组件602可以通过有线和/或无线连接与车辆模拟器组件606通信。在一些示例中,连接可以是使用一个或更多个传感器开关608的有线连接,其中传感器开关可以提供低压差分信号(lvds)输出。例如,传感器数据(例如,图像数据)可以通过模拟器组件602和车辆模拟器组件606之间的hdmi到lvds连接来传输。模拟器组件602可以包括互连的任何数量的计算节点(例如,计算机、服务器等)以便确保世界状态的同步。在一些示例中,如本文所描述的,计算节点中的每个(例如,车辆模拟器组件计算节点和模拟器组件计算节点)之间的通信可以由分布式共享存储器(dsm)系统(例如,图6c的dsm624)使用分布式共享存储器协议(例如,一致性协议)来管理。dsm可以包括硬件(高速缓存一致性电路、网络接口等)和软件的组合。该共享存储器架构可以将存储器分成在节点和主存储器之间分布的共享部分,或者在所有节点之间分布所有存储器。在一些示例中,可以使用无限带宽(ib)接口和相关联的通信标准。例如,在模拟系统600(和/或600)的不同节点之间和之中的通信可以使用ib。
77.模拟器组件602可以包括一个或更多个gpu 604。被模拟的虚拟车辆可以包括任何数量的传感器(例如,虚拟或模拟传感器),这些传感器可以对应于在此至少关于图8a-8c描述的一个或更多个传感器。在一些示例中,车辆的每个传感器可以对应于gpu 604之一或者由gpu 604之一托管。例如,lidar传感器的处理可在第一gpu 604上执行,广角相机的处理可在第二gpu 604上执行,radar传感器的处理可在第三gpu上执行,等等。照此,每个传感器相对于模拟环境的处理可以能够使用多个gpu 604与每个其他传感器并行地执行以实现实时模拟。在其他示例中,两个或更多个传感器可以对应于gpu 604中的一个或者由gpu 604中的一个托管。在这些示例中,两个或更多个传感器可由gpu 604上的单独线程处理,且可并行地处理。在其他示例中,用于单个传感器的处理可分布在多于一个gpu上。作为gpu 604的补充或替代,一个或更多个tpu、cpu和/或其他处理器类型可用于处理传感器数据。
78.(一个或更多个)车辆模拟器组件606可以包括对应于在模拟的环境610中表示的单个车辆的模拟系统600a的计算节点。每个其他车辆(例如,614、618、616等)可以包括模拟系统的相应节点。因此,模拟系统600a可以可扩展至任何数量的车辆或对象,因为每个车辆或对象可以由系统600a中的其自身的节点托管或管理。在图6a的图示中,车辆模拟器组件606可以对应于hil车辆(例如,由于使用车辆硬件104)。然而,这不旨在是限制性的,并且如图6b和图6c所示,模拟系统600可包括sil车辆、hil车辆、pil车辆和/或ai车辆。(一个或更多个)模拟器组件602(例如,模拟器主机设备)可以包括模拟系统600a的一个或更多个计算节点,并且可以托管关于每个行动者(例如,关于每个hil、sil、pil和ai行动者)的环境的模拟,以及托管环境或世界状态(例如,道路、标志、树、叶、天空、太阳、照明等)的渲染和管理。
在一些示例中,(一个或更多个)模拟器组件602可以包括可以托管模拟器(例如,nvidia的星座av模拟器)的(一个或更多个)服务器和相关联的组件(例如,(一个或更多个)cpu、(一个或更多个)gpu、计算机等)。
79.如本文中描述的,车辆硬件104可以对应于可以在物理车辆102中使用的图1的车辆硬件104。然而,在模拟系统600a中,车辆硬件104可以并入车辆模拟器组件606中。因此,因为车辆硬件104可以被配置成用于安装在车辆102内,所以模拟系统600a可以具体地被配置成使用模拟系统600a的(例如,服务器平台的)节点内的车辆硬件104。例如,在物理车辆102中使用的类似接口可能需要由(一个或更多个)车辆模拟器组件606使用以与车辆硬件104通信。在一些示例中,接口可以包括:(1)can接口,包括pcan适配器;(2)以太网接口,包括具有全部保留的ip地址、来源、vla和/或源ip的raw udp套接字;(3)串行接口,具有usb到串行适配器;(4)相机接口;(5)无限带宽(ib)接口;和/或其他接口类型。
80.在任何示例中,一旦已经生成和/或处理了表示在模拟环境中的车辆的传感器的视场的传感器数据(例如,使用如在此所描述的一个或更多个编解码器),传感器数据(和/或编码的传感器数据)就可以由在车辆硬件104上执行的软件栈642(例如,自主驾驶软件栈)用于执行一个或更多个操作(例如,生成一个或更多个控制、路线规划、检测对象、识别可驾驶自由空间、监测环境以便避免障碍物等)。因此,由车辆102(例如,物理车辆)使用以在现实世界环境中执行自主驾驶软件栈的相同或基本上相同的硬件组件可用于在模拟环境610中执行自主驾驶软件栈。因此,在模拟系统600a中使用车辆硬件104提供了车辆102在现实世界情况、场景和环境中将如何执行的更准确的模拟,而不必在现实世界中实际发现和测试车辆102。这可减少测试物理车辆102中所使用的硬件/软件组合所需的驾驶时间量,并且可通过不要求实际现实世界测试来降低安全风险(尤其是对于危险情况,诸如不规律地或以不安全速度驾驶的其他车辆、街道上玩耍的儿童、桥梁上的冰等)。
81.除了车辆硬件104之外,(一个或更多个)车辆模拟器组件606还可以使用诸如计算机(例如,x86盒)的额外硬件来管理车辆(或其他对象)的模拟。在一些示例中,可使用车辆模拟组件606来执行虚拟对象的虚拟传感器的额外处理。在这样的示例中,至少一些处理可以由(一个或更多个)模拟器组件602执行,并且其他处理可以由(一个或更多个)车辆模拟器组件606(或620或622,如本文所描述的)执行。在其他示例中,虚拟传感器的处理可以完全在车辆模拟器组件606上执行。
82.现在参考图6b,图6b是根据本公开的一些实施例的模拟系统600b的另一个示例图示。模拟系统600b可以包括模拟器组件602(作为一个或更多个计算节点)、hil对象的车辆模拟器组件606(作为一个或更多个计算节点)、sil对象的车辆模拟器组件620(作为一个或更多个计算节点)、pil对象的车辆模拟器组件606(作为一个或更多个计算节点)、和/或ai对象和/或其他对象类型的额外组件(或计算节点)。pil、hil、sil、ai和/或其他对象类型计算节点中的每一个可以与模拟器组件602通信以从全局模拟至少捕获对应于模拟环境610内的相应对象的数据。
83.例如,(一个或更多个)车辆模拟器组件622可以从由(一个或更多个)模拟器组件602托管的(例如,由模拟环境610表示的)全局模拟接收(例如,检索、获得等)与(一个或更多个)车辆模拟器组件622对应、与(一个或更多个)车辆模拟器组件622相关联和/或由(一个或更多个)车辆模拟器组件622执行针对pil对象的车辆模拟器组件622的一个或更多个
操作所需的数据。在这样的示例中,可以从模拟器组件602接收对应于pil对象的每个传感器的数据(例如,对应于虚拟车辆的虚拟相机的视场的虚拟传感器数据、虚拟lidar数据、虚拟radar数据、虚拟位置数据、虚拟imu数据等)。该数据可以用于生成对应于由远程操作者控制的虚拟车辆的远程操作者的视场的模拟环境的实例,并且模拟环境的该部分可以投影在显示器(例如,vr头戴设备的显示器、计算机或电视显示器等)上,用于辅助远程操作者通过模拟环境610控制虚拟车辆。由远程操作者使用车辆模拟器组件622生成或输入的控制可以被传输至模拟器组件602用于更新模拟环境610内的虚拟车辆的状态。
84.作为另一示例,(一个或更多个)车辆模拟器组件620可以从(一个或更多个)模拟器组件602托管的全局模拟接收(例如,检索、获得等)对应于(一个或更多个)车辆模拟器组件620、与(一个或更多个)车辆模拟器组件620相关联和/或由(一个或更多个)车辆模拟器组件620针对sil对象执行车辆模拟器组件620的一个或更多个操作所需的数据。在这样的示例中,对应于sil对象的每个传感器的数据(例如,对应于虚拟车辆的虚拟相机的视场的虚拟传感器数据、虚拟lidar数据、虚拟radar数据、虚拟位置数据、虚拟imu数据等)可以从模拟器组件602接收。该数据可以用于针对每个传感器生成模拟环境的实例(例如,来自虚拟车辆的第一虚拟相机的视场的第一实例、来自第二虚拟相机的视场的第二实例、来自虚拟lidar传感器的视场的第三实例等)。模拟环境的实例因此可用于通过车辆模拟器组件620生成每个传感器的传感器数据。在一些示例中,可使用一个或更多个编解码器(例如,每个传感器可使用其自身的编解码器,或者每个传感器类型可使用其自身的编解码器)来编码传感器数据,以便生成可对于由车辆模拟器组件620模拟或仿真的自主驾驶软件栈理解或熟悉的编码传感器数据。例如,第一车辆制造商可使用第一类型的lidar数据,第二车辆制造商可使用第二类型的lidar数据等,且因此编解码器可根据制造商所使用的传感器数据的类型来定制传感器数据。因此,模拟系统600可以是通用的、可定制的和/或可由任何数量的不同传感器类型使用的,这取决于传感器的类型和不同制造商所使用的相应数据类型。在任何示例中,传感器数据和/或编码的传感器数据可以由自主驾驶软件栈使用以执行一个或更多个操作(例如,对象检测、路径规划、控制确定、致动类型等)。例如,传感器数据和/或编码数据可用作对自主驾驶软件栈的一个或更多个dnn的输入,并且一个或更多个dnn的输出可用于更新虚拟车辆在模拟环境610内的状态。照此,包括一个或更多个dnn的自主驾驶软件栈的可靠性和有效性可在模拟环境内被测试、微调、验证和/或校验。
85.在又一示例中,(一个或更多个)车辆模拟器组件606可以从由(一个或更多个)模拟器组件602托管的全局模拟接收(例如,检索、获得等)对应于(一个或更多个)车辆模拟器组件606、与(一个或更多个)车辆模拟器组件606相关联和/或由(一个或更多个)车辆模拟器组件606针对hil对象执行车辆模拟器组件606的一个或更多个操作所需的数据。在这样的示例中,对应于hil对象的每个传感器的数据(例如,对应于虚拟车辆的虚拟相机的视场的虚拟传感器数据、虚拟lidar数据、虚拟radar数据、虚拟位置数据、虚拟imu数据等)可以从模拟器组件602接收。该数据可以用于针对每个传感器生成模拟环境的实例(例如,来自虚拟车辆的第一虚拟相机的视场的第一实例、来自第二虚拟相机的视场的第二实例、来自虚拟lidar传感器的视场的第三实例等)。模拟环境的实例因此可用于由车辆模拟器组件620生成每个传感器的传感器数据。在一些示例中,可以使用一个或更多个编解码器(例如,每个传感器可以使用其自身的编解码器,或者每个传感器类型可以使用其自身的编解码
器)对传感器数据进行编码,以便生成可以对在车辆模拟器组件620的车辆硬件104上执行的自主驾驶软件栈理解或熟悉的经编码的传感器数据。类似于在此描述的sil对象,传感器数据和/或编码的传感器数据可以被自主驾驶软件栈用于执行一个或更多个操作(例如,对象检测、路径规划、控制确定、致动类型等)。
86.现在参照图6c,图6c是根据本公开的一些实施例的模拟系统600c的另一示例图示。模拟系统600c可以包括分布式共享存储器(dsm)系统624、模拟器组件602(作为一个或更多个计算节点)、hil对象的车辆模拟器组件606(作为一个或更多个计算节点)、sil对象的车辆模拟器组件620(作为一个或更多个计算节点)、pil对象的车辆模拟器组件606(作为一个或更多个计算节点)、和/或ai对象和/或其他对象类型(未示出)的额外组件(或计算节点)。模拟系统600c可包括任何数量的hil对象(例如,各自包括其自己的车辆模拟器组件606)、任何数量的sil对象(例如,各自包括其自己的车辆模拟器组件620)、任何数量的pil对象(例如,各自包括其自己的车辆模拟器组件622)和/或任何数量的ai对象(未示出,但可取决于实施例由(一个或更多个)模拟组件602和/或单独的计算节点托管)。
87.(一个或更多个)车辆模拟器组件606可以包括可以被配置用于在物理车辆内安装和使用的一个或更多个soc 804(或其他组件)。如此,如在此所描述的,模拟系统600c可以被配置成通过使用特定接口来与soc 804和/或其他车辆硬件通信来使用soc 804和/或其他车辆硬件104。(一个或更多个)车辆模拟器组件620可以包括一个或更多个软件实例630,其可以被托管在一个或更多个gpu和/或cpu上以模拟或仿真(一个或更多个)soc 804。除了可以由远程操作者使用的组件(例如,键盘、鼠标、操纵杆、监视器、vr系统、方向盘、踏板、车载组件,诸如灯开关、闪光灯、(一个或更多个)hmi显示器等、和/或(一个或更多个)其他组件)之外,(一个或更多个)车辆模拟器组件622还可以包括一个或更多个soc 626、(一个或更多个)cpu 628(例如,x86框)、和/或其组合。
88.(一个或更多个)模拟组件602可以包括任何数量的cpu 632(例如,x86框)、(一个或更多个)gpu和/或其组合。cpu 632可以托管用于维护全局模拟的模拟软件,并且gpu 634可以用于渲染、物理和/或用于生成模拟的环境610的其他功能。
89.如本文所描述的,模拟系统600c可以包括dsm 624。dsm 624可以使用一个或更多个分布式共享存储器协议来使用对象(例如,hil对象、sil对象、pil对象、ai对象等)中的每一个的状态维护全局模拟的状态。这样,对应于车辆模拟器组件606、620和/或622的计算节点中的每一个可以经由dsm 624与模拟组件602通信。通过使用dsm 624和相关的协议,实时模拟是可能的。例如,与在大型多人在线(mmo)游戏中如何使用网络协议(例如,tcp、udp等)相反,模拟系统600可以使用分布式共享存储器协议来实时地维护全局模拟的状态和模拟的每个实例(例如,通过每个车辆、对象和/或传感器)。
90.现在参照图6d,图6d是根据本发明的一些实施例的环内硬件配置的示例图示。一个或更多个车辆模拟器组件606可以包括如在此所描述的车辆硬件104,并且可以包括一个或更多个计算机636、一个或更多个gpu(未示出)、和/或一个或更多个cpu(未示出)。计算机636、gpu和/或cpu可以管理或托管在车辆模拟器组件606上执行的模拟软件638或其实例。车辆硬件104可以执行(一个或更多个)软件栈642(例如,自主驾驶软件栈、ix软件栈等)。
91.如在此所描述的,通过使用车辆硬件104,模拟环境600内的其他车辆模拟器组件606可能需要被配置成用于与车辆硬件104进行通信。例如,因为车辆硬件104可以被配置成
用于安装在物理车辆(例如,车辆102)内,所以车辆硬件104可以被配置成通过在计算环境中(例如,在基于服务器的平台中、在通用计算机等中)不标准的一种或更多种连接类型和/或通信协议进行通信。例如,车辆硬件104可以使用can接口、lvds接口、usb接口、以太网接口、无限带宽(ib)接口、和/或其他接口以与物理车辆的其他组件传送信号。如此,在模拟系统600中,车辆模拟器组件606(和/或模拟系统600的其他组件,作为车辆模拟器组件606的补充或替代)可能需要被配置为与车辆硬件104一起使用。为了实现这一点,一个或更多个can接口、lvds接口、usb接口、以太网接口和/或其他接口可以用于提供车辆硬件104与模拟系统600的其他组件之间的通信(例如,通过一个或更多个通信协议,诸如lvds)。
92.在一些示例中,可以对应于模拟系统600内的(一个或更多个)车辆模拟器组件606的虚拟车辆可以被建模为游戏引擎的实例内的游戏对象。此外,虚拟车辆的每个虚拟传感器可以使用在车辆硬件104上执行的虚拟车辆的软件栈642内的套接字对接。在一些示例中,除了与用于虚拟车辆的模拟软件638相关联的游戏引擎的实例之外,虚拟车辆的虚拟传感器中的每个还可以包括游戏引擎的实例。在车辆模拟器组件606包括多个gpu的示例中,传感器中的每个可以在单个gpu上执行。在其他示例中,可在单个gpu上执行多个传感器,或至少尽可能多的传感器以确保虚拟传感器数据的实时产生。
93.在模拟器系统600中使用hil对象可提供可升级的解决方案,该解决方案可模拟或仿真用于自主软件和硬件系统的各个驱动条件(例如,nvidia的驱动agx计算平台和/或drive px计算平台)。hil对象的一些益处可包括比实时更快地测试dnn的能力、用计算资源(例如,而不是车辆或测试轨道)来缩放验证的能力,执行确定性回归测试(例如,现实世界环境从不相同两次,但模拟环境可以)的能力、最优基值标记(例如,不需要人工标记),测试在现实世界中难以产生的场景的能力、测试置换的快速生成、以及在模拟中测试与现实世界相比更大的置换空间的能力。
94.现在参见图6e,图6e是根据本公开的一些实施例的环内硬件配置的示例图示。图6e的hil配置可以包括(一个或更多个)车辆模拟器组件606,包括(一个或更多个)soc 804、(一个或更多个)底盘风扇656和/或水冷却系统。hil配置可包括两盒解决方案(例如,第一盒中的模拟器组件602和第二盒中的车辆模拟器组件606)。使用这种方法可以减少系统占用的空间量以及减少数据中心中外部电缆的数量(例如,通过在车辆模拟器组件606(例如,第一盒)中包括多个组件以及soc 804)。(一个或更多个)车辆模拟器组件606可以包括一个或更多个gpu 652(例如,nvidia quadro gpu),其在示例、非限制性实施例中可以提供可以使用(一个或更多个)同步组件654(例如,通过quadro sync ii卡)进行同步的8dp/hdmi视频流。这些gpu 652(和/或其他gpu类型)可以将传感器输入提供给soc 804(例如,提供给车辆硬件104)。在一些示例中,车辆模拟器组件606可以包括网络接口(例如,一个或更多个网络接口卡(nic)650),其可以模拟或仿真radar传感器、lidar传感器和/或imu传感器(例如,通过提供具有精确时间协议(ptp)支持的8千兆位端口)。此外,车辆模拟器组件606可以包括输入/输出(i/o)模拟集成电路(aic)658。注册的插孔(rj)接口(例如,rj45)、高速数据(hsd)接口、usb接口、每秒脉冲(pps)时钟、以太网(例如,10gb以太网(gbe))接口、can接口、hdmi接口和/或其他接口类型可用于在系统的各个组件之间和之中有效地传输和通信数据。
95.现在参照图6f,图6f是根据本公开的一些实施例的环内软件配置的示例图示。车辆模拟器组件620可以包括计算机640、gpu(未示出)、cpu(未示出)和/或其他组件。计算机640、gpu和/或cpu可以管理或托管在车辆模拟器组件620上执行的模拟软件638或其实例,并且可以托管软件栈642。例如,(一个或更多个)车辆模拟器组件620可以使用软件来模拟或仿真车辆硬件104,以尽力尽可能准确地执行(一个或更多个)软件栈642。
96.为了增加sil实施例中的准确度,(一个或更多个)车辆模拟器组件620可以被配置为通过计算环境中不标准的一个或更多个虚拟连接类型和/或通信协议进行通信。例如,虚拟can接口、虚拟lvds接口、虚拟usb接口、虚拟以太网接口和/或其他虚拟接口可由车辆模拟器组件620的计算机640、cpu和/或gpu使用,以提供模拟系统600内的软件栈642和模拟软件638之间的通信(例如,通过一个或更多个通信协议,诸如lvds)。例如,虚拟接口可以包括中间件,该中间件可以用于提供与软件栈642的连续反馈回路。如此,虚拟接口可以使用一个或更多个软件协议、硬件(例如,(一个或更多个)cpu、(一个或更多个)gpu、(一个或更多个)计算机640等)、或其组合来模拟或仿真车辆硬件104与物理车辆之间的通信。
97.在一些示例中,(一个或更多个)计算机640可以包括x86 cpu硬件,并且一个或更多个x86 cpu可以执行模拟软件638和软件栈642两者。在其他示例中,(一个或更多个)计算机640可以包括gpu硬件(例如,nvidia dgx系统和/或基于云的nvidia tesla服务器)。
98.在一些示例中,可以对应于模拟系统600内的(一个或更多个)车辆模拟器组件620的虚拟车辆可以被建模为游戏引擎的实例内的游戏对象。此外,虚拟车辆的每个虚拟传感器可以使用在车辆模拟器组件620上执行的虚拟车辆的软件栈642内的套接字对接。在一些示例中,除了与用于虚拟车辆的模拟软件638相关联的游戏引擎的实例之外,虚拟车辆的虚拟传感器中的每个还可以包括游戏引擎的实例。在车辆模拟器组件606包括多个gpu的示例中,传感器中的每个可以在单个gpu上执行。在其他示例中,可在单个gpu上执行多个传感器,或至少尽可能多的传感器以确保虚拟传感器数据的实时产生。
99.现在参考图7a,图7a是根据本公开的一些实施例的在运行时的模拟系统700的示例示图。模拟系统700的一些或所有组件可以在模拟系统600中使用,并且模拟系统600的一些或所有组件可以在模拟系统700中使用。照此,关于模拟系统600描述的组件、特征和/或功能可以与模拟系统700相关联,反之亦然。此外,模拟系统700a和700b(图7b)中的每一个可以包括类似的和/或共享的组件、特征和/或功能。
100.模拟系统700a(例如,表示模拟系统700的一个示例)可包括(一个或更多个)模拟器组件602、(一个或更多个)编解码器714、(一个或更多个)内容数据存储702、(一个或更多个)场景数据存储704、(一个或更多个)车辆模拟器组件620(例如,针对sil对象)和(一个或更多个)车辆模拟器组件606(例如,针对hil对象)。内容数据存储702可以包括用于对汽车、卡车、人、骑自行车者、标志、建筑物、树、路缘石和/或模拟环境的其他特征建模的详细内容信息。场景数据存储704可包括场景信息,其可包括危险场景信息(例如,对现实世界环境中的测试是不安全的),诸如十字路口中的行人。
101.模拟器组件602可以包括ai引擎708(在本文中可替代地称为“自动化智能引擎708”),该ai引擎708使用人工智能、自动化智能和/或其他方法和技术来模拟交通、行人、天气和/或模拟环境的其他特征。虽然在本文中被称为ai引擎,但是这并非旨在是限制性的,并且ai引擎708可以另外地或可替代地执行不是ai相关的功能。模拟器组件602可以包括管
理全局模拟的世界状态的虚拟世界管理器710。模拟器组件602可以还包括可以管理虚拟传感器的虚拟传感器管理器712。ai引擎708可以类似于在汽车视频游戏中如何对交通建模来对交通进行建模,并且可以使用游戏引擎来完成,如本文所描述的。在其他示例中,定制ai可以用于提供大型可再现汽车模拟所必需的确定性和计算细节水平。在一些示例中,可以使用sil对象、hil对象、pil对象、ai对象和/或其组合来对交通建模。系统700可以创建ai控制器的子类,该ai控制器检查地图数据、计算路线并且在避免其他汽车的同时驾驶路线。ai控制器可以计算期望的转向、加速度和/或制动,并且可以将这些值应用于虚拟对象。所使用的车辆属性可以包括质量、最大rpm、扭矩曲线、和/或其他属性。物理引擎可以用于确定ai对象的状态。如本文所描述的,对于可能远离并且可能对(一个或更多个)电流传感器没有影响的车辆或其他对象,系统可以选择不对那些对象应用物理学并且仅确定位置和/或瞬时运动向量。射线投射可以用于每个车轮以确保车辆的车轮接触。在一些示例中,交通ai可以根据脚本(例如,基于规则的交通)操作。用于虚拟对象的交通ai操纵可包括横向车道改变(例如,方向、距离、持续时间、形状等)、纵向移动(例如,匹配速度、相对目标、增量到目标、绝对值)、路线跟随和/或路径跟随。用于交通ai操纵的触发器可以是基于时间的(例如,三秒)、基于速度的(例如,以60mph)、基于接近度的地图(例如,在交叉路口的二十英尺内)、基于接近度的行动者(例如,在另一对象的二十英尺内)、车道畅通和/或其他。
102.ai引擎708可类似于本文所述的交通ai对行人ai建模,但针对行人。行人可类似于真实行人而建模,且系统700可基于所学习的行为推断行人行为。
103.模拟器组件602可以用于调整一天中的时间,使得考虑路灯打开和关闭、前灯打开和关闭、阴影、眩光和/或日落等。在一些示例中,可以考虑仅在到虚拟对象的阈值距离内的光来提高效率。
104.天气可由模拟器组件602(例如,由虚拟世界管理器710)考虑。天气可以用于更新驾驶表面的摩擦系数,并且温度信息可以用于更新轮胎与驾驶表面的相互作用。在存在雨或雪的情况下,系统700可以基于场景的结构生成网格以描述雨水和雪可以在哪里积聚,并且当在模拟中存在雨或雪时可以采用网格。
105.在一些示例中,如本文所描述的,(一个或更多个)模拟器组件602中的至少一些可以替代地被包括在(一个或更多个)车辆模拟器组件620和/或606中。例如,(一个或更多个)车辆模拟器组件620和/或(一个或更多个)车辆模拟器组件606可以包括用于管理相关联的虚拟对象的每个传感器的虚拟传感器管理器712。此外,编解码器714中的一个或更多个可被包括在车辆模拟器组件620和/或车辆模拟器组件606中。在这样的示例中,虚拟传感器管理器712可以生成与虚拟对象的传感器相对应的传感器数据,并且(一个或更多个)编解码器714的传感器仿真器716可以使用该传感器数据来根据(一个或更多个)软件栈642(例如,在(一个或更多个)车辆模拟器组件620和/或(一个或更多个)车辆模拟器组件606上执行的(一个或更多个)软件栈642)所使用的传感器数据格式或类型来对传感器数据进行编码。
106.编解码器714可提供到软件栈642的接口。编解码器714(和/或本文描述的其他编解码器)可包括编码器/解码器框架。在sil和hil实施例中,(一个或更多个)编解码器714可以包括can转向、节流请求、和/或可以用于向(一个或更多个)软件栈642发送传感器数据。编解码器714可有益于本文所述的模拟系统(例如,600和700)。例如,当数据由重新模拟系统100和模拟系统600和700产生时,数据可以被传输到(一个或更多个)软件栈642,使得可
以满足以下标准。数据可以被传输至软件栈642,从而使得最小影响被引入至软件栈642和/或车辆硬件104(在hil实施例中)。这可导致更精确的模拟,因为软件栈642和/或车辆硬件104可能在非常类似于现实世界环境中的部署的环境中操作。数据可被传输到软件栈642,使得模拟器和/或重新模拟器可能不知道被测系统的实际硬件配置。取决于模拟配置,这可以减少由于错误或单独的代码路径引起的开发开销。数据可以被传输至软件栈642,使得数据可以匹配(例如,位对位)从物理车辆(例如,车辆102)的物理传感器发送的数据。可以在sil和hil实施例中有效地传送数据。
107.传感器仿真器716可至少仿真相机、lidar传感器和/或radar传感器。关于lidar传感器,一些lidar传感器报告被跟踪对象。照此,对于由虚拟传感器数据表示的每个帧,(一个或更多个)模拟器组件602可以创建在具有虚拟lidar传感器的虚拟对象的范围内的所有被跟踪对象(例如,树、车辆、行人、树叶等)的列表,并且可以向被跟踪对象投射虚拟射线。当大量光线撞击被追踪对象时,该对象可被添加到lidar数据的报告中。在一些示例中,可以使用无反射的简单光线投射、可调节视场、可调节噪声和/或可调节掉落来对lidar传感器进行建模。可以模拟具有移动部件、有限视野和/或可变分辨率的lidar。例如,lidar传感器可以建模为固态lidar和/或基于optix的lidar。在示例中,使用基于optix的lidar,光线可以从水、反射材料和/或窗口反弹。可将纹理指派给道路、标志和/或车辆以在对应于纹理的波长下对激光反射建模。radar可类似于lidar来实施。如本文所描述的,可使用光线追踪技术来模拟radar和/或lidar。
108.在一些示例中,车辆模拟器组件606、620和/或622可以包括具有模拟器组件602(和/或生成虚拟传感器数据的组件)的反馈回路。反馈回路可用于提供用于更新虚拟传感器数据捕获或生成的信息。例如,对于虚拟相机,反馈回路可基于传感器反馈,诸如响应于光照条件的曝光改变(例如,在暗光照条件下增加曝光以使得图像数据可由dnn适当地处理)。作为另一示例,对于虚拟lidar传感器,反馈回路可表示能级的变化(例如,提升能量以产生更多可用或准确的lidar数据)。
109.可在模拟空间内模拟gnns传感器(例如,gps传感器)以产生现实世界坐标。为此,噪声函数可用于近似不准确度。与本文中所描述的任何虚拟传感器一样,虚拟传感器数据可使用编解码器714传输至软件栈642以转换成位对位校正信号(例如,准确地对应于由物理车辆的物理传感器生成的信号)。
110.可以使用一个或更多个插件应用编程接口(api)706。插件api 706可以包括第一方和/或第三方插件。例如,第三方可以使用它们自己的插件api 706定制模拟系统700b,用于提供定制信息,例如性能定时、悬架动态、轮胎动态等。
111.插件api 706可以包括自我动态组件(未示出),它可以从模拟器组件602接收包括位置、速度、汽车状态和/或其他信息的信息,并且可以向模拟器组件602提供包括性能定时、悬架动态、轮胎动态和/或其他信息的信息。例如,模拟器组件602可以将can油门、转向和行驶表面信息提供给自我动态组件。在一些示例中,(一个或更多个)自我动态组件可包括现货车辆动态包(例如,ipg汽车制造商或虚拟测试驱动),而在其他示例中,(一个或更多个)自我动态组件可被定制和/或接收(例如,从第一方和/或第三方)。
112.插件api 706可以包括关键性能指示器(kpi)api。kpi api可以(例如,从(一个或更多个)软件栈642)从(一个或更多个)模拟器组件602接收can数据、基值和/或虚拟对象状
态信息,并且可以生成和/或提供报告(实时地),所述报告包括用于保存状态、恢复状态和/或应用改变的kpi和/或命令。
113.现在参考图7b,图7b包括根据本公开的一些实施例的用于模拟系统700b的基于云的架构。模拟系统700b可以至少部分地驻留在云中,并且可以通过一个或更多个网络(诸如但不限于此处所描述的(例如,关于图8d的网络890))与一个或更多个gpu平台724(例如,其可以包括gpu、cpu、tpus、和/或其他处理器类型)和/或一个或更多个hil平台726(例如,其可以包括来自此处所描述的(一个或更多个)车辆模拟器组件606的组件中的一些或全部)进行通信。
114.模拟环境728(例如,其可类似于本文描述的模拟环境610)可由互连组件建模,所述互连组件包括模拟引擎730、ai引擎732、全局照明(gi)引擎734、资产数据存储736和/或其他组件。在一些示例中,这些组件可以用于在虚拟化的交互平台(例如,类似于大规模多人在线(mmo)游戏环境)中对模拟环境(例如,虚拟世界)进行建模。模拟的环境还可以包括物理学、交通模拟、天气模拟和/或用于模拟环境的其他特征和模拟。gi引擎734可一次计算环境中的全局照明且与节点718(1)-718(n)和720(1)-720(n)中的每一者共享所述计算(例如,gi的计算可为视图无关的)。模拟环境728可以包括向gpu平台724(例如,gpu服务器)提供数据的ai宇宙722,所述gpu平台724可以为车辆的每个传感器创建渲染(例如,在用于第一虚拟对象的虚拟传感器/编解码器718处和在用于第二虚拟对象的虚拟传感器编解码器720处)。例如,gpu平台724可以接收关于模拟环境728的数据,并且可以创建用于718(1)-718(n)、720(1)-720(n)和/或对应于其他虚拟对象的虚拟传感器/编解码器对中的每一个的传感器输入(取决于实施例)。在使用hil对象来模拟虚拟对象的示例中,可以将传感器输入提供给车辆硬件104,车辆硬件104可以使用软件栈642来执行一个或更多个操作和/或生成一个或更多个命令,如本文所描述的那些命令。在一些示例中,如本文所描述的,来自每个虚拟传感器的虚拟传感器数据可以在由(或传送到)软件栈642使用之前使用编解码器来编码。另外,在一些示例中,传感器中的每一者可在gpu平台724内的其自身的gpu上执行,而在其他示例中,两个或更多个传感器可共享gpu平台724内的同一gpu。
115.一个或更多个操作或命令可被传送到模拟引擎730,该模拟引擎可基于操作和/或命令来更新一个或更多个虚拟对象的行为。例如,模拟引擎730可以使用ai引擎732来更新模拟环境728中的ai代理以及虚拟对象的行为。模拟引擎730然后可以更新对象数据和特性(例如,在(一个或更多个)资产数据存储736内),可以更新gi(和/或诸如反射、阴影等的其他方面),并且然后可以生成更新的传感器输入并将其提供给gpu平台724。该过程可以重复直到模拟完成。
116.示例自主车辆
117.图8a是根据本公开的一些实施例的示例自主车辆102的图示。自主车辆102(可替代地在此被称为“车辆102”)可以包括但不限于,客运车辆,如小汽车、卡车、公共汽车、第一响应车辆、摆渡车、电动或机动自行车、摩托车、消防车、警用车辆、救护车、船、建筑车辆、水下船只、无人机和/或另一类型的车辆(例如,无人机和/或容纳一个或更多个乘客的车辆)。自主车辆通常按照美国运输部的一个部门——国家公路交通安全管理局(nhtsa)以及汽车工程师协会(sae)“taxonomy and definitions for terms related to driving automation systems for on-road motor vehicles”(2018年6月15日发布的标准
no.j3016-201806,2016年9月30日发布的标准no.j3016-201609,以及该标准的先前和未来的版本)定义的自动化级别进行描述。车辆102可能够实现符合自主驾驶级别的3级-5级中的一个或更多个的功能。例如,取决于实施例,车辆102可能够实现条件自动化(3级)、高自动化(4级)和/或全自动化(5级)。
118.车辆102可以包括诸如底盘、车身、车轮(例如2个、4个、6个、8个、18个等)、轮胎、车轴之类的部件以及车辆的其他部件。车辆102可以包括推进系统850,例如内燃机、混合动力发电厂、全电动发动机和/或另一种推进系统类型。推进系统850可以连接到可以包括变速器的车辆102的传动系以便实现车辆102的推进。可以响应于接收到来自油门/加速器852的信号而控制推进系统850。
119.可以包括方向盘的转向(steering)系统854可以用来在推进系统850操作时(例如在车辆运动时)使车辆102转向(例如沿着希望的路径或路线)。转向系统854可以接收来自转向致动器856的信号。对于全自动(5级)功能而言,方向盘可以是可选的。
120.制动传感器系统846可以用来响应于接收到来自制动致动器848和/或制动传感器的信号而操作车辆制动器。
121.可以包括一个或更多个片上系统(soc)804(图8c)和/或一个或更多个gpu的一个或更多个控制器836可以向车辆102的一个或更多个部件和/或系统提供(例如表示命令的)信号。例如,一个或更多个控制器可以发送经由一个或更多个制动致动器848操作车辆制动器、经由一个或更多个转向致动器856操作转向系统854、经由一个或更多个油门/加速器852操作推进系统850的信号。一个或更多个控制器836可以包括一个或更多个板载(例如集成)计算设备(例如超级计算机),所述计算设备处理传感器信号并且输出操作命令(例如表示命令的信号),以实现自主驾驶和/或辅助人类驾驶员驾驶车辆102。一个或更多个控制器836可以包括用于自主驾驶功能的第一控制器836、用于功能性安全功能的第二控制器836、用于人工智能功能(例如计算机视觉)的第三控制器836、用于信息娱乐功能的第四控制器836、用于紧急情况下的冗余的第五控制器836和/或其他控制器。在一些示例中,单个控制器836可以处理上述功能中的两个或更多,两个或更多控制器836可以处理单个功能,和/或其任意组合。
122.一个或更多个控制器836可以响应于接收自一个或更多个传感器的传感器数据(例如传感器输入),提供用于控制车辆102的一个或更多个部件和/或系统的信号。传感器数据可以接收自例如且不限于全球导航卫星系统传感器858(例如全球定位系统传感器)、radar传感器860、超声传感器862、lidar传感器864、惯性测量单元(imu)传感器866(例如加速度计、陀螺仪、磁罗盘、磁力计等)、麦克风896、立体相机868、广角相机870(例如鱼眼相机)、红外相机872、环绕相机874(例如360度相机)、远程和/或中程相机898、速度传感器844(例如用于测量车辆102的速率)、振动传感器842、转向传感器840、制动传感器(例如作为制动传感器系统846的部分)和/或其他传感器类型。
123.控制器836中的一个或更多个可以接收来自车辆102的仪表组832的输入(例如由输入数据表示),并且经由人机接口(hmi)显示器834、听觉信号器、扬声器和/或经由车辆102的其他部件提供输出(例如输出数据、显示数据等表示的)。这些输出可以包括诸如车辆速度、速率、时间、地图数据(例如图8c的hd地图822)、位置数据(例如,车辆102例如在地图上的位置)、方向、其他车辆的位置(例如占用网格)之类的信息,如控制器836所感知的关于
对象和对象状态的信息等等。例如,hmi显示器834可以显示关于一个或更多个对象(例如街道指示牌、警示牌、交通灯变化等)的存在性的信息和/或关于车辆已经做出、正在做出或者将会做出的驾驶机动的信息(例如现在变道、两英里后离开34b,等等)。
124.车辆102还包括网络接口824,其可以使用一个或更多个无线天线826和/或调制解调器通过一个或更多个网络通信。例如,网络接口824可能够通过lte、wcdma、umts、gsm、cdma2000等通信。一个或更多个无线天线826也可以使用诸如蓝牙、蓝牙le、z波、zigbee等等之类的一个或更多个局域网和/或诸如lorawan、sigfox等等之类的一个或更多个低功率广域网(lpwan)实现环境中的对象(例如车辆、移动设备等等)之间的通信。
125.图8b为根据本公开一些实施例的用于图8a的示例自主车辆102的相机位置和视场的示例。相机和各自的视场是一个示例实施例,并不意图是限制性的。例如,可以包括附加的和/或可替换的相机,和/或这些相机可以位于车辆102上的不同位置。
126.用于相机的相机类型可以包括但不限于可以适于与车辆102的部件和/或系统一起使用的数字相机。所述相机可以在汽车安全完整性级别(asil)b下和/或在另一个asil下操作。相机类型可以具有任何图像捕获率,例如60帧每秒(fps)、820fps、240fps等等,这取决于实施例。相机可能够使用滚动快门、全局快门、另一种类型的快门或者其组合。在一些示例中,滤色器阵列可以包括红白白白(rccc)滤色器阵列、红白白蓝(rccb)滤色器阵列、红蓝绿白(rbgc)滤色器阵列、foveon x3滤色器阵列、拜耳传感器(rggb)滤色器阵列、单色传感器滤色器阵列和/或另一种类型的滤色器阵列。在一些实施例中,诸如具有rccc、rccb和/或rbgc滤色器阵列的相机之类的清晰像素相机可以用在提高光敏感度的努力中。
127.在一些示例中,所述相机中的一个或更多个可以用来执行高级驾驶员辅助系统(adas)功能(例如作为冗余或故障安全设计的部分)。例如,可以安装多功能单目相机以提供包括车道偏离警告、交通指示牌辅助和智能前照灯控制在内的功能。所述相机中的一个或更多个(例如全部相机)可以同时记录和提供图像数据(例如视频)。
128.所述相机中的一个或更多个可以安装在诸如定制设计的(3-d打印的)组件之类的安装组件中,以便切断可能干扰相机的图像数据捕获能力的杂散光和来自汽车内的反射(例如挡风玻璃镜中反射的来自仪表板的反射)。关于翼镜安装组件,翼镜组件可以是定制3-d打印的,使得相机安装板匹配翼镜的形状。在一些示例中,一个或更多个相机可以集成到翼镜中。对于侧视相机而言,一个或更多个相机也可以集成到驾驶室每个拐角的四根柱子内。
129.具有包括车辆102前面的环境部分的视场的相机(例如前置相机)可以用于环视,以帮助识别前向路径和障碍,以及在一个或更多个控制器836和/或控制soc的帮助下辅助提供对于生成占用网格和/或确定优选车辆路径至关重要的信息。前置相机可以用来执行许多与lidar相同的adas功能,包括紧急制动、行人检测和碰撞避免。前置相机也可以用于adas功能和系统,包括车道偏离警告(“ldw”)、自主巡航控制(“acc”),和/或诸如交通指示牌识别之类的其他功能。
130.各种各样的相机可以用于前置配置中,包括例如包括cmos(互补金属氧化物半导体)彩色成像仪在内的单目相机平台。另一个示例可以是广角相机870,其可以用来感知从周边进入视野的对象(例如行人、十字路口交通或者自行车)。尽管图8b中图示出仅仅一个广角相机,但是在车辆102上可以存在任意数量的广角相机870。此外,远程相机898(例如长
视立体相机对)可以用于基于深度的对象检测,尤其是用于尚未针对其训练神经网络的对象。远程相机898也可以用于对象检测和分类以及基本的对象跟踪。
131.一个或更多个立体相机868也可以包括在前置配置中。立体相机868可以包括集成控制单元,该单元包括可扩展处理单元,其可以提供在单个芯片上具有集成的can或以太网接口的多核微处理器和可编程逻辑(fpga)。这样的单元可以用来生成车辆环境的3-d地图,包括针对图像中的所有点的距离估计。可替代的立体相机868可以包括紧凑型立体视觉传感器,其可以包括两个相机镜头(左右各一个)以及可以测量从车辆到目标对象的距离并且使用生成的信息(例如元数据)激活自主紧急制动和车道偏离警告功能的图像处理芯片。除了本文所描述的那些之外或者可替代地,可以使用其他类型的立体相机868。
132.具有包括车辆102的侧面的环境部分的视场的相机(例如侧视相机)可以用于环视,提供用来创建和更新占用网格以及生成侧撞击碰撞警告的信息。例如,环绕相机874(例如如图8b中所示的四个环绕相机874)可以置于车辆102上。环绕相机874可以包括广角相机870、鱼眼相机、360度相机和/或类似物。四个示例,四个鱼眼相机可以置于车辆的前面、后面和侧面。在一种可替代的布置中,车辆可以使用三个环绕相机874(例如左边、右边和后面),并且可以利用一个或更多个其他相机(例如前向相机)作为第四环视相机。
133.具有包括车辆102的后面的环境部分的视场的相机(例如后视相机)可以用于辅助停车、环视、后面碰撞警告以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为如本文所描述的前置相机(例如远程和/或中程相机898、立体相机868、红外相机872等等)的相机。
134.图8c为根据本公开一些实施例的用于图8a的示例自主车辆102的示例系统架构的框图。应当理解,这种布置和本文描述的其他布置仅仅作为示例而被阐述。除了所示的那些之外或者代替它们的是,可以使用其他的布置和元素(例如机器、接口、功能、顺序、功能分组等等),并且一些元素可以完全省略。进一步,许多本文描述的元素是功能实体,其可以实现为分立的或分布式部件或者结合其他部件实现,以及以任何适当的组合和位置实现。本文描述为由实体执行的各个功能可以通过硬件、固件和/或软件实现。例如,各个功能可以通过处理器执行存储在存储器中的指令而实现。
135.图8c中车辆102的部件、特征和系统中的每一个被图示为经由总线802连接。总线802可以包括控制器区域网络(can)数据接口(可替代地,本文称为“can总线”)。can可以是车辆102内部的网络,用来辅助控制车辆102的各种特征和功能,例如制动器、加速、制动、转向、挡风玻璃雨刷等等的驱动。can总线可以被配置为具有数十或者甚至数百个节点,每个节点具有其自己的唯一标识符(例如can id)。可以读取can总线以找到方向盘角度、地速、每分钟发动机转速(rpm)、按钮位置和/或其他车辆状态指示符。can总线可以是asil b兼容的。
136.尽管这里将总线802描述为can总线,但是这并不意图是限制性的。例如,除了can总线之外或者可替代地,可以使用flexray和/或以太网。此外,尽管用单条线来表示总线802,但是这并不意图是限制性的。例如,可以存在任意数量的总线802,其可以包括一条或更多条can总线、一条或更多条flexray总线、一条或更多条以太网总线和/或一条或更多条使用不同协议的其他类型的总线。在一些示例中,两条或更多总线802可以用来执行不同的功能,和/或可以用于冗余。例如,第一总线802可以用于碰撞避免功能,并且第二总线802可
以用于驱动控制。在任何示例中,每条总线802可以与车辆102的任何部件通信,并且两条或更多总线802可以与相同的部件通信。在一些示例中,车辆内的每个soc 804、每个控制器836和/或每个计算机可以有权访问相同的输入数据(例如来自车辆102的传感器的输入),并且可以连接到诸如can总线之类的公共总线。
137.车辆102可以包括一个或更多个控制器836,例如本文关于图8a所描述的那些控制器。控制器836可以用于各种各样的功能。控制器836可以耦合到车辆102的任何其他不同的部件和系统,并且可以用于车辆102的控制、车辆102的人工智能、用于车辆102的信息娱乐和/或类似物。
138.车辆102可以包括一个或更多个片上系统(soc)804。soc 804可以包括cpu 806、gpu 808、处理器810、高速缓存812、加速器814、数据存储816和/或未图示出的其他部件和特征。在各种各样的平台和系统中,soc 804可以用来控制车辆102。例如,一个或更多个soc 804可以在系统(例如车辆102的系统)中与hd地图822结合,所述hd地图可以经由网络接口824从一个或更多个服务器(例如图8d的一个或更多个服务器878)获得地图刷新和/或更新。
139.cpu 806可以包括cpu簇或者cpu复合体(可替代地,本文称为“ccplex”)。cpu 806可以包括多个核和/或l2高速缓存。例如,在一些实施例中,cpu 806在一致性多处理器配置中可以包括八个核。在一些实施例中,cpu 806可以包括四个双核簇,其中每个簇具有专用的l2高速缓存(例如2mb l2高速缓存)。cpu 806(例如ccplex)可以被配置为支持同时簇操作,使得cpu 806的簇的任意组合能够在任何给定时间是活动的。
140.cpu 806可以实现包括以下特征中的一个或更多个的功率管理能力:各硬件块在空闲时可以自动进行时钟门控以节省动态功率;由于wfi/wfe指令的执行,每个核时钟可以在该核不主动地执行指令时进行门控;每个核可以独立地进行功率门控;当所有核都进行时钟门控或者功率门控时,可以独立地对每个核簇进行时钟门控;和/或当所有核都进行功率门控时,可以独立地对每个核簇进行功率门控。cpu 806可以进一步实现用于管理功率状态的增强算法,其中指定允许的功率状态和期望的唤醒时间,并且硬件/微代码为所述核、簇和ccplex确定要进入的最佳的功率状态。处理核可以在软件中支持简化的功率状态进入序列,该工作被卸载到微代码。
141.gpu 808可以包括集成的gpu(可替代地,本文称为“igpu”)。gpu808可以是可编程的,并且对于并行工作负载而言是高效的。在一些示例中,gpu 808可以使用增强张量指令集。gpu 808可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括l1高速缓存(例如具有至少96kb存储能力的l1高速缓存),并且这些流式微处理器中的两个或更多可以共享l2高速缓存(例如具有512kb存储能力的l2高速缓存)。在一些实施例中,gpu 808可以包括至少八个流式微处理器。gpu 808可以使用计算应用编程接口(api)。此外,gpu 808可以使用一个或更多个并行计算平台和/或编程模型(例如nvidia的cuda)。
142.在汽车和嵌入式使用的情况下,可以对gpu 808进行功率优化以实现最佳性能。例如,可以在鳍式场效应晶体管(finfet)上制造gpu 808。然而,这并不意图是限制性的,并且gpu 808可以使用其他半导体制造工艺来制造。每个流式微处理器可以合并划分成多个块的若干混合精度处理核。例如且非限制性地,可以将64个pf32核和32个pf64核划分成四个处理块。在这样的示例中,每个处理块可以分配16个fp32核、8个fp64核、16个int32核、用于
深层学习矩阵算术的两个混合精度nvidia张量核、l0指令高速缓存、线程束(warp)调度器、分派单元和/或64kb寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以利用计算和寻址计算的混合提供工作负载的高效执行。流式微处理器可以包括独立线程调度能力,以允许实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的l1数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。
143.gpu 808可以包括在一些示例中提供大约900gb/s的峰值存储器带宽的高带宽存储器(hbm)和/或16gb hbm2存储器子系统。在一些示例中,除了hbm存储器之外或者可替代地,可以使用同步图形随机存取存储器(sgram),例如第五代图形双倍数据速率同步随机存取存储器(gddr5)。
144.gpu 808可以包括统一存储器技术,其包括访问计数器以允许存储器页面更精确地迁移到最频繁地访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ats)支持可以用来允许gpu 808直接访问cpu 806页表。在这样的示例中,当gpu 808存储器管理单元(mmu)经历遗漏时,可以将地址转换请求传输至cpu 806。作为响应,cpu 806可以在其页表中寻找用于地址的虚拟-物理映射,并且将转换传输回gpu 808。这样,统一存储器技术可以允许单个统一虚拟地址空间用于cpu 806和gpu 808二者的存储器,从而简化了gpu 808编程和将应用程序移(port)到gpu 808。
145.此外,gpu 808可以包括访问计数器,其可以跟踪gpu 808访问其他处理器的存储器的频率。访问计数器可以帮助确保存储器页面移至最频繁地访问这些页面的处理器的物理存储器。
146.soc 804可以包括任意数量的高速缓存812,包括本文描述的那些高速缓存。例如,高速缓存812可以包括cpu 806和gpu 808二者可用的l3高速缓存(例如,其连接到cpu 806和gpu 808二者)。高速缓存812可以包括回写高速缓存,其可以例如通过使用高速缓存一致性协议(例如mei、mesi、msi等)跟踪行的状态。取决于实施例,l3高速缓存可以包括4mb或者更多,但是也可以使用更小的高速缓存大小。
147.soc 804可以包括算术逻辑单元(alu),算术逻辑单元可以在相对于车辆102的各种任务或操作中的任何一种执行处理(如处理dnn)时被利用。此外,soc 804可以包括用于在系统内执行数学运算的浮点单元(fpu)或其他数学协处理器或数字协处理器类型。例如,soc 104可以包括被集成为cpu 806和/或gpu 808内的执行单元的一个或更多个fpu。
148.soc 804可以包括一个或更多个加速器814(例如硬件加速器、软件加速器或者其组合)。例如,soc 804可以包括硬件加速簇,其可以包括优化的硬件加速器和/或大型片上存储器。该大型片上存储器(例如4mb sram)可以使得硬件加速簇能够加速神经网络和其他计算。硬件加速簇可以用来补充gpu 808,并且卸载gpu 808的一些任务(例如释放gpu 808的更多周期以用于执行其他任务)。作为一个示例,加速器814可以用于足够稳定以易于控制加速的有针对性的工作负载(例如感知、卷积神经网络(cnn)等等)。当在本文中使用时,术语“cnn”可以包括所有类型的cnn,包括基于区域的或者区域卷积神经网络(rcnn)和快速rcnn(例如用于对象检测)。
149.加速器814(例如硬件加速簇)可以包括深度学习加速器(dla)。dla可以包括可以被配置成为深度学习应用和推理提供额外的每秒10万亿次操作的一个或更多个张量处理单元(tpu)。tpu可以是被配置为执行图像处理功能(例如用于cnn、rcnn等)且针对执行图像
处理功能而优化的加速器。dla可以进一步针对特定的一组神经网络类型和浮点运算以及推理进行优化。dla的设计可以比通用gpu提供每毫米更高的性能,并且远远超过cpu的性能。tpu可以执行若干功能,包括单实例卷积函数,支持例如用于特征和权重二者的int8、int16和fp16数据类型,以及后处理器功能。
150.dla可以在处理的或者未处理的数据上针对各种各样的功能中的任何功能快速且高效地执行神经网络,尤其是cnn,例如且不限于:用于使用来自相机传感器的数据进行对象识别和检测的cnn;用于使用来自相机传感器的数据进行距离估计的cnn;用于使用来自麦克风的数据进行应急车辆检测和识别与检测的cnn;用于使用来自相机传感器的数据进行面部识别和车主识别的cnn;和/或用于安全和/或安全相关事件的cnn。
151.dla可以执行gpu 808的任何功能,并且通过使用推理加速器,例如,设计者可以使dla或gpu 808针对任何功能。例如,设计者可以将cnn的处理和浮点运算聚焦在dla上,并且将其他功能留给gpu 808和/或其他加速器814。
152.加速器814(例如硬件加速簇)可以包括可编程视觉加速器(pva),其在本文中可以可替代地称为计算机视觉加速器。pva可以被设计和配置为加速用于高级驾驶员辅助系统(adas)、自主驾驶和/或增强现实(ar)和/或虚拟现实(vr)应用的计算机视觉算法。pva可以提供性能与灵活性之间的平衡。例如,每个pva可以包括例如且不限于任意数量的精简指令集计算机(risc)核、直接存储器访问(dma)和/或任意数量的向量处理器。
153.risc核可以与图像传感器(例如本文描述的任何相机的图像传感器)、图像信号处理器和/或类似物交互。这些risc核中的每一个可以包括任意数量的存储器。取决于实施例,risc核可以使用若干协议中的任何协议。在一些示例中,risc核可以执行实时操作系统(rtos)。risc核可以使用一个或更多个集成电路设备、专用集成电路(asic)和/或存储设备实现。例如,risc核可以包括指令高速缓存和/或紧密耦合的ram。
154.dma可以使得pva的部件能够独立于cpu 806访问系统存储器。dma可以支持用来向pva提供优化的任意数量的特征,包括但不限于支持多维寻址和/或循环寻址。在一些示例中,dma可以支持高达六个或更多维度的寻址,其可以包括块宽度、块高度、块深度、水平块步进、竖直块步进和/或深度步进。
155.向量处理器可以是可编程处理器,其可以被设计为高效且灵活地执行用于计算机视觉算法的编程并且提供信号处理能力。在一些示例中,pva可以包括pva核和两个向量处理子系统分区。pva核可以包括处理器子系统、一个或更多个dma引擎(例如两个dma引擎)和/或其他外围设备。向量处理子系统可以作为pva的主处理引擎而操作,并且可以包括向量处理单元(vpu)、指令高速缓存和/或向量存储器(例如vmem)。vpu核可以包括数字信号处理器,诸如例如单指令多数据(simd)、超长指令字(vliw)数字信号处理器。simd和vliw的组合可以增强吞吐量和速率。
156.向量处理器中的每一个可以包括指令高速缓存并且可以耦合到专用存储器。结果,在一些示例中,向量处理器中的每一个可以被配置为独立于其他向量处理器执行。在其他示例中,包括在特定pva中的向量处理器可以被配置为采用数据并行化。例如,在一些实施例中,包括在单个pva中的多个向量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上执行。在其他示例中,包括在特定pva中的向量处理器可以在相同的图像上同时执行不同的计算机视觉算法,或者甚至在序列图像或者图像的部分上执行不同的算法。
除其他的以外,任意数量的pva可以包括在硬件加速簇中,并且任意数量的向量处理器可以包括在这些pva中的每一个中。此外,pva可以包括附加的纠错码(ecc)存储器,以增强总体系统安全性。
157.加速器814(例如硬件加速簇)可以包括片上计算机视觉网络和sram,以提供用于加速器814的高带宽、低延迟sram。在一些示例中,片上存储器可以包括由例如且不限于八个现场可配置的存储器块组成的至少4mb sram,其可以由pva和dla二者访问。每对存储器块可以包括高级外围总线(apb)接口、配置电路系统、控制器和复用器。可以使用任何类型的存储器。pva和dla可以经由向pva和dla提供高速存储器访问的主干(backbone)访问存储器。主干可以包括(例如使用apb)将pva和dla互连到存储器的片上计算机视觉网络。
158.片上计算机视觉网络可以包括在传输任何控制信号/地址/数据之前确定pva和dla二者都提供就绪且有效的信号的接口。这样的接口可以提供用于传输控制信号/地址/数据的单独相位和单独信道,以及用于连续数据传输的突发式通信。这种类型的接口可以符合iso 26262或者iec 61508标准,但是也可以使用其他标准和协议。
159.在一些示例中,soc 804可以包括例如在2018年8月10日提交的美国专利申请no.16/101,232中描述的实时光线追踪硬件加速器。该实时光线追踪硬件加速器可以用来快速且高效地确定(例如世界模型内的)对象的位置和范围,以便生成实时可视化模拟,以用于radar信号解释、用于声音传播合成和/或分析、用于sonar系统模拟、用于一般波传播模拟、用于为了定位和/或其他功能的目的与lidar数据相比较和/或用于其他用途。在一些实施例中,一个或更多个树遍历单元(ttu)可以用于执行一个或更多个光线追踪相关操作。
160.加速器814(例如硬件加速器簇)具有广泛的自主驾驶用途。pva可以是可编程视觉加速器,其可以用于adas和自主车辆中的关键处理阶段。pva的能力是需要可预测处理、低功率和低延迟的算法域的良好匹配。换言之,pva在半密集或者密集规则计算上,甚至在需要具有低延迟和低功率的可预测运行时间的小数据集上都表现良好。因此,在用于自主车辆的平台的背景下,pva被设计为运行经典计算机视觉算法,因为它们在对象检测和整数数学运算方面很有效。
161.例如,根据该技术的一个实施例,pva用来执行计算机立体视觉。在一些示例中,可以使用基于半全局匹配的算法,但是这并不意图是限制性的。许多用于3-5级自主驾驶的应用都需要即时运动估计/立体匹配(例如来自运动的结构、行人识别、车道检测等等)。pva可以在来自两个单目相机的输入上执行计算机立体视觉功能。
162.在一些示例中,pva可以用来执行密集的光流。根据过程原始radar数据(例如使用4d快速傅立叶变换)以提供经处理的radar。在其他示例中,pva用于飞行时间深度处理,其例如通过处理原始飞行时间数据以提供经处理的飞行时间数据。
163.dla可以用来运行任何类型的网络以增强控制和驾驶安全性,包括例如输出用于每个对象检测的置信度度量的神经网络。这样的置信度值可以解释为概率,或者解释为提供每个检测与其他检测相比的相对“权重”。该置信度值使得系统能够做出关于哪些检测应当被认为是真阳性检测而不是假阳性检测的进一步决策。例如,系统可以为置信度设置阈值,并且仅仅将超过阈值的检测看作真阳性检测。在自动紧急制动(aeb)系统中,假阳性检测会使得车辆自动地执行紧急制动,这显然是不希望的。因此,只有最确信的检测才应当被认为是aeb的触发因素。dla可以运行用于回归置信度值的神经网络。该神经网络可以将至
少一些参数子集作为其输入,例如边界框维度,(例如从另一个子系统)获得的地平面估计,与车辆102取向、距离相关的惯性测量单元(imu)传感器866输出,从神经网络和/或其他传感器(例如lidar传感器864或radar传感器860)获得的对象的3d位置估计等。
164.soc 804可以包括一个或更多个数据存储816(例如存储器)。数据存储816可以是soc 804的片上存储器,其可以存储要在gpu和/或dla上执行的神经网络。在一些示例中,为了冗余和安全,数据存储816可以容量足够大以存储神经网络的多个实例。数据存储812可以包括l2或l3高速缓存812。对数据存储816的引用可以包括对与如本文所描述的pva、dla和/或其他加速器814关联的存储器的引用。
165.soc 804可以包括一个或更多个处理器810(例如嵌入式处理器)。处理器810可以包括启动和功率管理处理器,其可以是用于处理启动功率和管理功能以及有关安全实施的专用处理器和子系统。启动和功率管理处理器可以是soc 804启动序列的一部分,并且可以提供运行时间功率管理服务。启动功率和管理处理器可以提供时钟和电压编程、辅助系统低功率状态转换、soc 804热和温度传感器管理和/或soc 804功率状态管理。每个温度传感器可以实现为环形振荡器,其输出频率与温度成比例,并且soc804可以使用环形振荡器检测cpu 806、gpu 808和/或加速器814的温度。如果确定温度超过阈值,那么启动和功率管理处理器可以进入温度故障例程并且将soc 804置于较低功率状态和/或将车辆102置于司机安全停车模式(例如使车辆102安全停车)。
166.处理器810可以还包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是一种音频子系统,其允许实现对于通过多个接口的多声道音频的完全硬件支持以及一系列广泛而灵活的音频i/o接口。在一些示例中,音频处理引擎是具有带有专用ram的数字信号处理器的专用处理器核。
167.处理器810可以还包括始终在处理器上的引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。该始终在处理器上的引擎可以包括处理器核、紧密耦合的ram、支持外围设备(例如定时器和中断控制器)、各种i/o控制器外围设备和路由逻辑。
168.处理器810可以还包括安全簇引擎,其包括处理汽车应用的安全管理的专用处理器子系统。安全簇引擎可以包括两个或更多处理器核、紧密耦合的ram、支持外围设备(例如定时器、中断控制器等等)和/或路由逻辑。在安全模式下,所述两个或更多核可以操作于锁步模式下,并且用作具有检测它们的操作之间的任何差异的比较逻辑的单核。
169.处理器810可以还包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。
170.处理器810可以还包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是一种硬件引擎,该硬件引擎是相机处理管线的部分。
171.处理器810可以包括可以是(例如微处理器上实现的)处理块的视频图像复合器,其实现视频回放应用程序产生用于播放器窗口的最终图像所需的视频后处理功能。视频图像复合器可以对广角相机870、环绕相机874和/或对驾驶室内监控相机传感器执行镜头畸变校正。驾驶室内监控相机传感器优选地由运行在高级soc的另一个实例上的神经网络监控,被配置为识别驾驶室内事件并且相对应地做出响应。驾驶室内系统可以执行唇读,以激活移动电话服务并拨打电话、口述电子邮件、改变车辆目的地、激活或改变车辆的信息娱乐系统和设置或者提供语音激活的网上冲浪。某些功能仅在车辆操作于自主模式下时对于驾
驶员可用,并且在其他情况下被禁用。
172.视频图像复合器可以包括用于空间和时间降噪的增强时间降噪。例如,在视频中出现运动的情况下,降噪适当地对空间信息加权,降低邻近帧提供的信息的权重。在图像或者图像的部分不包括运动的情况下,视频图像复合器执行的时间降噪可以使用来自先前的图像的信息以降低当前图像中的噪声。
173.视频图像复合器也可以被配置为对输入立体镜头帧执行立体校正。当操作系统桌面正在使用并且gpu 808无需连续地渲染(render)新的表面时,视频图像复合器可以进一步用于用户接口组成。甚至在gpu 808上电并且激活,进行3d渲染时,视频图像复合器可以用来减轻gpu 808的负担以提高性能和响应能力。
174.soc 804可以还包括用于从相机接收视频和输入的移动行业处理器接口(mipi)相机串行接口、高速接口和/或可以用于相机和有关像素输入功能的视频输入块。soc 804可以还包括可以由软件控制并且可以用于接收未提交到特定角色的i/o信号的输入/输出控制器。
175.soc 804可以还包括大范围的外围设备接口,以使能与外围设备、音频编解码器、功率管理和/或其他设备通信。soc 804可以用来处理来自(通过千兆多媒体串行链路和以太网连接的)相机、传感器(例如可以通过以太网连接的lidar传感器864、radar传感器860等等)的数据,来自总线802的数据(例如车辆102的速率、方向盘位置等等),来自(通过以太网或can总线连接的)gnss传感器858的数据。soc 804可以还包括专用高性能大容量存储控制器,其可以包括它们自己的dma引擎,并且其可以用来从日常数据管理任务中释放cpu 806。
176.soc 804可以是具有灵活架构的端到端平台,该架构跨越自动化3-5级,从而提供利用和高效使用计算机视觉和adas技术以实现多样性和冗余、连同深度学习工具一起提供用于灵活可靠驾驶软件堆栈的平台的综合功能安全架构。soc 804可以比常规的系统更快、更可靠,甚至更加能量高效和空间高效。例如,当与cpu 806、gpu 808和数据存储816结合时,加速器814可以提供用于3-5级自主车辆的快速高效平台。
177.因此该技术提供了不能通过常规系统实现的能力和功能。例如,计算机视觉算法可以在cpu上执行,这些cpu可以使用诸如c编程语言之类的高级编程语言配置为跨各种各样的视觉数据执行各种各样的处理算法。然而,cpu常常不能满足许多计算机视觉应用的性能要求,诸如与例如执行时间和功耗有关的那些要求。特别地,许多cpu不能实时地执行复杂的对象检测算法,这是车载adas应用的要求和实用3-5级自主车辆的要求。
178.与常规系统形成对比的是,通过提供cpu复合体、gpu复合体和硬件加速簇,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起以实现3-5级自主驾驶功能。例如,在dla或dgpu(例如gpu 820)上执行的cnn可以包括文本和单词识别,允许超级计算机读取和理解交通指示牌,包括尚未针对其特别地训练神经网络的指示牌。dla可以还包括能够识别、解释和提供对指示牌的语义理解,并且将该语义理解传递给运行在cpu复合体上的路径规划模块的神经网络。
179.作为另一个示例,如3、4或5级驾驶所需的,多个神经网络可以同时运行。例如,由“注意:闪烁的灯指示结冰条件”组成的警告指示牌连同电灯可以由若干神经网络独立地或者共同地进行解释。指示牌本身可以由部署的第一神经网络(例如经过训练的神经网络)识
别为交通指示牌,文本“闪烁的灯指示结冰条件”可以由部署的第二神经网络解释,该部署的第二神经网络告知车辆的路径规划软件(优选地在cpu复合体上执行)当检测到闪烁的灯时,存在结冰条件。闪烁的灯可以通过在多个帧上操作部署的第三神经网络而识别,该神经网络告知车辆的路径规划软件闪烁的灯的存在(或不存在)。所有三个神经网络可以例如在dla内和/或在gpu 808上同时运行。
180.在一些示例中,用于面部识别和车主识别的cnn可以使用来自相机传感器的数据识别车辆102的授权的驾驶员和/或车主的存在。始终在传感器上的处理引擎可以用来在车主接近驾驶员车门时解锁车辆并且打开灯,并且在安全模式下,在车主离开车辆时禁用车辆。按照这种方式,soc 804提供了防范盗窃和/或劫车的安全性。
181.在另一个示例中,用于应急车辆检测和识别的cnn可以使用来自麦克风896的数据来检测并且识别应急车辆警报(siren)。与使用通用分类器检测警报并且手动地提取特征的常规系统形成对比的是,soc 804使用cnn以对环境和城市声音分类以及对视觉数据分类。在优选的实施例中,运行在dla上的cnn被训练为识别应急车辆的相对关闭速率(例如通过使用多普勒效应)。cnn也可以被训练为识别如gnss传感器858所识别的特定于车辆在其中操作的局部区域的应急车辆。因此,例如,当在欧洲操作时,cnn将寻求检测欧洲警报,并且当在美国时,cnn将寻求识别仅仅北美的警报。一旦检测到应急车辆,在超声传感器862的辅助下,控制程序可以用来执行应急车辆安全例程,使车辆放慢速度,开到路边,停下车辆,和/或使车辆空转,直到应急车辆通过。
182.车辆可以包括可以经由高速互连(例如pcie)耦合到soc 804的cpu818(例如分立的cpu或dcpu)。cpu 818可以包括例如x86处理器。cpu818可以用来执行各种各样的功能中的任何功能,包括例如仲裁adas传感器与soc 804之间潜在地不一致的结果,和/或监控控制器836和/或信息娱乐soc 830的状态和健康状况。
183.车辆102可以包括可以经由高速互连(例如nvidia的nvlink)耦合到soc 804的gpu 820(例如分立的gpu或dgpu)。gpu 820可以例如通过执行冗余的和/或不同的神经网络而提供附加的人工智能功能,并且可以用来基于来自车辆102的传感器的输入(例如传感器数据)来训练和/或更新神经网络。
184.车辆102可以还包括网络接口824,该网络接口可以包括一个或更多个无线天线826(例如用于不同通信协议的一个或更多个无线天线,例如蜂窝天线、蓝牙天线等等)。网络接口824可以用来使能通过因特网与云(例如与服务器878和/或其他网络设备)、与其他车辆和/或与计算设备(例如乘客的客户端设备)的无线连接。为了与其他车辆通信,可以在这两辆车之间建立直接链接,和/或可以建立间接链接(例如跨网络以及通过因特网)。直接链接可以使用车对车通信链路提供。车对车通信链路可以向车辆102提供关于接近车辆102的车辆(例如车辆102前面、侧面和/或后面的车辆)的信息。该功能可以是车辆102的协作自适应巡航控制功能的部分。
185.网络接口824可以包括提供调制和解调功能并且使得控制器836能够通过无线网络通信的soc。网络接口824可以包括用于从基带到射频的上转换以及从射频到基带的下转换的射频前端。频率转换可以通过公知的过程执行,和/或可以使用超外差(super-heterodyne)过程执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过lte、wcdma、umts、gsm、cdma2000、蓝牙、蓝牙le、wi-fi、z波、zigbee、
lorawan和/或其他无线协议通信的无线功能。
186.车辆102可以还包括可包括片外(例如soc 804外)存储装置的数据存储828。数据存储828可以包括一个或更多个存储元件,包括ram、sram、dram、vram、闪存、硬盘和/或可以存储至少一个比特的数据的其他部件和/或设备。
187.车辆102可以还包括gnss传感器858。gnss传感器858(例如gps和/或辅助gps传感器)用于辅助映射、感知、占用网格生成和/或路径规划功能。可以使用任意数量的gnss传感器858,包括例如且不限于使用带有以太网到串行(rs-232)网桥的usb连接器的gps。
188.车辆102可以还包括radar传感器860。radar传感器860可以甚至在黑暗和/或恶劣天气条件下也由车辆102用于远程车辆检测。radar功能安全级别可以是asil b。radar传感器860可以使用can和/或总线802(例如以传输radar传感器860生成的数据)以用于控制以及访问对象跟踪数据,在一些示例中接入以太网以访问原始数据。可以使用各种各样的radar传感器类型。例如且非限制性地,radar传感器860可以适合前面、后面和侧面radar使用。在一些示例中,使用脉冲多普勒radar传感器。
189.radar传感器860可以包括不同的配置,例如具有窄视场的远程、具有宽视场的短程、短程侧覆盖等等。在一些示例中,远程radar可以用于自适应巡航控制功能。远程radar系统可以提供通过两个或更多独立扫描实现的广阔视场(例如250m范围内)。radar传感器860可以帮助区分静态对象和运动对象,并且可以由adas系统用于紧急制动辅助和前方碰撞警告。远程radar传感器可以包括具有多根(例如六根或更多)固定radar天线以及高速can和flexray接口的单站多模radar。在具有六根天线的示例中,中央四根天线可以创建聚焦的波束图案,其被设计为在更高速率下以来自邻近车道的最小交通干扰记录车辆102的周围环境。其他两根天线可以扩展视场,使得快速地检测进入或离开车辆102的车道的车辆成为可能。
190.作为一个示例,中程radar系统可以包括高达860m(前面)或80m(后面)的范围以及高达42度(前面)或850度(后面)的视场。短程radar系统可以包括但不限于被设计为安装在后保险杠两端的radar传感器。当安装在后保险杠两端时,这样的radar传感器系统可以创建持续地监控后方和车辆旁边的盲点的两个波束。
191.短程radar系统可以在adas系统中用于盲点检测和/或变道辅助。
192.车辆102可以还包括超声传感器862。可以置于车辆102的前面、后面和/或侧面的超声传感器862可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的超声传感器862,并且不同的超声传感器862可以用于不同的检测范围(例如2.5m、4m)。超声传感器862可以操作于功能安全级别的asil b。
193.车辆102可以包括lidar传感器864。lidar传感器864可以用于对象和行人检测、紧急制动、碰撞避免和/或其他功能。lidar传感器864可以为功能安全级别的asil b。在一些示例中,车辆102可以包括可以使用以太网(例如以将数据提供给千兆以太网交换机)的多个lidar传感器864(例如两个、四个、六个等等)。
194.在一些示例中,lidar传感器864可能够对360度视场提供对象列表及其距离。商业上可用的lidar传感器864可以具有例如近似102m的广告范围,精度为2cm-3cm,支持102mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的lidar传感器864。在这样的示例中,lidar传感器864可以实现为可以嵌入到车辆102的前面、后面、侧面和/或拐
角的小设备。在这样的示例中,lidar传感器864可以甚至对于低反射率对象提供高达820度水平的和35度竖直的视场,具有200m的范围。前面安装的lidar传感器864可以被配置用于45度与135度之间的水平视场。
195.在一些示例中,也可以使用诸如3d闪光lidar之类的lidar技术。3d闪光lidar使用激光的闪光作为发射源,以照亮高达约200m的车辆周围环境。闪光lidar单元包括接受器,该接受器将激光脉冲传输时间和反射光记录在每个像素上,其进而与从车辆到对象的范围相对应。闪光lidar可以允许利用每个激光闪光生成周围环境的高度精确且无失真的图像。在一些示例中,可以部署四个闪光lidar传感器,车辆102的每一侧一个。可用的3d闪光lidar系统包括没有风扇以外的运动部件(moving part)的固态3d凝视阵列lidar相机(例如非扫描lidar设备)。闪光lidar设备可以使用每帧5纳秒i类(眼睛安全)激光脉冲,并且可以以3d范围点云和共同寄存的强度数据的形式捕获反射的激光。通过使用闪光lidar,并且因为闪光lidar是没有运动部件的固态设备,lidar传感器864可以不太容易受到运动模糊、振动和/或震动的影响。
196.该车辆可以还包括imu传感器866。在一些示例中,imu传感器866可以位于车辆102的后轴的中心。imu传感器866可以包括例如且不限于加速度计、磁力计、陀螺仪、磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,imu传感器866可以包括加速度计和陀螺仪,而在九轴应用中,imu传感器866可以包括加速度计、陀螺仪和磁力计。
197.在一些实施例中,imu传感器866可以实现为微型高性能gps辅助惯性导航系统(gps/ins),其结合微机电系统(mems)惯性传感器、高灵敏度gps接收器和高级卡尔曼滤波算法以提供位置、速度和姿态的估计。这样,在一些示例中,imu传感器866可以使得车辆102能够在无需来自磁传感器的输入的情况下通过直接观察从gps到imu传感器866的速度变化并且将其相关来估计方向(heading)。在一些示例中,imu传感器866和gnss传感器858可以结合到单个集成单元中。
198.该车辆可以包括置于车辆102中和/或车辆102周围的麦克风896。除别的以外,麦克风896可以用于应急车辆检测和识别。
199.该车辆可以还包括任意数量的相机类型,包括立体相机868、广角相机870、红外相机872、环绕相机874、远程和/或中程相机898和/或其他相机类型。这些相机可以用来捕获车辆102整个外围周围的图像数据。使用的相机类型取决于实施例和车辆102的要求,并且相机类型的任意组合可以用来提供车辆102周围的必要覆盖。此外,相机的数量可以根据实施例而不同。例如,该车辆可以包括六个相机、七个相机、十个相机、十二个相机和/或另一数量的相机。作为一个示例且非限制性地,这些相机可以支持千兆多媒体串行链路(gmsl)和/或千兆以太网。所述相机中的每一个在本文关于图8a和图8b更详细地进行了描述。
200.车辆102可以还包括振动传感器842。振动传感器842可以测量车辆的诸如车轴之类的部件的振动。例如,振动的变化可以指示道路表面的变化。在另一个示例中,当使用两个或更多振动传感器842时,振动之间的差异可以用来确定道路表面的摩擦或滑移(例如当动力驱动轴与自由旋转轴之间存在振动差异时)。
201.车辆102可以包括adas系统838。在一些示例中,adas系统838可以包括soc。adas系统838可以包括自主/自适应/自动巡航控制(acc)、协作自适应巡航控制(cacc)、前方撞车警告(fcw)、自动紧急制动(aeb)、车道偏离警告(ldw)、车道保持辅助(lka)、盲点警告
(bsw)、后方穿越交通警告(rctw)、碰撞警告系统(cws)、车道居中(lc)和/或其他特征和功能。
202.acc系统可以使用radar传感器860、lidar传感器864和/或相机。acc系统可以包括纵向acc和/或横向acc。纵向acc监控并控制到紧接在车辆102前方的车辆的距离,并且自动地调节车速以维持离前方车辆的安全距离。横向acc执行距离保持,并且在必要时建议车辆102改变车道。横向acc与诸如lca和cws之类的其他adas应用程序有关。
203.cacc使用来自其他车辆的信息,该信息可以经由网络接口824和/或无线天线826经由无线链路或者通过网络连接(例如通过因特网)间接地从其他车辆接收。直接链接可以由车对车(v2v)通信链路提供,而间接链接可以是基础设施到车辆(i2v)的通信链路。通常,v2v通信概念提供关于紧接在前的车辆(例如紧接在车辆102前方且与其处于相同车道的车辆)的信息,而i2v通信概念提供关于前方更远处的交通的信息。cacc系统可以包括i2v和v2v信息源中的任一个或者二者。给定车辆102前方车辆的信息,cacc可以更加可靠,并且它有可能提高交通流的畅通性且降低道路拥堵。
204.fcw系统被设计为提醒驾驶员注意危险,使得驾驶员可以采取纠正措施。fcw系统使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器860,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。fcw系统可以提供例如声音、视觉警告、振动和/或快速制动脉冲形式的警告。
205.aeb系统检测即将发生的与另一车辆或其他对象的前方碰撞,并且可以在驾驶员在指定的时间或距离参数内没有采取纠正措施的情况下自动地应用制动器。aeb系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前置相机和/或radar传感器860。当aeb系统检测到危险时,它典型地首先提醒(alert)驾驶员采取纠正措施以避免碰撞,并且如果驾驶员没有采取纠正措施,那么aeb系统可以自动地应用制动器以努力防止或者至少减轻预测的碰撞的影响。aeb系统可以包括诸如动态制动支持和/或碰撞迫近制动之类的技术。
206.ldw系统提供了诸如方向盘或座位振动之类的视觉、听觉和/或触觉警告,以在车辆102穿过车道标记时提醒驾驶员。当驾驶员指示有意偏离车道时,通过激活转弯信号,不激活ldw系统。ldw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的前侧朝向相机,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
207.lka系统是ldw系统的变型。如果车辆102开始离开车道,那么lka系统提供纠正车辆102的转向输入或制动。
208.bsw系统检测并向驾驶员警告汽车盲点中的车辆。bsw系统可以提供视觉、听觉和/或触觉警报以指示合并或改变车道是不安全的。系统可以在驾驶员使用转弯信号时提供附加的警告。bsw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的后侧朝向相机和/或radar传感器860,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员反馈。
209.rctw系统可以在车辆102倒车时在后置相机范围之外检测到对象时提供视觉、听觉和/或触觉通知。一些rctw系统包括aeb以确保应用车辆制动器以避免撞车。rctw系统可以使用耦合到专用处理器、dsp、fpga和/或asic的一个或更多个后置radar传感器860,该专用处理器、dsp、fpga和/或asic电耦合至诸如显示器、扬声器和/或振动部件之类的驾驶员
反馈。
210.常规的adas系统可能易于出现假阳性结果,这可能会让驾驶员烦恼并分散注意力,但是典型地不是灾难性的,因为adas系统提醒驾驶员并且允许驾驶员决定安全条件是否真正存在并且相对应地采取行动。然而,在自主车辆102中,在冲突结果的情况下,车辆102本身必须决定是否注意(heed)来自主计算机或者辅助计算机(例如第一控制器836或第二控制器836)的结果。例如,在一些实施例中,adas系统838可以是用于向备用计算机合理性模块提供感知信息的备用和/或辅助计算机。备用计算机合理性监视器可以在硬件组件上运行冗余多样的软件,以检测感知和动态驾驶任务中的故障。来自adas系统838的输出可以提供给监督mcu。如果来自主计算机和辅助计算机的输出冲突,那么监督mcu必须确定如何协调该冲突以确保安全操作。
211.在一些示例中,主计算机可以被配置为向监督mcu提供置信度评分,指示主计算机对所选结果的置信度。如果置信度评分超过阈值,那么监督mcu可以遵循主计算机的方向,而不管辅助计算机是否提供冲突或不一致的结果。在置信度评分不满足阈值的情况下并且在主计算机和辅助计算机指示不同的结果(例如冲突)的情况下,监督mcu可以在这些计算机之间进行仲裁以确定适当的结果。
212.监督mcu可以被配置为运行神经网络,所述神经网络被训练并且被配置为基于来自主计算机和辅助计算机的输出,确定辅助计算机提供假警报的条件。因此,监督mcu中的神经网络可以了解何时可以信任辅助计算机的输出以及何时不能。例如,当辅助计算机为基于radar的fcw系统时,监督mcu中的神经网络可以了解fcw系统何时正在识别事实上不是危险的金属对象,例如触发警报的排水栅格或井盖。类似地,当辅助计算机是基于相机的ldw系统时,监督mcu中的神经网络可以学习在骑车者或行人在场并且车道偏离实际上是最安全的策略时无视该ldw。在包括运行在监督mcu上的神经网络的实施例中,监督mcu可以包括适合于利用关联的存储器运行神经网络的dla或gpu中的至少一个。在优选的实施例中,监督mcu可以包括soc 804的部件和/或作为soc 804的部件而被包括。
213.在其他示例中,adas系统838可以包括使用传统计算机视觉规则执行adas功能的辅助计算机。这样,辅助计算机可以使用经典的计算机视觉规则(如果-那么),并且在监督mcu中存在神经网络可以提高可靠性、安全性和性能。例如,多样化的实现方式和有意的非完全相同(non-identity)使得整个系统更加容错,对于软件(或者软件-硬件接口)功能造成的故障而言尤其如此。例如,如果在主计算机上运行的软件中存在软件漏洞或错误并且运行在辅助计算机上的非完全相同的软件代码提供相同的总体结果,那么监督mcu可以更加确信总体结果是正确的,并且主计算机上的软件或硬件中的漏洞不造成实质性的错误。
214.在一些示例中,adas系统838的输出可以馈送至主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果adas系统838由于对象紧接在前的原因而指示前方碰撞警告,那么感知块可以在识别对象时使用该信息。在其他示例中,辅助计算机可以具有它自己的神经网络,其被训练并且因此如本文所描述的降低假阳性的风险。
215.车辆102可以还包括信息娱乐soc 830(例如车载信息娱乐系统(ivi))。尽管被图示和描述为soc,但是信息娱乐系统可以不是soc,并且可以包括两个或更多分立的部件。信息娱乐soc 830可以包括可以用来向车辆102提供音频(例如音乐、个人数字助理、导航指令、新闻、广播等等)、视频(例如tv、电影、流媒体等等)、电话(例如免提呼叫)、网络连接(例
如lte、wi-fi等等)和/或信息服务(例如导航系统,后停车援助,无线电数据系统,诸如燃油水平、覆盖的总距离、制动燃油水平、油位、车门开/关、空气过滤器信息之类的车辆有关信息,等等)的硬件和软件的组合。例如,信息娱乐soc 830可以包括收音机、盘播放器、导航系统、视频播放器、usb和蓝牙连接、车载电脑、车载娱乐、wi-fi、方向盘音频控件、免提语音控件、平视显示器(hud)、hmi显示器834、远程信息处理设备、控制面板(例如用于控制各种部件、特征和/或系统,和/或与其交互)和/或其他部件。信息娱乐soc 830可以进一步用来向车辆的用户提供信息(例如视觉的和/或听觉的),例如来自adas系统838的信息,诸如规划的车辆机动、轨迹、周围环境信息(例如交叉路口信息、车辆信息、道路信息等等)之类的自主驾驶信息,和/或其他信息。
216.信息娱乐soc 830可以包括gpu功能。信息娱乐soc 830可以通过总线802(例如can总线、以太网等)与车辆102的其他设备、系统和/或部件通信。在一些示例中,信息娱乐soc 830可以耦合至监督mcu,使得在主控制器836(例如车辆102的主和/或备用计算机)出现故障的情况下,信息娱乐系统的gpu可以执行一些自驾驶功能。在这样的示例中,信息娱乐soc 830可以如本文所描述的将车辆102置于司机安全停车模式。
217.车辆102可以还包括仪表组832(例如数字仪表板、电子仪表组、数字仪表面板等等)。仪表组832可以包括控制器和/或超级计算机(例如分立的控制器或超级计算机)。仪表组832可以包括一套仪器,例如车速表、燃油水平、油压、转速表、里程表、转弯指示器、换档位置指示器、安全带警告灯、停车制动警告灯、发动机故障灯、安全气囊(srs)系统信息、照明控件、安全系统控件、导航信息等等。在一些示例中,信息可以被显示和/或在信息娱乐soc 830和仪表组832之间共享。换言之,仪表组832可以作为信息娱乐soc 830的部分而被包括,或者反之亦然。
218.图8d为根据本公开一些实施例的基于云的服务器与图8a的示例自主车辆102之间的通信的系统示意图。系统876可以包括服务器878、网络890以及包括车辆102在内的车辆。服务器878可以包括多个gpu884(a)-884(h)(这里统称为gpu 884)、pcie交换机882(a)-882(h)(这里统称为pcie交换机882)和/或cpu 880(a)-880(b)(这里统称为cpu 880)。gpu 884、cpu 880和pcie交换机可以与诸如例如且不限于nvidia开发的nvlink接口888之类的高速互连和/或pcie连接886互连。在一些示例中,gpu 884经由nvlink和/或nvswitch soc连接,并且gpu 884和pcie交换机882经由pcie互连连接。尽管图示出八个gpu 884、两个cpu880和两个pcie交换机,但是这并不意图是限制性的。取决于实施例,服务器878中的每一个可以包括任意数量的gpu 884、cpu 880和/或pcie交换机。例如,服务器878中的每一个可以包括八个、十六个、三十二个和/或更多gpu 884。
219.服务器878可以通过网络890并且从车辆接收图像数据,该图像数据表示示出诸如最近开始的道路工程之类的意外或改变的道路状况的图像。服务器878可以通过网络890并且向车辆传输神经网络892、更新的神经网络892和/或地图信息894,包括关于交通和道路状况的信息。对地图信息894的更新可以包括对于hd地图822的更新,例如关于建筑工地、坑洼、弯道、洪水或其他障碍物的信息。在一些示例中,神经网络892、更新的神经网络892和/或地图信息894可以已从新的训练和/或从环境中的任意数量的车辆接收的数据中表示和/或基于数据中心处执行的训练(例如使用服务器878和/或其他服务器)的经验产生。
220.服务器878可以用来基于训练数据训练机器学习模型(例如神经网络)。训练数据
可以由车辆生成,和/或可以在模拟中生成(例如使用游戏引擎)。在一些示例中,训练数据被标记(例如在神经网络受益于有监督学习的情况下)和/或经历其他预处理,而在其他示例中,训练数据不被标记和/或预处理(例如在神经网络无需有监督学习的情况下)。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如通过网络890传输至车辆),和/或机器学习模型可以由服务器878用来远程地监控车辆。
221.在一些示例中,服务器878可以接收来自车辆的数据,并且将该数据应用到最新的实时神经网络以用于实时智能推理。服务器878可以包括由gpu 884供电的深度学习超级计算机和/或专用ai计算机,例如nvidia开发的dgx和dgx站机器。然而,在一些示例中,服务器878可以包括仅使用cpu供电的数据中心的深度学习基础设施。
222.服务器878的深度学习基础设施可能够快速实时推理,并且可以使用该能力来评估并验证车辆102中的处理器、软件和/或关联硬件的健康状况。例如,深度学习基础设施可以接收来自车辆102的定期更新,例如图像序列和/或车辆102已经定位的位于该图像序列中的对象(例如经由计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行它自己的神经网络以识别对象并且将它们与车辆102识别的对象相比较,如果结果不匹配并且该基础设施得出车辆102中的ai发生故障的结论,那么服务器878可以向车辆102传输信号,指示车辆102的故障保护计算机进行控制,通知乘客,并且完成安全停车操作。
223.为了推理,服务器878可以包括gpu 884和一个或更多个可编程推理加速器(例如nvidia的tensorrt)。gpu供电的服务器和推理加速的组合可以使得实时响应成为可能。在其他示例中,例如在性能不那么重要的情况下,cpu、fpga和其他处理器供电的服务器可以用于推理。
224.示例计算设备
225.图9为适合用于实现本公开一些实施例的示例计算设备900的框图。计算设备900可以包括直接或间接耦合下列设备的总线902:存储器904,一个或更多个中央处理单元(cpu)906,一个或更多个图形处理单元(gpu)908,通信接口910,输入/输出(i/o)端口912,输入/输出组件914,电源916,以及一个或更多个呈现组件918(例如显示器)。
226.尽管图9的各个框被示为经由具有线路的总线902连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如显示设备之类的呈现组件918可以被认为是i/o组件914(例如如果显示器为触摸屏)。作为另一个示例,cpu 906和/或gpu 908可以包括存储器(例如,存储器904可以表示除了gpu 908、cpu 906和/或其他组件的存储器以外的存储设备)。换言之,图9的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ecu)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图9的计算设备的范围内。
227.总线902可以表示一条或更多条总线,例如地址总线、数据总线、控制总线或者其组合。总线902可以包括一种或更多种总线类型,例如行业标准架构(isa)总线、扩展行业标准架构(eisa)总线、视频电子标准协会(vesa)总线、外围组件互连(pci)总线、外围组件互连快速(pcie)总线,和/或另一种类型的总线。
228.存储器904可以包括各种各样的计算机可读介质中的任何介质。计算机可读介质
可以是可以由计算设备900访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
229.计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,存储器904可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于ram、rom、eeprom、闪存或者其他存储技术、cd-rom、数字多功能盘(dvd)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由计算设备900访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
230.通信介质可以在诸如载波之类的调制数据信号或其他传输机制中包括计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,通信介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、rf、红外和其他无线介质之类的无线介质。任何以上所述的组合也应当包括在计算机可读介质的范围内。
231.cpu 906可以被配置为执行计算机可读指令以便控制计算设备900的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。cpu 906中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。cpu 906可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的计算设备900的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于计算设备900的类型,处理器可以是使用精简指令集计算(risc)实现的arm处理器或者使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,计算设备900还可以包括一个或更多个cpu 906。
232.gpu 908可以由计算设备900用来渲染图形(例如3d图形)。gpu 908可以包括能够同时处理数百或数千个软件线程的数百或数千个核。gpu908可以响应于渲染命令(例如经由主机接口接收的来自cpu 906的渲染命令)而生成用于输出图像的像素数据。gpu 908可以包括诸如显示存储器之类的用于存储像素数据的图形存储器。显示存储器可以作为存储器904的部分而被包括。gpu 908可以包括(例如经由链路)并行操作的两个或更多gpu。当组合在一起时,每个gpu 908可以生成用于输出图像的不同部分或者用于不同输出图像的像素数据(例如,第一gpu用于第一图像,第二gpu用于第二图像)。每个gpu可以包括它自己的存储器,或者可以与其他gpu共享存储器。
233.在其中计算设备900不包括gpu 908的示例中,cpu 906可以用来渲染图形。
234.通信接口910可以包括一个或更多个接收器、发送器和/或收发器,其使得计算设备900能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口910可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,所述网络例如无线网络(例如wi-fi、z波、蓝牙、蓝牙le、zigbee等等)、有线网络(例如通过以太网通信)、低功率广域网(例如lorawan、sigfox等等)和/或因特网。
235.i/o端口912可以使得计算设备900能够逻辑地耦合到包括i/o组件914、呈现组件918和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)计算设备900中。说明性i/o组件914包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。i/o组件914可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(nui)。在一些实例中,输入可以传输至适当的网络元件以便进一步处理。nui可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与计算设备900的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。计算设备900可以包括诸如立体相机系统之类的深度相机、红外相机系统、rgb相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,计算设备900可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(imu)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备900用来渲染沉浸式增强现实或者虚拟现实。
236.电源916可以包括硬接线电源、电池电源或者其组合。电源916可以向计算设备900供电以使得计算设备900的组件能够操作。
237.呈现组件918可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(hud)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。呈现组件918可以接收来自其他组件(例如gpu 908、cpu 906等等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
238.本公开可以在由计算机或者诸如个人数字助理或其他手持式设备之类的其他机器执行的、包括诸如程序模块之类的计算机可执行指令的机器可使用指令或者计算机代码的一般背景下进行描述。通常,包括例程、程序、对象、组件、数据结构等等的程序模块指的是执行特定任务或者实现特定抽象数据类型的代码。本公开可以在各种各样的系统配置中实践,这些配置包括手持式设备、消费电子器件、通用计算机、更专业的计算设备等等。本公开也可以在其中任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实践。
239.如在本文中使用的,“和/或”关于两个或更多元素的叙述应当解释为仅指一个元素或者元素组合。例如,“元素a、元素b和/或元素c”可以包括仅仅元素a,仅仅元素b,仅仅元素c,元素a和元素b,元素a和元素c,元素b和元素c,或者元素a、b和c。此外,“元素a或元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。进一步,“元素a和元素b中的至少一个”可以包括元素a中的至少一个,元素b中的至少一个,或者元素a中的至少一个和元素b中的至少一个。
240.本文详细地描述了本公开的主题以满足法定要求。然而,描述本身并非意在限制本公开的范围。相反地,本发明人已经设想到,要求保护的主题也可以以其他的方式具体化,以包括与本文中结合其他当前或未来技术描述的步骤不同的步骤或者相似的步骤的组合。而且,尽管术语“步骤”和/或“块”在本文中可以用来隐含采用的方法的不同元素,但是这些术语不应当被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非明确描述了各步骤的顺序。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献