欢迎光临小豌豆知识网!
当前位置:首页 > 物理技术 > 调节控制> 使用模拟环境对自主机器进行培训、测试和验证独创技术165658字

使用模拟环境对自主机器进行培训、测试和验证

2021-03-09 01:03:12

使用模拟环境对自主机器进行培训、测试和验证

  背景技术

  自主车辆和半自主车辆依赖于机器学习,尤其是深度神经网络(DNN),以执行用于操作,驾驶和导航车辆的任何数量的操作。例如,DNN可以用于对象检测,车道和道路边界检测,安全性分析,可驾驶自由空间分析,车辆操纵期间的控制生成等。但是,为了验证和确认DNN在自主或半自主车辆中的使用,需要对DNN进行大量数据的训练,这需要大量的时间和精力,但仍不能始终保证普遍准确或可用的结果。

  例如,传统系统通常依赖于物理车辆在现实环境中导航生成的数据来训练DNN,然后再部署到工作模型中。但是,这种方法有几个局限性。例如,车辆只能导航到这么多地方,在现实环境中很难重新创建危险或独特的情况,并且在这些现实环境中测试DNN可能很危险。例如,特别是在将DNN用于避障或其他安全措施的情况下,在实际环境中测试DNN可能不切实际。另一方面,在达到可接受的安全水平之前,汽车制造商可能不会将自主车辆部署到真实世界中。结果,这些竞争的利益使得产生健全,安全,准确和可靠的自动驾驶系统变得越来越困难。

  发明内容

  本公开的实施例涉及使用模拟环境训练,测试和验证自主机器。公开了用于训练,测试和/或验证真实世界系统的一个或更多个特征的系统和方法,例如在自主车辆和/或机器人中使用的软件堆栈。

  与传统系统(诸如上述那些)相反,本公开的系统利用模拟环境来测试包括多个DNN的一个或更多个自动驾驶软件栈。例如,物理传感器数据,虚拟传感器数据或其组合可以用于训练一个或更多个软件堆栈的DNN。一旦经过训练,就可以在模拟系统中对DNN进行测试,验证和确认,该模拟系统会生成用于使用一个或更多个软件堆栈控制虚拟对象的模拟环境。来自模拟环境的模拟数据可以输入到一个或更多个软件堆栈的DNN中,并且DNN可以生成输出。在一些示例中,输出可以用于在模拟环境内控制虚拟对象,以确定虚拟对象(以及因此与虚拟对象相对应的物理对象)如何在任意数量的不同情况下执行。在其他示例中,输出可用于测试DNN的准确性,结果可用于生成更多数据以进行进一步的训练(例如,DNN连续准确处理得最少的数据),微调DNN,验证DNN,和/或确认DNN。在任何示例中,可以生成模拟环境以创建难以导航的,危险的,不安全的和/或其他不可预测的情况用于虚拟对象导航。结果,可以在模拟环境内测试,重复和改进先前未测试的场景(例如,由于安全考虑,再现困难等)。

  在一些示例中,被配置用于安装在自主车辆内的车辆硬件可以用于在模拟环境内执行一个或更多个软件堆栈。另外,虚拟传感器数据可以被编码为一个或更多个软件堆栈熟悉的格式(例如,与用于训练DNN的物理传感器数据位位相同)。结果,DNN的测试,训练,验证和/或确认可以与在现实环境中的物理车辆中采用硬件/软件组件基本相同。

  附图说明

  下面参考附图详细描述用于使用模拟环境训练,测试和验证自主机器的系统和方法,其中:

  图1是根据本公开的一些实施例的用于重新模拟的示例性系统;

  图2包括根据本公开的一些实施例的用于测试,训练,验证和/或确认神经网络的过程的数据流程图;

  图3A-3D包括根据本公开的一些实施例的用于训练DNN的工作流;

  图4A-4F是根据本公开的一些实施例的模拟系统的示例说明。

  图5是示出根据本公开的一些实施例的使用在环硬件的对象生成模拟环境的方法的流程图;

  图6A是根据本公开的一些实施例的在运行时的模拟系统的示例说明;

  图6B包括根据本公开的一些实施例的用于模拟系统的基于云的架构;

  图7包括示出根据本公开的一些实施例的用于使用一个或更多个编解码器重新模拟或模拟的过程700的数据流程图;

  图8包括根据本公开的一些实施例的用于关键绩效指标(KPI)分析和观察的数据流程图;

  图9是示出根据本公开的一些实施例的用于在模拟环境中控制虚拟对象的方法的流程图;

  图10是示出根据本公开的一些实施例的用于使用在物理传感器数据上训练的机器学习模型控制模拟环境中虚拟对象的方法的流程图;

  图11A是根据本公开的一些实施例的示例性自主车辆的图示;

  图11B是根据本公开的一些实施例的图11A的示例性自主车辆的相机位置和视场的示例;

  图11C是根据本公开的一些实施例的图11A的示例性自主车辆的示例性系统架构的框图;

  图11D是根据本公开的一些实施例的用于在一个或更多个基于云的服务器与图11A的示例性自主车辆之间进行通信的系统图;以及图12是适合用于实现本公开的一些实施例的示例性计算设备的框图。

  具体实施方式

  所公开的系统和方法涉及在模拟环境中训练,测试和验证自主机器或对象。可以参照示例性自主或半自主车辆102(在本文中可替代地称为“车辆102”或“自主车辆102”)大体上描述本公开,本文中参照图11A-11D更详细地描述其示例。但是,这并非旨在进行限制。例如,并且在不脱离本公开的范围的情况下,本文描述的系统,方法和/或过程可以适用于非自主车辆,机器人,无人飞行器和/或任何其他类型的车辆或对象。

  重新模拟系统

  现在参考图1,图1是根据本公开的一些实施例的用于重新模拟的示例系统100。例如,系统100可以用于训练、测试、验证,部署,更新,重新验证和/或部署一个或更多个神经网络,以在自主车辆,半自主车辆,机器人和/或其他对象中使用。在一些示例中,系统100可以包括图11D的系统1176的组件、特征和/或功能中的部分或全部,和/或可以包括系统1176的附加和/或替代组件、特征和功能。应当理解,本文描述的这种和其他布置仅作为示例阐述。除了或替代所示出那些,可以使用其他布置和元件(例如,机器,界面,功能,命令,功能的分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合,并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可以由硬件,固件和/或软件来执行。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。

  在真实世界(例如,物理)环境中,一个或更多个车辆102可从一个或更多个车辆102的一个或更多个传感器收集传感器数据。一个或更多个车辆102的传感器可以包括但不限于一个或更多个全球导航卫星系统传感器1158(例如,一个或更多个全球定位系统传感器),一个或更多个RADAR传感器1160,一个或更多个超声传感器1162,一个或更多个LIDAR传感器1164,一个或更多个惯性测量单元(IMU)传感器1166(例如,一个或更多个加速度计,一个或更多个陀螺仪,一个或更多个磁罗经,一个或更多个磁力计等),一个或更多个麦克风1196,一个或更多个立体相机1168,一个或更多个广角相机1170(例如鱼眼相机),一个或更多个红外相机1172,一个或更多个环绕相机1174(例如360度相机),一个或更多个远程和/或中程相机1198,一个或更多个速度传感器1144(例如,用于测量车辆102的速度),一个或更多个振动传感器1142,一个或更多个转向传感器1140,一个或更多个制动传感器(例如,作为制动传感器系统1146的一部分)和/或其他传感器类型。一个或更多个车辆102可以包括自主车辆,半自主车辆,非自主车辆,和/或可以包括除车辆102之外的对象,例如机器人,无人机,无人驾驶飞机(UAV)等。

  一个或更多个车辆102可以包括车辆硬件104。例如,车辆硬件104可以负责管理由传感器生成的传感器数据(例如,使用由车辆硬件104执行的自动驾驶软件栈的传感器管理器)。使用车辆硬件104执行自动驾驶软件栈可以进一步包括世界状态管理器,该世界状态管理器使用一个或更多个地图(例如3D地图),一个或更多个定位组件,一个或更多个感知组件等等来管理世界。另外,自动驾驶软件栈可包括一个或更多个计划组件(例如,作为计划层的一部分),一个或更多个控制组件(例如,作为控制层的一部分),一个或更多个致动组件(例如,作为致动层的一部分),一个或更多个避障组件(例如,作为避障层的一部分)和/或一个或更多个其他组件。在任何示例中,车辆硬件104可以包括车辆102的硬件,其用于基于传感器数据,一个或更多个机器学习模型(例如,神经网络)等等通过真实世界环境来控制车辆102。这样,车辆硬件104可以被配置用于安装在车辆102内并且由车辆102用于执行自动驾驶软件栈,以通过一个或更多个真实世界物理环境至少部分地控制车辆102。

  除了现有的传感器数据(例如,存储在一个或更多个数据存储器110中的传感器数据)之外,由一个或更多个车辆102的传感器收集的传感器数据还可以由训练子系统106使用。训练子系统106可以包括基于云的深度学习基础架构,该基础架构可以使用人工智能来分析从一个或更多个车辆102接收到的和/或存储在一个或更多个数据存储110中的传感器数据,并结合或训练最新的实时神经网络(和/或其他机器学习模型),用于实时智能推理。在一些示例中,训练子系统106可以包括一个或更多个图形处理单元(GPU)服务器108。例如,训练子系统106可以包括具有GPU,TPU,CPU和/或其他处理器类型的数据中心。这样,相对于一个或更多个GPU服务器108的GPU的使用不旨在是限制性的,并且在一些示例中,一个或更多个GPU服务器108可以不包括一个或更多个GPU。

  训练子系统106可以训练和/或测试任何数量的机器学习模型,包括深度神经网络(DNN),例如用于执行与自动驾驶软件栈和/或舱内体验(IX)软件堆栈的一层或更多层相关联的操作的神经网络。例如,可以训练和/或测试一个或更多个自主车辆(AV)感知DNN,其中AV感知DNN可用于检测行驶表面上的车道和边界,用于检测可驾驶的自由空间,用于检测交通信号杆或标志,用于检测交通信号灯,用于检测环境中的对象(例如,车辆,行人,动物,无生命的对象等),用于检测等待条件和交叉路口等。作为另一示例,可以训练和/或测试一个或更多个舱内体验(IX)感知DNN,其中可以将IX感知DNN可用于监视车辆102内的乘客和驾驶员。例如,可以训练一个或更多个IX感知DNN以确定驾驶员的状态-例如但不限于凝视跟踪,头部姿势跟踪,困倦检测,睡意,睁眼,情绪检测,心率监测,驾驶员的生活状况,驾驶员损伤等。

  一旦经过训练和/或测试,IX感知DNN,AV感知DNN和/或其他DNN可以由确认/验证子系统112确认和/或验证。确认/验证子系统112可以包括与训练子系统106类似的组件和/或特征。在一些示例中,训练子系统106和确认/验证子系统112可以包括相同的硬件组件,而在其他示例中,硬件组件可以不同。确认/验证子系统112可以验证和/或确认与DNN相关联的性能,准确性和/或其他标准。一旦被验证和/或确认,就可以将经确认的AV感知DNN和/或经确认的IX感知DNN合并到一个或更多个软件堆栈116(例如,IX软件堆栈和/或自动驾驶软件栈)中。一旦合并到一个或更多个软件堆栈116中,一个或更多个车辆102就可以使用车辆硬件104执行一个或更多个软件堆栈,以在现实环境中控制一个或更多个车辆102。尽管图1中的一个或更多个车辆102被示为收集数据并使用部署的DNN,这不旨在进行限制。例如,某些车辆102可以用于数据捕获,而其他车辆102可以用于使用部署的DNN用于自动驾驶应用程序。这样,在一些示例中,一旦从第一车辆102收集的数据已经用于训练部署的DNN,则第一车辆102可以收集数据,并且第二车辆102可以使用一个或更多个软件堆栈116。

  这样,系统100可以包括重新模拟系统,其使用由一个或更多个车辆102在现实环境中生成的物理传感器数据来训练、测试、验证和/或确认在一个或更多个软件堆栈116中使用的一个或更多个DNN。在一些示例中,如本文所述,重新模拟系统100可以与一个或更多个模拟系统400A,400B,400C和/或400D重叠,因为测试,训练,验证和/或确认中的至少一些可以在模拟环境中执行。

  现在参考图2,图2包括根据本公开的一些实施例的用于测试,训练,验证和/或确认神经网络的过程118的数据流程图。过程118可包括在现实环境中由一个或更多个车辆102捕获和/或生成的新驾驶数据(例如,传感器数据)的数据摄取和/或来自一个或更多个模拟环境的模拟或虚拟传感器数据。过程118可以进一步包括数据索引和管理(curation)124,数据标记服务126,模型训练128,模型细化、修剪和/或微调130,模型验证132和/或更新全局覆盖图134。过程118可以包括训练循环,由此由一个或更多个车辆102生成新数据,用于训练、测试、验证和/或确认一个或更多个感知DNN,然后由一个或更多个车辆102使用经过训练或部署的DNN以导航现实环境。

  一个或更多个数据存储120可以分别存储由一个或更多个车辆102的一个或更多个真实世界传感器和/或一个或更多个虚拟车辆的虚拟传感器生成的传感器数据和/或虚拟传感器数据。

  数据摄取122可以包括生成和/或记录由一个或更多个车辆102自主车辆平台(例如,车辆硬件104和/或一个或更多个软件堆栈116)输出的数据。作为非限制性示例,可以将数据写出到固态驱动器(SSD)和/或通过有线和/或无线方式下载到一个或更多个数据存储120。

  数据索引和管理124可以包括索引与由一个或更多个车辆102输出的数据相关联的元数据,以进行进一步的搜索和/或检索。搜索索引可以用于检索数据的特定段,然后可以对其进行标签和/或标记以进行进一步处理。在一些示例中,原始数据可以以无损格式存储以允许进一步的预处理和/或量化。在这样的示例中,按需转码服务可以将原始数据转换为各种目标格式(例如MPEG,JPEG,FP16等),并且可以将转换后的数据提供或输入到一个或更多个处理管线(例如,标记,DNN训练,重新模拟等)。导出的数据集可以存储在数据集存储中,该数据集存储可以是处理不可变数据集以进行进一步处理的服务。一旦存储了数据集,就可以使用和重新使用数据集以精确地重现训练结果,或者运行和重新运行模拟作业。

  数据标记服务126可以用于标签和/或标记在过程118中使用的数据,原始数据,转换的数据和/或任何其他数据。在示例中,标签和/或标记可以由人,机器或它们的组合执行。

  模型训练128可以使用深度学习平台来定义训练应用程序并在计算集群上运行训练应用程序(例如,使用图1的训练子系统106)。计算集群可以包括一个或更多个由GPU供电的服务器,每个服务器可以包括多个GPU,PCIe开关和/或CPU,与高速互连(诸如NVLink和PCIe连接)互连。在一些示例中,本地高速缓存(高带宽横向扩展文件系统)可能在计算群集旁边可用,并用于在计算节点旁边高速缓存数据集。系统可以处理高速缓存,并且可以向计算作业提供本地数据集。训练应用可以生成经训练的模型和实验性元数据,可以将其存储在模型数据存储中以供进一步使用。

  模型细化、修剪和/或微调130可以包括更新DNN以进一步细化和提高DNN的准确性和功效。例如,可以通过实验服务来启用超参数发现,该实验服务可以跟踪超参数空间上的信息以探索每个实验生成的超参数配置,度量和模型版本。工作流管理器可用于将实验并行调度和分派到多个节点。可以通过提早终止试探法来实现最大的计算效率,该试探法使终止与其他实验相比效果较差的实验成为可能。工作流管理器可能负责从源配置管理(SCM)存储库中构建二进制文件,以确保没有未跟踪的信息从用户泄漏到生成的模型。这样,该平台可以实现对与实验有关的所有信息的系统跟踪,从而实现可重复的实验。作为示例但不限于,可以执行修剪,类似于美国临时专利申请No.62/630,445和美国专利申请No.16/246,414中公开的修剪方法、过程和系统,其通过引用整体并入本文。

  模型验证132可以包括确认和/或验证DNN,例如通过使用图1的确认/验证子系统112。一旦模型被确认,就可以更新全局覆盖图(在134)。例如,一旦针对新区域训练了一个或更多个软件堆栈116的必要部分,和/或针对已经覆盖的区域更新了一个或更多个软件堆栈116,则可以更新全局覆盖图。随着全局覆盖图的增加,使用一个或更多个软件堆栈116的一个或更多个车辆102可能能够导航通过附加区域。一旦模型被训练,可以将模型重新加载到更大的应用程序中并运行其他测试数据集。在这样的示例中,用于训练的类似模型可以用于该重新训练,测试或微调过程。

  在一些示例中,可以使用主动学习。例如,可以使用现有的训练模型(例如DNN)来挖掘更多的训练数据。系统可以使用现有模型对新收集的数据和/或原始数据进行得分(或推断),并为每条数据计算置信度得分。置信度得分可以表示数据对于训练有多有益或有用。例如,由现有模型建模的已经使用的数据可能不会提供太多或任何增量值,而该模型不良预测的新数据可能会被重复使用,以改善现实驾驶应用程序的模型。换句话说,已经训练DNN进行精确处理的数据可能没有像未训练DNN进行精确处理的数据那样有用。主动学习可用于识别可用于在其他或替代情况或环境中为DNN提供增强性能的数据。

  现在参考图3A-3E,图3A-3E包括用于训练DNN的工作流。图3A包括工作流300A。工作流300A可以包括数据摄取122,将数据传递到一个或更多个数据集存储302(例如,处理不可变数据集以进行进一步处理的服务),使用数据标记服务126标记数据,以及使用模型训练128训练DNN。在一些示例中,被选择用于标记的帧可以被随机选择。工作流300A可以包括例如300,000至600,000帧(例如,由数据表示的帧)的标记。一旦DNN被训练,就可以在模拟和/或重新模拟应用程序304中使用DNN。然后可以修剪、优化、完善模型,然后将其作为部署的DNN部署在一个或更多个车辆102中(例如,在一个或更多个软件堆栈116中)。一旦已经将DNN训练到可接受的准确性水平(例如90%,95%,97%等),训练和完善过程就可以移至第二个工作流程,例如工作流300B。

  图3B包括工作流300B。工作流300B可以包括模型存储306,其可以包含预先训练的或先前训练的模型(例如,DNN)。预先训练的模型可以用于对新数据进行得分,并且该得分可以用于对要标记的数据进行优先级排序。例如,预先训练的DNN可以用于为每个选择的新帧计算得分,其中得分可以表示对DNN的预测的置信度。当置信度得分高时(例如,意味着模型能够准确地处理框架),可以将框架的优先级降低以进行标记。当得分低时,可以对帧进行优先处理。这样,当帧对于DNN是混乱的时(即,当置信度得分低时),则可以标记帧,使得DNN可以从帧中学习,从而进一步完善预先训练的DNN。

  在一些示例中,得分函数可以从网络输出估计不确定性伪概率。在这样的示例中,可以通过多次计算DNN的输出来利用丢失,并且每次都随机地丢弃(例如,归零)前一层到最后一层的神经元。然后可以利用DNN的预测的方差,并且方差可以编码预测中的不确定性,从而导致得分。

  可以针对模型存储306中的一个或更多个当前DNN(例如,表现最好的DNN)计算关键绩效指标(KPI)和/或度量,以便确定当前DNN可能执行得不够好的条件或条件的组合。例如,一个条件维度可以包括整个图像或整个帧的属性,例如但不限于,灯光或照明(例如,白天,黑夜,阴天,黄昏,背光等),天气(例如,清晰,雨,雪,雾等),环境(例如,农村,城市,郊区,高速公路等),地形(例如,平坦,弯曲,丘陵等),地理区域(例如,欧洲,北美,中国等),传感器(例如相机)属性(例如位置和/或镜头类型)和/或其组合。当前DNN不能被认为在其上表现良好的条件或条件的组合(例如,其精度低于所需水平或要求的水平)可用于指导数据(例如,附加数据)的挖掘和标记,参考条件或条件组合可以提高DNN的准确性。在一些示例中,在数据索引和/或管理124(图1)期间可能通过使用已经添加的标签来促进数据的挖掘。

  工作流300B可以提供微调和/或转移学习。例如,系统可以从模型存储306重新加载模型(如图3B中的虚线310所示)并继续训练它们。例如,这可用于相机调整和快速实验。

  图3C包括工作流300C。工作流300C可以提供主动学习。例如,工作流300A和300B可能无法无限期地继续,因为这可能导致即使最大的系统也无法保留和处理太多的数据。例如,大约10,000小时的数据收集可能会导致30-50拍字节(petabyte)的数据,具体取决于一个或更多个车辆102的传感器数量。此外,在工作流300A和300B之后,DNN应当在高精度运行,并且在几乎所有离线基准测试中均表现良好。这样,工作流300C可以提供边缘级别的混淆得分,其可能类似于工作流300B,但是在边缘执行。通常,这可能意味着在驾驶时在车辆级别DNN无法理解的任何内容都可以通过API记录和发布,并标记以进行进一步检查(例如,标签)。

  在一些示例中,DNN不能足够准确地执行的预定条件或条件的组合(例如本文所述的条件)也可以用于在边缘处引导和聚焦数据收集。例如,一个或更多个车辆102可能不收集所有数据,而可以仅收集满足某些条件或条件的组合的数据(例如,晚上,雨中,某些隧道类型等)。

  图3D包括工作流300D。工作流300D可以提供DNN的训练和完善。在一些示例中,工作流300D可以跟随工作流300C。最终,目标可能是使用预测得分并将其汇总在地图(例如GPS或GNSS地图)上,以说明DNN表现良好的的位置或区域以及哪里DNN表现较差(例如,低于所需精度水平)。可以生成热图312以指示性能较低的区域,并且可以将一个或更多个车辆102分派(例如,在分派308处)到这些位置。在一些示例中,可以利用KPI和/或度量来指导一个或更多个车辆102的路线规划,以便捕获表示DNN在针对其生成预测时不够精确的条件或条件的组合的数据。

  模拟系统

  模拟系统400-例如,由本文更详细描述的模拟系统400A,400B,400C和400D表示-可以生成全局模拟,其模拟虚拟世界或环境(例如,模拟环境),可以包括人工智能(AI)车辆或其他对象(例如,行人,动物等),硬件在环(HIL)车辆或其他对象,软件在环(SIL)车辆或其他对象,和/或人在环(PIL)车辆或其他对象。可以在引擎(例如,游戏引擎)或其他软件开发环境中维护全局模拟,其擎可以包括渲染引擎(例如,用于2D和/或3D图形),物理引擎(例如,用于碰撞检测,碰撞响应等),声音,脚本,动画,AI,网络,流,内存管理,线程,本地化支持,场景图,电影和/或其他功能。在一些示例中,如本文所述,模拟系统400内的一个或更多个车辆或对象(例如,HIL对象,SIL对象,PIL对象,AI对象等)可以被维持在它们自己的引擎实例内。在这样的示例中,每个虚拟对象的每个虚拟传感器可以包括它们自己的引擎实例(例如,用于虚拟相机的实例,用于虚拟LIDAR传感器的第二实例,用于另一个虚拟LIDAR传感器的第三实例等)。这样,关于传感器对全局模拟的感知,引擎的实例可用于处理每个传感器的传感器数据。因此,对于虚拟相机,该实例可用于处理关于模拟环境中相机视场的图像数据。作为另一示例,对于IMU传感器,该实例可以用于针对模拟环境中的对象的处理IMU数据(例如,代表方位)。

  AI(例如,机器人)车辆或其他对象可以包括行人,动物,第三方车辆,车辆和/或其他对象类型。可以使用人工智能(例如,机器学习,诸如神经网络,基于规则的控制,其组合等)来控制模拟环境中的AI对象,以模拟或仿真相应的真实世界对象会表现的方式。在一些示例中,可以从一个或更多个HIL对象,SIL对象和/或PIL对象获悉用于AI对象的规则或动作。在模拟环境中的AI对象(例如,机器人)对应于行人的示例中,可以训练机器人在多种不同情况或环境中都像行人一样(例如跑步,步行,慢跑,不专心,在打电话,下雨,下雪,在城市,在郊区,在农村社区等)。这样,当将模拟环境用于测试车辆性能时(例如,用于HIL或SIL实施例),机器人(例如,行人)的行为就可以像真实世界中的行人一样(例如,在下雨或黑暗的情况下乱穿马路,未能注意停车标志或交通信号灯等),以便更准确地模拟现实环境。此方法可用于模拟环境中的任何AI机器人,例如车辆,自行车或摩托车,其AI机器人也可能被训练为表现得像真实世界中的对象(例如,编织进出交通,转弯,无信号或突然变道,意外刹车等)。

  可能与目标车辆(例如,模拟环境中的自我车辆)相距较远的AI对象可以以简化形式表示-例如径向距离函数或平面中已知位置的点列表,与相关的瞬时运动矢量。这样,可以类似于在视频游戏引擎中如何对AI代理进行建模的方式对AI对象进行建模。

  HIL车辆或对象可以使用在物理车辆或对象中使用的硬件,以至少协助在模拟环境中对HIL车辆或对象进行某些控制。例如,在HIL环境中控制的车辆可以在数据流环路中使用一个或更多个SoC 1104(图11C),一个或更多个CPU 1118,一个或更多个GPU 1120等,以在模拟环境中控制车辆。在一些示例中,来自车辆的硬件可以是NVIDIA DRIVE AGXPegasusTM计算平台和/或NVIDIA DRIVE PX XavierTM计算平台。例如,车辆硬件(例如,车辆硬件104)可以包括2018年11月9日提交的美国非临时申请No.16/186,473中描述的组件和/或功能的部分或全部,其通过引用整体并入本文。在这样的示例中,至少一些控制决策可以使用硬件来生成,所述硬件被配置用于安装在真实世界的自主车辆(例如,车辆102)内以执行一个或更多个软件堆栈116的至少一部分。(例如,自动驾驶软件栈)。

  SIL车辆或对象可能使用软件来模拟或仿真HIL车辆或对象的硬件。例如,代替使用可以配置为在物理车辆(例如,车辆102)中使用的实际硬件,可以使用软件,硬件或其组合来模拟或仿真实际的硬件(例如,模拟一个或更多个SoC 1104)。

  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对象的控制,例如本文所述的那些。

  现在参考图4A,图4A是根据本公开的一些实施例的模拟系统400A的示例说明。模拟系统400A可以生成模拟环境410,该模拟环境可以包括AI对象412(例如,AI对象412A和412B),HIL对象414,SIL对象416,PIL对象418和/或其他对象类型。模拟环境410可以包括驾驶环境的特征,例如道路,桥梁,隧道,路牌,停车灯,人行横道,建筑物,树木和树叶,太阳,月亮,反射,阴影等,以努力在模拟环境410中准确地模拟现实环境。在一些示例中,通过包括碎屑,油漆,涂鸦和磨损,损坏等,模拟环境410中驾驶环境的特征可以更加逼真。尽管针对驾驶环境进行了描述,但这并不旨在进行限制,并且模拟环境可以包括室内环境(例如,用于机器人,无人机等),空中环境(例如,用于UAV,无人机,飞机等),水生环境(例如,小船,轮船,潜艇等)和/或其他环境类型。

  可以使用虚拟数据,真实世界数据或其组合来生成模拟环境410。例如,模拟环境可以包括使用虚拟数据扩充或更改的真实世界数据,以生成组合数据,该组合数据可用于模拟具有不同和/或添加元素(例如,其他AI对象,环境特征,天气状况等)的特定场景或情况条件等。例如,可以增加或改变预记录的视频以包括附加的行人,障碍物等,以使得虚拟对象(例如,将一个或更多个软件堆栈116执行为HIL对象和/或SIL对象)。可以针对实际数据中的变化进行测试。

  可以使用栅格化,光线追踪,使用DNN(例如生成对抗网络(GAN)),另一种渲染技术和/或其组合来生成模拟环境。例如,为了创建更逼真的现实照明条件(例如,阴影,反射,眩光,全局照明,环境遮挡等),模拟系统400A可以使用实时光线追踪。在一个或更多个实施例中,模拟系统400A可以使用一个或更多个硬件加速器来执行实时光线追踪。光线追踪可用于模拟LIDAR传感器,以精确生成LIDAR数据。例如,可以使用光线投射来模拟LIDAR反射率。在任何示例中,由模拟系统400A使用的光线追踪技术可以包括在2018年3月17日提交的美国临时专利申请No.62/644,385,2018年3月17日提交的美国临时专利申请No.62/644,386,2018年3月19日提交的美国临时专利申请No.62/644,601和2018年3月19日提交的美国临时专利申请No.62/644,806,2019年3月15日提交的美国非临时专利申请No.16/354,983,和/或2019年3月15日提交的美国非临时专利申请No.16/355,214中描述的一种或更多种技术,其每一个均通过引用整体并入本文。

  在一些示例中,可以至少部分地使用一个或更多个DNN(例如,生成对抗神经网络(GAN))来渲染模拟环境。例如,可以收集真实世界的数据,例如由自主车辆(例如,一个或更多个相机,一个或更多个LIDAR传感器,一个或更多个RADAR传感器等),机器人和/或其他对象捕获真实世界数据,以及可以由任何传感器(例如,从数据存储中提取的图像或视频,在线资源(例如搜索引擎等))捕获真实世界数据。然后可以对真实世界数据进行分割,分类和/或归类,例如通过基于类别标记真实世界数据的不同部分(例如,对于风景图像,图像的某些部分-例如像素或像素组-可能被标记为汽车,天空,树木,道路,建筑物,水,瀑布,车辆,公共汽车,卡车,轿车等)。然后可以使用分段的,分类的和/或归类的数据训练GAN(或其他DNN),以生成不同类型的对象,景观和/或其他特征的新版本,作为模拟环境中的图形。

  模拟系统400的一个或更多个模拟器组件402可以通过有线和/或无线连接与一个或更多个车辆模拟器组件406通信。在一些示例中,连接可以是使用一个或更多个传感器开关408的有线连接,其中传感器开关可以提供低压差分信令(LVDS)输出。例如,传感器数据(例如,图像数据)可以通过一个或更多个模拟器组件402和一个或更多个车辆模拟器组件406之间的HDMI至LVDS连接来传输。一个或更多个模拟器组件402可以包括任何数量的互连的计算节点(例如,计算机,服务器等),以确保世界状态的同步。在一些示例中,如本文所述,每个计算节点(例如,一个或更多个车辆模拟器组件计算节点和一个或更多个模拟器组件计算节点)之间的通信可以由分布式共享存储器(DSM)系统(例如,图4C的DSM 424)使用分布式共享存储器协议(例如,一致性协议)管理。DSM可以包括硬件(高速缓存一致性电路,网络接口等)和软件的组合。该共享存储器架构可以将存储器分成在节点和主存储器之间分布的共享部分,或者在所有节点之间分布所有存储器。在一些示例中,可以使用InfiniBand(IB)接口和关联的通信标准。例如,模拟系统400(和/或600)的不同节点之间的通信可以使用IB。

  一个或更多个模拟器组件402可以包括一个或更多个GPU404。被模拟的虚拟车辆可以包括任何数量的传感器(例如,虚拟或模拟传感器),其至少对应于本文至少参照图11A-11C所述的一个或更多个传感器。在一些示例中,车辆的每个传感器可以对应于GPU404之一或由其托管。例如,可以在第一GPU 404上执行对LIDAR传感器的处理,可以在第二GPU 404上执行对广角相机的处理,可以在第三GPU上执行对RADAR传感器的处理,依此类推。这样,相对于模拟环境的每个传感器的处理可能能够使用多个GPU 404与每个其他传感器并行执行以实现实时模拟。在其他示例中,两个或更多个传感器可以对应于GPU 404之一或由其托管。在这样的示例中,两个或更多个传感器可以由GPU 404上的不同线程处理并且可以并行处理。在其他示例中,单个传感器的处理可以分布在一个以上的GPU上。此外,或者可替代地,一个或更多个GPU 404,一个或更多个TPU,CPU和/或其他处理器类型可以用于处理传感器数据。

  一个或更多个车辆模拟器组件406可以包括模拟系统400A的计算节点,该计算节点对应于在模拟环境410中表示的单个车辆。每个其他车辆(例如414、418、416等)可以包括模拟系统的相应节点。结果,模拟系统400A可以可缩放到任意数量的车辆或对象,因为每个车辆或对象可以由系统400A中其自己的节点托管或管理。在图4A的说明中,一个或更多个车辆模拟器组件406可以对应于HIL车辆(例如,因为使用了车辆硬件104)。然而,这并不意味着是限制性的,并且如图4B和图4C所示,模拟系统400可以包括SIL车辆,HIL车辆,PIL车辆和/或AI车辆。一个或更多个模拟器组件402(例如,模拟器托管设备)可以包括模拟系统400A的一个或更多个计算节点,并且可以托管关于每个参与者(例如,关于每个HIL,SIL,PIL和AI角色)的环境模拟,以及托管环境或世界状态(例如道路,标志,树木,树叶,天空,太阳,照明等)的渲染和管理。在一些示例中,一个或更多个模拟器组件402可以包括一个或更多个服务器和可以托管模拟器(例如NVIDIA的DRIVETM星座AV模拟器)的相关组件(例如,一个或更多个CPU,一个或更多个GPU,计算机等)。

  如本文所述,车辆硬件104可以对应于图1的车辆硬件104,其可以在物理车辆102中使用。但是,在模拟系统400A中,车辆硬件104可以被结合到一个或更多个车辆模拟器组件406中。这样,因为车辆硬件104可以被配置为安装在车辆102内,模拟系统400A可以被具体配置为在模拟系统400A的节点(例如,服务器平台的节点)内使用车辆硬件104。例如,在物理车辆102中使用的相似接口可能需要由一个或更多个车辆模拟器组件406使用,以与车辆硬件104通信。在一些示例中,这些接口可以包括:(1)CAN接口,包括PCAN适配器,(2)以太网接口,包括带有IP地址,原始,VLA和/或源IP全部保留的RAW UDP套接字,(3)串行接口,带有USB到串行适配器,(4)相机接口,(5)InfiniBand(IB)接口和/或其他接口类型。

  在任何示例中,一旦表示模拟环境中的车辆的一个或更多个传感器的一个或更多个视场的传感器数据被生成和/或处理(例如,如本文所述,使用一个或更多个编解码器),传感器数据(和/或经编码的传感器数据)可由在车辆硬件104上执行的一个或更多个软件堆栈116(例如,自动驾驶软件栈)使用,以执行一项或更多项操作(例如,生成一个或更多个控制,路线规划,检测对象,识别可驾驶自由空间,监视环境以避开障碍物等)。结果,车辆102(例如,物理车辆)用于在现实环境中执行自动驾驶软件栈的相同或基本相同的硬件组件可用于在模拟环境410中执行自动驾驶软件栈。因此,在模拟系统400A中对车辆硬件104的使用提供了对车辆102在现实情况,场景和环境中如何表现的更精确的模拟,而不必在真实世界中找到并测试车辆102。这可以减少测试在物理车辆102中使用的硬件/软件组合所需的驾驶时间,并且可以通过不要求实际测试来降低安全风险(特别是在危险情况下,例如其他车辆行驶不稳定或以不安全的速度,在街上玩耍的孩子,桥上的冰等)。

  除了车辆硬件104之外,一个或更多个车辆模拟器组件可以使用附加硬件(诸如计算机-例如,X86盒)来管理车辆(或其他对象)的模拟。在一些示例中,可以使用一个或更多个车辆模拟组件406执行针对虚拟对象的虚拟传感器的附加处理。在这样的示例中,至少一些处理可以由一个或更多个模拟器组件402执行,并且其他处理的可以由一个或更多个车辆模拟器组件406(或420或422,如本文所述)执行。在其他示例中,虚拟传感器的处理可以完全在一个或更多个车辆模拟器组件406上执行。

  现在参考图4B,图4B是根据本公开的一些实施例的模拟系统400B的另一示例图示。模拟系统400B可包括一个或更多个模拟器组件402(作为一个或更多个计算节点),用于一个或更多个HIL对象的一个或更多个车辆模拟器组件406(作为一个或更多个计算节点),用于一个或更多个SIL对象的一个或更多个车辆模拟器组件420(作为一个或更多个计算节点),用于一个或更多个PIL对象的一个或更多个车辆模拟器组件406(作为一个或更多个计算节点)和/或用于AI对象和/或其他对象类型的一个或更多个其他组件(或计算节点)。PIL,HIL,SIL,AI和/或其他对象类型计算节点中的每一个可以与一个或更多个模拟器组件402通信,以从全局模拟中至少捕获与模拟环境410内的各个对象相对应的数据。

  例如,一个或更多个车辆模拟器组件422可以从由一个或更多个模拟器组件402托管的全局模拟(例如,由模拟环境410表示)接收(例如,检索,获得等)数据,所述数据对应于一个或更多个车辆模拟器组件422,与一个或更多个车辆模拟器组件422相关联和/或由一个或更多个车辆模拟器组件422要求,以由一个或更多个车辆模拟器组件422针对PIL对象执行一个或更多个操作。在这样的示例中,与PIL对象的每个传感器相对应数据(例如,与虚拟车辆的一个或更多个虚拟相机的一个或更多个视场相对应的虚拟传感器数据,虚拟LIDAR数据,虚拟RADAR数据,虚拟位置数据,虚拟IMU数据等)可以从一个或更多个模拟器组件402接收。该数据可以用于生成与由远程操作员控制的虚拟车辆的远程操作者的视野相对应的模拟环境的实例,并且模拟环境的一部分可以投影在显示器(例如,VR耳机的显示器,计算机或电视显示器等)上,以帮助远程操作员通过模拟环境410控制虚拟车辆。由远程操作员使用一个或更多个车辆模拟器组件422生成或输入的控制可以被发送到一个或更多个模拟器组件402,以更新模拟环境410内的虚拟车辆的状态。

  作为另一个示例,一个或更多个车辆模拟器组件420可以从一个或更多个模拟器组件402托管的全局模拟中接收(例如,检索,获取等)数据,所述数据对应于一个或更多个车辆模拟器组件420,与一个或更多个车辆模拟器组件420相关联和/或由一个或更多个车辆模拟器组件420要求,以由一个或更多个车辆模拟器组件420针对SIL对象执行的一项或更多项操作。在这样的示例中,与SIL对象的每个传感器相对应的数据(例如,与虚拟车辆的一个或更多个虚拟相机的一个或更多个视场相对应的虚拟传感器数据,虚拟LIDAR数据,虚拟RADAR数据,虚拟位置数据,虚拟IMU数据等)可以从一个或更多个模拟器组件402接收。该数据可以用于生成每个传感器的模拟环境的实例(例如,来自虚拟车辆的第一虚拟相机的第一视场的第一实例,来自第二虚拟相机的视场的第二实例,来自虚拟LIDAR传感器的视场的第三实例等)。因此模拟环境的实例可以用于由一个或更多个车辆模拟器组件420为每个传感器生成传感器数据。在一些示例中,可以使用一个或更多个编解码器对传感器数据进行编码(例如,每个传感器可以使用其自己的编码器,或者每种传感器类型可以使用其自己的编解码器),以生成经编码的传感器数据,该数据可以被由一个或更多个车辆模拟器组件420所模拟或仿真的自动驾驶软件栈理解或熟悉。例如,第一车辆制造商可以使用第一类型的LIDAR数据,第二车辆制造商可以使用第二类型的LIDAR数据,等等,因此编解码器可以根据制造商使用的传感器数据的类型来定制传感器数据。结果,取决于不同制造商使用的传感器的类型和相应的数据类型,模拟系统400可以是通用的,可定制的和/或可由任何数量的不同传感器类型使用。在任何示例中,传感器数据和/或经编码的传感器数据可以由自动驾驶软件栈使用以执行一个或更多个操作(例如,对象检测,路径规划,控制确定,致动类型等)。例如,传感器数据和/或编码数据可以用作自动驾驶软件栈的一个或更多个DNN的输入,并且一个或更多个DNN的输出可以用于更新模拟环境410内虚拟车辆的状态。这样,可以在模拟环境内测试,微调,验证和/或确认自动驾驶软件栈(包括一个或更多个DNN)的可靠性和功效。

  在又一个示例中,一个或更多个车辆模拟器组件406可以从一个或更多个模拟器组件402所托管的全局模拟中接收(例如,检索,获取等)数据,所述数据对应于一个或更多个车辆模拟器组件406,与一个或更多个车辆模拟器组件406相关联和/或由一个或更多个车辆模拟器组件406要求,以由一个或更多个车辆模拟器组件406针对HIL对象执行一个或更多个操作。在这样的示例中,与HIL对象的每个传感器相对应的数据(例如,与虚拟车辆的一个或更多个虚拟相机的一个或更多个视场相对应的虚拟传感器数据,虚拟LIDAR数据,虚拟RADAR数据,虚拟位置数据,虚拟IMU数据等)可以从一个或更多个模拟器组件402接收。该数据可以用于生成针对每个传感器的模拟环境的实例(例如,来自虚拟车辆的第一虚拟相机的视场的第一实例,来自第二虚拟相机的视场的第二实例,来自虚拟LIDAR传感器的视场的第三实例等)。因此可以由一个或更多个车辆模拟器组件420将模拟环境的实例用于生成每个传感器的传感器数据。在一些示例中,可以使用一个或更多个编解码器对传感器数据进行编码(例如,每个传感器可以使用自己的编解码器,或者每种传感器类型可以使用其自己的编解码器),以生成经编码的传感器数据,该经编码的传感器数据对于在一个或更多个车辆模拟器组件420的车辆硬件104上执行的自动驾驶软件栈可能是理解或熟悉的。与本文所述的SIL对象类似,传感器数据和/或经编码的传感器数据可以由自动驾驶软件栈使用以执行一个或更多个操作(例如,对象检测,路径规划,控制确定,致动类型等)。

  现在参考图4C,图4C是根据本公开的一些实施例的模拟系统400C的另一示例说明。模拟系统400C可以包括分布式共享存储器(DSM)系统242,一个或更多个模拟器组件402(作为一个或更多个计算节点),用于一个或更多个HIL的对象的一个或更多个车辆模拟器组件406(作为一个或更多个计算节点),用于一个或更多个SIL对象的一个或更多个车辆模拟器组件420(作为一个或更多个计算节点),用于一个或更多个PIL对象的一个或更多个车辆模拟器组件406(作为一个或更多个计算节点)和/或用于AI对象和/或其他对象类型(未示出)的一个或更多个其他组件(或计算节点)。模拟系统400C可以包括任何数量的HIL对象(例如,每个包括其自己的一个或更多个车辆模拟器组件406),任何数量的SIL对象(例如,每个包括其自己的一个或更多个车辆模拟器组件420),任何数量的PIL对象(例如,每个包括其自己的一个或更多个车辆模拟器组件422)和/或任意数量的AI对象(未示出,但可以由一个或更多个模拟组件402和/或单独的计算节点托管,取决于实施例)。

  一个或更多个车辆模拟器组件406可以包括可以被配置用于在物理车辆内安装和使用的一个或更多个SoC 1104(或其他组件)。这样,如本文所述,模拟系统400C可以被配置为通过使用用于与一个或更多个SoC 1104和/或其他车辆硬件通信的特定接口来使用一个或更多个SoC 1104和/或其他车辆硬件104。一个或更多个车辆模拟器组件420可以包括一个或更多个软件实例430,其可以托管在一个或更多个GPU和/或CPU上以模拟或仿真一个或更多个SoC1104。一个或更多个车辆模拟器组件422可以包括一个或更多个SoC 426,一个或更多个CPU 428(例如,X86盒)和/或其组合,除了可以由远程操作员使用的一个或更多个组件(例如,键盘,鼠标,操纵杆,显示器,VR系统,方向盘,踏板,车载组件(例如电灯开关,信号灯,一个或更多个HMI显示器等)和/或一个或更多个其他组件)。

  一个或更多个模拟组件402可以包括任何数量的CPU 432(例如,X86盒),一个或更多个GPU和/或其组合。一个或更多个CPU 432可以托管用于维持全局模拟的模拟软件,并且一个或更多个GPU 434可以用于渲染,物理和/或其他功能以生成模拟环境410。

  如本文所述,模拟系统400C可以包括DSM424。DSM424可以使用一个或更多个分布式共享存储器协议来使用每个对象(例如,HIL对象,SIL对象,PIL对象,AI对象等)的状态来维持全局模拟的状态。这样,与一个或更多个车辆模拟器组件406、420和/或422相对应的每个计算节点可以经由DSM 424与一个或更多个模拟组件402通信。通过使用DSM 424和相关联的协议,实时模拟是可能的。例如,与在大型多人在线(MMO)游戏中如何使用网络协议(例如TCP,UDP等)相反,模拟系统400可以使用分布式共享内存协议来维护全局模拟以及实时模拟的每个实例(例如,每个车辆,对象和/或传感器)的状态。

  现在参考图D,图4D是根据本公开的一些实施例的硬件在环配置的示例说明。一个或更多个车辆模拟器组件406可以包括车辆硬件104,如本文所述,并且可以包括一个或更多个计算机436,一个或更多个GPU(未示出)和/或一个或更多个CPU(未显示)。一个或更多个计算机436,一个或更多个GPU和/或一个或更多个CPU可以管理或托管在一个或更多个车辆模拟器组件406上执行的模拟软件438或其实例。车辆硬件104可以执行一个或更多个软件堆栈116(例如,自动驾驶软件栈,IX软件堆栈等)。

  如本文所述,通过使用车辆硬件104,可能需要将模拟环境400内的一个或更多个其他车辆模拟器组件406配置为与车辆硬件104通信。例如,因为车辆硬件104可以配置为用安装在物理车辆(例如,车辆102)中,则车辆硬件104可以配置为通过计算环境(例如,基于服务器的平台,通用计算机等)中非标准的一种或更多种连接类型和/或通信协议进行通信。例如,车辆硬件104可以使用CAN接口,LVDS接口,USB接口,以太网接口,InfiniBand(IB)接口和/或其他接口来与物理车辆的其他组件通信信号。这样,在模拟系统400中,可能需要一个或更多个车辆模拟器组件406(和/或模拟系统400的一个或更多个其他组件,除了一个或更多个车辆模拟器组件406之外,或替代一个或更多个车辆模拟器组件406)被配置为与车辆硬件104一起使用。为了实现这一点,可以使用一个或更多个CAN接口,LVDS接口,USB接口,以太网接口和/或其他接口来提供车辆硬件104与模拟系统400的一个或更多个其他组件之间的通信(例如,通过一个或更多个更多通信协议,例如LVDS)。

  在一些示例中,可以对应于模拟系统400内的一个或更多个车辆模拟器组件406的虚拟车辆可以被建模为游戏引擎的实例内的游戏对象。另外,虚拟车辆的每个虚拟传感器可以使用在车辆硬件104上执行的一个或更多个虚拟车辆的软件堆栈116中的插槽进行接口。在一些示例中,虚拟车辆的每个虚拟传感器可以包括游戏引擎的实例,除了与用于虚拟车辆的模拟软件438相关联的游戏引擎的实例之外。在一个或更多个车辆模拟器组件406包括多个GPU的示例中,每个传感器可以在单个GPU上执行。在其他示例中,可以在单个GPU上执行多个传感器,或者至少执行尽可能多的传感器以确保虚拟传感器数据的实时生成。

  在模拟器系统400中使用HIL对象可以提供可扩展的解决方案,该解决方案可以模拟或仿真用于自主软件和硬件系统(例如,NVIDIA的DRIVE AGX PegasusTM计算平台和/或DRIVE PX XavierTM计算平台)的各种驱动条件。HIL对象的一些好处可能包括测试DNN的能力比实时快,使用计算资源(例如,而不是车辆或测试轨道)扩展验证的能力,执行确定性回归测试的能力(例如,真实世界环境永远不会两次相同,但是模拟环境可以),最佳的地面实况标记(例如,无需人工标记),测试在真实世界中难以产生的场景的能力,快速生成测试排列,以及与真实世界相比,能够在模拟中测试更大的排列空间的能力。

  现在参考图4E,图4E是根据本公开的一些实施例的硬件在环配置的示例说明。图4E的HIL配置可以包括一个或更多个车辆模拟器组件406,包括一个或更多个SoC 1104,一个或更多个机箱风扇456和/或水冷却系统。HIL配置可以包括两盒解决方案(例如,第一盒中的一个或更多个模拟器组件402和第二盒中的一个或更多个车辆模拟器组件406)。使用该方法可以减少系统占用的空间量以及减少数据中心中的外部电缆的数量(例如,通过在一个或更多个车辆模拟器组件406中包括多个组件以及一个或更多个SoC 1104-例如,第一盒)。一个或更多个车辆模拟器组件406可以包括一个或更多个GPU 452(例如,一个或更多个NVIDIA QUADRO GPU),在示例性非限制性实施例中,其可以提供可以使用一个或更多个同步组件454(例如,通过QUADRO Sync II卡)来同步的8个DP/HDMI视频流。这些一个或更多个GPU 452(和/或其他GPU类型)可以将传感器输入提供给一个或更多个SoC 1104(例如,提供给车辆硬件104)。在一些示例中,一个或更多个车辆模拟器组件406可以包括网络接口(例如,一个或更多个网络接口卡(NIC)450),该网络接口可以模拟或仿真RADAR传感器,LIDAR传感器和/或IMU传感器(例如,通过提供8个具有精确时间协议(PTP)支持的千兆端口)。另外,一个或更多个车辆模拟器组件406可以包括输入/输出(I/O)模拟集成电路。注册Jack(RJ)接口(例如RJ45),高速数据(HSD)接口,USB接口,每秒脉冲(PPS)时钟,以太网(例如10Gb以太网(GbE))接口,CAN接口,HDMI接口和/或其他接口类型可以用于在系统的一个或更多个各种组件之间的有效传输和通信数据。

  现在参考图4F,图4F是根据本公开的一些实施例的软件在环配置的示例说明。一个或更多个车辆模拟器组件420可以包括一个或更多个计算机440,一个或更多个GPU(未示出),一个或更多个CPU(未示出)和/或其他组件。一个或更多个计算机440,一个或更多个GPU和/或一个或更多个CPU可以管理或托管在一个或更多个车辆模拟器组件420上执行的模拟软件438或其实例,并且可以托管一个或更多个软件堆栈116。例如,一个或更多个车辆模拟器组件420可以使用软件来模拟或仿真车辆硬件104,以努力尽可能准确地执行一个或更多个软件堆栈116。

  为了提高SIL实施例中的准确性,一个或更多个车辆模拟器组件420可以被配置为通过计算环境中非标准的一种或更多种虚拟连接类型和/或通信协议进行通信。例如,虚拟CAN接口,虚拟LVDS接口,虚拟USB接口,虚拟以太网接口和/或其他虚拟接口可以被一个或更多个车辆模拟器组件420的一个或更多个计算机440,一个或更多个CPU和/或一个或更多个GPU使用,以提供模拟系统400内的一个或更多个软件堆栈116和模拟软件438之间的通信(例如,通过一个或更多个通信协议,例如LVDS)。例如,虚拟接口可以包括中间软件,该中间软件可以用于向一个或更多个软件堆栈116提供连续反馈循环。这样,虚拟接口可以使用一种或多种软件协议,硬件(例如一个或更多个CPU,一个或更多个GPU,一个或更多个计算机440等)或其组合来模拟或仿真车辆硬件104与物理车辆之间的通信。

  在一些示例中,一个或更多个计算机440可以包括X86 CPU硬件,并且一个或更多个X86 CPU可以执行模拟软件438和一个或更多个软件堆栈116。在其他示例中,一个或更多个计算机440可以包括GPU硬件(例如NVIDIA DGX系统和/或基于云的NVIDIA Tesla服务器)。

  在一些示例中,可以将与模拟系统400内的一个或更多个车辆模拟器组件420相对应的虚拟车辆建模为游戏引擎的实例内的游戏对象。另外,虚拟车辆的每个虚拟传感器可使用在一个或更多个车辆模拟器组件420上执行的一个或更多个虚拟车辆的软件堆栈116内的插槽来接口。在一些示例中,虚拟车辆的每个虚拟传感器除了与用于虚拟车辆的模拟软件438相关联的游戏引擎的实例之外,可以包括游戏引擎的实例。在一个或更多个车辆模拟器组件406包括多个GPU的示例中,每个传感器可以在单个GPU上执行。在其他示例中,可以在单个GPU上执行多个传感器,或者至少执行尽可能多的传感器以确保虚拟传感器数据的实时生成。

  现在参考图5,本文描述的方法500的每个框包括可以使用硬件,固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由存储在存储器中的处理器执行指令来执行。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序,服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,通过示例的方式参照图4A-4C的模拟系统400描述了方法500。但是,该方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。

  图5是示出了根据本公开的一些实施例的,用于使用硬件在环对象生成模拟环境的方法500的流程图。在框B502处,方法500包括从第一硬件组件向第二硬件组件传输模拟数据。例如,一个或更多个模拟组件402可以将模拟数据传输到一个或更多个车辆模拟器组件406,一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件422中的一个或更多个。在示例中,模拟数据可以表示由一个或更多个模拟组件402托管的模拟环境410的至少一部分,并且可以对应于关于虚拟对象(HIL对象,SIL对象,PIL对象和/或AI对象)的至少一个虚拟传感器的模拟环境410。在虚拟传感器是虚拟相机的示例中,模拟数据可以至少对应于来自模拟的数据,对于在模拟环境410内生成虚拟相机的视场是必需的。

  在框B504处,方法500包括由第一硬件组件并从第二硬件组件接收信号。例如,一个或更多个模拟器组件402可以从一个或更多个车辆模拟器组件406,一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件422之一中接收信号。表示由一个或更多个操作软件堆栈116确定的与虚拟对象(例如,HIL对象,SIL对象,PIL对象和/或AI对象)相对应的操作(例如,控制,路径规划,对象检测等)。在一些示例中,例如在虚拟对象是HIL对象的情况下,可以将信号(或由此表示的数据)从车辆硬件104传输到一个或更多个其他车辆模拟器组件406。然后,一个或更多个车辆模拟器组件406可以将信号发送到一个或更多个模拟器组件402。在这样的示例中,一个或更多个车辆模拟器组件406之间(例如,在车辆硬件104和一个或更多个GPU,一个或更多个CPU和/或一个或更多个计算机436之间)的信号可以通过CAN接口,USB输入接口,LVDS接口,以太网接口和/或另一个接口传输。在另一个示例中,例如在虚拟对象是SIL对象的情况下,信号(或由此表示的数据)可以从一个或更多个车辆模拟器组件420传输到一个或更多个模拟器组件402,其中,信号中包括的数据可以由在模拟或仿真的车辆硬件104上执行的一个或更多个软件堆栈116生成。在这样的示例中,一个或更多个车辆模拟器组件420可以使用虚拟CAN,虚拟LVDS接口,虚拟USB接口,虚拟以太网接口和/或其他虚拟接口。

  在框B506,方法500包括由第一硬件组件更新模拟环境内的虚拟对象的一个或更多个属性。例如,至少部分基于从一个或更多个车辆模拟器组件406,一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件422接收的信号,一个或更多个模拟器组件402可以更新全局模拟(并且可以相应地更新模拟环境)。在一些示例中,由信号表示的数据可以用于更新由一个或更多个车辆模拟器组件406,一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件422托管的虚拟对象的位置,方向,速度和/或其他属性。

  现在参考图6A,图6A是根据本公开的一些实施例的在运行时的模拟系统600的示例说明。模拟系统600的部分或全部组件可以在模拟系统400中使用,并且模拟系统400的部分或全部组件可以在模拟系统600中使用。因此,关于模拟系统400描述的组件、特征和/或功能可以与模拟系统600相关联,反之亦然。另外,每个模拟系统600A和600B(图6B)可以包括相似和/或共享的组件、特征和/或功能。

  模拟系统600A(例如,表示模拟系统600的一个示例)可以包括一个或更多个模拟器组件402,一个或更多个编解码器614,一个或更多个内容数据存储602,一个或更多个场景数据存储604,一个或更多个车辆模拟器组件420(例如,用于SIL对象)和一个或更多个车辆模拟器组件406(例如,用于HIL对象)。一个或更多个内容数据存储602可以包括用于对汽车,卡车,人,自行车手,标志,建筑物,树木,路边石和/或模拟环境的其他特征建模的详细内容信息。一个或更多个场景数据存储604可以包括场景信息,该场景信息可以包括危险的场景信息(例如,在真实世界的环境中不安全进行测试),例如十字路口的孩子。

  一个或更多个模拟器组件402可以包括AI引擎608,该AI引擎608模拟交通,行人,天气和/或模拟环境的其他AI特征。一个或更多个模拟器组件402可以包括虚拟世界管理器610,该虚拟世界管理器610管理用于全局模拟的世界状态。一个或更多个模拟器组件402可以进一步包括可以管理虚拟传感器的虚拟传感器管理器612。AI引擎608可以对交通进行建模,类似于在汽车视频游戏中如何对交通进行建模,并且可以使用游戏引擎来完成,如本文所述。在其他示例中,自定义AI可用于提供大规模可重现汽车模拟所需的细节的确定性和计算水平。在一些示例中,可以使用SIL对象,HIL对象,PIL对象,AI对象和/或其组合来对交通进行建模。系统600可以创建AI控制器的子类,该AI控制器检查地图数据,计算路线并在避开其他汽车的同时驾驶该路线。AI控制器可以计算期望的转向,加速度和/或制动,并且可以将那些值应用于虚拟对象。所使用的车辆特性可以包括质量,最大RPM,扭矩曲线和/或其他特性。物理引擎可以用于确定AI对象的状态。如本文所述,对于可能相距很远并且可能对一个或更多个电流传感器没有影响的车辆或其他对象,系统可以选择不对那些对象应用物理并且仅确定位置和/或瞬时运动矢量。光线投射可用于每个车轮,以确保车辆的车轮接触。在一些示例中,交通AI可以根据脚本(例如,基于规则的交通)进行操作。虚拟对象的交通AI动作可能包括横向车道变化(例如,方向,距离,持续时间,形状等),纵向移动(例如,匹配速度,相对目标,目标的增量,绝对值),路线遵循和/或路径跟随。交通AI动作的触发可以是基于时间的(例如3秒),基于速度的(例如,以60mph的速度),基于邻近度到地图(例如,在相交的20英尺内),基于邻近度到演员(例如,在另一个对象的20英尺内),车道净空和/或其他。

  AI引擎608可以对行人AI进行建模,类似于本文所描述的交通AI,但针对行人的。行人可以被建模为类似于真实行人,并且系统600可以基于学习的行为来推断行人行为。

  一个或更多个模拟器组件402可以用于调整一天中的时间,以使得路灯打开和关闭,前灯打开和关闭,阴影,眩光和/或日落被考虑等。在一些示例中,仅阈值距离之内的灯光到虚拟对象可以被认为是增加效率。

  天气可以由一个或更多个模拟器组件402(例如,由虚拟世界管理器610)解决。天气可用于更新驾驶表面的摩擦系数,温度信息可用于更新轮胎与驾驶表面的相互作用。在存在雨或雪的地方,系统600可以基于场景的结构生成网格以描述雨水和雪可以积聚在何处,并且当模拟中存在雨或雪时可以采用网格。

  在一些示例中,如本文所述,一个或更多个模拟器组件402的至少一些可以可替代地包括在一个或更多个车辆模拟器组件420和/或406中。例如,一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件406可以包括虚拟传感器管理器612,用于管理相关联的虚拟对象的每个传感器。另外,一个或更多个编解码器614可以被包括在一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件406中。在这样的示例中,虚拟传感器管理器612可以生成与虚拟对象相对应的传感器数据,并且一个或更多个编解码器614的传感器模拟器616可以使用传感器数据,以根据一个或更多个软件堆栈116使用的传感器数据格式或类型来对传感器数据进行编码(例如,在一个或更多个车辆模拟器组件420和/或一个或更多个车辆模拟器组件406上执行的一个或更多个软件堆栈116)。

  一个或更多个编解码器614可以提供到一个或更多个软件堆栈116的接口。一个或更多个编解码器614(和/或本文描述的一个或更多个其他编解码器)可以包括编码器/解码器框架。一个或更多个编解码器614可以包括CAN转向,节气门请求,和/或可以用于在SIL和HIL实施例中将传感器数据发送到一个或更多个软件堆栈116。一个或更多个编解码器614可有益于本文所述的模拟系统(例如400和600)。例如,当数据由重新模拟系统100以及模拟系统400和600产生时,数据可以被发送到一个或更多个软件堆栈116,使得可以满足以下标准。数据可以被传送到一个或更多个软件堆栈116,使得最小的影响被引入到一个或更多个软件堆栈116和/或车辆硬件104(在HIL实施例中)。当一个或更多个软件堆栈116和/或车辆硬件104可以在与现实环境中的部署非常相似的环境中运行时,这可以导致更准确的模拟。可以将数据传输到一个或更多个软件堆栈116,使得模拟器和/或重新模拟器可以与被测系统的实际硬件配置无关。这可能会由于错误或依赖于模拟配置的单独代码路径而减少开发开销。可以将数据发送到一个或更多个软件堆栈116,使得数据可以匹配(例如,逐位)从物理车辆(例如,车辆102)的物理传感器发送的数据。在SIL和HIL实施例中,数据可以被有效地传输。

  传感器模拟器616可以至少模拟相机,LIDAR传感器和/或RADAR传感器。关于LIDAR传感器,一些LIDAR传感器报告被跟踪的对象。这样,对于由虚拟传感器数据表示的每个帧,一个或更多个模拟器组件402可以创建具有虚拟LIDAR传感器的虚拟对象的范围内的所有被跟踪的对象(例如,树木,车辆,行人,树叶等)的列表,并且可以将虚拟光线投射到被跟踪的对象上。当大量光线照射到被跟踪的对象时,可以将该对象添加到LIDAR数据的报告中。在一些示例中,LIDAR传感器可以使用没有反射的简单光线投射,可调节的视场,可调节的噪声和/或可调节的丢弃来建模。可以模拟具有运动部件,有限视场和/或可变分辨率的LIDAR。例如,LIDAR传感器可以被建模为固态LIDAR和/或基于Optix的LIDAR。在示例中,使用基于Optix的激光雷达,光线可能会从水,反射材料和/或窗户反射回来。可以将纹理分配给道路,标志和/或车辆,以模拟与纹理对应的波长处的激光反射。RADAR可以类似于LIDAR实现。如本文所述,可以使用光线追踪技术来模拟RADAR和/或LIDAR。

  在一些示例中,一个或更多个车辆模拟器组件406、420和/或422可包括带有一个或更多个模拟器组件402(和/或生成虚拟传感器数据的一个或更多个组件)的反馈回路。反馈回路可以用于提供用于更新虚拟传感器数据捕获或生成的信息。例如,对于虚拟相机,反馈回路可以基于传感器反馈,例如响应于照明条件对曝光的改变(例如,在昏暗的照明条件下增加曝光,以便可以由DNN适当地处理图像数据)。作为另一示例,对于虚拟LIDAR传感器,反馈回路可以表示能量水平的变化(例如,以增加能量以产生更多可用或准确的LIDAR数据)。

  GNNS传感器(例如,GPS传感器)可以在模拟空间内被模拟以生成真实世界的坐标。为此,可以使用噪声函数来近似误差。如同本文所述的任何虚拟传感器一样,可以使用一个或更多个编解码器614将虚拟传感器数据传输到一个或更多个软件堆栈116,以将其转换为逐位正确信号(例如,准确地对应于由物理车辆的物理传感器生成的信号)。

  可以使用一个或更多个插件应用程序编程接口(API)606。插件API 606可以包括第一方和/或第三方插件。例如,第三方可以使用他们自己的插件API 606来定制模拟系统600B,以提供自定义信息,例如性能计时,悬架动力学,轮胎动力学等。

  插件API 606可以包括一个或更多个自我动力学组件(未示出),该自我动力学组件可以从一个或更多个模拟器组件402接收信息,包括位置,速度,汽车状态和/或其他信息,并且可以向一个或更多个模拟器组件402提供信息,一个或更多个模拟器组件402包括性能计时,悬架动力学,轮胎动力学和/或其他信息。例如,一个或更多个模拟器组件402可以向一个或更多个自我动力学组件提供CAN节气门,转向和驾驶表面信息。在一些示例中,一个或更多个自我动力学组件可以包括现成的车辆动力学软件包(例如,IPG CARMAKER或VIRTUAL TEST DRIVE),而在其他示例中,一个或更多个自我动力学组件可以被定制和/或接收(例如,从第一方和/或第三方)。

  插件API 606可以包括关键性能指标(KPI)API。KPI API可以从一个或更多个模拟器组件402接收CAN数据,地面实况和/或虚拟对象状态信息(例如,从一个或更多个软件堆栈116),并且可以生成和/或提供报告(实时地),其包括KPI和/或保存状态、恢复状态和/或应用更改的命令。

  现在参考图6B,图6B包括根据本公开的一些实施例的用于模拟系统600B的基于云的架构。模拟系统600B可以至少部分地驻留在云中,并且可以通过一个或更多个网络通信,例如但不限于本文所述的那些(例如,关于图1D的网络1190),与一个或更多个GPU平台624(例如,可以包括GPU,CPU,TPUS和/或其他处理器类型)和/或一个或更多个HIL平台626(例如,可以包括来自一个或更多个车辆模拟器组件406的部分或全部组件,本文所述)。

  可以通过包括模拟引擎630,AI引擎632,全局照明(GI)引擎634,一个或更多个资产数据存储636,和/或其他组件的互连组件来对模拟环境628(例如,其可以类似于本文所述的模拟环境410)进行建模。在一些示例中,这些组件可以用于在虚拟化的交互式平台(例如,类似于大型多人在线(MMO)游戏环境)中对模拟环境(例如,虚拟世界)进行建模。模拟环境可以进一步包括物理,交通模拟,天气模拟和/或模拟环境的其他特征和模拟。GI引擎634可以一次计算GI,并与节点618(1)-618(N)和620(1)-620(N)中的每一个共享计算结果(例如,GI的计算可以是与视图无关的)。模拟环境628可以包括AI宇宙622,该AI宇宙622向GPU平台624(例如GPU服务器)提供数据,从而可以为车辆的每个传感器创建渲染。(例如,在用于第一虚拟对象的一个或更多个虚拟传感器/编解码器618处和在用于第二虚拟对象的一个或更多个虚拟传感器编解码器620处)。例如,GPU平台624可以接收关于模拟环境628的数据,并且可以为618(1)-618(N),620(1)-620(N)的每一个和/或与其他虚拟对象相对应的虚拟传感器/编解码器创建传感器输入(取决于实施例)。在使用HIL对象模拟虚拟对象的示例中,可以将传感器输入提供给车辆硬件104,车辆硬件104可以使用一个或更多个软件堆栈116来执行一个或更多个操作和/或生成一个或更多个命令,例如本文所述的那些。在一些示例中,如本文所述,来自每个虚拟传感器的虚拟传感器数据可以在被一个或更多个软件堆栈116使用(或传输到)之前被使用编解码器进行编码。另外,在一些示例中,传感器中的每一个可以在GPU平台624内的其自己的GPU上执行,而在其他示例中,两个或更多个传感器可以在GPU平台624内共享相同的GPU。

  可以将一个或更多个操作或命令发送到模拟引擎630,其可以基于操作和/或命令来更新一个或更多个虚拟对象的行为。例如,模拟引擎630可以使用AI引擎632来更新AI代理以及模拟环境628中的虚拟对象的行为。模拟引擎630然后可以更新对象数据和特征(例如,在一个或更多个资产数据存储636内),可以更新GI(和/或其他方面,例如反射,阴影等),然后可以生成更新的传感器输入并将其提供给GPU平台624。可以重复该过程直至模拟完成。

  现在参考图7,图7包括数据流程图,该数据流程图示出了根据本公开的一些实施例的用于使用一个或更多个编解码器进行重新模拟或模拟的过程700。过程700可以包括当前状态和/或传感器数据从模拟和/或重新模拟被传输到一个或更多个编解码器704。然后,至少一些数据(例如,传感器数据)可以使用一个或更多个编解码器704进行编码并提供给一个或更多个软件堆栈706(例如,类似于一个或更多个软件堆栈116)用于当前时间切片。然后可以将驱动命令和新的传感器状态(例如,经由CAN或V-CAN)传输至一个或更多个编解码器704,并返回至模拟和/或重新模拟。然后可以将最初由一个或更多个软件堆栈706(例如,由自动驾驶软件栈)生成的驱动命令传递给自我对象动力学,该自我对象动力学可以使用定制或内置动力学来针对被模拟的虚拟对象的特定类型更新对象状态,更新的对象状态可以被传递回模拟和/或重新模拟。除了使用交通AI,行人AI和/或模拟平台的其他功能之外,模拟系统还可以使用对象的状态,命令和/或信息,以生成或更新模拟环境(例如,更新为当前状态)。可以将当前状态传递给KPI框架(例如,在一些实施例中,在与驱动命令被传递给自我对象动力学708的同时),并且KPI框架710可以监视和评估当前模拟和/或重新模拟。在一些示例中,一个或更多个编解码器704可以缓冲模拟数据以增加性能和/或减少系统的延迟。

  现在参考图8,图8包括根据本公开的一些实施例的用于关键绩效指标(KPI)分析和观察的数据流程图。KPI评估组件可以评估一个或更多个虚拟对象(例如,车辆,机器人等)的性能。日志806可以被生成并且被传递到重新模拟器/模拟器804。重新模拟器/模拟器804可以将传感器数据提供给可以使用HIL,SIL或其组合来执行的一个或更多个软件堆栈116。KPI评估组件802可以针对每个模拟或重新模拟实例使用不同的度量。例如,对于重新模拟,KPI评估组件可以提供对原始回放的CAN数据和/或来自一个或更多个软件堆栈116(例如,来自HIL或SIL)的新生成的CAN数据的访问。在某些示例中,性能可以像测试一样简单,新的CAN数据不会产生误报-例如,通过触发自动紧急制动(AEB)或其他ADAS功能。例如,KPI评估组件802可以确定新的CAN数据是触发盲点警告还是车道偏离警告。结果,该系统可以帮助减少困扰常规ADAS系统的误报。KPI评估组件802还可以确定新的CAN数据是否未能触发应该已经实施的警告。

  在一些示例中,KPI评估组件802还可以提供更复杂的比较。例如,KPI评估组件802可以与在两个不同的CAN流上运行分析以发现偏差一样复杂。KPI评估组件802可以将新的CAN数据与原始CAN数据进行比较,并且可以评估两个轨迹以确定哪个轨迹最能满足系统安全目标。在一些示例中,KPI评估组件802可以使用在美国临时申请No.62/625,351或美国非临时专利申请No.16/256,780中描述的一种或更多种方法,每一个都通过引用整体并入本文。在其他示例中,KPI评估组件802可以使用美国临时申请No.62/628,831或美国非临时专利申请号16/269,921中描述的一种或更多种方法,每一个都通过引用整体并入本文。例如,可以基于安全到达时间计算来确定安全程序。

  在一些示例中,KPI评估组件802还可以使用在美国临时申请No.62/622,538或美国非临时专利申请No.16/258,272中描述的方法,在此通过引用将其整体并入本文,其可以被用于使用机器学习来检测危险驾驶。例如,机器学习和深度神经网络(DNN)可以用于冗余和路径检查,例如用于合理性检查器,作为自动驾驶功能安全的一部分。可以扩展这些技术以与KPI评估组件802一起使用,以评估系统的性能。

  KPI评估组件还可以使用其他方法来评估系统的性能。例如,KPI评估组件802可以考虑交叉交通路径中的到达时间(TTA)是否小于阈值时间,例如,两秒钟。该阈值可以根据车辆的速度,道路状况,天气,交通和/或其他变量而变化。例如,对于高达20MPH的速度,阈值持续时间可以为2秒,对于任何更大的速度,阈值持续时间可以为1秒。或者,只要系统检测到危险的道路状况(例如湿路,冰或雪),就可以减少或限制阈值持续时间。在一些示例中,可以由受过训练以检测这种状况的DNN来检测危险的道路状况。

  关于模拟,如本文所述,KPI评估组件可以包括API。KPI评估组件802可以包括附加输入和/或提供更多功能。例如,模拟器可能能够共享场景的“地面实况”,并且能够确定虚拟对象在避免碰撞,保持在车道内和/或执行其他行为方面的能力。例如,KPI评估组件802可以不仅仅是实验的被动见证者,并且可以包括API以保存任何正在进行的模拟的状态,改变状态或触发行为,并继续进行那些改变。这可以使KPI评估组件不仅可以评估汽车性能,还可以尝试探索潜在危险场景的空间。

  现在参考图9和图10,本文描述的方法900和1000的每个框包括可以使用硬件,固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。该方法还可以体现为存储在计算机存储介质上的计算机可用指令。这些方法可以由独立应用程序,服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,通过示例的方式,相对于图1的重新模拟系统100,图4A-4C的模拟系统400以及图6A-6B的模拟系统600描述了方法900和1000。但是,这些方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。

  图9是示出根据本公开的一些实施例的用于在模拟环境中控制虚拟对象的方法900的流程图。在框B902,方法900包括从模拟主机设备接收表示模拟环境的模拟数据。例如,一个或更多个车辆模拟器组件406、420和/或422可以从一个或更多个模拟器组件402接收表示模拟环境410的模拟数据。在一些示例中,所接收的模拟数据可以是对应于由一个或更多个车辆模拟器组件托管的虚拟对象的传感器的模拟数据。

  在框B904,方法900包括为动态可配置数量的虚拟传感器中的每一个生成虚拟传感器数据。例如,一个或更多个车辆模拟器组件406、420和/或422可以使用针对车辆的每个虚拟传感器的模拟数据来生成虚拟传感器数据。虚拟传感器数据可以表示由模拟环境410内的虚拟对象的可动态配置数量的虚拟传感器的至少一个虚拟传感器所感知的模拟环境410(例如,一个或更多个虚拟相机的视场的传感器数据,使用虚拟IMU传感器的虚拟车辆的方向的传感器数据等)。所使用的虚拟传感器的数量可以是动态可配置的,以使得一个传感器可以在第一次模拟中使用,五个在另一个中,十个在另一个中,等等。在一些示例中,可以基于车辆类型确定动态配置(例如,X年、品牌Y、型号Z的第一辆车可能包含20个传感器,而A年、品牌B、型号C的第二辆车可能包含30个传感器)。在这样的示例中,模拟系统400、600可以是动态可配置的,以针对模拟环境中的每个或任何车辆的每个虚拟传感器生成虚拟传感器数据。另外,可以在任何时间在模拟环境中模拟任意数量的不同虚拟对象。这样,对于第一虚拟对象(例如,在第一组车辆模拟器组件406上执行),第二虚拟对象(例如,在第二组车辆模拟器组件420上执行),和/或任何其他虚拟对象的每一个,相同或不同数量的虚拟传感器和/或虚拟传感器的类型可以生成虚拟传感器数据。每个虚拟传感器的虚拟传感器数据可以表示由各个虚拟传感器感知到的任何其他虚拟对象。这样,模拟系统400、600(例如,使用DSM 424)可以为每个虚拟传感器生成虚拟传感器数据,其反映了相对于其他虚拟对象的模拟环境的模拟状态。以这种方式,模拟系统可扩展和配置为任意数量的虚拟对象,每个虚拟对象具有任意数量的可以实时处理的虚拟传感器。

  在框B906,方法900包括对虚拟传感器数据进行编码。例如,可以使用一个或更多个编解码器(例如,一个或更多个编解码器614)对虚拟传感器数据进行编码以生成经编码的传感器数据。在一些示例中,虚拟传感器数据可以被编码为虚拟对象的一个或更多个软件堆栈116所熟悉的格式。

  在框B908处,方法900包括通过一个或更多个机器学习模型来计算至少一个输出。例如,一个或更多个软件堆栈116的一个或更多个DNN可以使用经编码的传感器数据来生成一个或更多个输出(例如,对象检测,控件,致动,路径计划,指南等)。在一些示例中,如本文所述,一个或更多个软件堆栈116可以在车辆硬件104上执行(例如,用于HIL对象),因此可以在模拟系统400和600中使用在物理车辆(例如,物理车辆)中使用的软件和硬件,以更准确地产生与实际部署一致的结果。

  在框B910处,方法900包括向模拟主机设备发送信号。例如,可以将输出(或其数据表示)以信号的形式发送给一个或更多个模拟组件402,以更新全局模拟,从而更新模拟环境。

  图10是示出根据本公开的一些实施例的用于使用在物理传感器数据上训练的机器学习模型在模拟环境中控制虚拟对象的方法1000的流程图。在框B1002,方法1000包括接收由物理传感器生成的物理传感器数据。例如,一个或更多个车辆102(例如,物理或一个或更多个物理车辆)可以生成物理传感器数据,并且重新模拟和/或模拟系统可以接收物理传感器数据。

  在框B1004,方法1000包括使用物理传感器数据训练机器学习模型。例如,可以使用物理传感器数据来训练可以在一个或更多个软件堆栈116中使用的一个或更多个DNN。一旦经过训练,DNN可以视为经训练的DNN。

  在框B1006,方法1000包括接收由虚拟传感器生成的虚拟传感器数据。例如,一个或更多个车辆模拟器组件406、420和/或422可以使用一个或更多个虚拟传感器和/或一个或更多个编解码器来生成虚拟传感器数据。

  在框B1008,方法1000包括将虚拟传感器数据应用于经训练的机器学习模型。例如,虚拟传感器数据-可能与用于训练机器学习模型的物理传感器数据的格式相同-可以应用于经训练的机器学习模型。

  在框B1010,方法1000包括通过经训练的机器学习模型来计算输出。例如,经训练的DNN可以使用虚拟传感器数据计算一个或更多个输出。如本文所述,虚拟传感器数据可以在由经训练的DNN使用之前被编码。

  在框B1020,方法1000包括至少部分地基于输出来控制模拟环境内的虚拟对象。例如,可以至少部分地基于输出来在模拟环境内控制虚拟对象(例如,虚拟车辆)。在其他示例中,输出可以用于控制。例如,输出可以是对象检测,车道检测,可驾驶自由空间检测,安全程序确定等。在任何示例中,可以使用一个或更多个KPI对输出进行测试,以确定在多种方案和环境的任何一种中经训练的DNN的准确性和有效性。这样,在经训练的DNN受到影响的地方,可以在将DNN部署在真实世界的物理车辆(例如,车辆102)中之前执行微调以改善,确认和验证DNN。

  示例性自主车辆

  图11A是根据本公开的一些实施例的示例自主车辆102的图示。自主车辆102(在本文中可选地称为“车辆102”)可包括乘客车辆,诸如汽车,卡车,公共汽车和/或容纳一个或更多个乘客的其他类型的车辆。自主车辆通常根据自动化水平进行描述,该自动化水平由国家公路交通安全管理局(NHTSA),美国交通部的一个部门和汽车工程师协会(SAE)的“与用于公路机动车辆的驾驶自动化系统相关的术语的分类和定义(Taxonomy andDefinitions for Terms Related to Driving Automation Systems for On-Road MotorVehicles)”(标准号J3016-201806,发布于2018年6月15日,标准号为J3016-201609,发布于2016年9月30日,以及该标准的先前版本和未来版本)。车辆102可以具有根据自动驾驶水平的水平3至水平5中的一个或更多个的功能。例如,取决于实施例,车辆102可以具有条件自动化(水平3),高自动化(水平4)和/或完全自动化(水平5)。

  车辆102可包括诸如底盘,车身,车轮(例如,2,4,6,8,18等),轮胎,车轴的部件和车辆的其他部件。车辆102可包括推进系统1150,诸如内燃机,混合动力发电厂,全电动发动机和/或其他推进系统类型。推进系统1150可以连接到车辆102的传动系,其可以包括变速器,以实现车辆102的推进。推进系统1150可以响应于接收来自节气门/加速器1152的信号而被控制。

  当推进系统1150运行时(例如,当车辆运动时),可以使用可以包括方向盘的转向系统1154来引导车辆102(例如,沿着期望的路径或路线)。转向系统1154可以从转向致动器1156接收信号。方向盘可以是可选的,用于完全自动化(水平5)功能。

  制动传感器系统1146可用于响应于从制动致动器1148和/或制动传感器接收信号而操作车辆制动器。

  可以包括一个或更多个片上系统(SoC)1104(图11C)和/或一个或更多个GPU的一个或更多个控制器1136可以向车辆102的一个或更多个组件和/或系统提供信号(例如,代表命令)。例如,一个或更多个控制器可以发送信号以通过一个或更多个制动致动器1148操作车辆制动,通过一个或更多个转向致动器1156来操作转向系统1154,通过一个或更多个油门/极速器1152来操作推进系统1150。一个或更多个控制器1136可以包括一个或更多个处理传感器信号的机载(例如,集成)计算设备(例如,超级计算机),并输出操作命令(例如,信号代表命令)以使能自动驾驶和/或帮助人类驾驶员驾驶车辆102。一个或更多个控制器1136可包括用于自动驾驶功能的第一控制器1136,用于功能安全功能的第二控制器1136,用于人工智能功能(例如,计算机视觉)的第三控制器1136,用于信息娱乐功能的第四控制器1136,用于在紧急情况下冗余的第五控制器1136,和/或其他控制器。在一些示例中,单个控制器1136可以处理两个或更多个上述功能,两个或更多个控制器1136可以处理单个功能,和/或其任何组合。

  一个或更多个控制器1136可以响应于从一个或更多个传感器(例如,传感器输入)接收的传感器数据提供用于控制车辆102的一个或更多个部件和/或系统的信号。传感器数据可以从例如但不限于一个或更多个全球导航卫星系统传感器1158(例如,一个或更多个全球定位系统传感器),一个或更多个RADAR传感器1160,一个或更多个超声传感器1162,一个或更多个LIDAR传感器1164,一个或更多个惯性测量单元(IMU)传感器1166(例如,一个或更多个加速度计,一个或更多个陀螺仪,一个或更多个磁罗盘,一个或更多个磁力计等),一个或更多个麦克风1196,一个或更多个立体相机1168,一个或更多个广角相机1170(例如,鱼眼相机),一个或更多个红外相机1172,一个或更多个环绕相机1174(例如,360度相机),一个或更多个远程和/或中程相机1198,一个或更多个速度传感器1144(例如,用于测量车辆102的速度),一个或更多个振动传感器1142,一个或更多个转向传感器1140,一个或更多个制动传感器(例如,作为制动传感器系统1146的一部分)和/或其他传感器类型。

  一个或更多个控制器1136可以从车辆102的仪表组1132接收输入(例如,由输入数据表示)并通过人机界面(HMI)显示器1134,可听见的信号器,扬声器和/或通过车辆102的其他组件提供输出(例如,由输出数据,显示数据等表示)。输出可以包括诸如车辆速率,速度,时间,地图数据(例如,图11C的HD地图1122),位置数据(例如,车辆102的位置,例如在地图上),方向,其他车辆的位置(例如,占用网格),关于如一个或更多个控制器1136所感知的对象的信息和对象的状态等。例如,HMI显示器1134可以显示关于一个或更多个对象的存在的信息(例如,路牌,警示标志,交通灯改变等),和/或关于车辆已经做出的、正在做出的,或将要做出的驾驶操纵的信息(例如,现在改变车道,两英里后从34B出等)。

  车辆102还包括网络接口1124,其可以使用一个或更多个无线天线1126和/或一个或更多个调制解调器通过一个或更多个网络进行通信。例如,网络接口1124可以能够通过LTE,WCDMA,UMTS,GSM,CDMA2000等进行通信。一个或更多个无线天线1126还可以通过使用局域网(如蓝牙,蓝牙LE,Z-Wave,ZigBee等),和/或一个或更多个低功率广域网(LPWAN)(诸如LoRaWAN,SigFox等)来实现环境中的对象(例如,车辆,移动设备等)之间的通信。

  图11B是根据本公开的一些实施例的、图11A的示例自主车辆102的相机位置和视野的示例。相机和各自的视野是一个示例实施例,并不旨在限制。例如,可以包括附加和/或替代相机和/或相机可以位于车辆102上的不同位置。

  用于相机的相机类型可包括但不限于可适于与车辆102的组件和/或系统一起使用的数码相机。一个或更多个相机可在汽车安全完整性水平(ASIL)B和/或另一个ASIL下操作。取决于实施例,相机类型可以具有任何图像捕获率,诸如60帧/秒(fps),1120fps,240fps等。相机可能够使用卷帘门,全局快门,其他类型的快门或其组合。在一些示例中,滤色器阵列可以包括红色透明透明透明(RCCC)滤色器阵列,红色透明透明蓝色(RCCB)滤色器阵列,红色蓝色绿色透明(RBGC)滤色器阵列,Foveon X3滤色器阵列,拜耳传感器(RGGB)滤色器阵列,单色传感器滤色器阵列和/或其他类型的滤色器阵列。在一些实施例中,可以使用清晰像素相机,例如具有RCCC,RCCB和/或RBGC滤色器阵列的相机,以努力增加光灵敏度。

  在一些示例中,一个或更多个相机可用于执行高级驾驶员辅助系统(ADAS)功能(例如,作为冗余或故障安全设计的一部分)。例如,可以安装多功能单声道相机以提供包括离开车道警告,交通标志辅助和智能前照灯控制的功能。一个或更多个相机(例如,所有相机)可以同时记录和提供图像数据(例如,视频)。

  一个或更多个相机可以安装在安装组件中,例如定制设计(3-D打印)组件,以便切除车内的杂散光和反射(例如,来自挡风玻璃镜中反射的仪表板的反射),其可能会干扰相机的图像数据捕获能力。参考翼镜安装组件,翼镜组件可以定制3D打印,使得相机安装板与翼镜的形状相匹配。在一些示例中,一个或更多个相机可以集成到机翼镜中。对于侧视相机,一个或更多个相机也可以集成在舱每个角落的四个支柱内。

  具有包括车辆102前方的环境的一部分的视野的相机(例如,前向相机)可以用于环绕视图,以帮助标识面向前方的路径和障碍物,以及在一个或更多个控制器1136和/或控制SoC的帮助下辅助提供对生成占用网格和/或确定优选车辆路径至关重要的信息。前向相机可用于执行许多与LIDAR相同的ADAS功能,包括紧急制动,行人检测和防撞。前向相机还可以用于ADAS功能和系统,包括离开车道警告(“LDW”),自主巡航控制(“ACC”)和/或其他功能,例如交通标志识别。

  可以在前向配置中使用各种相机,包括例如包括CMOS(互补金属氧化物半导体)彩色成像器的单眼相机平台。另一示例可以是一个或更多个广角相机1170,其可以用于感知从周边进入视野的对象(例如,行人,穿越交通或自行车)。尽管图11B中仅示出了一个广角相机,在车辆102上可以有任意数量的广角相机1170。此外,一个或更多个远程相机1198(例如,长视野立体相机对)可以用于基于深度的对象检测,尤其是对于尚未训练神经网络的对象。一个或更多个远程相机1198还可以用于对象检测和分类,以及基本对象跟踪。

  一个或更多个立体相机1168也可以包括在前向配置中。一个或更多个立体相机1168可以包括集成控制单元,其包括可缩放处理单元,其可以在单个芯片上提供可编程逻辑(FPGA)和具有集成CAN或以太网接口的多核心微处理器。这样的单元可以用于生成车辆环境的3-D地图,包括图像中所有点的距离估计。替代的一个或更多个立体相机1168可以包括一个或更多个紧凑的立体视觉传感器,其可以包括两个相机镜头(左右各一个)和图像处理芯片,该图像处理芯片可以测量从车辆到目标对象的距离并使用生成的信息(例如,元数据)来激活自主紧急制动和离开车道警告功能。除了本文描述的那些之外或者作为另外一种选择,可以使用其他类型的一个或更多个立体相机1168。

  具有包括车辆102侧面的环境的一部分的视野的相机(例如,侧视相机)可用于环绕视图,提供用于创建和更新占用网格的信息,以及至于生成侧面碰撞碰撞警告。例如,一个或更多个环绕相机1174(例如,如图11B中所示的四个环绕相机1174)可以定位在车辆102上。一个或更多个环绕相机1174可以包括一个或更多个广角相机1170,一个或更多个鱼眼相机,一个或更多个360度相机和/或类似物。例如,四个鱼眼相机可以定位在车辆的前部,后部和侧面。在替代布置中,车辆可以使用三个环绕相机1174(例如,左,右和后),并且可以利用一个或更多个其他相机(例如,前向相机)作为第四环绕视图相机。

  具有包括车辆102后部的环境的一部分的视野的相机(例如,后视相机)可用于停车辅助,环绕视图,后部碰撞警告,以及创建和更新占用网格。可以使用各种各样的相机,包括但不限于也适合作为一个或更多个前向相机的相机(例如,一个或更多个远程和/或中程相机1198,一个或更多个立体相机1168,一个或更多个红外相机1172等),如本文所述的。

  图11C是根据本公开的一些实施例的、图11A的示例自主车辆102的示例系统架构的框图。应该理解的是,这里描述的这个和其他布置仅作为示例阐述。除了所示的那些之外或代替所示的那些,可以使用其他布置和元件(例如,机器,接口,功能,顺序,功能分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以实现为离散或分布式组件或者与其他组件一起实现,并且可以以任何合适的组合和位置实现。这里描述的由实体执行的各种功能可以由硬件,固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器执行。

  图11C中的车辆102的组件、特征和系统中的每一个都示出为经由总线1102连接。总线1102可以包括控制器区域网络(CAN)数据接口(在本文中可选地称为“CAN总线”)。CAN可以是车辆102内部的网络,用于辅助控制车辆102的各种特征和功能,例如制动器的致动,加速,制动,转向,挡风玻璃刮水器等。CAN总线可以被配置为具有数十个甚至数百个节点,每个节点都有自己唯一的标识符(例如,CAN ID)。可以读取CAN总线以找到方向盘角度,地面速度,发动机每分钟转数(RPM),按钮位置和/或其他车辆状态指示器。CAN总线可符合ASIL B.

  虽然总线1102在本文中被描述为CAN总线,但是这不是限制性的。例如,除CAN总线之外或作为其替代,可以使用FlexRay和/或以太网。另外,尽管使用单条线来表示总线1102,但这不是限制性的。例如,可以存在任何数量的总线1102,其可以包括一个或更多个CAN总线,一个或更多个FlexRay总线,一个或更多个以太网总线,和/或使用不同协议的一个或更多个其他类型的总线。在一些示例中,两个或更多个总线1102可以用于执行不同的功能,和/或可以用于冗余。例如,第一总线1102可以用于防撞功能,第二总线1102可以用于致动控制。在任何示例中,每个总线1102可以与车辆102的任何组件通信,并且两个或更多个总线1102可以与相同的组件通信。在一些示例中,每个SoC 1104,每个控制器1136和/或车辆内的每个计算机可以访问相同的输入数据(例如,来自车辆102的传感器的输入),并且可以连接到公共总线,例如CAN总线。

  车辆102可以包括一个或更多个控制器1136,例如本文关于图11A描述的那些控制器。一个或更多个控制器1136可以用于各种功能。一个或更多个控制器1136可以耦合到车辆102的各种其他组件和系统中的任何一个,并且可以用于控制车辆102、车辆102的人工智能、车辆102的信息娱乐,和/或类似。

  车辆102可以包括一个或更多个片上系统(SoC)1104。SoC 1104可以包括一个或更多个CPU 1106,一个或更多个GPU 1108,一个或更多个处理器1110,一个或更多个高速缓存1112,一个或更多个加速器1114,一个或更多个数据存储器1116和/或未示出的其他组件和特征。一个或更多个SoC 1104可用于在各种平台和系统中控制车辆102。例如,一个或更多个SoC 1104可以在系统(例如,车辆102的系统)中与HD地图1122组合,HD地图1122可以经由网络接口1124从一个或更多个服务器(例如,图11D的一个或更多个服务器1178)获得地图刷新和/或更新。

  一个或更多个CPU 1106可以包括CPU集群或CPU复合体(在本文中可选地称为“CCPLEX”)。一个或更多个CPU 1106可以包括多个核心和/或L2高速缓存。例如,在一些实施例中,一个或更多个CPU 1106可以包括相干多处理器配置中的八个核心。在一些实施例中,一个或更多个CPU 1106可以包括四个双核心集群,其中每个集群具有专用L2高速缓存(例如,2MB L2高速缓存)。一个或更多个CPU 1106(例如,CCPLEX)可以被配置为支持同时群集操作,使得一个或更多个CPU 1106的群集的任何组合在任何给定时间都是活动的。

  一个或更多个CPU 1106可以实现包括以下特征中的一个或更多个的功率管理能力:各个硬件块可以在空闲时自动时钟门控以节省动态功率;当核心由于执行WFI/WFE指令而没有主动执行指令时,每个核心时钟可以被门控;每个核心可以独立电源门控;当所有核心都是时钟门控或电源门控时,每个核心集群可以独立地进行时钟门控;和/或当所有核心都是电源门控时,每个核心集群可以独立地进行电源门控。一个或更多个CPU 1106还可以实现用于管理功率状态的增强算法,其中指定允许的功率状态和预期的唤醒时间,并且硬件/微代码确定针对核心,集群和CCPLEX输入的最佳功率状态。处理核心可以在软件中支持简化的功率状态输入序列,其中工作被卸载到微代码。

  一个或更多个GPU 1108可以包括集成GPU(在本文中可选地称为“iGPU”)。一个或更多个GPU 1108可以是可编程的,并且可以对并行工作负载有效。在一些示例中,一个或更多个GPU 1108可以使用增强张量指令集。一个或更多个GPU 1108可以包括一个或更多个流式微处理器,其中每个流式微处理器可以包括L1高速缓存(例如,具有至少96KB存储容量的L1高速缓存),并且两个或更多个流式微处理器可以共享L2高速缓存(例如,具有512KB存储容量的L2缓存)。在一些实施例中,一个或更多个GPU 1108可以包括至少八个流式微处理器。一个或更多个GPU 1108可以使用一个或更多个计算应用程序编程接口(API)。另外,一个或更多个GPU 1108可以使用一个或更多个并行计算平台和/或编程模型(例如,NVIDIA的CUDA)。

  可以针对汽车和嵌入式使用情况中的最佳性能对一个或更多个GPU 1108进行功率优化。例如,一个或更多个GPU 1108可以在鳍片(Fin)场效应晶体管(FinFET)上制造。然而,这不是限制性的,并且可以使用其他半导体制造工艺来制造一个或更多个GPU 1108。每个流式微处理器可以包括分成多个块的多个混合精度处理核心。例如但不限于,可以将64个PF32核心和32个PF64核心划分为四个处理块。在这样的示例中,每个处理块可以被分配16个FP32核心,8个FP64核心,16个INT32核心,用于深度学习矩阵算术的两个混合精度NVIDIA TENSOR CORE,L0指令高速缓存,线程束(warp)调度器,分派单元,以及/或64KB的寄存器文件。此外,流式微处理器可以包括独立的并行整数和浮点数据路径,以通过混合计算和寻址计算来提供工作负载的有效执行。流式微处理器可以包括独立的线程调度能力,以实现并行线程之间的更细粒度的同步和协作。流式微处理器可以包括组合的L1数据高速缓存和共享存储器单元,以便在简化编程的同时提高性能。

  一个或更多个GPU 1108可以包括高带宽存储器(HBM)和/或16GB HBM2存储器子系统,以在一些示例中提供大约900GB/秒的峰值存储器带宽。在一些示例中,除了HBM存储器之外或作为其替代,可以使用同步图形随机存取存储器(SGRAM),例如图形双倍数据速率类型五同步随机存取存储器(GDDR5)。

  一个或更多个GPU 1108可以包括统一存储器技术,其包括访问计数器,以允许更准确地将存储器页面迁移到最频繁访问它们的处理器,从而提高处理器之间共享的存储器范围的效率。在一些示例中,地址转换服务(ATS)支持可以用于允许一个或更多个GPU 1108直接访问一个或更多个CPU 1106页表。在这样的示例中,当一个或更多个GPU 1108存储器管理单元(MMU)经历未命中时,可以将地址转换请求发送到一个或更多个CPU 1106。作为响应,一个或更多个CPU 1106可以在其页面中查找用于地址的虚拟到物理映射的表并将转换发送回一个或更多个GPU 1108。因此,统一存储器技术可以允许单个统一的虚拟地址空间用于一个或更多个CPU 1106和一个或更多个CPU 1108二者的存储器,从而简化了一个或更多个GPU 1108编程以及将应用移植至一个或更多个GPU 1108。

  另外,一个或更多个GPU 1108可以包括访问计数器,其可以跟踪一个或更多个GPU1108对其他处理器的存储器的访问频率。访问计数器可以帮助确保将存储器页面移动到最频繁访问页面的处理器的物理存储器。

  一个或更多个SoC 1104可包括任何数量的高速缓存1112,包括本文描述的那些高速缓存。例如,一个或更多个高速缓存1112可以包括可用于一个或更多个CPU 1106和一个或更多个GPU 1108二者的L3高速缓存(例如,连接一个或更多个CPU 1106和一个或更多个GPU 1108两者)。一个或更多个高速缓存1112可以包括回写高速缓存,其可以跟踪行的状态,例如通过使用高速缓存一致性协议(例如,MEI,MESI,MSI等)。取决于实施例,L3高速缓存可以包括4MB或更多,尽管可以使用更小的高速缓存大小。

  一个或更多个SoC 1104可包括一个或更多个加速器1114(例如,硬件加速器,软件加速器或其组合)。例如,一个或更多个SoC 1104可以包括硬件加速集群,其可以包括经优化的硬件加速器和/或大的片上存储器。大的片上存储器(例如,4MB的SRAM)可以使硬件加速集群能够加速神经网络和其他计算。硬件加速集群可用于补充一个或更多个GPU 1108并卸载一个或更多个GPU 1108的一些任务(例如,以释放一个或更多个GPU 1108的更多周期以执行其他任务)。作为示例,一个或更多个加速器1114可以用于目标工作负载(例如,感知卷积神经网络(CNN)等),其足够稳定以适于加速。本文使用的术语“CNN”可以包括所有类型的CNN,包括基于区域的或区域的卷积神经网络(RCNN)和快速RCNN(例如,用于对象检测)。

  一个或更多个加速器1114(例如,硬件加速群集)可以包括一个或更多个深度学习加速器(DLA)。一个或更多个DLA可以包括一个或更多个张量(Tensor)处理单元(TPU),其可以被配置为每秒为深度学习应用和推理提供额外的10万亿次操作。TPU可以是被配置为并且被优化用于执行图像处理功能的加速器(例如,用于CNN,RCNN等)。一个或更多个DLA还可以针对特定的一组神经网络类型和浮点运算以及推理进行优化。一个或更多个DLA的设计可以提供比通用GPU更高的每毫米性能,并且远远超过CPU的性能。一个或更多个TPU可以执行若干功能,包括单实例卷积功能,例如支持用于特征和权重的INT8,INT16和FP16数据类型,以及后处理器功能。

  对于各种功能中的任何一种,一个或更多个DLA可以快速且有效地对处理或未处理的数据执行神经网络(尤其是CNN),其包括例如但不限于:用于使用来自相机传感器的数据的对象标识和检测的CNN;用于使用来自相机传感器的数据进行距离估计的CNN;用于使用来自麦克风的数据进行紧急车辆检测和标识和检测的CNN;用于使用来自相机传感器的数据进行面部识别和车主识别的CNN;和/或用于安全和/或安全相关事件的CNN。

  一个或更多个DLA可以执行一个或更多个GPU 1108的任何功能,并且通过使用推断加速器,例如,设计者可以针对任何功能将一个或更多个DLA或一个或更多个GPU 1108定为目标。例如,设计者可以将对CNN的处理和浮点运算集中在一个或更多个DLA上,并且将其他功能留给一个或更多个GPU 1108和/或一个或更多个其他加速器1114。

  一个或更多个加速器1114(例如,硬件加速群集)可以包括一个或更多个可编程视觉加速器(PVA),其可以替代地在本文中称为计算机视觉加速器。一个或更多个PVA可以被设计和配置为加速用于高级驾驶员辅助系统(ADAS),自动驾驶和/或增强现实(AR)和/或虚拟现实(VR)应用的计算机视觉算法。一个或更多个PVA可以在性能和灵活性之间提供平衡。例如,一个或更多个PVA中的每个PVA可以包括例如但不限于,任意数量的精简指令集计算机(RISC)核心,直接存储器访问(DMA)和/或任何数量的矢量处理器。

  RISC核心可以与图像传感器(例如,本文描述的任何相机的图像传感器),一个或更多个图像信号处理器等交互。每个RISC核心可以包括任何数量的存储器。根据实施例,RISC核心可以使用许多协议中的任何协议。在一些示例中,RISC核心可以执行实时操作系统(RTOS)。可以使用一个或更多个集成电路设备,专用集成电路(ASIC)和/或存储器设备来实现RISC核心。例如,RISC核心可以包括指令高速缓存和/或紧密耦合的RAM。

  DMA可以使一个或更多个PVA的组件独立于一个或更多个CPU 1106访问系统存储器。DMA可以支持用于向PVA提供优化的任何数量的特征,包括但不限于,支持多维寻址和/或循环寻址。在一些示例中,DMA可以支持多达六个或更多维的寻址,其可以包括块宽度,块高度,块深度,水平块步进,垂直块步进和/或深度步进。

  矢量处理器可以是可编程处理器,其可以被设计为有效且灵活地执行用于计算机视觉算法的编程并提供信号处理能力。在一些示例中,PVA可以包括PVA核心和两个矢量处理子系统分区。PVA核心可以包括处理器子系统,一个或更多个DMA引擎(例如,两个DMA引擎)和/或其他外围设备。矢量处理子系统可以作为PVA的主处理引擎操作,并且可以包括矢量处理单元(VPU),指令高速缓存和/或矢量存储器(例如,VMEM)。VPU核心可以包括数字信号处理器,例如单指令,多数据(SIMD),超长指令字(VLIW)数字信号处理器。SIMD和VLIW的组合可以提高吞吐量和速度。

  每个矢量处理器可以包括指令高速缓存,并且可以耦合到专用存储器。结果,在一些示例中,每个矢量处理器可以被配置为独立于其他矢量处理器执行。在其他示例中,包括在特定PVA中的矢量处理器可以被配置为采用数据并行性。例如,在一些实施例中,包括在单个PVA中的多个矢量处理器可以执行相同的计算机视觉算法,但是在图像的不同区域上。在其他示例中,包括在特定PVA中的矢量处理器可以在同一图像上同时执行不同的计算机视觉算法,或者甚至在顺序图像或图像的部分上执行不同的算法。其中,任何数量的PVA可以包括在硬件加速集群中,并且任何数量的矢量处理器可以包括在每个PVA中。此外,一个或更多个PVA可以包括附加的纠错码(ECC)存储器,以增强整体系统安全性。

  一个或更多个加速器1114(例如,硬件加速群集)可以包括片上计算机视觉网络和SRAM,用于为一个或更多个加速器1114提供高带宽、低延迟的SRAM。在一些示例中。片上存储器可以包括至少4MB的SRAM,其包括例如但不限于八个现场可配置的存储器块,PVA和DLA二者都可以访问这些存储器块。每对存储器块可以包括高级外围总线(APB)接口,配置电路,控制器和多路复用器。可以使用任何类型的存储器。PVA和DLA可以通过骨干网访问存储器,该骨干网为PVA和DLA提供对存储器的高速访问。骨干可以包括片上计算机视觉网络,其将PVA和DLA互连到存储器(例如,使用APB)。

  片上计算机视觉网络可以包括接口,该接口在传输任何控制信号/地址/数据之前确定PVA和DLA二者都提供就绪和有效信号。这种接口可以提供单独的相位和用于发送控制信号/地址/数据的单独信道,以及用于连续数据传输的突发类型通信。尽管可以使用其他标准和协议,但是这种类型的接口可以符合ISO 26262或IEC 61508标准。

  在一些示例中,一个或更多个SoC 1104可以包括实时光线跟踪硬件加速器,诸如在2018年8月10日提交的美国专利申请No.16/101,232中描述的。实时光线跟踪硬件加速器可用于快速有效地确定对象的位置和范围(例如,在世界模型内),生成实时可视化模拟,其用于RADAR信号解释,用于声音传播合成和/或分析,用于模拟SONAR系统,用于一般波传播模拟,用于与LIDAR数据进行比较,以用于定位和/或其他功能,和/或用于其他用途。

  一个或更多个加速器1114(例如,硬件加速器集群)具有用于自动驾驶的广泛用途。PVA可以是可编程视觉加速器,其可以用于ADAS和自动车辆中的关键处理阶段。PVA的能力非常适合需要以低功耗和低延迟进行的可预测处理的算法域。换句话说,PVA在半密集或密集的常规计算上表现良好,即使在小数据集上也是如此,这些数据集需要具有低延迟和低功率的可预测运行时间。因此,在用于自主车辆的平台的背景下,PVA被设计为运行经典的计算机视觉算法,因为它们在对象检测和对整数数学运算方面是有效的。

  例如,根据本技术的一个实施例,PVA用于执行计算机立体视觉。在一些示例中可以使用基于半全局匹配的算法,但是这不是限制性的。用于水平3-5的自动驾驶的许多应用需要动态估计/立体匹配(例如,来自运动,行人识别,车道检测等的结构)。PVA可以对来自两个单眼相机的输入执行计算机立体视觉功能。

  在一些实例中,PVA可用于执行致密光流。根据处理原始RADAR数据(例如,使用4D快速傅里叶变换)来提供经处理的RADAR。在其他示例中,例如,通过处理原始飞行时间数据以提供经处理的飞行时间数据,PVA用于飞行时间深度处理。

  DLA可以用于运行任何类型的网络以增强控制和驾驶安全性,包括例如输出每个对象检测的置信度度量的神经网络。这样的置信度值可以被解释为概率,或者与其他检测相比提供每个检测的相对“权重”。该置信度值使系统能够做出关于哪些检测应被视为真正的正确检测而不是误报检测的进一步决定。例如,系统可以设置置信度的阈值,并且仅考虑超过阈值的检测作为真正的正确检测。在自动紧急制动(AEB)系统中,误报检测将导致车辆自动执行紧急制动,这显然是不希望的。因此,只有最置信的检测应被视为AEB的触发因素。DLA可以运行神经网络来回归置信值。神经网络可以将至少一些参数子集作为其输入,例如边界框尺寸,获得的地平面估计(例如,来自另一子系统),与车辆102的方位、距离相关的惯性测量单元(IMU)传感器1166输出,从神经网络和/或其他传感器(例如,一个或更多个LIDAR传感器1164或一个或更多个RADAR传感器1160)获得的对象的3D位置估计等。

  一个或更多个SoC 1104可以包括一个或更多个数据存储1116(例如,存储器)。一个或更多个数据存储器1116可以是一个或更多个SoC 1104的片上存储器,其可以存储要在GPU和/或DLA上执行的神经网络。在一些示例中,一个或更多个数据存储1116可以足够大以存储神经网络的多个实例以用于冗余和安全。一个或更多个数据存储1112可以包括一个或更多个L2或L3高速缓存1112。对一个或更多个数据存储1116的引用可以包括对与PVA,DLA和/或其他加速器1114相关联的存储器的引用,如本文所述的。

  一个或更多个SoC 1104可包括一个或更多个处理器1110(例如,嵌入式处理器)。一个或更多个处理器1110可以包括引导和电源管理处理器,其可以是专用处理器和子系统,以处理引导电源和管理功能以及相关的安全实施。引导和电源管理处理器可以是一个或更多个SoC 1104引导序列的一部分,并且可以提供运行时电源管理服务。引导功率和管理处理器可以提供时钟和电压编程,协助系统低功率状态转换,一个或更多个SoC 1104热量和温度传感器的管理,和/或一个或更多个SoC 1104功率状态的管理。每个温度传感器可以实现为其输出频率与温度成比例的环形振荡器,并且一个或更多个SoC 1104可以使用环形振荡器来检测一个或更多个CPU 1106、一个或更多个GPU 1108和/或一个或更多个加速器1114的温度。如果确定温度超过阈值,则启动和电源管理处理器可以进入温度故障例程并将一个或更多个SoC 1104置于较低功率状态和/或将车辆102置于司机到安全停止模式(例如,使车辆102安全停止)。

  一个或更多个处理器1110还可以包括可以用作音频处理引擎的一组嵌入式处理器。音频处理引擎可以是音频子系统,其通过多个接口实现对多声道音频的全硬件支持,以及广泛且灵活的音频I/O接口范围。在一些示例中,音频处理引擎是专用处理器核心,其具有带有专用RAM的数字信号处理器。

  一个或更多个处理器1110还可以包括始终在线处理器引擎,其可以提供必要的硬件特征以支持低功率传感器管理和唤醒用例。始终在线处理器引擎可以包括处理器核心,紧密耦合的RAM,支持外围设备(例如,定时器和中断控制器),各种I/O控制器外围设备和路由逻辑。

  一个或更多个处理器1110还可以包括安全集群引擎,其包括专用处理器子系统以处理汽车应用的安全管理。安全集群引擎可以包括两个或更多个处理器核心,紧密耦合的RAM,支持外围设备(例如,定时器,中断控制器等)和/或路由逻辑。在安全模式中,两个或更多个核心可以以锁步模式操作,并且用作具有比较逻辑的单个核心,以检测它们的操作之间的任何差异。

  一个或更多个处理器1110还可以包括实时相机引擎,其可以包括用于处理实时相机管理的专用处理器子系统。

  一个或更多个处理器1110还可以包括高动态范围信号处理器,其可以包括图像信号处理器,该图像信号处理器是作为相机处理管线的一部分的硬件引擎。

  一个或更多个处理器1110可以包括视频图像合成器,其可以是处理块(例如,在微处理器上实现),其实现视频回放应用程序所需的视频后处理功能,以产生播放器窗口的最终图像。视频图像合成器可以在一个或更多个宽视图相机1170,一个或更多个环绕相机1174和/或车内监视相机传感器上执行镜头失真校正。舱内监控相机传感器优选地由在高级SoC的另一个实例上运行的神经网络监控,被配置为在舱事件中标识并相应地响应。舱内系统可执行唇读以激活蜂窝服务并拨打电话,指示电子邮件,改变车辆的目的地,激活或改变车辆的信息娱乐系统和设置,或提供语音激活的网上冲浪。仅当车辆在自主模式下操作时,某些功能才可用于驾驶员,否则将被禁用。

  视频图像合成器可以包括用于空间噪声降低和时间噪声降低二者的增强的时间噪声降低。例如,在视频中发生运动的情况下,降噪适当地对空间信息进行加权,从而减小由相邻帧提供的信息的权重。在图像或图像的一部分不包括运动的情况下,由视频图像合成器执行的时间噪声降低可以使用来自先前图像的信息来减少当前图像中的噪声。

  视频图像合成器还可以被配置为在输入立体镜头帧上执行立体校正。当操作系统桌面正在使用时,视频图像合成器还可以用于用户界面合成,并且一个或更多个GPU 1108不需要连续地渲染新表面。即使当一个或更多个GPU 1108通电并且活动进行3D渲染时,视频图像合成器也可用于卸载GPU 1108以改善性能和响应性。

  一个或更多个SoC 1104还可包括用于接收来自相机的视频和输入的移动工业处理器接口(MIPI)相机串行接口,高速接口和/或可用于相机的视频输入块和相关的像素输入功能。一个或更多个SoC 1104还可以包括一个或更多个输入/输出控制器,其可以由软件控制并且可以用于接收未提交给特定角色的I/O信号。

  一个或更多个SoC 1104还可以包括宽范围的外围接口,以实现与外围设备,音频编解码器,电源管理和/或其他设备的通信。一个或更多个SoC 1104可用于处理来自相机(例如,通过千兆位多媒体串行链路和以太网连接),传感器(例如,一个或更多个LIDAR传感器1164,一个或更多个RADAR传感器1160等)的数据,其可以是通过以太网连接),来自总线1102的数据(例如,车辆102的速度,方向盘位置等),来自一个或更多个GNSS传感器1158的数据(例如,通过以太网或CAN总线连接)。一个或更多个SoC 1104还可以包括专用高性能大容量存储控制器,其可以包括它们自己的DMA引擎,并且可以用于使CPU 1106从常规数据管理任务中解放出来。

  一个或更多个SoC 1104可以是具有跨越自动化水平3-5的灵活架构的端到端平台,从而提供全面的功能安全架构,其针对多样性和冗余利用并有效利用计算机视觉和ADAS技术,针对灵活可靠的驾驶软件堆栈提供平台以及深度学习工具。一个或更多个SoC1104可以比传统系统更快,更可靠,甚至更节能和节省空间。例如,一个或更多个加速器1114当与一个或更多个CPU 1106,一个或更多个GPU 1108和一个或更多个数据存储1116组合时,可以为水平3-5自主车辆提供快速,有效的平台。

  因此,该技术提供了传统系统无法实现的能力和功能。例如,计算机视觉算法可以在CPU上执行,其可以使用诸如C编程语言的高级编程语言来配置,以跨多种视觉数据执行各种处理算法。然而,CPU通常不能满足许多计算机视觉应用的性能要求,例如与执行时间和功耗相关的应用。特别是,许多CPU无法实时执行复杂的对象检测算法,这是车载ADAS应用的要求,也是实际水平3-5自主车辆的要求。

  与传统系统相比,通过提供CPU复合体,GPU复合体和硬件加速集群,本文描述的技术允许同时和/或顺序地执行多个神经网络,并且将结果组合在一起启用水平3-5自动驾驶功能。例如,在DLA或dGPU上执行的CNN(例如,一个或更多个GPU 1120)可以包括文本和单词识别,允许超级计算机读取和理解交通标志,其包括神经网络尚未被具体训练的标志。DLA还可以包括神经网络,其能够标识、解释和提供对符号的语义理解,并且将该语义理解传递给在CPU复合体上运行的路径规划模块。

  作为另一个示例,可以同时运行多个神经网络,如水平3,水平4或水平5驾驶所需。例如,由“警告:闪烁的灯指示结冰状况”以及电灯组成的警告标志可以由若干神经网络独立地或共同地解释。标志本身可以通过第一部署的神经网络(例如,已经训练的神经网络)被识别为交通标志,文本“闪烁灯指示结冰状况”可以由第二部署的神经网络解释,其通知车辆的路径规划软件(优选地,在CPU复合体上执行),当检测到闪烁的灯光时,存在结冰的情况。可以通过在多个帧上操作第三部署的神经网络来标识闪光,从而向车辆的路径规划软件通知闪光灯的存在(或不存在)。所有三个神经网络可以同时运行,例如在DLA内和/或一个或更多个GPU 1108上。

  在一些示例中,用于面部识别和车主识别的CNN可以使用来自相机传感器的数据来标识车辆102的授权驾驶员和/或所有者的存在。始终在线传感器处理引擎可以用于当车主接近驾驶员车门时解锁车辆并打开车灯,并且在安全模式下,当车主离开车辆时禁用车辆。以这种方式,一个或更多个SoC 1104提供防盗和/或劫车的安全性。

  在另一个示例中,用于紧急车辆检测和标识的CNN可以使用来自麦克风1196的数据来检测和识别紧急车辆警报器。与使用通用分类器来检测警报器并手动提取特征的传统系统相比,一个或更多个SoC 1104使用CNN来对环境和城市声音进行分类,以及对视觉数据进行分类。在优选实施例中,训练在DLA上运行的CNN以标识紧急车辆的相对靠近速度(例如,通过使用多普勒效应)。CNN还可以被训练以识别特定于车辆正在操作的局部区域的紧急车辆,如一个或更多个GNSS传感器1158所标识的。因此,例如,当在欧洲操作时,CNN将寻求检测欧洲警报器,而在美国,CNN将寻求仅标识北美警报器。一旦检测到紧急车辆,就可以使用控制程序来执行紧急车辆安全例程,使车辆减速,拉到路边,停放车辆和/或在超声传感器1162辅助下使车辆空转,直到紧急车辆通过为止。

  车辆可以包括一个或更多个CPU 1118(例如,一个或更多个离散的CPU或一个或更多个dCPU),其可以经由高速互连(例如,PCIe)耦合到一个或更多个SoC1104。例如,一个或更多个CPU 1118可以包括X86处理器。一个或更多个CPU 1118可以用于执行各种功能中的任何功能,例如包括仲裁ADAS传感器和一个或更多个SoC1104之间可能不一致的结果,和/或监控一个或更多个控制器1136和/或信息娱乐SoC 1130的状态和健康状况。

  车辆102可以包括一个或更多个GPU 1120(例如,一个或更多个离散的GPU或一个或更多个dGPU),其可以经由高速互连(例如,NVIDIA的NVLINK)耦合到一个或更多个SoC1104。一个或更多个GPU 1120可以提供额外的人工智能功能,例如通过执行冗余和/或不同的神经网络,并且可以用于基于来自车辆102的传感器的输入(例如,传感器数据)来训练和/或更新神经网络。

  车辆102还可以包括网络接口1124,其可以包括一个或更多个无线天线1126(例如,用于不同通信协议的一个或更多个无线天线,例如蜂窝天线,蓝牙天线等)。网络接口1124可用于通过因特网与云(例如,与一个或更多个服务器1178和/或其他网络设备)、与其他车辆和/或与计算设备(例如,乘客的客户端设备)实现无线连接。为了与其他车辆通信,可以在两个车辆之间建立直接链路和/或可以建立间接链路(例如,跨网络和通过因特网)。可以使用车辆到车辆通信链路来提供直接链接。车辆间通信链路可以向车辆102提供关于车辆102附近的车辆的信息(例如,车辆102前方,车辆侧面和/或车辆后方)。该功能可以是车辆102的协作自适应巡航控制功能的一部分。

  网络接口1124可以包括SoC,其提供调制和解调功能并且使一个或更多个控制器1136能够通过无线网络进行通信。网络接口1124可以包括射频前端,用于从基带到射频的上转换,以及从射频到基带的下转换。频率转换可以通过众所周知的过程来执行,和/或可以使用超外差过程来执行。在一些示例中,射频前端功能可以由单独的芯片提供。网络接口可以包括用于通过LTE,WCDMA,UMTS,GSM,CDMA2000,蓝牙,蓝牙LE,Wi-Fi,Z-Wave,ZigBee,LoRaWAN和/或其他无线协议进行通信的无线功能。

  车辆102还可以包括一个或更多个数据存储1128,其可以包括片外(例如,一个或更多个SoC 1104外)存储。一个或更多个数据存储1128可以包括一个或更多个存储元件,包括RAM,SRAM,DRAM,VRAM,闪存,硬盘和/或可以存储至少一位数据的其他组件和/或设备。

  车辆102还可以包括一个或更多个GNSS传感器1158。一个或更多个GNSS传感器1158(例如,GPS和/或辅助GPS传感器),以帮助映射,感知,占用网格生成和/或路径规划功能。可以使用任何数量的一个或更多个GNSS传感器1158,包括,例如但不限于,使用具有以太网到串行(RS-232)桥的USB连接器的GPS。

  车辆102还可以包括一个或更多个RADAR传感器1160。即使在黑暗和/或恶劣天气条件下,车辆102也可以使用一个或更多个RADAR传感器1160进行远程车辆检测。RADAR功能安全水平可以是ASIL B。一个或更多个RADAR传感器1160可以使用CAN和/或总线1102(例如,传输由一个或更多个RADAR传感器1160生成的数据)来控制和访问对象跟踪数据,在某些示例中,可以访问以太网来访问原始数据。可以使用各种RADAR传感器类型。例如但不限于,一个或更多个RADAR传感器1160可适用于前面、后部和侧面RADAR使用。在一些示例中,使用一个或更多个脉冲多普勒RADAR传感器。

  一个或更多个RADAR传感器1160可以包括不同的配置,例如具有窄视野的长距离,具有宽视野的短距离,短距离侧覆盖等。在一些示例中,远程RADAR可用于自适应巡航控制功能。远程RADAR系统可以提供通过两个或更多个独立扫描实现的宽视野,例如在250米范围内。一个或更多个RADAR传感器1160可以帮助区分静止和移动对象,并且可以由ADAS系统用于紧急制动辅助和前向碰撞警告。远程RADAR传感器可以包括具有多个(例如,六个或更多个)固定RADAR天线和高速CAN和FlexRay接口的单模多模RADAR。在具有六个天线的示例中,中央四个天线可以创建聚焦波束图案,其被设计为以更高的速度记录车辆102的周围环境,并且相邻车道中的交通具有最小的干扰。另外两个天线可以扩展视野,使得可以快速检测进入或离开车辆102车道的车辆。

  作为示例,中程RADAR系统可以包括高达1160米(前方)或80米(后方)的范围,以及高达42度(前方)或1150度(后方)的视野。短程RADAR系统可以包括但不限于设计成安装在后保险杠两端的RADAR传感器。当安装在后保险杠的两端时,这种RADAR传感器系统可以产生两个波束,其持续监控车辆后部和车辆旁边的盲点。

  短程RADAR系统可以在ADAS系统中用于盲点检测和/或车道变换辅助。

  车辆102还可以包括一个或更多个超声传感器1162。可以将一个或更多个超声传感器1162定位在车辆102的前部、后部和/或侧面,可以用于停车辅助和/或创建和更新占用网格。可以使用各种各样的一个或更多个超声传感器1162,并且不同的一个或更多个超声传感器1162可以用于不同的检测范围(例如,2.5米,4米)。一个或更多个超声传感器1162可以在ASIL B的功能安全水平下操作。

  车辆102可包括一个或更多个LIDAR传感器1164。一个或更多个LIDAR传感器1164可用于对象和行人检测,紧急制动,碰撞避免和/或其他功能。一个或更多个LIDAR传感器1164可以是功能安全水平ASIL B。在一些示例中,车辆102可以包括可以使用以太网(例如,用于提供数据到千兆以太网交换机)的多个LIDAR传感器1164(例如,两个,四个,六个等)。

  在一些示例中,一个或更多个LIDAR传感器1164可以能够提供对象列表及其360度视野的距离。一个或更多个商用LIDAR传感器1164可具有大约102米的广告范围,精度为2厘米-3厘米,并且例如支持102Mbps以太网连接。在一些示例中,可以使用一个或更多个非突出的LIDAR传感器1164。在这样的示例中,一个或更多个LIDAR传感器1164可以被实现为可以嵌入到车辆102的前部,后部,侧面和/或角落中的小型设备。在这样的示例中,一个或更多个LIDAR传感器1164可提供高达1120度的水平视野和35度垂直视野,即使对于低反射率对象,也可提供200米的范围。一个或更多个前置LIDAR传感器1164可以被配置用于45度和135度之间的水平视野。

  在一些示例中,还可以使用LIDAR技术,例如3D闪光LIDAR。3D闪光灯LIDAR使用激光闪光灯作为发射源,照亮车辆周围约200米。闪光LIDAR单元包括接收器,其记录每个像素上的激光脉冲传播时间和反射光,其反过来对应于从车辆到对象的范围。闪光LIDAR可以允许每次激光闪光产生高度精确和无失真的周围环境图像。在一些示例中,可以部署四个闪光LIDAR传感器,在车辆102的每一侧一个。可用的3D闪光LIDAR系统包括固态3D凝视阵列LIDAR相机,除了风扇之外没有移动部件(例如,非扫描LIDAR设备)。闪光LIDAR装置可以使用每帧5纳秒级别I(人眼安全)激光脉冲,并且可以以3D范围点云和共同登记的强度数据的形式捕获反射的激光。通过使用闪光LIDAR,并且因为闪光LIDAR是没有移动部件的固态设备,所以一个或更多个LIDAR传感器1164可能不太容易受到运动模糊,振动和/或震动的影响。

  车辆还可以包括一个或更多个IMU传感器1166。在一些示例中,一个或更多个IMU传感器1166可以位于车辆102的后轴的中心。一个或更多个IMU传感器1166可以包括,例如但不限于,一个或更多个加速度计,一个或更多个磁力计,一个或更多个陀螺仪,一个或更多个磁罗盘和/或其他传感器类型。在一些示例中,例如在六轴应用中,一个或更多个IMU传感器1166可以包括加速度计和陀螺仪,而在九轴应用中,一个或更多个IMU传感器1166可以包括加速度计,陀螺仪和磁力计。

  在一些实施例中,一个或更多个IMU传感器1166可以实现为微型高性能GPS辅助惯性导航系统(GPS/INS),其结合了微机电系统(MEMS)惯性传感器,高敏感度GPS接收器和先进的卡尔曼滤波算法,以提供对位置、速度和姿态的估计。这样,在一些示例中,一个或更多个IMU传感器1166可以通过直接观察和关联从GPS到一个或更多个IMU传感器1166的速度变化来使车辆102能够估计航向,而不需要来自磁传感器的输入。在一些示例中,一个或更多个IMU传感器1166和一个或更多个GNSS传感器1158可以组合在单个集成单元中。

  车辆可以包括放置在车辆102中和/或周围的一个或更多个麦克风1196。一个或更多个麦克风1196可以用于紧急车辆检测和标识等。

  车辆还可包括任何数量的相机类型,包括一个或更多个立体相机1168,一个或更多个广角相机1170,一个或更多个红外相机1172,一个或更多个环绕相机1174,一个或更多个远程和/或中程相机1198,和/或其他相机类型。相机可用于捕获车辆102的整个周边周围的图像数据。所使用的相机类型取决于车辆102的实施例和要求,并且相机类型的任何组合可用于提供围绕该车辆102的必要覆盖。另外,根据实施例,相机的数量可以不同。例如,车辆可包括六个相机,七个相机,十个相机,十二个相机和/或另一数量的相机。作为示例而非限制,相机可以支持千兆位多媒体串行链路(GMSL)和/或千兆位以太网。在此关于图11A和图11B,更详细地描述了每个相机。

  车辆102还可以包括一个或更多个振动传感器1142。一个或更多个振动传感器1142可以测量车辆的组件(例如一个或更多个轴)的振动。例如,振动的变化可以指示路面的变化。在另一示例中,当使用两个或更多个振动传感器1142时,振动之间的差异可用于确定路面的摩擦或滑动(例如,当振动的差异在动力驱动轴和自由旋转轴之间时)。

  车辆102可以包括ADAS系统1138。在一些示例中,ADAS系统1138可以包括SoC。ADAS系统1138可包括自主/自适应/自动巡航控制(ACC),协同自适应巡航控制(CACC),前方碰撞警告(FCW),自动紧急制动(AEB),离开车道警告(LDW),车道保持辅助(LKA),盲点警告(BSW),后部交叉警告(RCTW),碰撞警告系统(CWS),车道居中(LC)和/或其他特征和功能。

  ACC系统可以使用一个或更多个RADAR传感器1160,一个或更多个LIDAR传感器1164和/或一个或更多个相机。ACC系统可包括纵向ACC和/或横向ACC。纵向ACC监测并控制紧邻车辆102前方的车辆距离,并自动调节车速以保持与前方车辆的安全距离。横向ACC执行距离保持,并且建议车辆102在必要时改变车道。横向ACC与其他ADAS应用相关,例如LCA和CWS。

  CACC使用来自其他车辆的信息,其可以经由网络接口1124和/或一个或更多个无线天线1126经由无线链路从其他车辆接收,或者间接地通过网络连接(例如,通过因特网)接收。直接链路可以由车辆到车辆(V2V)通信链路提供,而间接链路可以是基础设施到车辆(I2V)通信链路。通常,V2V通信概念提供关于紧接在前的车辆的信息(例如,紧接在车辆102之前和在与车辆102相同的车道中的车辆),而I2V通信概念提供关于更远的前方的交通的信息。CACC系统可以包括I2V和V2V信息源中的任一个或两者。给定车辆102前方车辆的信息,CACC可能更可靠并且它具有改善交通流畅通性和减少道路拥堵的潜力。

  FCW系统被设计成警告驾驶员危险,从而驾驶员可以采取纠正动作。FCW系统使用前向相机和/或一个或更多个RADAR传感器1160,其耦合至专用处理器,DSP,FPGA和/或ASIC,其电耦合到驾驶员反馈,诸如,显示器,扬声器和/或振动组件。FCW系统可以提供警告,诸如以声音,视觉警告,振动和/或快速制动脉冲的形式。

  AEB系统检测即将发生的与另一车辆或其他对象的前向碰撞,并且如果驾驶员未在指定时间或距离参数内采取校正动作,则AEB系统可自动应用制动。AEB系统可以使用一个或更多个前向相机和/或一个或更多个RADAR传感器1160,其耦合到专用处理器,DSP,FPGA和/或ASIC。当AEB系统检测到危险时,它通常首先警告驾驶员采取纠正动作以避免碰撞,并且如果驾驶员没有采取纠正动作,则AEB系统可以自动应用制动器以努力防止,或至少缓解,所预测的碰撞的影响。AEB系统可包括诸如动态制动器支撑和/或即将发生撞击的制动等技术。

  LDW系统提供视觉,听觉和/或触觉警告,诸如方向盘或座椅振动,以在车辆102越过车道标记时警告驾驶员。当驾驶员通过激活转向信号指示故意离开车道时,LDW系统不会激活。LDW系统可以使用前侧面向相机,其耦合到专用处理器,DSP,FPGA和/或ASIC,其电耦合到驱动器反馈,诸如显示器,扬声器和/或振动组件。

  LKA系统是LDW系统的变体。如果车辆102开始离开车道,则LKA系统提供转向输入或制动以校正车辆102。

  BSW系统检测并警告驾驶员汽车盲点中的车辆。BSW系统可以提供视觉,听觉和/或触觉警报以指示合并或改变车道是不安全的。当驾驶员使用转向信号时,系统可以提供附加警告。BSW系统可以使用一个或更多个后侧相机和/或一个或更多个RADAR传感器1160,其耦合到专用处理器,DSP,FPGA和/或ASIC,其电耦合到驾驶员反馈,诸如显示器,扬声器和/或振动组件。

  当车辆102正在倒车时,当在后向相机范围之外检测到对象时,RCTW系统可以提供视觉,听觉和/或触觉通知。一些RCTW系统包括AEB,以确保应用车辆制动器以避免碰撞。RCTW系统可以使用一个或更多个后向RADAR传感器1160,其耦合到专用处理器,DSP,FPGA和/或ASIC,其电耦合到驾驶员反馈,诸如显示器,扬声器和/或振动元件。

  传统的ADAS系统可能容易出现误报结果,这可能令驾驶员烦恼并分散注意力,但通常不是灾难性的,因为ADAS系统警告驾驶员并允许驾驶员确定安全条件是否真正存在并且相应地行动。然而,在自主车辆102中,在结果冲突的情况下,车辆102本身必须决定是否注意来自主计算机或辅助计算机(例如,第一控制器1136或第二控制器1136)的结果。例如,在一些实施例中,ADAS系统1138可以是备份和/或辅助计算机,用于向备份计算机合理性模块提供感知信息。备份计算机合理性监视器可以在硬件组件上运行冗余的各种软件,以检测感知和动态驱动任务中的故障。可以将来自ADAS系统1138的输出提供给监控MCU。如果主计算机和辅助计算机的输出发生冲突,则监控MCU必须确定如何协调冲突以确保安全操作。

  在一些示例中,主计算机可以被配置为向监控MCU提供置信度分数,指示主计算机对所选结果的置信度。如果置信度得分超过阈值,则监控MCU可以遵循主计算机的指示,而不管辅助计算机是否提供冲突或不一致的结果。在置信度分数不满足阈值并且主要和辅助计算机指示不同结果(例如,冲突)的情况下,监控MCU可以在计算机之间进行仲裁以确定适当的结果。

  监控MCU可以被配置为运行一个或更多个神经网络,该神经网络被训练和配置成基于来自主计算机和辅助计算机的输出来确定辅助计算机提供错误警报的条件。因此,监控MCU中的一个或更多个神经网络可以了解辅助计算机的输出何时可信任,何时不可信。例如,当辅助计算机是基于RADAR的FCW系统时,监控MCU中的一个或更多个神经网络可以了解FCW系统何时识别实际上不存在危险的金属对象,诸如引发警报的排水栅或井盖。类似地,当辅助计算机是基于相机的LDW系统时,监控MCU中的神经网络可以学习在存在骑自行车者或行人时超越LDW并且离开车道实际上是最安全的操纵。在包括在监控MCU上运行的一个或更多个神经网络的实施例中,监控MCU可以包括适合于运行具有相关联的存储器的一个或更多个神经网络的DLA或GPU中的至少一个。在优选实施例中,监控MCU可以包括和/或被包括作为一个或更多个SoC 1104的组件。

  在其他示例中,ADAS系统1138可以包括使用传统的计算机视觉规则来执行ADAS功能的辅助计算机。这样,辅助计算机可以使用经典计算机视觉规则(如果-则(if-then)),并且监控MCU中一个或更多个神经网络的存在可以提高可靠性,安全性和性能。例如,多样化的实现和有意的非同一性使整个系统更具容错性,尤其是由软件(或软件-硬件接口)功能引起的故障。例如,如果主计算机上运行的软件中存在软件错误或错误,并且在辅助计算机上运行的非同一性的软件代码提供相同的总体结果,则监控MCU可能更有信心整体结果是正确,并且主计算机上的软件或硬件中的错误不会导致重大错误。

  在一些示例中,ADAS系统1138的输出可以被馈送到主计算机的感知块和/或主计算机的动态驾驶任务块。例如,如果ADAS系统1138由于紧接在前面的对象而指示前向碰撞警告,则感知块可在标识对象时使用该信息。在其他示例中,如本文所述,辅助计算机可以具有其自己的训练的神经网络,从而降低误报的风险。

  车辆102还可以包括信息娱乐系统SoC 1130(例如,车载信息娱乐系统(IVI))。尽管图示和描述为SoC,但信息娱乐系统可以不是SoC,并且可以包括两个或更多个分立组件。信息娱乐系统SoC 1130可以包括硬件和软件的组合,其可以用于向车辆102提供音频(例如,音乐,个人数字助理,导航指令,新闻,广播等),视频(例如,电视,电影,流媒体,等),电话(例如,免提呼叫),网络连接(例如,LTE,Wi-Fi等)和/或信息服务(例如,导航系统,后停车辅助,无线电数据系统,车辆相关信息,例如燃料水平,所覆盖的总距离,制动燃料水平,油位,门打开/关闭,空气过滤器信息等)。例如,信息娱乐系统SoC 1130可以是无线电,盘播放器,导航系统,视频播放器,USB和蓝牙连接,车载,车载娱乐,Wi-Fi,方向盘音频控制,免提语音控制,抬头显示器(HUD),HMI显示器1134,远程信息处理设备,控制面板(例如,用于控制和/或与各种组件、特征和/或系统交互),和/或其他组件。信息娱乐系统SoC 1130还可用于向车辆的一个或更多个用户提供信息(例如,视觉和/或听觉),例如来自ADAS系统1138的信息,诸如计划的车辆操纵的自动驾驶信息,轨迹,周围环境信息(例如,交叉口信息,车辆信息,道路信息等)和/或其他信息。

  信息娱乐系统SoC 1130可以包括GPU功能。信息娱乐系统SoC 1130可以通过总线1102(例如,CAN总线,以太网等)与车辆102的其他设备,系统和/或组件通信。在一些示例中,信息娱乐系统SoC 1130可以耦合到监控MCU,使得信息娱乐系统的GPU可以在一个或更多个主控制器1136(例如,车辆102的主要和/或备用计算机)发生故障的情况下执行一些自驱动功能。在这样的示例中,信息娱乐系统SoC 1130可以将车辆102置于司机安全停止模式,如本文所述。

  车辆102还可包括仪表组1132(例如,数字仪表板,电子仪表组,数字仪表板等)。仪表组1132可包括控制器和/或超级计算机(例如,离散控制器或超级计算机)。仪表组1132可包括一组仪表,例如速度表,燃油油位,油压,转速计,里程表,转向指示器,换档位置指示器,一个或更多个安全带警告灯,一个或更多个停车制动警告灯,一个或更多个引擎故障灯,安全气囊(SRS)系统信息,照明控制,安全系统控制,导航信息等。在一些示例中,可以在信息娱乐系统SoC 1130和仪表组1132之间显示和/或共享信息。换句话说,仪表组1132可以被包括作为信息娱乐系统SoC 1130的一部分,反之亦然。

  图11D是根据本公开的一些实施例的、用于一个或更多个基于云的服务器和图11A的示例自主车辆102之间的通信的系统图。系统1176可以包括一个或更多个服务器1178,一个或更多个网络1190和车辆,其包括车辆102。一个或更多个服务器1178可以包括多个GPU1184(A)-1184(H)(本文统GPU 1184),PCIe开关1182(A)-1182(H)(本文统称为PCIe开关1182)和/或CPU 1180(A)-1180(B)(本文统称为CPU 1180)。GPU 1184,CPU 1180和PCIe交换机可以与高速互连互连,例如但不限于由NVIDIA开发的NVLink接口688和/或PCIe连接1186。在一些示例中,GPU 1184是通过NVLink和/或NVSwitch SoC连接,并且GPU 1184和PCIe开关1182通过PCIe互连连接。尽管示出了八个GPU 1184,两个CPU 1180和两个PCIe开关,但是这不是限制性的。根据实施例,一个或更多额服务器1178的每一个可以包括任何数量的GPU 1184,CPU 1180和/或PCIe交换机。例如,一个或更多个服务器1178中的每个可以包括八个,十六个,三十二个和/或更多个GPU 1184。

  一个或更多个服务器1178可以通过一个或更多个网络1190和从车辆接收图像数据,其表示意外或改变的道路状况,诸如最近开始的道路工作。一个或更多个服务器1178可以通过一个或更多个网络1190向车辆发送神经网络1192,更新的神经网络1192和/或地图信息1194,包括关于交通和道路状况的信息。对地图信息1194的更新可以包括HD地图1122的更新,例如关于建筑工地,坑洼,弯路,洪水和/或其他障碍物的信息。在一些示例中,神经网络1192,更新的神经网络1192和/或地图信息1194可以由在从环境中的任何数量的车辆接收的数据中表示的新训练和/或体验产生,和/或基于在数据中心执行的训练(例如,使用一个或更多个服务器1178和/或其他服务器)。

  一个或更多个服务器1178可用于基于训练数据来训练机器学习模型(例如,神经网络)。训练数据可以由车辆生成,和/或可以在模拟中生成(例如,使用游戏引擎)。在一些示例中,训练数据被标记(例如,神经网络受益于监督学习)和/或经历其他预处理,而在其他示例中,训练数据未被标记和/或预处理(例如,神经网络不需要监督学习)。一旦机器学习模型被训练,机器学习模型可以由车辆使用(例如,通过一个或更多个网络1190传输到车辆,和/或机器学习模型可以由一个或更多个服务器1178使用以远程监控车辆。

  在一些示例中,一个或更多个服务器1178可以从车辆接收数据并将数据应用于最新的实时神经网络以用于实时智能推理。一个或更多个服务器1178可以包括由一个或更多个GPU 1184驱动的深度学习超级计算机和/或专用AI计算机,例如由NVIDIA开发的DGX和DGX站机器。然而,在一些示例中,一个或更多个服务器1178可以包括仅使用CPU供电的数据中心的深度学习基础设施。

  一个或更多个服务器1178的深度学习基础设施可以能够进行快速,实时的推理,并且可以使用该能力来评估和验证车辆102中处理器,软件和/或相关硬件的健康状况。例如,深度学习基础设施可以从车辆102接收周期性更新,例如车辆102已经在该图像序列中定位的一系列图像和/或对象(例如,通过计算机视觉和/或其他机器学习对象分类技术)。深度学习基础设施可以运行其自己的神经网络来标识对象并将其与车辆102标识的对象进行比较,并且如果结果不匹配并且基础设施断定车辆102中的AI发生故障,则一个或更多个服务器1178可以向车辆102发送信号,指示车辆102的故障安全计算机进行控制,通知乘客,并完成安全停车操纵。

  对于推理,一个或更多个服务器1178可以包括一个或更多个GPU1184和一个或更多个可编程推理加速器(例如,NVIDIA的TensorRT3)。GPU驱动的服务器和推理加速的组合可以使实时响应成为可能。在其他示例中,例如在性能不太重要的情况下,由CPU,FPGA和其他处理器供电的服务器可以用于推理。

  示例性计算设备

  图12是适用于实现本公开的一些实施例的计算设备1200的示例的框图。计算设备1200可以包括直接或间接耦合以下设备的总线1202:存储器1204,一个或更多个中央处理单元(CPU)1206,一个或更多个图形处理单元(GPU)1208,通信接口1210,输入/输出(I/O)端口1212,输入/输出组件1214,电源1216和一个或更多个呈现组件1218(例如,一个或更多个显示器)。

  尽管图12示出了其中各种块通过总线1202与线路连接,这不是限制性的并且仅为了清楚起见。例如,在一些实施例中,诸如显示设备的呈现组件1218可以被认为是I/O组件1214(例如,如果显示器是触摸屏)。作为另一示例,CPU 1206和/或GPU 1208可以包括存储器(例如,存储器1204可以代表除了GPU 1208,CPU 1206和/或其他组件的存储器之外的存储设备)。换句话说,图12的计算设备仅仅是说明性的。“工作站”,“服务器”,“笔记本电脑”,“桌面”,“平板电脑”,“客户端设备”,“移动设备”,“手持设备”,“游戏机”“电子控制单元(ECU)”“虚拟现实系统”和/或其他设备或系统类型(在图12的计算设备的范围内所有所构想的那样)之间没有区别。

  总线1202可以表示一个或更多个总线,例如地址总线,数据总线,控制总线或其组合。总线1202可以包括一种或多种总线类型,例如工业标准架构(ISA)总线,扩展工业标准架构(EISA)总线,视频电子标准协会(VESA)总线,外围组件互连(PCI)总线,外围组件互连快速(PCIe)总线和/或其他类型的总线。

  存储器1204可以包括各种计算机可读介质中的任何一种。计算机可读介质可以是可由计算设备1200访问的任何可用介质。计算机可读介质可包括易失性和非易失性介质,以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可包括计算机存储介质和通信介质。

  计算机存储介质可以包括以用于存储信息(诸如计算机可读指令,数据结构,程序模块和/其他数据类型)的任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质。例如,存储器1204可以存储计算机可读指令(例如,表示一个或更多个程序和/或一个或更多个程序元素,例如操作系统。计算机存储介质可以包括但不限于,RAM,ROM,EEPROM,闪存或其他存储技术,CD-ROM,数字通用光盘(DVD)或其他光盘存储器,磁带盒,磁带,磁盘存储器或其他磁存储设备,或任何其他介质,可用于存储所需信息并且可由计算设备1200访问。如本文所用,计算机存储介质本身不包括信号。

  通信介质可以在诸如载波或其他传输机制之类的已调制数据信号中体现计算机可读指令,数据结构,程序模块和/或其他数据类型,并且包括任何信息传递介质。术语“已调制数据信号”可以指的是以对信号中的信息进行编码的方式设置或改变其一个或更多个特征的信号。作为示例而非限制,通信介质可以包括有线介质,诸如有线网络或直接有线连接,以及无线介质,诸如声学,RF,红外和其他无线介质。上述任何组合也应包括在计算机可读介质的范围内。

  一个或更多个CPU 1206可以被配置为执行计算机可读指令以控制计算设备1200的一个或更多个组件以执行本文描述的方法和/或过程中的一个或更多个。每个CPU 1206可以包括能够同时处理多个软件线程的一个或更多个核心(例如,一个,两个,四个,八个,二十八个,七十二个等)。一个或更多个CPU 1206可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于所实现的计算设备1200的类型(例如,用于移动设备的具有较少核心的处理器和具有用于服务器的更多核心的处理器)。例如,取决于计算设备1200的类型,处理器可以是使用精简指令集计算(RISC)实现的ARM处理器或使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或辅助协处理器(例如数学协处理器)之外,计算设备1200还可以包括一个或更多个CPU 1206。

  一个或更多个计算设备1200可以使用GPU 1208来渲染图形(例如,3D图形)。一个或更多个GPU 1208可以包括数百或数千个核心,其能够同时处理数百或数千个软件线程。一个或更多个GPU 1208可以响应于渲染命令(例如,经由主机接口从一个或更多个CPU1206渲染的渲染命令)生成输出图像的像素数据。一个或更多个GPU1208可以包括用于存储像素数据的图形存储器,例如显示存储器。显示存储器可以被包括作为存储器1204的一部分。一个或更多个GPU708可以包括并行操作的两个或更多个GPU(例如,经由链路)。当组合在一起时,每个GPU 1208可以生成输出图像的不同部分或不同输出图像的像素数据(例如,第一图像的第一GPU和第二图像的第二GPU)。每个GPU可以包含自己的内存,或者可以与其他GPU共享内存。

  在计算设备1200不包括一个或更多个GPU 1208的示例中,一个或更多个CPU 1206可用于渲染图形。

  通信接口1210可以包括一个或更多个接收器,发射器和/或收发器,其使得计算设备1200能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。通信接口1210可以包括用于实现通过多个不同网络中的任何网络进行通信的组件和功能,例如无线网络(例如,Wi-Fi,Z-Wave,蓝牙,蓝牙LE,ZigBee等),有线网络(例如,通过以太网通信),低功率广域网(例如,LoRaWAN,SigFox等)和/或因特网。

  I/O端口1212可以使计算设备1200能够逻辑地耦合到包括I/O组件1214,一个或更多个呈现组件1218和/或其他组件的其他设备,其中一些组件可以被构建(例如,集成在)计算设备1200中。说明性I/O组件1214包括麦克风,鼠标,键盘,操纵杆,游戏手柄,游戏控制器,卫星天线,扫描仪,打印机,无线设备等。I/O组件1214可以提供处理由用户生成的空中手势、语音或其他生理输入的自然用户界面(NUI)。在某些情况下,可以将输入发送到适当的网络元件以进行进一步处理。NUI可以实现语音识别,手写笔识别,面部识别,生物识别,屏幕上和屏幕附近的手势识别,空中手势,头部和眼睛跟踪以及与计算设备1200的显示相关联的触摸识别(如下面更详细描述的)的任何组合。计算设备1200可以包括深度相机,例如立体相机系统,红外相机系统,RGB相机系统,触摸屏技术,以及它们的组合,用于手势检测和识别。另外,计算设备1200可以包括能够检测运动的加速度计或陀螺仪(例如,作为惯性测量单元(IMU)的一部分)。在一些示例中,加速度计或陀螺仪的输出可以由计算设备1200使用以呈现沉浸式增强现实或虚拟现实。

  电源1216可以包括硬连线电源,电池电源或其组合。电源1216可以向计算设备1200提供电力以使计算设备1200的组件能够操作。

  一个或更多个呈现组件1218可以包括显示器(例如,监视器,触摸屏,电视屏幕,抬头显示器(HUD),其他显示器类型或其组合),扬声器,和/或其他演示组件。一个或更多个呈现组件1218可以从其他组件(例如,一个或更多个GPU 1208,一个或更多个CPU 1206等)接收数据,并输出数据(例如,作为图像,视频,声音等)。

  可以在计算机代码或机器可用指令的一般上下文中描述本公开,包括由诸如程序模块之类的计算机或其他机器(诸如个人数据助理或其他手持设备)执行的计算机可执行指令。通常,包括例程,程序,对象,组件,数据结构等的程序模块指代执行特定任务或实现特定抽象数据类型的代码。本公开可以在各种系统配置中实践,包括手持设备,消费电子产品,通用计算机,更多专业计算设备等。本公开还可以在分布式计算环境中实施,其中任务由远程处理通过通信网络链接的设备。

  如本文所用,关于两个或更多个元素的“和/或”的叙述应该被解释为仅意味着一个元素或元素的组合。例如,“元素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中的至少一种。

  本文中具体描述了本公开的主题以满足法定要求。然而,描述本身并不旨在限制本公开的范围。相反,发明人已经构想所要求保护的主题还可以以其他方式体现,以包括与本文档中描述的步骤类似的不同步骤或步骤组合,结合其他现有或未来技术。此外,尽管本文可以使用术语“步骤”和/或“框”来表示所采用的方法的不同元素,但是这些术语不应被解释为暗示本文公开的各个步骤之中或之间的任何特定顺序,除非和当订单时明确描述了各个步骤。

《使用模拟环境对自主机器进行培训、测试和验证.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式(或pdf格式)