CN113728310A - 用于分布式***仿真的架构 - Google Patents

用于分布式***仿真的架构 Download PDF

Info

Publication number
CN113728310A
CN113728310A CN201980091292.5A CN201980091292A CN113728310A CN 113728310 A CN113728310 A CN 113728310A CN 201980091292 A CN201980091292 A CN 201980091292A CN 113728310 A CN113728310 A CN 113728310A
Authority
CN
China
Prior art keywords
data
subsystem
channel
subsystems
vehicle
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201980091292.5A
Other languages
English (en)
Inventor
阿洛科·普立亚达尔西
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Voyager Technology Co Ltd
Original Assignee
Beijing Voyager Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Voyager Technology Co Ltd filed Critical Beijing Voyager Technology Co Ltd
Publication of CN113728310A publication Critical patent/CN113728310A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0231Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means
    • G05D1/0246Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means
    • G05D1/0248Control of position or course in two dimensions specially adapted to land vehicles using optical position detecting means using a video camera in combination with image processing means in combination with a laser
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course, altitude or attitude of land, water, air or space vehicles, e.g. using automatic pilots
    • G05D1/02Control of position or course in two dimensions
    • G05D1/021Control of position or course in two dimensions specially adapted to land vehicles
    • G05D1/0257Control of position or course in two dimensions specially adapted to land vehicles using a radar
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/461Saving or restoring of program or task context
    • G06F9/463Program control block organisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Remote Sensing (AREA)
  • Radar, Positioning & Navigation (AREA)
  • Aviation & Aerospace Engineering (AREA)
  • Automation & Control Theory (AREA)
  • Optics & Photonics (AREA)
  • Electromagnetism (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Traffic Control Systems (AREA)

Abstract

提供用于分布式***(例如基于车辆的处理***)的确定性仿真的***和方法。分布式***可以表示为在仿真期间利用计算设备的单个进程执行的多个子***或“小节点”。这些小节点可以使用进程内通信进行通信。任务调度器可以调度小节点在串行发生的帧中单独执行。可以使用仿真时钟来减轻可能由延迟或抖动引起的时间戳数据的变异性。

Description

用于分布式***仿真的架构
通过引用并入任何优先权申请
在本申请的申请数据表中认定的外国或国内优先权的任何和所有申请(如果有的话)依据37CFR1.57通过引用整体并入本文。
版权声明
本专利文件的公开内容部分包含受版权保护的材料。版权所有者不反对任何人按美国专利和商标局文件和/或记录中所示地复制该专利文件和/或专利公开内容,其它但保留所有版权。
背景技术
车辆——例如用于共享出行目的的车辆、提供驾驶员辅助功能的车辆和/或自动自主车辆(AV)——可以使用车载数据处理***获取和处理传感器数据以执行多种多样的功能。例如,功能可以包括确定和/或显示导航路线、识别道路标志、检测物体和/或道路障碍物、控制车辆操作和/或类似的功能。
在车辆运行期间,车载处理***能够处理从车辆传感器接收的传感器数据。此外,在测试期间无需车辆运行或使用传感器即可测试车载处理***。例如,可以通过使用先前接收和存储的传感器数据,和/或针对测试特定场景中的使用而生成的传感器数据来测试车载处理***。
发明内容
下文提供一个或多个方面的简化的概述,以提供对这些方面的基本了解。本概述不是对所有可设想方面的广泛概览,并且既无意定义所有方面的关键或关键要素,也无意界定任何或所有方面的范围。其核心目的是以简化形式呈示一个或多个方面的一些概念,作为稍后呈示的具体实施方式部分的前序。
一个方面包括提供用于仿真分布式***的特征的***、方法和/或非瞬态计算机可读介质。这些特征包括将多个子***加载到计算机可读存储器分配给单个进程的部分中,其中,所述多个子***被配置为以第一操作模式操作,在所述第一操作模式中,所述多个子***仅串行地执行以处理仿真传感器数据并且以第二操作模式操作,在所述第二操作模式中,所述多个子***中的两个或更多个子***同时执行以处理传感器数据。调度所述多个子***以在第一操作模式下执行。建立用于与所述多个子***的第一子***进行通信的信道。使用所述信道将进程内数据发送到第一子***,其中,所述进程内数据是由所述多个子***中的第二子***至少部分地基于所述仿真传感器数据生成的,以及其中,所述信道将所述进程内数据从所述计算机可读存储器中分配给所述进程的部分的第一位置,复制到所述计算机可读存储器中分配给所述进程的所述部分的第二位置。
另一个方面包括提供用于使用串行时间线的分布式***执行的特征的***、方法和/或非瞬态计算机可读介质。这些特征包括接收仿真基于车辆的传感器的输出的输入数据。包括多个可执行小节点的基于车辆的处理***的第一小节点使用这些输入数据执行第一操作。基于车辆的处理***的第二小节点使用所述输入数据执行第二操作,其中,第二小节点被配置为独立于第一小节点操作。调度第一小节点在第一时间段期间执行第一操作,其中,在第一时间段期间不允许所述多个可执行小节点中的其它小节点执行。调度第二小节点在第二时间段期间执行第二操作,其中,在第二时间段期间不允许所述多个可执行小节点中的其它小节点执行。第一小节点被执行以在第一时间段期间执行第一操作,其中,所述第一操作生成由所述多个可执行小节点中的第三小节点处理的输出数据。第三小节点被调度在第二时间段之后的第三时间段期间执行第三操作。第二小节点被执行以在第二时间段期间执行第二操作。此外,第三小节点被执行以在第三时间段期间执行第三操作。
再一个方面包括提供用于使用仿真时钟的分布式***任务管理的特征的***、方法和/或非瞬态计算机可读介质。这些特征包括从包括仿真传感器数据的输入数据集合加载输入数据项。确定与输入数据项相关联的第一时间戳所表示的时间。将仿真时钟设置为所述第一个时间戳表示的所述时间。确定多个子***中的其中一个子***用于处理所述输入数据项。执行所述子***,其中,在所述子***的执行期间中经过一段时间,其中,所述仿真时钟在所述子***的执行期间保持静态,以及其中,所述子***使用仿真时钟来生成与输出消息相关联的第二时间戳。
附图简要说明
图1A示出了根据本公开某些方面的联网车辆环境的框图,其中,一个或多个车辆和/或一个或多个用户设备经由网络与服务器交互。
图1B示出了根据本公开某些方面的图1A的车辆与一个或多个其它车辆和/或图1A的服务器通信的框图。
图2示出了根据一个实施例的用于处理传感器数据的计算图形的框图。
图3示出了根据一个实施例的用于处理仿真传感器数据的计算图形的框图。
图4示出了根据一个实施例的具有多种小节点和信道的子图形的框图。
图5A示出了根据一个实施例的具有使用跨进程通信进行通信的多个进程的存储器空间的框图。
图5B示出了根据一个实施例的具有使用进程内通信进行通信的单个进程的多个部分的存储器空间的框图。
图6示出了根据一个实施例的被配置为使用基于小节点的计算图形来执行仿真化处理的确定性仿真***的各种部件的框图。
图7示出了根据一个实施例的用于调度小节点处理任务的程序的流程图。
图8示出了根据一个实施例的按使用仿真时钟的任务调度器调度的小节点执行的时间线。
图9示出了根据一个实施例的用于执行小节点的程序的流程图。
图10示出了根据一个实施例的被配置为实施本公开多个方面的计算***的框图。
具体实施方式
本公开针对以同步的和确定性的方式仿真分布式处理***的操作。该分布式处理***可以具有多个可执行部件,也称为“节点”,这些节点使用发布订阅消息传递协议进行通信。输入到***中的数据可以由一些节点处理,这些节点向其它节点发布订阅以用于执行附加处理的数据,等等。
一些常规的分布式处理***以异步方式执行,允许节点在完全不同的线程或进程中执行。术语“线程”和“进程”在本文中根据它们在计算机技术领域中的普通和习惯含义来予以使用。例如,术语进程可用于指代正在由计算设备执行的计算机程序的实例,该计算设备包括存储可执行代码和实例的特定数据(例如,变量值的调用堆栈、堆或其它数据结构等)的计算机存储器部分。术语“线程”可用于指代在进程内执行的一序列的操作。多个线程可以存在于一个进程中,同时地执行并且共享如存储器(例如,可执行代码、动态分配变量的值等)的资源。但是,计算设备的操作***可能会禁止进程之间的直接通信。在这些情况下,可能需要不同的进程使用定义的跨进程通信(inter-process communication)机制进行通信,例如操作***控制下的那些。
在不同线程或不同进程中执行节点可以产生可能因不同因素(例如,单个节点首次启动的时间、影响跨进程通信的可变延迟等)而有所不同的一序列的操作。虽然***可能被设计为考虑到此类可变性,但在使用仿真来测试***时,可变性可能导致不一致性。例如,即使给定的输入或输入集在所有仿真过程中保持不变,该输入或输入集仍可能是由在仿真间以彼此不同的序列运行的节点来处理的。这种仿真的非确定性特点会干扰识别问题、测试解决方案等。可以使用属于确定性的仿真(例如,单个输入或输入集总是使得***以相同的序列执行相同的操作并产生相同的输出)来测试分布式异步***,从而能够在识别问题、测试解决方案等时有所获益。
本公开的一些方面涉及以更小的子***集(也称为“小节点”(nodelet))替代被设计成在单独的进程中执行的复杂多线程节点。与复杂节点相比,小节点的子图形可以提供相同的功能,同时还提供在多线程或单线程操作模式下运行的灵活性。因此,子图形可以提供生产***所需的性能(例如,在多线程模式中),同时还提供运行仿真所需的确定性处理(例如,在单线程模式中)。此外,所有小节点还可能在同一进程内执行,并且小节点之间的通信因此发生在***存储器的单个进程空间内。这些进程内通信(in-processcommunication)所遇到的延迟程度不同于节点在***存储器的不同进程空间中执行的***中所需的跨进程通信。
本公开的附加方面涉及调度小节点的操作,使得单独的小节点仅在定义的串行发生的时间帧(为了方便也简称为“帧”)内运行。任务调度器可以在单个线程内穿插多个小节点的帧,使得小节点根据单个时间线以串行方式运行。在一些实施例中,在任何给定帧中只有一个小节点可以执行,因此在任何给定时间处***中仅一个小节点是活动的。例如,小节点可以在第一帧中执行操作,然后在一个或多个后续帧中一个或多个小节点执行操作时停止或“休眠”。最终,如果第一个小节点要执行附加的操作(例如,第一个小节点要处理另一个输入,第一个小节点已请求回调等),则任务调度器可以在帧的串行时间线内调度另一个帧。第一个小节点可以在此附加的帧期间执行它附加的操作。通过将所有小节点的操作调度在串行发生的单独帧中发生,能够避免异步分布式***中发生的某些问题(例如,竞争状况)。因此,单个串行时间线中的穿插帧有助于仿真期间的确定性执行。
本公开的再一些方面涉及使用仿真时钟,而不是连续提前的***时钟,以促进仿真期间***的确定性操作。可由任务调度器在每个帧开始处设置仿真时钟。此外,由该仿真时钟指示的时间可以不改变,直到任务调度器递增或以其它方式将该仿真时钟设置为后续帧的另一时间为止。因此,该仿真时钟给出的时间在执行过程期间中不会连续推移,而是在新帧开始时从一个值跳到另一个值。因此,根据该仿真时钟,在给定帧期间的任何时点生成的时间戳记的数据都将被时间戳记为相同的值,而不管时间戳记的数据是在该帧内何时生成的。因此,仿真间彼此不同的抖动和延迟——通常会影响事件之间经过的时间量并在其它方面影响时间戳记的数据——不会影响使用了该仿真时钟的仿真。
根据本公开的一个或多个说明性实施例的***和方法的详细描述和示例可以至少参见标题为确定性仿真架构和执行的部分以及标题为示例实施例的部分以及本文图2-10。再者,可以将分布式***的确定性仿真的部件和功能配置和/或并入由本文图1A-1B描述的联网车辆环境100中。
本文描述的多种实施例与车辆和/或计算机技术密切相关、由车辆和/或计算机技术实现且依存于车辆和/或计算机技术。例如,在没有实现它们的车辆和/或计算机技术的情况下,本文参考多种实施例描述的用于分布式处理***的确定性仿真的***和方法无法合理地单独由人执行。
联网车辆环境
图1A示出了根据本公开某些方面的联网车辆环境100的框图,其中一个或多个车辆120和/或一个或多个用户设备102经由网络110与服务器130交互。例如,车辆120可以配备成提供共享出行和/或其它基于位置的服务,以帮助驾驶员控制车辆操作(例如,通过各种驾驶员辅助特征,例如自适应和/或常规巡航控制、自适应大灯控制、防抱死制动、自动泊车、夜视、盲点监控、防撞、侧风稳定、驾驶员疲劳检测、驾驶员监控***、紧急驾驶员辅助、交叉路口辅助、陡坡缓降控制、智能速度自适应、车道居中、车道偏离警告、前方、后方和/或侧面停车传感器、行人检测、雨水传感器、环视***、轮胎压力监测器、交通标志识别、转向辅助、错误行驶警告、交通状况警报等)和/或完全控制车辆操作。因此,车辆120可以是常规汽油、天然气、生物燃料、电力、氢燃料等的,被配置为提供共享出行和/或其它基于位置的服务,提供驾驶员辅助功能(例如,本文描述的一个或多个驾驶员辅助特征)的车辆和/或自动或自主驾驶车辆(AV)。车辆120可以是汽车、卡车、货车、公共汽车、摩托车、踏板车、自行车和/或任何其它机动车辆。
服务器130可以与车辆120通信以获得车辆数据,例如路线数据、传感器数据、感知数据、车辆120控制数据、车辆120部件故障和/或故障数据等。服务器130可以处理和存储这些车辆数据,以便在由服务器130和/或另一个计算***(未示出)执行的其它操作中使用。此类操作可以包括运行用于识别车辆120的运行问题(例如,车辆120导航错误的原因、异常传感器读数、未识别的物体、车辆120部件故障等)的诊断模型;运行用于仿真给定一组变量的车辆120的性能的模型;识别未能被车辆120识别的物体,生成在被车辆120执行时使车辆120沿着指定路径以某种方式驾驶和/或操控的控制指令和/或类似指令。
服务器130还能向车辆120传送数据。例如,服务器130可以传送地图数据、固件和/或软件更新、车辆120控制指令、车辆120以其它方式无法识别的物体的标识、乘客接取信息、交通数据和/或类似数据。
除了与一个或多个车辆120通信之外,服务器130还能够与一个或多个用户设备102通信。具体地,服务器130可以提供网络服务以使用户能够经由在用户设备102上运行的应用来请求基于位置的服务(例如,交通服务,例如共享出行服务)。例如,用户设备102可以对应于通过网络110与服务器130通信的计算设备,诸如智能电话、平板电脑、笔记本电脑、智能手表或其它设备。在该实施例中,用户设备102执行诸如移动应用之类的应用,操作用户设备102的用户可用该应用来与服务器130交互。例如,用户设备102可以与服务器130通信,以向服务器130提供位置数据和/或查询、从服务器130接收地图相关数据和/或方向、和/或类似操作。
服务器130可以处理从用户设备102接收到的请求和/或其它数据,以识别服务提供方(例如,车辆120驾驶员)以便为用户提供所请求的服务。此外,服务器130可以接收数据——例如用户行程接取或目的地数据、用户位置查询数据等——服务器130基于这些数据识别与各种用户关联的区域、地址和/或其它位置。服务器130然后可以使用所识别的位置,来向服务提供方和/或用户提供所确定的接取位置的方向。
在用户设备102上运行的应用可以由负责服务器130的同一实体创建和/或使其可用。可选地,用户设备102上运行的应用可以是包含能够与服务器130通信的特征的第三方应用(例如,应用编程接口或软件开发工具包)。
为简化和易于解释,图1A中图示单个服务器130。然而,应理解,服务器130可以是单个计算设备,或者可以包括逻辑上或物理上组合在一起以共同作为服务器***运行的多个不同的计算设备。服务器130的部件可以在专用硬件(例如,具有一个或多个ASIC的服务器计算设备)中实现从而不需要软件,或者作为硬件和软件的组合来实现。此外,服务器130的模块和部件可以组合在一个服务器计算设备上,或各自分开或分组设置于多个服务器计算设备上。在一些实施例中,服务器130可以包括比图1A中所示的更多或更少的部件。
网络110包括任何有线网络、无线网络或其组合。例如,网络110可以是个人区域网、局域网、广域网、空中广播网络(例如,用于广播或电视)、有线网络、卫星网络、蜂窝电话网络或其组合。作为又一个示例,网络110可以是链接网络的公共可访问网络,可能由各种不同的机构运营,例如因特网。在一些实施例中,网络110可以是私有或半私有网络,例如公司或大学内联网。网络110可包括一个或多个无线网络,例如全球移动通信***(GSM)网络、码分多址(CDMA)网络、长期演进(LTE)网络或任何其它类型的无线网络。网络110可以使用协议和组件来通过互联网或任何其它上述类型的网络进行通信。例如,网络110使用的协议可以包括超文本传输协议(HTTP)、超文本传输安全协议(HTTPS)、消息队列遥测传输(MQTT)、受限应用协议(CoAP)等。用于经由因特网或任何其它上述类型的通信网络进行通信的协议和部件是本领域技术人员公知的,因此在此不再进行更详细的描述。
服务器130可以包括导航单元140、车辆数据处理单元145和数据存储150。导航单元140可以协助基于位置的服务。例如,导航单元140可以帮助用户(在此也称为“驾驶员”)将另一用户(在此也称为“搭车者”)和/或物体(例如,食物、包裹等)从第一位置(在此也称为“接取位置”)运送到第二位置(在此也称为“目的地位置”)。导航单元140可以通过向在搭车者的用户设备102上运行的应用、向驾驶员的用户设备102上运行的应用、和/或向车辆120上运行的导航***提供地图和/或导航指令,来帮助实现用户和/或物体运送。
作为示例,导航单元140可以包括匹配服务(未示出),该匹配服务将请求从接取位置到目的地位置的行程的搭车者,与能够完成该行程的驾驶员进行配对。该匹配服务可以与在搭车者的用户设备102上运行的应用和/或在驾驶员的用户设备102上运行的应用交互,以建立搭车者的行程和/或处理从搭车者对驾驶员的付款。
导航单元140还可以在行程期间与驾驶员的用户设备102运行上的应用通信,以从用户设备102获得行程位置信息(例如,通过耦合到和/或嵌入在用户设备102中的全球定位***(GPS)部件),并向该应用提供导航方向,所述导航方向帮助驾驶员从当前位置行驶到目的地位置。导航单元140还可以向驾驶员指示多个不同地理位置或兴趣点,而无论驾驶员是否在搭载搭车者。
车辆数据处理单元145可以被配置为支持车辆120的驾驶员辅助特征和/或支持自动驾驶。例如,车辆数据处理单元145可以生成地图数据和/或将其传送到车辆120,运行用于识别车辆120的操作问题的诊断模型,运行用于在给定一组变量的情况下仿真车辆120的性能的模型,使用车辆120提供的车辆数据来识别物体并将物体的标识传送到车辆120,生成车辆120控制指令和/或将其传送到车辆120,和/或类型操作。
数据存储器150可以存储导航单元140、车辆数据处理单元145、用户设备102和/或车辆120所使用的多种类型的数据。例如,数据存储150可以存储用户数据152、地图数据154、搜索数据156和日志数据158。
用户数据152可以包括有关注册于基于位置的服务的一些或所有用户的信息,例如驾驶员和搭车者。该信息可以包括例如用户名、密码、姓名、地址、帐单信息、与用户所采用或获得服务的先前行程关联的数据、用户评级信息、用户忠诚度程序信息和/或类似信息。
地图数据154可以包括从传感器(例如,激光雷达(LiDAR)传感器、雷达(RADAR)传感器、红外相机、可见光相机、立体相机、惯性测量单元(IMU)等)生成的高清(HD)地图、卫星图像、在捕获的街道图像上进行的光学字符识别(OCR)(例如,识别街道名称、识别街道标志文字、识别兴趣点名称等)等;用于计算路线的信息;用于渲染二维和/或三维图形地图的信息;和/或类似信息。例如,地图数据154可以包括诸多元素:如街道和十字路口的布局、桥梁(例如,包括有关过街天桥的高度和/或宽度的信息)、出口匝道、建筑物、停车结构入口和出口(例如,包括有关车辆入口和/或出口的高度和/或宽度的信息)、路牌和停车灯的位置、紧急岔道、兴趣点(例如公园、餐馆、加油站、景点、地标等以及关联名称)、道路标记(例如,分隔对面车道的中心线标记、车道标记、停车线、左转引导线、右转引导线、人行横道、公交车道标记、自行车道标记、安全岛标记、路面文字、高速公路出口和入口标记等)、路缘石、铁路线、水路、左右转弯的转弯半径和/或角度、道路特征的距离和尺寸、双向交通之间隔离物的位置和/或类似元素,连同与这些元素相关联的地理位置(例如,地理坐标)。地图数据154还可以包括参考数据,例如实时和/或历史交通信息、当前和/或预测的天气状况、道路作业信息、有关法律和法规的信息(例如,速度限制、是否允许或禁止在红灯时右转、是否允许或禁止掉头、允许的行驶方向和/或类似的信息)、新闻事件,和/或类似信息。
虽然地图数据154示出为存储在服务器130的数据存储150中,但这并不意味着是限制性的。例如,服务器130可以将地图数据154传送到车辆120以存储在其中(例如,如下文描述,存储在数据存储129中)。
搜索数据156可以包括过去由多个不同用户输入的搜索。例如,搜索数据156可以包括对接取和/或目的地位置的文本搜索。搜索可以针对特定地址、地理位置、与地理位置相关联的名称(例如,公园、餐厅、加油站、景点、地标等的名称)等。
日志数据158可以包括由一个或多个车辆120提供的车辆数据。例如,车辆数据可以包括路线数据、传感器数据、感知数据、车辆120控制数据、车辆120部件故障和/或故障数据等。
图1B示出的框图显示了根据本公开的某些方面的图1A的车辆120与图1A的一个或多个其它车辆170A-N和/或服务器130通信。如图1B所示,车辆120可以包括多种部件和/或数据存储。例如,车辆120可以包括传感器阵列121、通信阵列122、数据处理***123、通信***124、内部接口***125、车辆控制***126、操作***127、地图引擎128和/或数据存储129。
可以在车辆120、一个或多个车辆170A-N和/或服务器130之间发送和/或接收通信180。服务器130可以传送和/或从车辆120接收数据,正如上文结合图1A所描述的。例如,服务器130可以向车辆120传送车辆控制指令或命令(例如,作为通信180)。车辆控制指令可以被通信阵列122(例如,被配置为发射和/或接收无线信号的一个或多个天线的阵列)接收,该通信阵列由通信***124(例如,收发器)来操作。通信***124可以将车辆控制指令传送到车辆控制***126,该车辆控制***可以操作车辆120的加速、转向、刹车、灯光、信号和其它操作***127,以便驾驶和/或操控车辆120和/或协助驾驶员驾驶和/或操控车辆120通过道路交通驶向由车辆控制指令指定的目的地位置。
作为示例,车辆控制指令可以包括路线数据163,其可以由车辆控制***126处理以操控车辆120和/或协助驾驶员沿着给定路线操控车辆120(例如,由服务器130和/或地图引擎128计算出的优化路线)驶向指定的目的地位置。在处理路线数据163时,车辆控制***126可以生成控制命令164以供操作***127执行(例如,加速、转向、刹车、操控、倒车等)以使车辆120沿路线行驶到目的地位置,和/或协助驾驶员沿线路操控车辆120驶向目的地位置。
目的地位置166可以由服务器130基于在用户设备102上运行的应用所传送的用户请求(例如,接取请求、递送请求等)来指定。备选地或附加地,车辆120的搭车者和/或驾驶员可以通过内部接口***125(例如,车辆导航***)提供用户输入169来提供目的地位置166。在一些实施例中,车辆控制***126可以将输入的目的地位置166和/或车辆120的当前位置(例如,作为GPS数据包)作为通信180经由通信***124和通信阵列122传送到服务器130。服务器130(例如,导航单元140)可以使用车辆120的当前位置和/或输入的目的地位置166来执行优化操作,以确定车辆120行驶到目的地位置166的最优路线。可以将包括最优路线的路线数据163经由通信阵列122和通信***124,从服务器130传送到车辆控制***126。由于接收到路线数据163,车辆控制***126能使操作***127操控车辆120通过交通沿最优路线驶向目的地位置166,协助驾驶员操控车辆120通过交通沿最优路线驶向目的地位置166,和/或使内部接口***125显示和/或呈现用于操纵车辆120通过交通沿最优路线驶向目的地位置166的指令。
备选地或附加地,路线数据163包括最优路线,并且车辆控制***126自动地将路线数据163输入到地图引擎128中。地图引擎128可以使用最优路线生成地图数据165(例如,生成显示最优路线的地图和/或采取最优路线的指令)并且将地图数据165提供到内部接口***125(例如,经由车辆控制***126)以显示。地图数据165可以包括从存储在服务器130上的数据存储150中的地图数据154中导出的信息。显示的地图数据165可以指示估计的到达时间和/或显示车辆120沿最优路线的行程进度。显示的地图数据165还可以包括指示符,例如改道命令、紧急通知、道路作业信息、实时交通数据、当前天气状况、有关法律和法规的信息(例如,限速、红灯时是否允许或禁止右转、哪里允许或禁止掉头、允许的行驶方向等)、新闻事件和/或类似信息。
用户输入169也可以是访问网络(例如,网络110)的请求。响应于此类请求,内部接口***125可以生成访问请求168,其可以由通信***124处理,以将通信阵列122配置为发送和/或接收对应于用户与内部接口***125交互和/或与内部接口***125通信的用户设备102交互(例如,通过无线连接连接到内部接口***125的用户设备102)的数据。例如,车辆120可以包括车载Wi-Fi,乘客和/或驾驶员可以访问该Wi-Fi以发送和/或接收电子邮件和/或文本消息、音频流和/或视频内容、浏览内容页面(例如,网络页面、网站页面等)和/或访问使用网络访问的应用。基于用户交互,内部接口***125可以经由网络110、通信阵列122和/或通信***124接收内容167。通信***124可以动态地管理网络访问以避免或最少化内容167的传输中断。
传感器阵列121可以包括任意数量的一种或多种类型的传感器,例如卫星无线电导航***(例如,GPS)、激光雷达(LiDAR)传感器、景观传感器(例如,雷达传感器)、惯性测量单元(IMU)、相机(例如,红外相机、可见光相机、立体相机等)、Wi-Fi检测***、蜂窝通信***、车辆间通信***、道路传感器通信***、特征传感器、接近度传感器(例如,红外、电磁、光电等)、距离传感器、深度传感器和/或类似装置。卫星无线电导航***可以基于对从卫星星座接收的信号的分析来计算车辆120的当前位置(例如,在1-10米的范围内)。
激光雷达(LiDAR)传感器、雷达传感器和/或任何其它类似类型的传感器可用于在车辆120处于运动中或即将开始运动时检测车辆120的周围环境。例如,激光雷达(LiDAR)传感器可用于从接近的物体反射多个激光束,以评估它们的距离并提供有关周围环境的准确3D信息。从激光雷达(LiDAR)传感器获得的数据可用于执行物体识别、运动矢量确定、碰撞预测和/或实施事故避免处理。可选地,激光雷达(LiDAR)传感器可以使用旋转扫描镜组件来提供360°视角。激光雷达(LiDAR)传感器可以可选地安装在车辆120的车顶上。
IMU可以包括X、Y、Z朝向的陀螺仪和/或加速度计。IMU提供有关车辆120的转动和直线运动的数据,其可用于计算车辆120的运动和位置。
相机可用于捕获车辆120周围环境的视觉图像。具体根据相机的配置和数量,相机可以提供车辆120周围的360°视角。来自相机的图像可用于读取道路标记(例如,车道标记)、读取街道标志、检测物体和/或类似操作。
Wi-Fi检测***和/或蜂窝通信***可分别用于对Wi-Fi热点或蜂窝塔进行三角测量,以确定车辆120的位置(可选地结合卫星无线电导航***)。
车辆间通信***(其可包括Wi-Fi检测***、蜂窝通信***和/或通信阵列122)可用于接收和/或向其它车辆170A-N传送数据,例如车辆120的当前速度和/或位置坐标、与规划减速时以及规划的减速率相对应的时间和/或位置坐标、规划停止操作时的时间和/或位置坐标、规划变道时以及变道方向的时间和/或位置坐标、规划转弯操作时的时间和/或位置坐标、规划停车操作时的时间和/或位置坐标和/或类似操作。
道路传感器通信***(可包括Wi-Fi检测***和/或蜂窝通信***)可用于从道路传感器(例如,指示车流速度和/或交通拥堵)和/或从交通控制设备(例如,交通信号灯)读取信息。
当用户(例如,通过在用户设备102上运行的应用)请求接送时,用户可以指定具体的目的地位置。初始位置可以是车辆120的当前位置,其可以使用安装在车辆中的卫星无线电导航***(例如,GPS、Galileo、北斗/COMPASS、DORIS、GLONASS和/或其它卫星无线电导航***)、Wi-Fi定位***、蜂窝塔三角测量和/或类似方式来予以确定。可选地,初始位置可由用户通过车辆120提供的用户接口(例如,内部接口***125)或通过运行该应用的用户设备102来指定。可选地,可以根据从用户设备102获得的位置信息自动确定初始位置。除了初始位置和目的地位置之外,还可以指定一个或多个路径点,从而启用多个目的地位置。
来自传感器阵列121的原始传感器数据161可由车载数据处理***123来处理。处理后的数据162则可以被数据处理***123传送到车辆控制***126,并且可选地经由通信***124和通信阵列122传送到服务器130。
数据存储129可以存储地图数据(例如,地图数据154)和/或地图数据154的子集(例如,对应于车辆120当前所在的大致区域的地图数据154的一部分)。在一些实施例中,车辆120可以使用传感器阵列121沿行驶路线记录更新的地图数据,并经由通信***124和通信阵列122将更新的地图数据传送到服务器130。服务器130然后可以将更新的地图数据传送到车辆170A-N中的一个或多个和/或进一步处理更新的地图数据。
数据处理***123可以向车辆控制***126提供连续或接近连续处理的数据162,以响应车辆120周围环境中的点对点活动。处理后的数据162可以包括原始传感器数据161——表示车辆120的运行环境并且由传感器阵列121连续收集——与存储在数据存储129中的地图数据之间的比较。在一个示例中,将数据处理***123编程为具有机器学习或其它人工智能能力,以使车辆120能够识别和响应状况、事件和/或潜在危险。在变体中,数据处理***123可以连续地或接近连续地将原始传感器数据161与存储的地图数据进行比较,以执行定位从而连续地或接近连续地确定车辆120的位置和/或方向。车辆120的定位可使车辆120能与存储的地图数据相比得知车辆120的即时位置和/或方向,以操控车辆120在街区道路上通过交通,和/或协助驾驶员操控车辆120在街区道路上通过交通并且识别和响应潜在危险(例如,行人)或当地状况,例如天气或交通状况。
再者,定位可使车辆120能够对通信阵列122进行调谐或波束转向,以将通信链接质量提高到最大和/或将来自其它车辆170A-N的其它通信的干扰减到最小。例如,通信***124可以响应于从服务器130接收到的网络配置命令来对通信阵列122的辐射方向图进行波束转向。数据存储129可以存储标识网络基站和/或提供网络连接的其它网络源的当前网络源地图数据。网络源地图数据可以指示车辆120所在区域内的基站和/或可用网络类型(例如,3G、4G、LTE、Wi-Fi等)的位置。
虽然图1B将某些操作描述为由车辆120或服务器130执行,但这并不意味着作为限制。如本文描述的由车辆120和服务器130执行的操作可以由任一实体来执行。例如,通常由服务器130执行的某些操作(例如,向车辆170A-N传送更新地图数据)可由车辆120执行,以便达到负载平衡目的(例如,减少服务器130的处理负载,利用车辆120上的空闲处理能力等)。
再者,车辆170A-N中的任一个可以包括本文描述的车辆120的一些或全部部件。例如,车辆170A-N可以包括通信阵列122以与车辆120和/或服务器130进行通信。
确定性仿真架构和执行
图2示出的使用分布式执行和通信架构200实现的分布式处理***的框图。分布式执行和通信架构200也可以被称为“计算图形”,或者为了方便起见简称为“图形”。在一些实施例中,车辆120的多种部件或子***可以使用这样的计算图形200来实现。例如,数据处理***123、车辆控制***126、其它部件、它们的组合等可以使用计算图形200来实现。在一个具体的非限制性实施例中,计算图形200可以实现为机器人操作***(Robotic OperatingSystem,“ROS”)图形。
虽然本文是结合基于车辆的***的具体示例实施方式来描述计算图形200的,但是这些示例仅是说明性的并且无意作为限制。在一些实施例中,计算图形200可用于实现其它基于车辆的***、非基于车辆的***、它们的组合等。
计算图形200可以从传感器阵列121接收输入,该传感器阵列可以包括多种传感器,例如激光雷达传感器210、雷达传感器212、相机传感器214和惯性传感器216。计算图形200可以处理来自这些传感器的输入并生成输出。例如,输出可以表示检测到的障碍物、要执行的方向改变、要执行的速度调整以及类似信息。
计算图形200包括执行数据处理操作、通信和/或其它功能的若干单独的可执行部件,也称为节点。一般而言,节点是为***的子集(例如,车辆120的一部分)执行操作的程序。每个节点可以在执行计算图形200的计算设备上作为单独的进程运行。此外,节点可以同步或异步地运行。
在一些实施例中,如图所示,可以按功能对节点执行逻辑分组,例如感知202、制图204和规划/控制206。在这些逻辑分组中,可以有任意数量专用于特定功能的单独节点。例如,感知202节点可以包括激光雷达感知节点220、雷达感知节点222、相机感知节点224、惯性感知节点226和/或检测节点228。制图204节点可以包括定位节点240和/或高清(HD)地图节点242。规划/控制206节点可以包括规划节点260、控制节点262和/或网关节点264。
节点之间可以通过传递消息来相互通信。消息可以经由具有发布/订阅语义的跨进程通信(“IPC”)***进行路由。在一些实施例中,消息被发布到特定的消息队列或“主题”。只要节点被配置为生成针对给定主题的特定类型(例如,数据结构)的消息,这些节点就能够向一个或多个主题发布消息。类似地,只要节点被配置为消费针对给定主题的特定类型的消息,这些节点就可以订阅一个或多个主题。发布方不需要知道哪些节点订阅主题,订阅方不需要知道哪些节点正在向主题发布。可以使用代理子***来管理向订阅特定主题的节点的消息分布。
在说明性示例中,激光雷达感知节点220可以从激光雷达传感器210接收输入消息。激光雷达感知节点220可以对输入消息执行处理,并生成输出消息(例如,对来自激光雷达传感器210的数据的分析)。激光雷达感知节点220可以发布有关LiDAR感知主题的输出消息。图形200的任意数量的其它节点可以订阅有关LiDAR感知主题的消息。例如,高清地图节点242和规划节点260都可以订阅LiDAR感知主题的消息。当激光雷达感知节点220发布有关LiDAR感知主题的消息时,代理可以确定高清地图节点242和规划节点260是该主题的订阅方,并将该消息提供给订阅方节点。
图形200不一定需要直接从传感器阵列121中的实时传感器接收输入。相反,只要输入数据被正确地构造(例如,使用订阅节点期望的数据结构和数据类型来提供),图形200就能够处理该输入。可以利用图形200的这个特征来运行仿真。例如,开发人员可能想要测试对图形200的某些更改将对图形200的输出产生的影响。通过使用相同的输入运行仿真,开发人员能够观察到图形200的个别更改对图形200执行的处理及其输出的影响。
在一些实施例中,仿真的输入可以是来自传感器阵列121的串行化数据。例如,可以使用传感器阵列121来生成有关真实世界观察的传感器数据,例如在车辆120的使用期间发生的那些。可以将传感器数据串行成能够被持久性地存储的形式。然后,可以在一个或多个仿真期间将串行化数据输入到图形200中,以对问题进行故障排除、测试图形200的更改等。
图3示出了图2的计算图形200接受存储的输入数据而不是直接来自传感器阵列121的数据的框图。如图所示,可以将来自传感器阵列121的输出串行化或以其它方式处理成允许在数据存储304中持久性存储的格式。当要运行仿真时,可以从数据存储304加载串行化仿真数据302并由图形200处理该串行化仿真数据。还可以将来自图形200的输出数据串行化成能够持久性存储的形式。由此,可以分析来自多个不同仿真的输出数据,以确定对图形200进行某些更改对产自相同输入数据302的输出的影响,对输入数据302进行更改对产自相同图形200的输出的影响等。
图形200的分布式特性提供了稳健性(例如,单个节点可能发生故障并重新启动而不会导致整个图形200发生故障)和高效的处理(例如,两个或更多节点能够同时执行)。然而,图形200的分布式特性也导致非确定性***,即使在使用完全相同的输入数据302时,仍可能产生仿真间不同的输出和/或遵循仿真间的不同序列的操作。例如,如果单个节点在不同的仿真中在稍微不同的时间启动(例如,由于不同程度的***延迟所致),则节点也可能开始于不同的时间发布和订阅主题。这可能会导致节点在某些仿真过程中丢失消息,在仿真间以不同的序列接收到消息等。作为另一个示例,不同的硬件可能以不同的速度执行节点,这也可能导致先前论述的问题等。作为再一个示例,即使在相同硬件上由相同图形200处理相同输入数据302时,抖动和通信延迟也可能导致仿真间对时间戳记的输出数据使用不同的时间戳。这些问题中的每一个至少部分地源于图形200的非确定性特性。
为了解决上文论述的问题,其中,可以实现多种特征以帮助实现仿真的确定性执行。在一些实施例中,可以将图形200中单独的节点分拆成更小且更简单的节点的子图形,称为小节点。类似于节点,每个小节点可以是可独立于图形中的每个其它小节点而执行的对象。然而,与节点不同的是,小节点可能被限制到单个线程。通过将单独的小节点的操作限制到单个线程,还可以采用串行方式在一个线程上执行整个图形。此外,可以在计算设备的单个进程中执行整个图形。因此,能够避免多线程异步***中出现的非确定性问题,从而帮助实现确定性仿真。此外,因为这些单独的小节点可以彼此独立地执行,所以当需要此类执行时(例如,当在活动的车辆120中运行时)或当不需要确定性执行时,还可以采用多线程异步方式执行由这些小节点组成的图形。因此,如本文所述的由小节点组成的单个图形可以至少两种不同模式操作:第一操作模式或“生产模式”,此模式中小节点是可异步执行的,以及第二操作模式或“仿真模式”,此模式中根据仿真***管理的单个时间线,小节点在单个线程内串行执行。
图4示出实现来自图形200的单个节点的功能的小节点的示例子图形400。在所示示例中,子图形400将激光雷达感知节点220的功能实现为四个小节点的子图形:转换小节点402、物体检测小节点404、障碍物检测小节点406和后处理小节点408。多个单线程小节点的实现使子图形400本身能在单个进程内的单个线程上执行。因为单独的小节点可能都在同一个进程中执行,所以它们可以在没有跨进程通信的开销和延迟的情况下进行通信。因此,小节点之间的进程内通信可以进一步帮助实现确定性执行。
如图所示,扫描转换小节点402可以接收输入410。例如,输入410可以是由激光雷达传感器210生成的扫描数据。输入410可以从激光雷达传感器210发布并由扫描转换小节点402接收(例如,当小节点402在车辆120内执行时),或者可以从串行化传感器数据302获得输入410(例如,在仿真期间,在与车辆120分开的计算设备上执行小节点402时)。在任一情况中,扫描转换小节点402可以对输入数据410执行操作,例如将其转换成子图形400的其它小节点可使用的形式。扫描转换小节点402然后可以将其输出提供给子图形400的其它小节点。例如,扫描转换小节点402可以将其输出发送到一个或多个扫描信道420、422。
与运行在单独进程中的节点所使用的发布方法相比,经由子图形400的扫描信道420、422发送和接收数据可以更有效率,并且引入的通信延迟更少。例如,当小节点402、404、406和408都在计算设备的单个进程内执行时,它们可以采用比在单独进程中执行并需要跨进程通信的节点更直接的方式相互通信。图5A和5B示出了跨进程通信和进程内通信之间的一些差异。
图5A示出在具有不同进程中节点的计算图形200的执行期间计算设备的存储器500。存储器500的第一部分502被保留用于第一节点512在其中执行的进程。存储器500的第二部分504被保留用于第二节点514在其中执行的进程。存储器500的第三部分506被保留用于代理(例如,操作***和/或由操作***执行的部件)516在其中执行的进程。当第一节点512发布第二节点514订阅的有关特定主题的消息510时,跨进程通信过程发生以向订阅方提供该消息。如图所示,消息510首先在520处被串行化并复制到代理516在其中执行的存储器500的第三部分506。代理516确定第二节点514订阅消息510所属的主题。然后在522处将消息510复制到第二节点514在其中执行的存储器500的第二部分504。这种用于跨进程通信的过程可能将延迟引入到图形200的执行中。此外,在图形200的操作期间有数千或数百万(或更多)单独的消息被发布时,执行用于每个消息的跨进程通信可能会潜在地引入仿真间高差异的延迟量。
图5B示出如计算设备1000的计算设备的存储器550,其采用单个进程中不同小节点执行子图形400。存储器550的一部分560被保留用于整个子图形400在其中执行的进程,该进程包括第一小节点562和第二小节点564。用于在小节点562、564之间在一进程中传送消息的机构可以称为信道。图5B所示的进程空间560包括信道580。当第一小节点562生成第二小节点564要接收的消息570时,可以使用进程内通信经由信道580发送消息570。信道580可以被第二小节点564使用进程内通信直接访问。
信道可以提供特定类型数据(例如,满足特定结构要求的数据)的通信,并且不同的信道可以传输不同类型的数据。因此,信道可以用作异步进程内通信的类型化管道(typed pipelines)。可以将发送到特定信道的消息存储在队列中。当队列已满时,可以在新消息被发送到信道时将最旧的消息删除。在一些实施例中,在队列中有空位之前,可以不将新消息写入信道。由于消息在单个进程内进行传输,因此不需要单独的进程作为进程之间通信的管道。此外,信道所使用的进程内通信避免了进程外通信带来的额外开销(例如,串行化、编组、上下文切换等)。
回到图4,子图形400具有四个信道:第一和第二扫描信道420、422,用于从扫描转换小节点402向其它小节点发送预处理的扫描数据;物体信道424,用于将有关检测到的物体的数据从物体检测小节点404发送到后处理小节点408;以及障碍物信道426,用于将有关检测到的障碍物的数据从障碍物检测小节点406发送到后处理小节点408。
如上文论述,图形200的任何给定节点可以作为在需要时能够在单个线程内串行执行的小节点的子图形来实现。因此,图2和图3所示的图形200可以作为若干子图形的集合来实现,为了方便可以将这些子图形统称为图形200。使用能够在单个线程内串行执行的小节点来实现图形200,帮助实现图形200的确定性执行,这是运行仿真时所期望的。还可以实现附加特征来帮助实现仿真的确定性执行。例如,任务调度器可以将多个小节点的操作交错安排,使得这些单独的小节点在离散且串行出现的执行帧(也简称为“帧”)内执行,然后等待任务调度器节点指派下一个帧。此外,任务调度程序可以使用仿真***时钟来调度单独的帧,并确保在一个帧期间生成的任何时间戳记数据都将按仿真间相同的时间来时间戳记,而无论***中可能固有任何延迟或抖动。与存在节点、跨进程通信、实时连续超期的***时钟等的图形200的异步执行相反,特征的这种组合一起使得仿真能够以确定性方式来执行。
图6示出确定性仿真***600的说明性实施例,其中可以确定性方式执行计算图形来进行仿真。***600可以被配置为执行由车辆120执行的相同的基于车辆的处理***(或其部件)的实例。因此,测试基于车辆的处理***可以使用任意数量的仿真,通过对输入数据和/或子***进行任意数量的修改来进行,而不一定需要使用或访问车辆120和传感器阵列121来执行仿真。在一些实施例中,如图所示,***600包括具有仿真***时钟604的任务调度器或管理器602,以及由被配置为在单个线程中串行操作的多个小节点组成的计算图形606的实例。***600接受输入610,例如串行化传感器数据,并产生输出612。因为***600是确定性的,所以它可以用于运行仿真,其中对输入610、图形606和/或***600在其中执行的硬件的各个更改,可以结合该更改可能对生成的输出610产生的影响分析。
图7是用于仿真期间调度小节点处理的说明性程序700的流程图。任务调度器,例如图6所示的任务调度器602,可以执行程序700来管理图形606处理输入数据610的仿真。有利地,任务调度器602可以同步方式调度要由图606的小节点执行的操作,以在执行时间线的离散且串行发生的帧内发生。将进一步参考图8描述程序700,图8是示出在离散帧中串行调度和执行小节点操作的时间线的框图。
程序700开始于框702。程序700可以响应于事件而开始,例如仿真被调度开始时、任务调度器602启动时、输入数据610被获得时等。当程序700启动时,可以将存储在一个或多个非瞬态计算机可读介质(例如,硬盘驱动器、闪存、可移动介质等)上的可执行程序指令集加载到计算设备的存储器(例如,随机存取存储器,RAM),例如图10所示的计算设备1000的存储器中。这些可执行指令然后可由计算设备的基于硬件的计算机处理器(例如,中央处理单元,CPU)来执行。
在框704处,可以从输入数据610将输入加载到一个或多个信道。输入数据610可以包括先前由传感器阵列121的传感器生成的消息、为仿真传感器阵列121的输出而生成的消息、及其某种组合等。这些消息可以被时间戳记或顺序布置的,使得它们能够被图形606处理并以特定序列发布到信道。在一些实施例中,程序或小节点可以被实现为根据消息的时间戳将来自输入数据610的消息加载到多种信道中,以仿真传感器阵列121的操作。任务调度器602可以确定与加载到信道的消息相关联的时间戳,并将仿真时钟604设置为与该时间戳对应的时间。仿真时钟604然后可以保持为该时间直到任务调度器602将仿真时钟604设置为不同的值为止。
图8示出在时间T开始的时间线800。在时间T处,将消息802发送到特定信道。因此,时间T可以对应于消息802的时间戳。在所示示例中,消息802是LiDAR扫描消息,并且将其发送到用于对接收此类消息的小节点(例如,扫描转换小节点402)进行通信的信道中。
回到图7,在判定框706处,任务调度器602可以确定是否存在要处理最近生成的消息802的小节点。例如,任务调度器602可以确定一个或多个小节点是否经由消息802被发送到的信道之一接收消息。如果是如此,则程序700可以进行到框708。否则,程序700可以进行到框712。在本示例中,任务调度器602可以确定小节点402要接收和处理消息802。因此,程序700进行到框708。
在框708处,小节点可以响应于该消息而执行操作。在本示例中,可以执行小节点402。小节点402的执行可以响应于来自任务调度器602的回调,向小节点402通知消息802。任务调度器602可以将仿真时钟604增加到T+x,其中x是任务调度器602用来将串行发生的帧指派给单独的小节点的增量。在图8所示的本示例中,在从T+x开始的帧期间,除了小节点402之外没有小节点在执行。在一些实施例中,在所有要处理消息802的小节点都完成处理之后,或者某个其它事件发生之后,才将仿真时钟604推进。在这些情况下,即使仿真时钟604对于每一个帧可能都不提前,这些帧仍然可以被串行调度并且在任何给定帧期间仅一个小节点可以被执行。
在框710处,当前正在执行的小节点可以生成消息或其它方面的产出返回给任务调度器602,从而另一个小节点可以在串行时间线上执行操作。在图8所示的本示例中,小节点402可以生成消息804和806。说明性地,可以将消息804和806分别发送到子图形400的扫描信道420和422。过程700然后可以返回到判定框706以确定消息802是否已经被发送到任何其它信道。
在判定框712处,任务调度器602可以确定是否存在根据特定调度请求了回调的任何小节点。例如,一些小节点可以执行离散的工作单元,然后等待预定的或动态确定的时间段之后,才执行另一个离散的工作单元。当这些小节点要“醒来”并执行工作时,它们可以从任务调度器602请求回调。如果任务调度器602确定存在在仿真时钟的当前值或之前值处请求了回调的任何小节点,则程序700可以进行到框714。否则,程序700可以进行到判定框718。在图8所示的例子中,不同的小节点430可能在与仿真时钟604的当前值对应的时间(例如,由仿真时钟604表示的当前时间或之前的时间处)期间请求了回调。因此,程序700进行到框714。
在框714,小节点可以响应于来自任务调度器602的回调来执行操作。在本示例中,小节点430可以执行以处理先前接收或生成的消息,和/或执行一些其它操作。任务调度器602可以将仿真时钟604增加到T+2x。在本示例中,在时间T+2x开始的帧期间,仅小节点430可以正在运行。在一些实施例中,仿真时钟604直到被安排在时间T+x或之前处发生的所有回调已经完成处理之后,或者直到一些其它事件发生之后才被推进。
在框716处,当前正在执行的小节点可以生成消息或其它方面的产出返回给任务调度器,从而另一个小节点可以在串行时间线上执行操作。在本示例中,小节点430可以生成消息808。
在判定框718处,任务调度器602可以确定在程序700的当前迭代期间信道是否有未决消息要处理(例如,在框710和/或716处发送到信道的消息)。如果是如此,则程序700可以进行到框720以处理消息。
在框720处,任务调度器602可以对在程序700的当前迭代期间向其添加过消息的每个信道执行子程序——必要时包括框706到720。框720可以在必要时迭代地和/或递归地执行,直到在程序700的当前迭代期间生成的所有消息都已被处理或直到某个其它事件的发生为止。在本示例中,可以针对图8中所示及上文描述的消息804、806和808中的每一个执行框720。说明性地,子图形400的其它小节点可以处理消息804和806以生成激光雷达感知输出数据412,例如有关检测到的物体、行人、车辆等的数据。输出本身可以被发送到一个信道,在此处它被提供给其它小节点,并且可以根据需要对该信道执行框720。
在判定框722处,任务调度器602可以确定是否有任何附加的输入消息要加载。如果有,则程序700可以返回到框704。否则,程序700可以在框724处终止。
说明性程序700是在仿真期间由***600执行的处理的示例,并且无意作为详尽无遗的或限制。在一些实施例中,可以按不同的顺序执行、重复、替换或排除程序700的某些框。
图9是由小节点执行的说明性程序900的流程图。程序900可以被包含于存储在一个或多个非瞬态计算机可读介质(例如,硬盘驱动器、闪存、可移动介质等)上的可执行程序指令中。当程序900被执行时(或当图形606被执行时,或当***600开始仿真时,或响应于一些其它事件),这些可执行指令可被加载到的计算设备的存储器(例如,随机存取存储器,RAM),例如图10所示的计算设备1000的存储器中。这些可执行指令可由计算设备的基于硬件的计算机处理器来执行。
程序900开始于框902。程序900可以响应于事件而开始,例如当对小节点的回调被执行时。例如,程序900可以由在程序700的框708和/或714期间执行的小节点来执行。
在框904处,小节点可以读取消息以进行处理。消息可能已直接写入用于存储小节点的输入、输出和/或状态数据的存储器位置。该存储器位置可以在分配给图形606在其中执行的进程的存储器空间的一部分中。说明性地,该消息可能已经由图形606的另一个小节点生成,并且使用信道进行传输。在一些实施例中,读取操作可以是阻止操作。例如,只要正在写入消息时,以及只要小节点正在读取存储空间时,则可以锁定存储空间中用于来自信道的消息的部分。因此,如果数据正被写入该存储器部分,则小节点的执行可能会停止一段时间。
在框906处,小节点可以执行一个或多个操作。这些操作可能因不同的小节点而有所不同。例如,物件检测小节点404可以执行与障碍物检测小节点406不同的处理和检测功能,并且两个小节点可以执行与后处理小节点408不同的功能。在由确定性仿真***600执行的仿真期间,在一个小节点正在执行框906处的操作的时间期间,不允许任何其它小节点执行。然而,在生产使用期间(例如,当在车辆120中执行图形606以处理来自传感器阵列121的数据时),任何数量的其它小节点可以执行程序900或其多个部分,而另一个小节点正在执行框906。在一些实施例中,在框906的处理期间,可以允许小节点使用多个线程(例如,“派生”一个或多个线程)。然而,为了在仿真期间确保图形606的确定性特征,可能不允许小节点结束执行以及对下一个小节点产出,直到所有线程已完成,并且执行已完全返回到小节点执行所在的主线程为止。此要求可以帮助在前一个小节点的操作仍在执行时防止另一个小节点的执行开始,如果小节点可以派生线程且在派生的线程完成之前停止执行,则此情况将是可能的。
在框908处,小节点可以将消息写入信道或以其它方式生成输出。可以将消息写入用于存储不同小节点的输入、输出和/或状态数据的存储器位置。在一些实施例中,写操作可以是阻止操作。例如,只要正在写入消息时,以及只要其它小节点正在读取存储空间时,则可以锁定存储空间中用于发往信道的消息的部分。因此,如果数据正被写入该存储器部分或从该存储器部分读取,则小节点的执行可以被停止一段时间。
在判断框910处,小节点可以确定是否发生了错误,或者是否发生了一些其它停止事件。例如,可能发生了处理错误或数据访问错误,并且小节点可能无法在保持仿真的确定性方式的同时从错误中恢复。作为另一个例子,任务调度器602可以指示小节点停止执行。如果没有发生任何此类事件,则程序900可以返回到框904以从信道读取下一个消息(如果有的话)。否则,如果已经发生停止事件,则程序900可以在912处终止。
图10示出被配置为实现本公开的多个方面的说明性计算设备1000的部件。在一些实施例中,如图所示,计算设备1000可以包括:一个或多个计算机处理器1002,例如物理中央处理单元(“CPU”);一个或多个网络接口1004,例如网络接口卡(“NIC”);一个或多个计算机可读介质驱动器1006,例如高密度磁盘(“HDD”)、固态硬盘驱动器(“SDD”)、闪存驱动器和/或其它持久性非瞬态计算机可读介质;以及一个或多个计算机可读存储器1008,例如随机存取存储器(“RAM”)和/或其它易失性非瞬态计算机可读介质。计算机可读存储器1008可以包括计算机处理器1002为了实现一个或多个实施例而执行的计算机程序指令。例如,计算机可读存储器1008可以存储操作***1010,该操作***提供计算机程序指令以供计算机处理器1002在计算设备1000的通用管理和操作中使用。计算机可读存储器1008还可包括用于实现任务调度器602的任务调度器指令1112。计算机可读存储器1008还可包括用于实现仿真时钟604的仿真时钟指令1014。计算机可读存储器1008还可包括用于实现计算图形606的计算图形指令1116。在一些实施例中,配置管理***104还可以包括多种其它计算设备、数据存储等或与之通信。
就本文描述的附图而言,其它实施例也是可能的,使得上文引述的部件、步骤、框、操作和/或消息/请求/查询/指令得以按不同方式布置、排序、细分、组织和/或合并。在一些实施例中,不同的部件可以发起或执行给定的操作。
示例实施例
一些示例列举的实施例,在本部分中是以方法、***和非瞬态计算机可读介质且非限制的形式来引述的。
本公开的一个方面提供一种用于分布式处理的确定性仿真的***。该***包括计算机可读存储器和与该计算机可读存储器通信的一个或多个处理器。该一个或多个处理器被配置为至少执行如下操作:将包括多个可执行小节点的计算图形加载到分配给单个进程的计算机可读存储器的一部分中,其中这些多个可执行小节点被配置为以仿真执行,在该仿真模式中,这些多个可执行小节点串行执行以处理表示一个或多个传感器的输出的仿真数据,以及其中这些多个可执行小节点还被配置为以生产模式执行,在该生产模式中,这些多个可执行小节点中的两个或更多个小节点并行执行以处理从该一个或多个传感器接收的传感器数据;调度这些多个可执行小节点以该仿真模式的执行,其中这些多个可执行小节点被调度为串行执行;建立用于向该多个可执行小节点中第一小节点进程内通信的信道;以及使用该信道将进程内数据发送到第一小节点,其中该进程内数据是由第二小节点至少部分地基于该仿真数据生成的,并且其中该信道将该进程内数据从该计算机可读存储器中被分配给该进程的部分的第一位置复制到该计算机可读存储器中被分配给该进程的该部分的第二位置。
前一段的***可以包括以下特征的任何子组合:其中该计算图形包括车辆控制***的至少一部分;其中该一个或多个传感器包括以下传感器中的至少一个:激光雷达(LiDAR)传感器、雷达(RADAR)传感器、惯性传感器或相机;其中该一个或多个处理器还被配置为至少确定将使用该信道发送新的进程内通信,在生产模式期间确定与信道关联的队列已满,并且以新的进程内通信覆写队列中最旧的进程内通信;其中该一个或多个处理器还被配置为至少确定将使用该信道发送新的进程内通信,在该仿真模式期间确定与该信道关联的队列已满,并且延迟将新的进程内通信添加到该队列中,直到该队列中有用于该新的进程内通信的空间为止;其中这些多个可执行节点的每个节点被配置为使用该计算图形的多个信道中的至少一个信道接收进程内数据;以及其中该一个或多个处理器还被配置为至少从该仿真数据加载输入数据项,确定与该输入数据项相关联的第一时间戳,将仿真时钟设置为由第一时间戳表示的时间,以及至少部分地基于该时间调度第二小节点的执行,其中该仿真时钟在第二小节点的执行期间保持由第一时间戳表示的时间,以及其中第二小节点使用该仿真时钟来生成与由第二小节点生成的进程内通信相关联的第二时间戳。
本公开的另一个方面提供一种在计算***的控制下执行的计算机实现的方法,该计算***包括被配置为执行特定指令的计算机处理器。该计算机实现的方法包括:将多个子***加载到分配给单个进程的计算机可读存储器的一部分中,其中这些多个子***被配置为以第一操作模式操作,在第一操作模式中,这些多个子***仅串行执行以处理仿真传感器数据,以及以第二操作模式操作,在第二模式中,这些多个子***中的两个或更多个子***并行执行以处理传感器数据;调度这些多个子***以第一操作模式的执行;建立用于对这些多个子***中的第一子***进行通信的信道;以及使用该信道将进程内数据发送到第一子***,其中该进程内数据是由这些多个子***中的第二子***至少部分地基于仿真传感器数据生成的,以及其中该信道将该进程内数据从该计算机可读存储器分配给该进程的部分的第一位置复制到该计算机可读存储器中分配给该进程的该部分的第二位置。
前一段的计算机实现的方法可以包括以下特征的任何子组合:确定将使用该信道发送新的进程内通信,在第一操作模式期间确定与该信道相关联的队列已满,并且延迟将新的进程内通信添加到该队列中,直到该队列中有用于该新的进程内通信的空间为止;确定将使用该信道发送新的进程内通信,在第二操作模式期间确定与该信道相关联的队列已满,并且以该新的进程内通信覆写该队列中最旧的进程内通信;从仿真数据加载输入数据项,确定与该输入数据项相关联的第一时间戳,并将仿真时钟设置为由第一时间戳表示的时间;以及至少部分地基于该时间调度第二子***的执行,其中该仿真时钟在对第二子***的执行期间保持由第一时间戳表示的该时间,以及其中第二子***使用该仿真时钟来生成与第二子***生成的该进程内数据相关联的第二时间戳。
本公开的再一个方面提供一种***,其包括计算机可读存储器和与该计算机可读存储器通信的一个或多个处理器。该一个或多个处理器被配置为至少:将多个子***加载到被分配给单个进程的计算机可读存储器中的部分中,其中该多个子***被配置为以第一操作模式操作,在第一操作模式中,该多个子***仅串行执行以处理仿真传感器数据,并且以第二操作模式操作,在第二操作模式中,该多个子***中的两个或更多个子***并行执行以处理传感器数据;调度对该多个子***以第一操作模式的执行;建立用于对该多个子***中第一子***进行通信的信道;以及使用该信道将进程内数据发送到第一子***,其中该进程内数据是由这些多个子***中的第二子***至少部分地基于仿真传感器数据生成的,以及其中该信道将该进程内数据从该计算机可读存储器分配给该进程的部分的第一位置复制到该计算机可读存储器中分配给该进程的该部分的第二位置。
前段的***可以包括以下特征的任何子组合:其中该多个子***包括车辆控制***的至少一部分;其中该传感器数据是由如下的至少其中之一生成的:激光雷达(LiDAR)传感器、雷达(RADAR)传感器、惯性传感器或相机;其中该多个子***中每个子***被配置为使用多个信道中的至少一个信道来接收进程内数据;其中该一个或多个处理器还被配置为至少确定将使用该信道发送新的进程内通信,在第一操作模式期间确定与该信道相关联的队列已满,并且延迟将新的进程内通信添加到该队列中,直到该队列中有用于该新的进程内通信的空间为止;其中该一个或多个处理器还被配置为至少确定将使用该信道发送新的进程内通信,在第二操作模式期间确定与信道相关联的队列已满,并且以该新的进程内通信覆写该队列中最旧的进程内通信;其中该一个或多个处理器还被配置为至少从该仿真数据加载输入数据项,确定与该输入数据项相关联的第一时间戳,将仿真时钟设置为由第一时间戳表示的时间;其中该一个或多个处理器还被配置为至少部分地基于该时间至少调度对第二子***的执行,其中该仿真时钟在第二子***的执行期间保持由第一时间戳表示的时间,并且其中第二子***使用该仿真时钟生成与由第二子***生成的该进程内数据相关联的第二时间戳。
本公开的又一个方面提供一种***,该***包括第一计算设备,第一计算设备包括基于车辆的处理***的第一实例。第一计算设备被配置为至少:从耦合到第一计算设备的一个或多个传感器接收传感器数据;识别该基于车辆的处理***的第一实例的多个子***中的至少第一子***和第二子***,其将至少部分地基于接收传感器数据而被执行;以及同时执行第一子***和第二子***,其中第一子***至少部分地基于传感器数据生成第一输出,以及其中第二子***至少部分地基于传感器数据生成第二输出。该***还包括第二计算设备,第二计算设备包括基于车辆的处理***的第二实例。第二计算设备被配置为至少:接收表示由一个或多个传感器生成的数据的仿真传感器数据;识别该基于车辆的处理***的第二实例的多个子***中的至少第三子***和第四子***,其将至少部分地基于接收仿真传感器数据而被执行;并且调度第三子***和第四子***的执行,其中第三子***需要在第四子***的执行被启动之前完成执行,其中第三子***至少部分地基于仿真传感器数据生成第三输出,以及其中第四子***至少部分地基于仿真传感器数据生成第四输出。
前段的***可以包括以下特征的任何子组合:其中第一计算设备包括车辆的车载计算设备,以及其中第二计算设备包括与车辆分离的用户设备;其中该用户设备被配置为执行基于车辆的处理***的第二实例作为在车辆的该车载计算设备上执行的基于车辆的处理***的第一实例的确定性仿真;其中第一实例的第一子***对应于第二实例的第三子***,以及其中第一实例的第二子***对应于第二实例的第四子***;其中该仿真传感器数据包括传感器数据的副本。
本公开的另一个方面提供一种计算机实现的方法,该方法在被配置为执行特定指令的计算***的控制下被执行。该计算机实现的方法包括接收仿真基于车辆的传感器的输出的输入数据;确定基于车辆的处理***的第一小节点将使用这些输入数据来执行第一操作,该基于车辆的处理***包括多个可执行小节点;确定该基于车辆的处理***的第二小节点将使用该输入数据执行第二操作,其中第二小节点被配置为独立于第一小节点操作;调度第一小节点在第一时间段期间执行第一操作,其中在第一时间段期间不允许这多个可执行小节点中的其它小节点执行;调度第二小节点在第一时间段之后的第二时间段期间执行第二操作,其中在第二时间段期间不允许这多个可执行小节点中的任何其它小节点执行;执行第一小节点以在第一时间段期间执行第一操作,其中第一操作生成将由这多个可执行小节点中的第三小节点处理的输出数据;调度第三小节点在第二时间段之后的第三时间段期间执行第三操作;执行第二小节点以在第二时间段期间执行第二操作;以及执行第三小节点以在第三时间段期间执行第三操作。
前一段的计算机实现的方法可以包括以下特征的任何子组合:基于输入数据设置仿真时钟的时间,其中该仿真时钟在第一小节点的执行期间保持静态,并且至少部分地基于第一小节点的执行完成而推进该仿真时钟的时间,其中该仿真时钟在第二小节点执行期间保持静态;基于该输入数据设置仿真时钟的时间,其中该仿真时钟在第一小节点和第二小节点的执行期间均保持静态;其中第一小节点、第二小节点和第三小节点在单个线程上被执行;其中执行第一小节点包括使用第二线程来执行由第一小节点发起的功能,其中第一小节点的执行不允许结束,直到该功能在第二线程上完成执行为止;将输出数据从与第一小节点关联的第一存储器位置复制到与第三小节点相关联的第二存储器位置,其中第一存储器位置和第二存储器位置均位于分配给该计算***的单个进程的存储器部分中;以及其中接收仿真基于车辆的传感器输出的输入数据包括接收表示先前由以下之一生成的消息的数据:激光雷达(LiDAR)传感器、雷达(RADAR)传感器、惯性传感器或照相机。
本公开的另一个方面提供一种***,包括计算机可读存储器和与计算机可读存储器通信的一个或多个处理器。该一个或多个处理器被配置为至少:接收仿真基于车辆的传感器输出的输入数据;确定基于车辆的处理***的第一子***将使用该输入数据来执行第一操作,该基于车辆的处理***包括多个子***;确定该基于车辆的处理***的第二子***将使用该输入数据执行第二操作,其中第二子***被配置为独立于第一子***操作;调度第一子***在第一时间段期间执行第一操作,其中在第一时间段期间不允许这多个子***中的任何其它子***执行;调度第二子***在第一时间段之后的第二时间段期间执行第二操作,其中在第二时间段期间不允许这多个子***中的任何其它子***执行;在第一时间段期间执行第一子***;以及在第二时间段期间执行第二子***。
前段的***可以包括以下特征的任何子组合:其中一个或多个处理器还被配置为至少调度多个子***中的第三子***,以在第二时间段之后的第三时间段期间执行第三操作,其中第一操作生成将由第三子***处理的输出数据,并且在第三时间段内执行第三子***;其中该一个或多个处理器还被配置为至少将输出数据从与第一子***相关联的第一存储器位置复制到与第三子***关联的第二存储器位置,其中第一存储器位置和第二存储器位置均位于分配给单个进程的存储器部分中;其中该输入数据仿真以下之一的输出:激光雷达(LiDAR)传感器、雷达(RADAR)传感器、惯性传感器或相机;其中一个或多个处理器还被配置为至少基于该输入数据设置仿真时钟的时间,其中该仿真时钟在第一子***的执行期间保持静态,并且至少部分地基于第一子***的执行完成而推进该仿真时钟的时间,其中该仿真时钟在第二子***的执行期间保持静止;其中一个或多个处理器还被配置为至少基于该输入数据设置仿真时钟的时间,其中该仿真时钟在第一子***和第二子***的执行期间均保持静态;其中第一子***和第二子***在单个线程上执行;以及其中执行第一子***包括使用第二线程来执行由第一子***发起的功能,其中第一子***的执行不允许结束,直到该功能在第二线程上完成执行为止。
本公开的又一个方面提供一种***,该***包括第一计算设备,第一计算设备被配置为至少:执行基于车辆的处理***的第一实例,该基于车辆的处理***包括多个子***;从耦合到第一计算设备的一个或多个传感器接收传感器数据;至少识别多个子***中的第一子集,其中第一子集将该处理传感器数据;并且执行第一子集以处理传感器数据,其中第一计算设备的***时钟在第一子集的执行期间推进,以及其中在第一子集执行期间至少部分地基于***时钟的值生成第一时间戳。该***还包括第二计算设备,第二计算设备被配置为至少:执行基于车辆的处理***的第二实例;接收表示由一个或多个传感器生成的数据的仿真传感器数据;至少识别这多个子***中的第二子集,其中第二子集将处理仿真传感器数据;将仿真时钟设置为仿真时间;并且执行第二子集以处理仿真传感器数据,其中该仿真传感器数据在第二子集的执行期间保持静态,以及其中在第二子集执行期间至少部分地基于该仿真时钟生成第二时间戳。
前段的***可以包括以下特征的任何子组合:其中第一计算设备包括车辆的车载计算设备,以及其中第二计算设备包括与车辆分离的用户设备;其中该传感器数据是由以下至少其中之一生成的:激光雷达(LiDAR)传感器、雷达(RADAR)传感器、惯性传感器或相机;其中该基于车辆的处理***包括可执行小节点的计算图形,其中单独的可执行小节点包括可执行指令,其中该计算图形被配置为以仿真模式执行,在该仿真模式中,这些可执行小节点串行执行以处理仿真传感器数据,以及其中该计算图形还被配置为以生产模式执行,在该生产模式中,这些可执行小节点中的两个或更多个小节点并发执行以处理从一个或多个传感器接收的传感器数据;其中第二计算设备还被配置为至少在第二子集的执行期间,确定将执行对多个子***中的一个子***的回调,并将对该子***的回调的执行延迟到仿真时钟所表示的仿真时间被改变为止,其中对该子***的回调的执行发生在第二子集的执行完成之后;以及其中第一计算设备还被配置为至少在第一线程上执行第一子集期间,确定将执行对多个子***中的一个子***的回调,并且在第二线程上执行对该子***的回调,其中在第二线程上执行对该子***的回调期间,第一子集的执行在第一线程上继续。
本公开的另一个方面提供一种在计算***的控制下执行的计算机实现的方法,该计算***包括被配置为执行特定指令的计算机处理器。该计算机实现的方法包括:从包括仿真传感器数据的输入数据集合加载输入数据项;确定与该输入数据项相关联的第一时间戳所表示的时间;将仿真时钟设置为由第一时间戳表示的时间;确定多个子***中的一个子***将处理该输入数据项;以及执行该子***,其中在该子***的执行期间经过一段时间,其中该仿真时钟在该子***的执行期间保持静态,以及其中该子***使用仿真时钟来生成与输出消息相关联的第二时间戳。
前一段的计算机实现的方法可以包括以下特征的任何子组合:执行这多个子***的第二子***以处理该输出消息,其中该仿真时钟在第二子***的执行期间保持静态,以及其中第二子***使用仿真时钟来生成与第二输出消息相关联的第三时间戳;在该子***的执行与第二子***的执行之间将该仿真时钟增加预定量;在该子***执行期间,确定将执行对多个子***中的第二子***的回调,并延迟对第二子***的回调的执行,直到该仿真时钟所表示的时间被改变为止,其中执行对第二子***的回调发生在该子***的执行完成之后;将该仿真时钟推进到第二时间,至少部分地基于第二时间确定将执行对多个子***中的第二子***的回调,并且执行对第二子***的回调;确定将执行多个子***中的第二子***以处理输入数据项,并且在该子***的执行完成之后执行第二子***,其中该仿真时钟在该子***和第二子***的执行期间保持静态。
本公开的另一个方面提供一种***,其包括计算机可读存储器和与该计算机可读存储器通信的一个或多个处理器。该一个或多个处理器被配置为至少:从包括仿真传感器数据的输入数据集合加载输入数据项;确定与该输入数据项相关联的第一时间戳所表示的时间;将仿真时钟设置为由第一时间戳表示的时间;确定多个子***的一个子***将处理该输入数据项;并且执行该子***,其中在该子***执行期间经过一段时间,其中该仿真时钟在该子***执行期间保持静态,以及其中该子***使用该仿真时钟来生成与输出消息相关联的第二时间戳。
前段的***可以包括以下特征的任何子组合:其中该一个或多个处理器还被配置为至少执行多个子***中的第二子***以处理输出消息,其中该仿真时钟在第二子***的执行期间保持静态,以及其中第二子***使用该仿真时钟来产生与第二输出消息相关联的第三个时间戳;其中该一个或多个处理器还被配置为在该子***的执行与第二子***的执行之间将该仿真时钟增加预定量;其中该仿真时钟在该子***和第二子***的整个执行过程中保持静态;其中该一个或多个处理器还被配置为从输入数据集合加载第二输入数据项,确定由与第二输入数据项相关联的第三时间戳所表示的时间,将该仿真时钟设置为由第三时间戳表示的时间,确定多个子***中的第三子***将处理第二输入数据项,并执行第三子***,其中在第三子***执行期间经过第二时间段,以及其中该仿真时钟在第三子***的执行期间保持静态;其中该一个或多个处理器还被配置为至少在该子***执行期间确定将执行对多个子***中的第二子***的回调,并将对第二子***的回调的执行延迟,直到由该仿真时钟所表示的时间被改变为止,其中对第二子***的回调的执行发生在该子***的执行完成之后;其中该一个或多个处理器还被配置为至少将该仿真时钟推进到第二时间,至少部分地基于第二时间确定将执行对多个子***中的第二子***的回调,并且执行对第二子***的回调;以及其中该一个或多个处理器还被配置为至少:确定将执行多个子***中的第二子***以处理输入数据项,并且在该子***的执行完成之后执行第二子***,其中该仿真时钟在该子***和第二子***的执行期间保持静态。
在其它实施例中,一个或多个***可以根据前述段落中引述的方法和/或计算机可读介质中的一个或多个来操作。在又一些实施例中,一种或多种方法可以根据前述段落中引述的***和/或计算机可读介质中的一个或多个来操作。在更一些实施例中,一种计算机可读媒体或介质,不包括瞬态传播信号,可以使具有一个或多个处理器和非瞬态计算机可读存储器的一个或多个计算设备,根据前述段落中引述的***和/或方法的一个或多个操作。
术语
条件语言,例如“能够”、“可能”、“可以”或“可”,除非另有特别说明,或在所使用的上下文中以其它方式理解,否则通常旨在传达某些实施例包括,而其它实施例不包括某些特征、元素和/或步骤。因此,此类条件语言通常无意暗示特征、元素和/或步骤对于一个或多个实施例以任何方式是必需的,或者一个或多个实施例必需地包括用于在有或没有用户输入或提示的情况下决定是否将这些特征、元素和/或步骤包括或执行于任何特定实施例中的逻辑。
除非上下文另有明确要求,否则在说明书和权利要求书中,词语“包括”、“包含”等应被解释为包含性意义,而不是唯一或详尽意义,即“包括但不限于”。如本文所用,术语“连接”、“耦合”或其任何变体是指两个或更多个元素之间的任何直接或间接的连接或耦合;元素之间的耦合或连接可以是物理的、逻辑的或其组合。此外,在本申请中使用的词语“此处”、“以上”、“以下”和类似含义的词语,是指本申请的整体而不是本申请的任何特定部分。在上下文允许的情况下,使用单数或复数的词汇也可以分别包括复数或单数。结合两个或更多个项的列表时,词汇“或”涵盖该词汇的以下所有解释:列表中的任何一个项、列表中的所有项目以及列表中项的任意组合。同样,结合两个或更多个项的列表时,术语“和/或”,涵盖该词的所有以下解释:列表中的任何一个项、列表中的所有项以及列表中项的任何组合。
在一些实施例中,本文中描述的任何算法的某些操作、动作、事件或功能可以以不同的顺序执行,可以添加、合并或完全排除(例如,对于实施算法,并非全部都是必不可少的)。在某些实施例中,操作、动作、功能或事件可以例如通过多线程处理、中断处理、或多个处理器或处理器核或在其它并行架构上同时执行,而不是顺序执行。
本文描述的***和模块可以包括软件、固件、硬件或适合于所描述的目的的软件、固件或硬件的任何组合。软件和其它模块可以驻留在服务器、工作站、个人计算机、计算机化平板电脑、PDA和其它适于本文描述的目的的计算设备上并在其上执行。软件和其它模块可以通过本地计算机存储器、网络、浏览器或适于本文描述的目的的其它方式来访问。本文描述的数据结构可以包括适于本文描述的目的的计算机文件、变量、编程阵列、编程结构或任何电子信息存储方案或方法或者它们的任何组合。本文描述的用户接口元素可以包括来自图形用户界面、交互式语音响应、命令行界面和其它合适接口的元素。
再者,所示***的各种部件的处理可以分布在多个机器、网络和其它计算资源上。可以将一个***的两个或更多个部件组合成更少的部件。所示***的各种部件可以在一个或多个虚拟机中而不是在专用计算机硬件***和/或计算设备中实现。同样,所示的数据存储库可以表示物理和/或逻辑数据存储,包括例如,存储区域网络或其它分布式存储***。此外,在一些实施例中,所示部件之间的连接表示数据流的可能路径,而不是硬件之间的实际连接。虽然示出了可能连接的一些示例,但是在多种实现中,所示部件的任何子集都能够彼此通信。
上面还结合用于方法、装置(***)和计算机程序产品的流程示意图和/或框图描述了实施例。流程示意图和/或框图的每个框和流程示意图和/或框图中的框的组合可以通过计算机程序指令来实现。可以将此类指令提供给通用计算机、专用计算机、特殊配置计算机(例如,包括高性能数据库服务器、图形子***等)的处理器或其它可编程数据处理装置来生产机器,使得通过计算机的处理器或其它可编程数据处理装置执行的指令,构成用于实现在流程图和/或框图的一个或多个框中指定的动作的装置。这些计算机程序指令也可以存储在非瞬态计算机可读存储器中,这些计算机程序指令可以指导计算机或其它可编程数据处理装置以特定方式操作,使得存储在计算机可读存储器中的指令构成包括实现流程图和/或框图的一个或多个框中指定的动作的指令装置的制造品。这些计算机程序指令也可以加载到计算设备或其它可编程数据处理装置上,以在该计算设备或其它可编程装置上执行操作以产生计算机实现的处理,使得在该计算设备或其它可编程装置上执行的指令提供用于实现流程图和/或框图一个或多个框指定的动作的步骤。
上面提到的任何专利和应用和其它引用,包括可以在附属提交文件中列出的任何内容,可以通过引用并入本文。如有需要,可以修改一个或多个实施例的多个方面,以采用上述多种引用的***、功能和概念。根据上文的详细描述,可以进行这些和其它更改。虽然上文描述了某些示例,并且描述了可设想的最佳方式,但是无论文本中呈现如何详尽,均可以在许多方面实施不同的实施例。***的细节可能在其具体实现中有显著改变。如上所述,不应将描述某些特征时使用的特定术语解释为暗示在本文中将该术语重新定义为被限制于与该术语关联的任何特定特性、特征。一般而言,在以下权利要求中使用的术语不应解释为限制本说明书中公开的具体示例的范围,除非上述具体实施方式部分中显性地定义此类术语。因此,实际范围不仅包括所公开的示例,而且包括实施或实现权利要求的所有等效方式。
为了减少权利要求的数量,本公开的某些方面在下文的某些权利要求中予以提出,但是申请人可以在任何数量的权利要求形式中设想本公开的其它方面。例如,虽然本公开的仅一个方面被引述为依据35U.S.Csec.112(f)(AIA)的手段加功能的权利要求,但是其它方面同样可以实施为手段加功能的权利要求,或者以其它形式实施,例如在计算机可读介质中实施。旨在依据35U.S.C.§112(f)处理的任何权利要求将以“用于”语句开始,但是在任何其它上下文中使用“用于”不意味着依据35U.S.C.§112(f)引用其处理。因此,申请人保留在提交本申请后在本申请或后续申请中追加附加权利要求的权利。

Claims (20)

1.一种用于分布式处理的确定性仿真的***,所述***包括:
计算机可读存储器;以及
一个或多个处理器,所述一个或多个处理器与所述计算机可读存储器通信且被配置为至少:
将包含多个可执行小节点的计算图形加载到所述计算机可读存储器中分配给单个进程的部分中,
其中,所述多个可执行小节点被配置为以仿真模式执行,在所述仿真模式中,所述多个可执行小节点串行执行以处理仿真数据,所述仿真数据表示一个或多个传感器的输出;以及
其中,所述多个可执行小节点进一步被配置为以生产模式执行,在所述生产模式中,所述多个可执行小节点中的两个或更多个小节点同时执行以处理从所述一个或多个传感器接收的传感器数据;
在所述仿真模式中调度所述多个可执行小节点的执行,其中,所述多个可执行小节点被调度为串行执行;
建立用于与所述多个可执行小节点中第一小节点进行进程内通信的信道;以及
使用所述信道将进程内数据发送到所述第一小节点,其中,所述进程内数据是由第二小节点至少部分地基于所述仿真数据生成的,并且其中,所述信道将所述进程内数据从所述计算机可读存储器中被分配给所述进程的部分的第一位置,复制到所述计算机可读存储器中被分配给所述进程的所述部分的第二位置。
2.根据权利要求1所述的***,其中,所述计算图形包括车辆控制***的至少一部分。
3.根据权利要求1所述的***,其中,所述一个或多个传感器是由激光雷达传感器(LiDAR sensor)、雷达传感器(RADAR sensor)、惯性传感器或相机至少其中之一生成的。
4.根据权利要求1所述的***,其中,所述一个或多个处理器还被配置为至少:
确定将使用所述信道发送新的进程内通信;
在所述生产模式期间,确定与所述信道相关联的队列已满;以及
以所述新的进程内通信覆写所述队列中最旧的进程内通信。
5.根据权利要求1所述的***,其中,所述一个或多个处理器还被配置为至少:
确定将使用所述信道发送新的进程内通信;
在所述仿真模式期间,确定与所述信道相关联的队列已满;以及
延迟将所述新的进程内通信添加到所述队列,直到所述队列中有用于所述新的进程内通信的空间。
6.根据权利要求1所述的***,其中,所述多个可执行小节点中的每个小节点被配置为使用所述计算图形的多个信道中的至少一个信道来接收进程内数据。
7.根据权利要求1所述的***,其中所述一个或多个处理器还被配置为至少:
从所述仿真数据加载输入数据项;
确定与所述输入数据项相关联的第一时间戳;
将仿真时钟设置为所述第一个时间戳所表示的时间;以及
至少部分地基于所述时间来调度所述第二小节点的执行,其中,所述仿真时钟在所述第二小节点的执行期间,保持所述第一时间戳所表示的所述时间,以及其中,所述第二小节点使用所述仿真时钟来生成与所述第二个小节点生成的所述进程内通信相关联的第二时间戳。
8.一种计算机实现的方法,包括:
在包括被配置为执行特定指令的计算机处理器的计算***的控制下,
将多个子***加载到计算机可读存储器中分配给单个进程的部分中,其中,所述多个子***被配置为以第一操作模式操作,在所述第一操作模式中,所述多个子***仅串行执行以处理仿真传感器数据,并且,所述多个子***被配置为以第二操作模式操作,在所述第二操作模式中,所述多个子***中的两个或更多个子***同时执行以处理传感器数据;
以第一操作模式调度所述多个子***的执行;
建立用于与所述多个子***中第一子***进行通信的信道;以及
使用所述信道将进程内数据发送到所述第一子***,其中,所述进程内数据是由所述多个子***中的第二子***至少部分地基于所述仿真传感器数据生成的,以及其中,所述信道将所述进程内数据从所述计算机可读存储器中分配给所述进程的部分的第一位置,复制到所述计算机可读存储器中分配给所述进程的所述部分的第二位置。
9.根据权利要求8所述的计算机实现的方法,还包括:
确定将使用所述信道发送新的进程内通信;
在所述第一操作模式期间,确定与所述信道相关联的队列已满;以及
延迟将所述新的进程内通信添加到所述队列,直到所述队列中有用于所述新的进程内通信的空间。
10.根据权利要求8所述的计算机实现的方法,还包括:
确定将使用所述信道发送新的进程内通信;
在所述第二操作模式期间,确定与所述信道相关联的队列已满;以及
以所述新的进程内通信覆写所述队列中最旧的进程内通信。
11.根据权利要求8所述的计算机实现的方法,还包括:
从所述仿真的数据加载输入数据项;
确定与所述输入数据项相关联的第一时间戳;以及
将仿真时钟设置为所述第一个时间戳所表示的时间。
12.根据权利要求11所述的计算机实现的方法,还包括至少部分地基于所述时间来调度所述第二子***的执行,其中,所述仿真时钟在所述第二子***的执行期间,保持所述第一时间戳所表示的所述时间,以及其中,所述第二子***使用所述仿真时钟来生成与所述第二子***生成的所述进程内数据相关联的第二时间戳。
13.一种***,包括:
计算机可读存储器;以及
一个或多个处理器,所述一个或多个处理器与所述计算机可读存储器通信且被配置为至少:
将多个子***加载到计算机可读存储器中分配给单个进程的部分中,其中,所述多个子***被配置为以第一操作模式操作,在所述第一操作模式中,所述多个子***仅串行执行以处理仿真传感器数据,并且,所述多个子***被配置为以第二操作模式操作,在所述第二操作模式中,所述多个子***中的两个或更多个子***同时执行以处理传感器数据;
以第一操作模式调度所述多个子***的执行;
建立用于与所述多个子***中的第一子***进行通信的信道;以及
使用所述信道将进程内数据发送到所述第一子***,其中,所述进程内数据由所述多个子***中的第二子***是至少部分地基于所述仿真传感器数据生成的,以及其中,所述信道将所述进程内数据从所述计算机可读存储器中分配给所述进程的部分的第一位置,复制到所述计算机可读存储器中分配给所述进程的所述部分的第二位置。
14.根据权利要求13所述的***,其中,所述多个子***包括车辆控制***的至少一部分。
15.根据权利要求13所述的***,其中,所述传感器数据是由激光雷达传感器(LiDARsensor)、雷达传感器(RADAR sensor)、惯性传感器或相机至少其中之一生成的。
16.根据权利要求13所述的***,其中,所述多个子***中的每个子***被配置为使用多个信道中的至少一个信道来接收进程内数据。
17.根据权利要求13所述的***,其中,所述一个或多个处理器还被配置为至少:
确定将使用所述信道发送新的进程内通信;
在所述第一操作模式期间,确定与所述信道相关联的队列已满;以及
延迟将所述新的进程内通信添加到所述队列,直到所述队列中有所述新的进程内通信的空间。
18.根据权利要求13所述的***,其中,所述一个或多个处理器还被配置为至少:
确定将使用所述信道发送新的进程内通信;
在所述第二操作模式期间,确定与所述信道相关联的队列已满;以及
以所述新的进程内通信覆写所述队列中最旧的进程内通信。
19.根据权利要求13所述的***,其中,所述一个或多个处理器还被配置为至少:
从所述仿真的数据加载输入数据项;
确定与所述输入数据项相关联的第一时间戳;以及
将仿真时钟设置为所述第一个时间戳所表示的时间。
20.根据权利要求11所述的***,其中,所述一个或多个处理器还被配置为至少部分地基于所述时间来至少调度所述第二子***的执行,其中,所述仿真时钟在所述第二子***的执行期间,保持所述第一时间戳所表示的时间,以及其中,所述第二子***使用所述仿真时钟来生成与所述第二子***生成的所述进程内数据相关联的第二时间戳。
CN201980091292.5A 2018-12-28 2019-12-26 用于分布式***仿真的架构 Pending CN113728310A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862786278P 2018-12-28 2018-12-28
US62/786,278 2018-12-28
PCT/US2019/068596 WO2020139959A1 (en) 2018-12-28 2019-12-26 Architecture for simulation of distributed systems

Publications (1)

Publication Number Publication Date
CN113728310A true CN113728310A (zh) 2021-11-30

Family

ID=71124234

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980091292.5A Pending CN113728310A (zh) 2018-12-28 2019-12-26 用于分布式***仿真的架构

Country Status (3)

Country Link
US (1) US11397610B2 (zh)
CN (1) CN113728310A (zh)
WO (1) WO2020139959A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115933972A (zh) * 2022-11-24 2023-04-07 中国华能集团清洁能源技术研究院有限公司 多专业仿真平台的分布式数据存储方法及***

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11809790B2 (en) 2020-09-22 2023-11-07 Beijing Voyager Technology Co., Ltd. Architecture for distributed system simulation timing alignment
US11409927B2 (en) * 2020-09-22 2022-08-09 Beijing Voyager Technology Co., Ltd. Architecture for configurable distributed system simulation timing

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370661A (en) * 2000-12-29 2002-07-03 Mitel Semiconductor Ltd Data queues
US20090089030A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Distributed simulation and synchronization
US20110161966A1 (en) * 2009-12-25 2011-06-30 Fujitsu Limited Controlling parallel execution of plural simulation programs
US20120084062A1 (en) * 2010-10-01 2012-04-05 Rockwell Automation Technologies, Inc. Dynamically selecting master clock to manage non-linear simulation clocks
CN102789403A (zh) * 2012-07-11 2012-11-21 忆正科技(武汉)有限公司 一种闪存控制器及其控制方法
CN106508011B (zh) * 2010-12-28 2014-08-06 成都飞机工业(集团)有限责任公司 分布式传感器仿真***
CN104866374A (zh) * 2015-05-22 2015-08-26 北京华如科技股份有限公司 基于多任务的离散事件并行仿真及时间同步方法
CN108304782A (zh) * 2017-01-13 2018-07-20 福特全球技术公司 生成用于训练和验证检测模型的模拟传感器数据

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3462064B2 (ja) 1998-01-23 2003-11-05 三菱電機株式会社 分散シミュレーションシステム
JP2000067030A (ja) 1998-08-25 2000-03-03 Mitsubishi Electric Corp 分散シミュレーション装置
US6609051B2 (en) 2001-09-10 2003-08-19 Daimlerchrysler Ag Method and system for condition monitoring of vehicles
IL173711A (en) * 2006-02-13 2010-11-30 Rafael Advanced Defense Sys Real time simulating method and system
US8738350B2 (en) * 2010-03-04 2014-05-27 Synopsys, Inc. Mixed concurrent and serial logic simulation of hardware designs
WO2012083188A1 (en) * 2010-12-16 2012-06-21 Et International, Inc. Distributed computing architecture
CN102929158B (zh) * 2012-10-30 2015-01-07 北京华力创通科技股份有限公司 一种多核多模型并行分布式实时仿真***
US9329970B2 (en) * 2013-03-15 2016-05-03 International Business Machines Corporation Selecting an operator graph configuration for a stream-based computing application
CN109035121B (zh) 2018-07-20 2021-08-06 重庆长安汽车股份有限公司 单传感器数据关联前处理方法
US11341295B2 (en) * 2018-09-27 2022-05-24 Intel Corporation Methods, systems, and devices for efficient computation of simulation runs
WO2020139967A1 (en) * 2018-12-28 2020-07-02 Didi Research America, Llc Distributed system execution using a serial timeline
US11550623B2 (en) * 2018-12-28 2023-01-10 Beijing Voyager Technology Co., Ltd. Distributed system task management using a simulated clock

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2370661A (en) * 2000-12-29 2002-07-03 Mitel Semiconductor Ltd Data queues
US20090089030A1 (en) * 2007-09-28 2009-04-02 Rockwell Automation Technologies, Inc. Distributed simulation and synchronization
US20110161966A1 (en) * 2009-12-25 2011-06-30 Fujitsu Limited Controlling parallel execution of plural simulation programs
US20120084062A1 (en) * 2010-10-01 2012-04-05 Rockwell Automation Technologies, Inc. Dynamically selecting master clock to manage non-linear simulation clocks
CN106508011B (zh) * 2010-12-28 2014-08-06 成都飞机工业(集团)有限责任公司 分布式传感器仿真***
CN102789403A (zh) * 2012-07-11 2012-11-21 忆正科技(武汉)有限公司 一种闪存控制器及其控制方法
CN104866374A (zh) * 2015-05-22 2015-08-26 北京华如科技股份有限公司 基于多任务的离散事件并行仿真及时间同步方法
CN108304782A (zh) * 2017-01-13 2018-07-20 福特全球技术公司 生成用于训练和验证检测模型的模拟传感器数据

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115933972A (zh) * 2022-11-24 2023-04-07 中国华能集团清洁能源技术研究院有限公司 多专业仿真平台的分布式数据存储方法及***
CN115933972B (zh) * 2022-11-24 2024-05-31 中国华能集团清洁能源技术研究院有限公司 多专业仿真平台的分布式数据存储方法及***

Also Published As

Publication number Publication date
US20200210225A1 (en) 2020-07-02
WO2020139959A1 (en) 2020-07-02
US11397610B2 (en) 2022-07-26

Similar Documents

Publication Publication Date Title
US11550623B2 (en) Distributed system task management using a simulated clock
US11287270B2 (en) Systems and methods for safe route planning for a vehicle
US11131554B2 (en) Systems and methods for vehicle telemetry
US11480964B2 (en) Distributed system execution using a serial timeline
US11080216B2 (en) Writing messages in a shared memory architecture for a vehicle
CN113874803A (zh) 用于基于远程干预更新车辆操作的***和方法
US11616737B2 (en) Reading messages in a shared memory architecture for a vehicle
US10747597B2 (en) Message buffer for communicating information between vehicle components
US11409927B2 (en) Architecture for configurable distributed system simulation timing
CN113748316B (zh) 用于车辆遥测的***和方法
US11397610B2 (en) Architecture for simulation clock-based simulation of distributed systems
US11327489B2 (en) Shared memory architecture for a vehicle
US11847385B2 (en) Variable system for simulating operation of autonomous vehicles
US11585669B2 (en) Vehicle routing using connected data analytics platform
US11585923B2 (en) Point cloud registration for LiDAR labeling
WO2022067295A1 (en) Architecture for distributed system simulation timing alignment
US11669657B2 (en) Architecture for distributed system simulation with realistic timing
US11809790B2 (en) Architecture for distributed system simulation timing alignment
US20230080281A1 (en) Precautionary observation zone for vehicle routing
WO2020139396A1 (en) Writing messages in a shared memory architecture for a vehicle
WO2022047476A1 (en) Autonomous vehicle planned route prediction
CN113767376A (zh) 用于在车辆部件之间传送信息的消息缓存器
WO2020139395A1 (en) Reading messages in a shared memory architecture for a vehicle
US20220207209A1 (en) Deterministic sampling of autonomous vehicle simulation variables at runtime
US20240025453A1 (en) Allocating resources for a vehicle

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination