CN117891603A - 使用延迟确定和cpu使用率确定的安全***操作 - Google Patents

使用延迟确定和cpu使用率确定的安全***操作 Download PDF

Info

Publication number
CN117891603A
CN117891603A CN202410062894.0A CN202410062894A CN117891603A CN 117891603 A CN117891603 A CN 117891603A CN 202410062894 A CN202410062894 A CN 202410062894A CN 117891603 A CN117891603 A CN 117891603A
Authority
CN
China
Prior art keywords
vehicle
data
timestamp
delay
component
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
CN202410062894.0A
Other languages
English (en)
Inventor
R·E·萨默斯
T·M·弗拉纳根
A·L·金
A·S·拉扬
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.)
Zoox Inc
Original Assignee
Zoox Inc
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
Priority claimed from US16/225,997 external-priority patent/US11099573B2/en
Priority claimed from US16/226,128 external-priority patent/US11281214B2/en
Application filed by Zoox Inc filed Critical Zoox Inc
Publication of CN117891603A publication Critical patent/CN117891603A/zh
Pending legal-status Critical Current

Links

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • 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/542Event management; Broadcasting; Multicasting; Notifications
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/04Monitoring the functioning of the control system
    • B60W50/045Monitoring control system parameters
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W60/00Drive control systems specially adapted for autonomous road vehicles
    • B60W60/001Planning or execution of driving tasks
    • B60W60/0015Planning or execution of driving tasks specially adapted for safety
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W60/00Drive control systems specially adapted for autonomous road vehicles
    • B60W60/001Planning or execution of driving tasks
    • B60W60/0015Planning or execution of driving tasks specially adapted for safety
    • B60W60/0018Planning or execution of driving tasks specially adapted for safety by employing degraded modes, e.g. reducing speed, in response to suboptimal conditions
    • B60W60/00186Planning or execution of driving tasks specially adapted for safety by employing degraded modes, e.g. reducing speed, in response to suboptimal conditions related to the vehicle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0736Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in functional embedded systems, i.e. in a data processing system designed as a combination of hardware and software dedicated to performing a certain function
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3013Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is an embedded system, i.e. a combination of hardware and software dedicated to perform a certain function in mobile devices, printers, automotive or aircraft systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3419Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment by assessing time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3447Performance evaluation by modeling
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B60VEHICLES IN GENERAL
    • B60WCONJOINT CONTROL OF VEHICLE SUB-UNITS OF DIFFERENT TYPE OR DIFFERENT FUNCTION; CONTROL SYSTEMS SPECIALLY ADAPTED FOR HYBRID VEHICLES; ROAD VEHICLE DRIVE CONTROL SYSTEMS FOR PURPOSES NOT RELATED TO THE CONTROL OF A PARTICULAR SUB-UNIT
    • B60W50/00Details of control systems for road vehicle drive control not related to the control of a particular sub-unit, e.g. process diagnostic or vehicle driver interfaces
    • B60W50/06Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot
    • B60W2050/065Improving the dynamic response of the control system, e.g. improving the speed of regulation or avoiding hunting or overshoot by reducing the computational load on the digital processor of the control computer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Human Computer Interaction (AREA)
  • Transportation (AREA)
  • Mechanical Engineering (AREA)
  • Mathematical Physics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Traffic Control Systems (AREA)
  • Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
  • Debugging And Monitoring (AREA)

Abstract

复杂***中的性能异常可能难以识别和诊断。在示例中,可以确定与一个或多个***相关联的延迟。在另一示例中,可以确定与一个或多个***相关联的CPU使用率。可以基于确定的延迟和/或CPU使用率来确定异常事件。在一些示例中,至少部分地基于确定事件,***可以被控制在安全状态和/或被重新配置,以消除异常事件。

Description

使用延迟确定和CPU使用率确定的安全***操作
本申请是2019年12月19日提交的申请号为201980084468.4、发明名称为“使用延迟确定和CPU使用率确定的安全***操作”的分案申请。
相关申请
本PCT国际专利申请要求于2018年12月19日提交的美国专利申请号16/225,997和于2018年12月19日提交的美国专利申请号16/226,128的提交日的优先权,其全部内容通过引用并入本申请。
背景技术
诸如自动驾驶车辆的各种***包括许多计算***接收、生成并输出不同数据。例如,在自动驾驶车辆的情况下,此类数据对于在环境中安全导航而言是必要的。仅举几例来说,此类数据可包括:捕获有关环境的信息的传感器***、根据传感器数据生成有关环境中对象的信息的感知***以及使这些***执行各种操作的控制***(例如,使车辆遵循由规划***生成的路线的控制***)。这些***中的每一个都需要自身的处理和功能。然而,在某些情况下,由于***的互连性和/或复杂性,可能难以识别操作中的误差来源。例如,随着软件被更新和/或***被更改,可能难以对增加的延迟和/或增大的CPU使用率的起因进行识别并排除故障。在一些示例中,这些缺陷可能导致一个或多个***发生故障,这可能导致不安全的操作。
附图说明
参照附图进行详细描述。在附图中,附图标记的最左边的数字标识附图标记第一次出现的图。在不同图中使用相同的附图标记表示相似或相同的部件或特征。
图1示出了示例车辆,例如自动驾驶车辆,以及用于确认自动驾驶车辆的***在安全参数内运行以及用于响应于确定影响***的异常事件而使车辆转变到安全状态的示例组件,如本文所描述的。
图2A和图2B示出了示例图,该示例图分别包括针对***中信息的测量延迟的聚合和测量延迟的分布,如本文所描述的。
图3示出了用于识别和跟踪自动驾驶车辆的多个***中的堆栈功能的示例场景,如本文所描述的。
图4A和图4B示出了示例图,该示例图分别包括火焰图,该火焰图示出了跨两个相关***的功能的CPU使用率以及测量的CPU使用率的分布,如本文所描述的。
图5描绘了用于实现延迟和CPU使用率技术的示例架构的框图,如本文所描述的。
图6是示出了用于响应于检测到延迟事件而转变到安全停止的示例方法的流程图,如本文所描述的。
图7是示出了用于生成针对***的延迟数据的示例方法的流程图,如本文所描述的。
图8是示出了用于响应于检测到CPU使用率事件而转变到安全停止的示例方法的流程图,如本文所描述的。
图9是示出了用于确定针对***的CPU使用率并且定义关于针对自动驾驶车辆的CPU使用率的安全操作过程的示例方法的流程图,如本文所描述的。
具体实施方式
本公开描述了用于确定针对复杂***的延迟和资源使用并因此识别响应的方法、装置和***。在本文所述的说明性示例中,此类响应可包括例如响应于检测到车辆处的异常事件而控制车辆。例如,自动驾驶车辆可能包括多个计算***,而每个计算***需要不同的数据输入并生成不同的数据输出,而且对于车辆的正确和安全操作而言通常是必要的。由于***的互连性以及正在执行的功能和生成的数据的量,需要确保所有***正常运行。
在一些情况下,可以通过从数据(或数据分组)实例接收标签信息来确定逐个***(或逐个子***)延迟。例如,在此处描述的实现中,***可以用唯一标识符和时间戳信息来标记生成的数据。例如,时间戳信息可以包括以下各项中的一个或多个:接收到用于创建所生成数据的数据的时间、生成数据的时间和/或由***输出数据的时间中的一个或多个时间。在所生成的数据用于生成新数据时,例如,当数据从***传播到***(或从子***传播到子***)时,唯一标识符可以进一步与该下游数据相关联。在一些示例中,本文描述的技术可以使用标签信息来确定***延迟,例如,通过将关联于***处接收到输入数据的时间戳信息与关联于用输入数据所生成的新数据的生成和/或输出的时间戳信息进行比较来确定***延迟。
在一些示例中,可以将根据本文描述的技术确定的延迟与预期延迟范围或操作延迟范围进行比较。如果所确定的延迟在操作延迟范围内,则车辆可正常运行。然而,如果所确定的延迟在操作延迟范围之外,则本文描述的技术可以识别与延迟相关的事件。此外,在一些实施方式中,本文所描述的技术方案可响应于事件而将车辆控制在安全状态。例如,将车辆控制在安全状态下可包括:采取一种或多个行动来缓解延迟数据。例如,此类行动可包括:使车辆减速、发出警告和/或执行安全停止轨迹。
此处描述的技术还可用于确定预期延迟范围或操作延迟范围。例如,在一些实例中,可以确定在一时间段内一个或多个***的延迟,并且这种数据可被表征,例如,作为分布。表示这种分布的函数可用于识别针对***的操作延迟范围。在一些示例中,操作范围可以是包括所有所测量的延迟在统计学上的显著数量的范围。
在其他示例中,本文描述的技术可以确定针对自动驾驶车辆上的一个或多个***的CPU使用率信息。例如,某些实施方式包括:生成表示在车辆上运行的所有处理的数据结构。这种数据结构可以是一个或多个前缀树,这些前缀树中每个节点表示功能,而分支表示处理中的功能。在一些示例中,本文描述的技术还可以生成将每个功能与唯一功能标识符相关联的符号表,以使前缀树中的节点包括唯一功能标识符中的一个。一些示例还可以使唯一节点ID与前缀树中的每个节点相关联。
在此描述的示例技术还可以对***的操作进行采样,例如以确定在周期性采样时间处在CPU上操作的功能。在一些示例中,这种采样可针对每个样本识别与CPU上功能相关联的唯一节点ID。唯一节点ID还可以与对应于采样时间的时间戳相关联。例如,可以存储包括读出的唯一节点ID和时间戳的采样分组。这些采样分组可用于确定针对任何时间段的CPU使用率,这些采样分组包括但不限于与针对任何给定时间的任何功能相关联的堆栈轨迹。例如,通过取回与(由时间戳信息确定的)时间段相关联的数据分组,唯一节点ID可用于重新创建与CPU上功能相关联的堆栈轨迹。在一些示例中,这种时间段可以是包括上述延迟相关事件的时间范围。
CPU使用率信息也可以用于确定针对***的预期CPU使用率。例如,可以在一时间段(例如,车辆的运行时间、窗口时间或操作时间)对根据刚刚描述的示例所确定的CPU使用率进行聚合。操作的CPU使用率范围可以是统计显著的数量的采样时间内***操作的范围。在其他实例中,这里描述的示例可以实时或接近实时地确定CPU使用率并且将所确定的CPU使用率与阈值范围进行比较。在一些示例中,如果确定的CPU使用率在阈值范围之外,则可以确定基于CPU的事件。此外,在一些实施方式中,这里描述的技术可以响应于事件而将车辆控制在安全状态。例如,将车辆控制在安全状态可以包括采取一个或多个动作来缓解事件。例如,此类动作可包括使车辆减速、发出警告和/或执行安全停止轨迹。
在此描述的技术方案可以涉及利用数据,以使诸如自动驾驶车辆的车辆能够在绕过环境中的物体的同时在环境中导航。在此描述的技术方案可以利用关于数据和***功能的信息来确保***具有它们需要的数据并在当在环境中行驶时提供车辆的安全操作的参数内运行。此外,由于可提高***功能的可靠性,所以本文所描述的技术方案比传统技术更快和/或更稳健。换而言之,本文所描述的技术方案提供了对现有导航技术的技术改进。同时,本文所描述的技术方案还可以通过例如更准确地提供到预定目的地的安全通路来提供更平稳的乘坐并且改进安全结果。
在本公开针对自动驾驶车辆的其他示例中,本文描述的技术方案可以在环境部署自动驾驶车辆之前对规划和/或测试***功能进行辅助。例如,对于新的软件版本、新的***部件或新的子***部件或者其它变化而言,本文描述的技术方案可以用于比较性能参数。基于这种比较,这种技术方案可允许提高***设计和/或性能。此外,在该示例中,关于新软件、组件等的数据可以用于确定针对使用该新软件、新***组件等的车辆的安全操作的安全参数或范围。例如,可以对照所确定的参数来测量随后的性能。
虽然本公开在示例中使用自动驾驶车辆,但是本文描述的技术不限于在自动驾驶车辆中的应用。在一些实例中,本文描述的技术可用于确定和/或表征性能参数,例如,针对许多复杂***中的任何一个的延迟和/或资源使用。此外,本文描述的技术方案可用于识别和/或减轻此类复杂***中的异常功能,例如事件。在一些示例中,包括执行功能和/或传递消息的相关***的任何复杂***都可以受益于所描述的技术方案。作为非限制性示例,本文描述的技术方案可用于机载和/或地面交通工具,以及其他完全自主机器人***或部分自主机器人***。此外,非自动驾驶车辆也可以从这里描述的技术方案中受益,例如在缺乏可行数据的情况下的安全性。
图1-图9提供了与这里描述的技术方案相关联的其它细节。
图1示出了示例车辆102正在行驶通过的示例环境100。示例车辆102可以是无人驾驶车辆,例如被配置为根据美国国家公路交通安全管理局发布的5级分类操作的自动驾驶车辆。5级分类描述了一种能够在整个行程中执行所有对安全至关重要的功能的车辆,同时在任何时候都不希望驾驶员(或乘员)控制该车辆。在这样的示例中,因为车辆102可以被配置为控制包括所有停车功能的从行程开始到完成的所有功能,所以它可以不包括驾驶员和/或用于驱动车辆102的控制装置,例如方向盘、加速踏板和/或制动踏板。这是示例,并且这里描述的***和方法可并入到具有复杂子***和/或***间通信的任何***。作为非限制性示例,此类***可包括地面、空中或水上交通工具,包括如下的范围:从需要一直由驾驶员手动控制的交通工具到部分或完全自主控制的交通工具。在一些示例中,这些技术可以在包括执行功能的一个或多个计算***的任何***中实现。从这里的描述可以意识到,本公开不限于车辆。
示例车辆102可以是任何配置的车辆,例如厢式货车、运动型多功能车、跨界车、卡车、公共车辆、农用车辆和/或工程车辆。车辆102可以由一个或多个内燃机、一个或多个电动机、氢动力、它们的任何组合和/或任何其他合适的动力源提供动力。尽管示例车辆102具有四个车轮,但本文所述的***和方法可以并入到具有更少或更多数量的车轮、轮胎和/或履带的车辆。示例车辆102可以具有四轮转向并且可以在所有方向上大体上以相同的性能特征操作,例如,使得车辆102的第一端在沿第一方向行驶时是车辆102的前端,并且使得当沿相反方向行驶时第一端变成车辆102的后端。同理,车辆102的第二端在沿第二方向行驶时为车辆的前端,而使得在沿相反方向行驶时,第二端变为车辆102的后端。这些示例特征可促成更好的操控性,例如,在狭小的空间或拥挤的环境(如停车场和/或市区)促成更好的操控性。
示例车辆102可用于行驶通过环境100并收集数据。例如,车辆102可以包括一个或多个传感器***,上述多个传感器***包括第一传感器***104a和第二传感器***104b(这里统称为和/或与其他未标记的传感器***一起称为传感器***104)。例如,传感器***104可以包括:LIDAR传感器、RADAR传感器、SONAR传感器、飞行时间传感器、图像传感器、音频传感器、红外传感器、位置传感器等或其任何组合。传感器***104可以被设置为捕获,例如生成,与环境100相关联的传感器数据。在所示出的示例中,第一传感器***104a可以生成第一传感器数据106,并且第二传感器***104b可以生成第二传感器数据108。例如,第一传感器***104a可以包括LiDAR传感器,在这种情况下第一传感器数据106可以包括点云,并且第二传感器***104b可以包括相机,在这种情况下第二传感器数据108可以包括图像数据。这些示例仅用于进行说明,因为传感器***104可以包括任何数量、类型和/或模态的传感器***。
车辆102还可以包括一个或多个计算***。例如,图1图示了第一计算***110、第二计算***112和第三计算***114(在本文中统称为计算***110、112、114并且包括未示出的其它计算***)。尽管图中示出了这三个示例***,但是车辆可以包括更多、更少和/或其他***。虽然图1出于进行说明的目的示出了单个***,但这样的计算***可以包括在一个、两个、三个或更多个计算***上运行的虚拟机、处理等。计算***110、112、114的示例计算***可以包括以下各项中的一个或多个:定位***、感知***、规划***、***控制器、发射器、地图***等。上述***和其他示例性***(可以是组件和/或子***)中的一些在本文中参照图5进一步详述,包括参照图5。在其他示例中,计算***110、112、114还可以或替代性地包括例如经由有线连接或无线连接与车辆102通信的***。计算***110、112、114可以被配置为例如通过执行一个或多个功能来执行一个或多个处理,并且可以使用数据来执行那些功能。例如,如图1所示出的,第一计算***110可以被配置为接收第一传感器数据106和第二传感器数据108并且生成包括数据116的输出。与之类似地,第二计算***112可以被配置为接收第二传感器数据108并且生成包括数据118的输出。第三计算***114可以被配置为接收由第一计算***110生成的数据116及由第二计算***112生成的数据118,并且被配置为生成包括数据120的输出。在一些示例中,数据120可以是用于控制车辆的操作的驱动控制数据,通常如图1所示。
同样如图1所示,在本公开的实施方式中,附加信息可以关联于与车辆102相关联的各种类型的数据。例如,可以在接收、生成和/或传输时用时间戳信息和/或唯一标识符中的一个或两个来标记***中的数据。如图1所示,由第一传感器***104a生成的数据106的实例可具有相关联的第一标签122a,上述第一标签包括第一时间戳信息(t1)124a和第一唯一ID(id1)126a。第一时间戳信息124a可以包括捕获数据106的时间,例如读出第一传感器***104a的传感器的时间和/或由第一传感器***104a发送数据的时间,例如传送或发布数据的时间。第一唯一ID 126a可以是对于数据106的实例而言唯一的整数标识符或其他标识符。因此,例如,数据106可以由第一传感器***104a周期性地生成并且数据106的每个实例可以具有不同的唯一ID。如在本公开中进一步描述的,当用包括在标签122a中的信息通过各种计算***传播数据106时,可对数据106的实例进行跟踪。在所示的示例中,第一传感器***104a可以输出数据106和标签122a作为第一数据分组128a。
类似于数据106,由第二传感器***104b生成的数据108也可以包括第二标签122b,该第二标签包括第二时间戳信息(t2)124b和第二唯一ID(id2)126b。例如,第二时间戳信息124b可以包括:第二传感***104b捕获数据108的时间和/或从第二传感器***104b发送或发布数据的时间。例如,数据108可以作为包括数据108和标签122b的数据分组128b输出。第二唯一ID 126b可以是对数据108的每个实例而言唯一的整数或其他标识符。例如,第一唯一ID 126a和第二唯一ID 126b可以是顺序生成的整数。此外,在一些实例中,标签122中包括的唯一ID 126和/或其他信息可以标识数据的来源,例如,将第一计算***104a标识为数据106的每个实例的来源和/或将第二计算***104b标识为数据108的每个实例的来源。作为非限制性示例,当消息已生成时第一2、3或4位数字和/或字母数字字符可以提供与生成消息的***相关联,等等。
图1还示出了当数据106、108通过自动驾驶车辆102的***传播时如何附加和/或更新标签。例如,如图所示,标签122c、122d与由第一计算***110生成的数据116相关联,标签122e与由第二计算***112生成的数据118相关联,并且标签122f、122g、122h与由第三计算***114生成的数据120相关联。例如,与数据116相关联的标签122c、122d可以包括:包括在相应标签122a、122b中的一些或全部信息,以及第三时间戳信息(t3)124c和第一***标识信息(ids1)130a。因此,并且如图所示,标签122c可以包括:第一唯一ID 126a、第一时间戳信息124a、第三时间戳信息124c和***标识信息130a。类似地,标签122d可以包括:第二时间戳信息124b、第二唯一ID 126b、第三时间戳信息124c和***标识信息130a。在该示例中,第一计算***110使用来自第一传感器***104a的数据106和来自第二传感器***104b的数据108两者来生成数据116。因此,分别与输入数据106和输入数据108相关联的标签122a和标签122b可以被更新以指示第一计算***110的这种处理,例如生成标签122c、122d,这些标签包括第三时间戳信息124c和***标识信息130a。
在图1的示例中,来自标签122a的所有信息被示为保留在标签122c中,并且来自标签122b的所有信息被示为保留在标签122d中。然而,在其他实施方式中,一些数据可能不被复制或转移。作为非限制性示例,可以从标签122c、122d中省略时间戳信息124a、124b。在该示例中,可以通过标签122a、122b而不是通过标签122c、122d来访问被省略的时间戳信息124a、124b。此外,虽然标签124a、124b被示为包括相同的第三时间戳信息(t3)124c和相同的***标识信息(ids1),但是该信息可以不同。例如,第三时间戳信息126c可以包括与数据106的接收、数据108的接收、数据116的生成和/或所生成的数据的输出(例如,发布)中的一个或多个相关联的一个或多个时间戳。在一个示例中,第三时间戳信息124c包括在第一计算***110处接收到数据106或数据108的时间。这样的数据可以在不同的时间接收,并且因此时间戳信息124c可以使两个标签122c、122d具有不同的值。与之类似的是,第一计算***110可以执行多个操作,这些操作可以在不同时间使用第一数据106和第二数据108。这些“处理”时间可以类似地存储为时间戳信息124c。同样在示例中,***标识信息130a可以包括更多标识或第一计算***的标识之外的其他标识。例如,***标识信息130a可以指示由第一计算***110执行的处理,并且对于数据106、108而言这样的处理可以不同。在实施方式中,由于时间戳信息124c和***标识信息130a由第一计算***110添加或以其他方式与第一计算***110相关联,所以二者可以是相同的。虽然图中并未示出,但数据116与相关联的标签122c、122d可以作为数据分组输出。
除了第四时间戳信息(t4)124d和第二***标识信息(idS2)之外,与数据118相关联的标签122e同样包括第二时间戳信息124b和第二唯一ID 126b(因为数据118是使用由第二传感器***104b生成的数据108生成的)。类似于第三时间戳信息124c,第四时间戳信息124d可以包括关于与第二计算***112相关联的一个或多个时间的信息。这样的时间可以是在第二计算***112处接收数据108的时间、通过第二计算***112对数据108进行处理等行为的时间、生成数据108的时间和/或传送、输出、发布或以其他方式提供数据118的时间中的一个或多个时间。此外,第二***标识信息130b可以一般地识别第二计算***112和/或提供关于第二计算***112处的一个或多个处理或功能的信息,例如,第二计算***112可能已经作用于数据108或以其他方式与数据108相关联。数据118和标签122e可以由第二计算***112作为数据分组输出。
与之类似地,第三计算***114可以更新新的时间戳或生成新的时间戳,例如以示出数据106、108通过车辆102的***的传播或“流动”。例如,标签122f通常可以对应对于标签122c,标签122g通常可以对应于标签122d,并且标签122h通常可以对应于标签122e。然而,这些标签还包括第五时间戳信息(t5)124e和第三***标识信息(ids3)130c。第五时间戳信息124e可以包括与以下各项中的一个或多个相关联的一个或多个时间戳:数据116(或包括数据的数据分组)的接收、数据118的接收、数据120的生成和/或输出(例如,作为数据分组),如上所述,第五时间戳信息可以是用于控制车辆102的控制数据。第三***标识信息130c可以识别第三计算***114和/或组件、处理和/或其可以处理或以其他方式使用数据116和/或数据118的方面。与关联于数据116的标签一样且如上所讨论的,第五时间戳信息124e和第三***标识信息可以在标签122f、122g、122h中的一个或多个标签中存在差异,尽管图中示出了相同的情况。如本公开通篇所使用的,标签122a、122b、122c、122d、122e、122f、122g、122h和/或根据本文描述的示例生成的其他标签中的两个或更多个可被称为“标签122”。此外,尽管本文为了方便参考使用了术语“标签”,但是标签通常可以理解为包括但不限于任何信息,上述信息包括时间戳信息、唯一ID或其他信息。换句话说,“标签”可以是附加到数据或以其他方式与数据相关联的信息。与之类似地,时间戳信息的多次出现可以被称为“时间戳信息124”,唯一ID的多次出现可以被称为“唯一ID 126“,并且数据分组128的多次出现可以被称为“数据分组128”。
根据刚刚描述的架构,可以使用标签122来跟踪数据的每个实例。例如,可以按照顺序用标签122a、122c和122e对通过第一传感器***104a生成至输出以作为控制数据120的数据106的某个实例进行跟踪。与之类似的,按照顺序,标签122b、标签122d和标签122g可以说明数据108的实例的第一流程,并且按照顺序,标签122b、122e标签和标签122h可以示出数据108的相同实例的第二流程。
如本文进一步详述的,本公开的技术可以使用关于诸如标签122的数据的信息,以确定、表征和/或调查车辆102的性能参数。例如,技术可以确定与车辆102的***相关联的延迟。在一个示例中,可以使用第一时间戳信息124a来确定与第一传感器***104a处的数据106的所示实例相关联的延迟。例如,与数据106相关联的延迟可以是第一传感器***104a捕获数据106的时间与第一传感器***104a输出数据分组128a的时间之间的差,这些时间可以包括在第一时间戳信息124a中。在实施方式中,第一传感器***104a可以例如以预定频率,例如以第一传感器***104a的帧速率,连续捕捉和输出包括数据106的新实例的新分组。包括数据106的每个分组可以具有相关联的第一唯一ID 126,例如,第一唯一ID可以是整数,并且可基于数据106的每个实例来确定独立延迟。
在另一个非限制性示例中,第一计算***110的延迟可以通过研究与标签122c和标签122d中的一个或两个相关联的第三时间戳信息124c来计算。例如,与第一计算***110相关联的延迟可以被计算为第一计算***110发布数据116的时间与在第一计算***110处接收数据106和/或数据108相关联的时间之间的差。例如,因为数据116包括标签122c和标签122d二者,所以可以研究这些标签以确定用于生成数据116的那些数据106、108的实例。使用关于那些实例的信息,例如在第一计算***110处接收每个实例的时间,可以确定针对第一计算***110的延迟。在一些示例中,第一计算***110的延迟可以是在发布数据116的时间与在第一计算***110处接收到用于生成数据116的数据106或数据108的任何实例的最早时间之间的差。
从上文应该显而易见的是,用于确定延迟的这种技术可以用于复杂的***(例如,非线性***),其中延迟无法通过测量总执行时间来确定。此外,如上文所示出和描述的,可以针对各个部件、部件的集合和/或作为整体的***确定延迟(例如,从传感器输入到车辆102的车辆控制的延迟)。在一个示例中,因为整个车辆102中数据的各个实例都是被跟踪的,所以可以确定车辆在预定延迟内运行,即使在各个***没有运行时也是如此。传统***可视为多个单独的子***,并且如果一个子***以高于预期的延迟运行,则可以确定***运行不正常。然而,像自动驾驶车辆这样的复杂***可能会在一个子***上发生延迟事件,但仍能正常运行。例如,考虑车辆接近非常繁忙的十字路口的例子。十字路口可能有在多个方向中等待过马路或正在过马路的大量行人、骑自行车的人、建筑物、停放和移动的车辆以及其他物体。在这些实例中,识别环境中物体的一个或多个车辆***可能比大多数其他操作条件花费更长的时间。由于识别所有对象以确保安全旅行所需的处理时间增加,因此延迟可能高于该***处的预期(或测试)。然而,本文描述的技术可以用于确定其他***比正常***更快地运行,并且因此,车辆的总体延迟可以在安全操作范围内。
在一些示例中,车辆102可包括诊断***132,该诊断***包括用于确定车辆的一个或多个***的性能特征的功能。***延迟是一种性能特征的示例。在一些示例中,例如,当性能特征在预期性能范围之外和/或高于/低于阈值时,诊断***132可以确定异常事件。在一些实例中,诊断***132还可以响应于确定异常事件来控制车辆102。在所示出的示例中,诊断***132包括延迟确定组件134、延迟阈值组件136和安全状态组件138。
延迟确定组件134可以接收与由车辆102的一个或多个***生成的数据相关联的标签122。虽然,为了清楚的原因,图1示出了延迟确定组件134仅接收第一标签信息122a和第三标签信息122c,但实际上,延迟确定组件134可以接收车辆102处的所有标签信息,包括但不限于第二标签信息122b、第四标签信息122d和第五标签信息122e。在其他实施例中,延迟确定组件134还可以或替代性地接收,例如,包括数据分组128的其他信息。在示例实施例中,延迟确定组件134可以确定与一个或多个计算***相关联的延迟。举例而言,通常,如上文所讨论的,延迟确定组件134可以使用标签122d来确定第二计算***112的延迟。在至少一些示例中,延迟确定组件134可以对收集的标签执行统计分析。作为非限制性示例,可以在限定的时间窗口(例如,2秒-或者基于车辆的功能,例如车辆的速度所确定的)对标签122进行聚合并针对计算***110、112、114和/或其组合中的任一个或多个确定分布的统计特性(平均值、方差/标准偏差、最小值、最大值等)。因此,由延迟确定组件确定的延迟可以是瞬时延迟,例如,与数据的单个实例相关联,或与许多实例的聚合相关联。对于后者而言,可以使用统计分析来确定所确定的延迟。
延迟阈值组件136可以包括关于针对车辆102的***的每个***的延迟阈值的信息。例如,延迟阈值组件136可以确定由延迟确定组件134确定的延迟是否落入阈值范围或预期延迟范围内。当多个***中一个***的延迟位于预期范围之外时,延迟阈值组件136可以确定异常性能事件。如本文进一步描述的,延迟阈值组件136还可以被配置为确定针对车辆102的***中的一个或多个***的延迟阈值或范围。例如,延迟阈值组件136可以接收指示针对一个或多个***的实际延迟数据的历史数据(其中可能包括统计数据),并基于历史延迟来确定可接受的操作范围。
安全状态组件138可以从延迟阈值组件136接收事件信息,例如,当延迟阈值组件136检测到异常事件时接收事件信息,并且响应于该事件开始一个或多个操作。在所示的示例中,安全状态组件138可以通过发布安全状态控制140来控制车辆102。例如,安全状态控制140可以控制车辆102执行安全停止操纵。示例性可安全停止操纵可以包括控制车辆102遵循轨迹142,例如,车辆102可以沿着该轨迹安全地导航到路边。一旦处于路边,车辆102可被置于安全状态,例如,其中一些或所有功能被禁用。车辆102可以保持在该状态直到执行进一步的诊断等,例如,以确定异常延迟事件的来源和/或纠正事件。
使车辆102遵循轨迹142的安全状态控制140只是安全状态控制的一个示例。在其他示例中,安全状态组件138可以控制车辆102减速,而不是使车辆102完全停止。举例而言,例如,由于可接受的延迟范围在以较慢的速度来扩大,所以较慢的速度会更容忍事件。
因此,图1提供了可以被实现来在多个***上确定延迟的示例技术。在一些示例中,当延迟在预期延迟范围之外时,可以识别异常延迟事件并且可以响应于该动作而采取安全动作。
图2A和图2B是提供与车辆102的***之一相关联的延迟数据的可视化的图。图2A示出的图200a展示了***(诸如计算***110、112、114之一)的延迟的聚合。图2B包括示出了图2A中示出的延迟数据的分布以及表示分布的累积分布函数的分布的图。
图2A中的图200a示出了聚合数据202,其在该示例中仅图示了与诸如第一计算***110的单个***相关联的延迟信息。具体地,图2A中的x轴204表示消息计数。在此示例中,消息计数中的每条消息都与***生成(和/或输出)的数据实例相关联。图200a的y轴206显示了总延迟,在该示例中以毫秒为单位。因此,数据202通常示出***生成的每个数据分组(或数据)的***延迟的曲线。例如,如本文所述,可以使用唯一ID和时间戳信息来确定针对***的延迟。例如,如果图200a描绘了第一计算***110,则图200a中绘制的延迟可以是在第一计算***110处接收到数据106或数据108的实例的时间与数据116的实例被第一计算***110输出(例如,发布)的时间。如图所示,所示***的平均延迟在大约50ms和大约200ms之间的数量级。
第二图200b示出了与分布208相同的数据202。更具体地,第二图200b示出了与延迟数值相关联的所测量的分组(如消息)的频率。例如,延迟被绘制在x轴210上并且分布函数212,例如高斯分布,被拟合到分布图208。分布函数212基于车辆的运行时间提供对***执行其功能所需的时间的统计分析。作为非限制性示例,此类统计分析可包括均值、方差/标准偏差、最小值、最大值等。获悉这些操作参数可使许多诊断功能得以执行。例如,当已知预期操作延迟时,实时或近实时跟踪延迟可以允许确保车辆安全运行。如图1所示的例子,确定的延迟(无论是单个标签的瞬时延迟和/或窗口上的统计聚合)可以与操作范围进行比较,并且当***在正常操作参数之外时,可以根据安全状态对车辆进行控制。在一些示例中,该范围可以是某个统计上显著数量的延迟测量落入的范围。因此,分布函数212可以确定所有延迟的95%或99%或100%出现在50ms和200ms之间,并且可以使用该范围作为预期延迟范围。
确定预期延迟范围还可为其它目的提供有用的工具。例如,可以使用延迟范围来调查对***的改变的影响。在一个示例中,可以针对不同的软件版本生成图200a、200b,以确定这些版本对***的影响。作为非限制性示例,计算***110的算法和/或硬件修改会使计算***110和/或整个车辆102两者的延迟特性不同。尽管消息和***之间存在复杂的交互,但本文描述的技术方案会允许检查和表征这种修改,而确定这种修改如何整体上影响车辆102。与之类似地,可以确定新传感器(例如,向***提供数据)的影响。此外,延迟范围信息可与设计可能依赖于由***生成的数据的下游***的有关。
根据上述内容,延迟数据可用于确定车辆的***是否正常运行和/或建立用于车辆安全操作的阈值范围。然而,其它性能特征也可以用于识别异常和/或理解车辆102的操作条件。举例而言,图3、图4A和图4B用于描述诸如车辆102之类的车辆的CPU使用率。
图3为图示了旨在确定与计算环境中的一个或多个***相关联的CPU使用率的本公开的技术方案的示意图300。更具体地说,图3是可以如何针对第一计算***302和第二计算***304确定CPU使用率的示例。在一些示例中,尽管不是必需的,但第一计算***302可以对应于计算***110、112、114中的一个并且第二计算***304可以对应于计算***110、112、114中的另一个。例如,第一计算***302和第二计算***304可以是包括但不限于传感器***104、计算***110、112、114和/或任何其他***的任何***。在此处描述的实施方式中,第一计算***302可以被配置为执行多个处理和/或功能,并且第二计算***304也可以被配置为执行多个处理和/或功能。例如,第一计算***302和第二计算***304中的每一个可以包括用于执行可由一个或多个处理器执行的不同操作的指令,这些操作可以包括一个或多个处理,而每个处理包括一个或多个功能。尽管第一计算***302和第二计算***304是独立的***,但是在本文描述的实施方式中,它们可以是更大***例如车辆102的子***。因此,虽然第一计算***302和第二计算***304可以被配置为接收不同的数据并且生成和输出其他数据,但是两个***302、304可以具有重叠功能。换句话说,某些功能和/或处理可以被调用以执行与第一计算***302和第二计算***304中的一个或两个相关联的功能。如本文进一步描述的,本公开中的技术可以确定针对离散的时间段,在CPU上的处理、功能等与使用CPU的其他处理、功能等的比例如何。
图3还包括在示意性实施方式中为确定CPU使用率而使用的符号表306。更具体来说,符号表306将计算环境中的每个离散功能308(例如,由图3的示例中的第一计算***302和/或第二计算***304中的任一个或两者使用的每个功能)与唯一标识符310关联。在一些实施方式中,功能中的每个功能可以表示堆栈(例如,软件堆栈)中的堆栈帧。符号表306可以通过例如将被调用的每个功能添加到符号表306并关联ID 310,从而在第一计算***302和第二计算***304的运行期间生成。在车辆102的实例中,在执行许多复杂功能并且接收、生成、处理和输出大量数据的同时,包括第一计算***302和第二计算***304在内的大多数计算***不断地重新运行相同的处理和功能。因此,例如,符号表306可以在相对较短的时间内利用相对较少的添加而快速地稳定。换句话说,在车辆102的一些示例中,车辆102的每个计算功能可能已经以秒的数量级执行。
这里描述的技术还可以生成组织功能308的一个或多个数据结构。例如,图3示出了将包括功能的堆栈轨迹组织为一个或多个数据结构。更具体地说,图3包括第一前缀树312的形象和第二前缀树314的形象。第一前缀树312示出了与第一计算***302相关联的所有堆栈功能,并且第二前缀树314示出了与第二计算***304相关联的所有堆栈功能。在第一前缀树312中,功能被示为第一节点316(其中一些被单独标记为第一节点316a、316b等),而在第二前缀树314中,功能被示为第二节点318(其中一些被单独标记为第二节点318a、318b等)。第一节点316和第二节点318中的每一个被示为包括来自符号表306的功能ID310。进一步如图所示,第一前缀树312包括与第一节点318中的每一个相关联的唯一节点标识符。因此,例如,唯一节点标识符(N1)320a与第一节点316a相关联,唯一节点标识符(N2)320b与第一节点316b相关联等。这里,第一前缀树312中的唯一节点标识符的两个或多个可以被称为唯一节点标识符320。为了清楚起见,省略了与某些节点316和唯一节点标识符320相对应的附图标记。第二前缀树314类似地包括与每个节点318相关联的第二唯一节点标识符322(其中一个被单独地称为第二唯一节点标识符322a,并且其中的多个可以统称为第二唯一节点标识符322)。
如图所示,然后第一前缀树312将与第一计算***302相关联的所有堆栈轨迹形象,例如,作为树的分支。因此,例如,第一处理依次包括功能F4(如第一节点316a所示),接着是功能F1(如第一节点316b所示),最后是功能F3(如第一节点316c所示)。又如图所示,第一节点316a具有关联的第一唯一节点标识符(N1)320a,第一节点316b具有关联的第一唯一节点标识符(N2)320b,并且第一节点316c具有关联的第一唯一节点标识符(N3)320c。第一唯一节点标识符320和第二唯一节点标识符322可以包括允许在不同处理(或堆栈轨迹)中的相同功能之间消除歧义的唯一标识符。举例来说,第一前缀树312中的节点316c和第二前缀树314中的节点318c均表示功能F3。然而,由于本文描述的技术将唯一节点标识符320c与第一节点316c相关联并将唯一节点标识符322c与第二节点318c相关联,所以尽管表示完全相同的功能(F3),但是节点316c、节点318c以及它们关联的堆栈轨迹也是可区分的。
更具体来讲,在本文描述的示例中,与第一计算***302和第二计算***304相关联的处理可以通过CPU使用率来进行表征。例如,图3还包括说明CPU采样的时间线324。采样可以包括例如以时间间隔t1、t2等周期性地确定例如由唯一节点标识符320、322指定的与正在执行的CPU上功能相关联的节点。因为每个节点都是唯一,所以可以对以读出节点作为其中一部分的堆栈进行重新创建。读出节点可以在一时间段内聚合,以提供该时间段内相对于其他功能而言哪些功能在CPU上的指示。
在一些示例中,可以在运行时确定这样的数据结构(例如,前缀树312、314)。在这样的示例中,可以在一个或多个处理器上执行查询以确定在特定时间的堆栈轨迹或当前运行的功能中的一个或多个。此类查询的结果可用于构建此类树。在一些这样的示例中,不同的功能调用可能在几秒钟后显著地相同,从而在这样的时间段之后不会生成新节点。在一些示例中,此类数据结构可以被预先计算(例如,在车上或车外)以用于以后的记录。
还如本文所描述的,这些技术可以将时间(例如,采样时间)与被调用的每个功能相关联。例如,在此处描述的实施方式中,时间戳可以与节点320、322中的每一个相关联,并且时间线324提供具有时间戳的关联时间的每个功能的调用的形象。当然,时间线324仅出于示例目的被示出。在一些示例实现中,第一计算***302和/或第二计算***304可以以相对较高的频率执行相关联的功能。例如,第一计算***302和/或第二计算***304可以被配置为例如通过以微秒、毫秒或更快的量级运行所示堆栈轨迹中的一个或多个来生成数据。因此,所示的时间线324可以是毫秒量级的,并且可以聚合在更长的时间段上的数据,例如,秒、分钟、小时,车辆的寿命等。此外,因为时间戳与每个功能相关联,所以可以考虑特定的时间点。
在一些示例中,可以存储读出节点和时间戳,例如图示326中所示。更具体地,图示326包括分组328a、328b、328c,其存储与时间戳330相关联的唯一节点标识符320、322,时间戳330表示读出标识符的采样时间。因此,根据本公开的示例,第一计算***302和第二计算***304的所有操作可仅使用分组328来确定。在至少一些示例中,例如在以规则间隔对运行处理进行采样的那些示例中,例如这样的分组328可以仅包括节点ID 320、ID 322。因此,本文描述的技术通过将CPU使用率存储为一系列数据分组来减少车辆的计算时间,这些数据分组可以仅包括时间戳和/或节点ID。这些数据分组的生成和存储可允许对针对***的CPU使用率数据进行随时解读与操纵。例如,时间戳允许在某些时间点调查处理。这可能不同于用于量化或以其他方式解释CPU使用率的常规技术,后者可能需要运行CPU使用率。
图4A和图4B示出了使用图3中描述和图示的技术确定的CPU使用率的形象。更具体地说,图4示出了图400a,其是与图3中的第一计算***302和第二计算***304中的每一个相关联的处理的CPU使用率的形象。例如,图4可以是火焰图。在图400a中,每个框表示功能,例如,堆栈中的功能308之一,堆栈根据相关功能沿y轴建立,例如,根据图3中前缀树312、314展示的处理。因此,例如,最下面的框402表示所有处理,例如车辆102上的所有处理。框402正上方(例如,在)的两个框404、406分别表示与第一计算***302相关联的所有功能,并且框404分别表示与第二计算***304相关联的所有功能。进一步描述图400a,框408、框410、框412被示为堆叠在框404上。框408、410、412分别示出为功能F4、功能F1和功能F3。可以意识到的是,框408、框410、框412图示了具有图3中节点N1、N2、N3的堆栈轨迹。因此,还可以意识到的是,图400a的垂直部分表示与树312、314相同的堆栈轨迹。然而,与前缀树312、314不同,图400a说明了在一时间段内相对于其他功能而言针对每个功能的CPU使用率。
如以上参考图3所讨论的,根据这里描述的技术的计算操作的周期性采样提供了对与在离散采样时间执行的处理相关联的唯一节点ID所进行的识别。可以基于这些唯一节点ID的聚合来创建图200a。例如,每个唯一节点ID与CPU上的某处理相关联。考虑一个简单的例子,其中***只执行两个功能A和B。如果在采样期间,功能A的读取频率是功能B的两倍,那么在像图400a这样的图中,与功能A关联的框的宽度将是宽度是功能B的两倍,这表明功能A使用了大约66%的CPU使用率,而功能B使用了大约33%的CPU使用率。也就是说,该图显示了相对CPU使用率,最宽的框表示100%的CPU使用率。因此,图4A的图400a示出了返回的与第一***处理相关联的唯一节点ID和与第二***处理相关联的唯一节点ID大致一样多(因为框404与框406的宽度大致相同)的采样。因此,***A和***B中的每个各占约50%的CPU使用率。然后,框404、框406上方的框的宽度对应于X轴上任何位置的最上面的水平线被读出的次数。为了提供示例,如上所述,框408对应于节点(N3)320c,框410对应于节点(N2)320b,框412对应于节点(N1)320a。因此,在由图400a表示的时间窗口中,节点320a、320b、320c可能已经被采样的次数大致相同。然而,因为节点(N3)320c在由节点(N2)320b表示的功能之后和由节点(N1)320a表示的功能之后的堆栈轨迹中,节点(N3)的读出的形象320c包括它所依赖的堆栈。因此,叶子节点被示为高于图4A中它们所依赖的任何分支节点。应当意识到的是,采用不同的时间窗口可能导致不同的CPU使用率统计,并因此改变图400a。
在此处描述的示例中,可以通过以固定速率采样来确定每个功能的CPU使用率。虽然可以使用任何采样率,但可能需要使用不同于车辆***(例如,第一计算***302和第二计算***304)所使用的公共频率的采样率。因此,例如,在一些实施方式中,可以使用97Hz的采样频率。可以意识到的是,在第一***302和第二***304操作时对CPU进行采样,可以近似出针对每个处理的CPU使用率。此外,由于记录的数据(例如,图框326)可能包括长时间段内的少量数据,因此可以在任何选定的时间窗口的数据记录之后确定计算(例如,CPU)的使用情况,并且可以关于全部数据上所提供的给定时间窗中的CPU使用率来执行统计分析。
在一些示例中,图400a可用于理解哪些***、处理和/或功能对CPU的负担最重。此外,因为这里描述的技术使时间戳与每个功能相关联,所以可以对特定的时间窗口进行研究。例如,当诊断***132确定异常延迟事件时,可以针对接近延迟事件的时间生成类似于图400a的火焰图。以这种方式,技术人员可以更容易地识别延迟问题的来源。
在其他示例中,CPU分布信息可用于进一步增强车辆102的安全性。图4B示出了车辆的一个或多个***的CPU使用率的分布。例如,400b中CPU分布可以示出第一计算***302相对于车辆102上的所有***的使用百分比。作为非限制性示例,在一些实例中,400b中所示的CPU使用率可以是针对多个离散时间段(例如,2-3秒时间段)确定的CPU使用率。然后,通过绘制在某个时间量内(例如车辆102的总运行时间)***的这些离散CPU使用率,可以确定预期的CPU使用率阈值或范围。例如,在图4的例子中,图400b中所示的分布414说明超过99%的时间,所示***使用约3%至约6%之间的CPU。因此,与图2B所示的分布一样,图4B可用于提供预期***操作的阈值(和/或用于与标称运行条件进行比较的其他统计信息)。在运行期间,如果确定***在该范围之外操作,例如,如果实时或接近实时计算的CPU使用率在该范围之外,则可以确定CPU使用率事件。在一些示例中,如上面结合图1所述,可以将CPU使用率事件与异常延迟事件做相同的处理,因此,尽管图中并未示出,诊断***132可以包括:类似于延迟确定组件134的CPU使用率确定组件和/或类似于延迟阈值组件136的CPU使用率阈值组件。在这些示例中,安全状态组件138可以考虑关于以上结合图1所描述的延迟以及方才所描述的CPU使用的信息。
还如上所述,这里描述的延迟相关技术可以与CPU使用率相关技术结合使用。例如,当例如由诊断***132确定异常延迟事件时,时间戳124可用于确定延迟事件的时间,并且唯一标识符126可用于确定异常延迟事件的来源。因此,例如,这里描述的与延迟相关的技术可以识别异常事件并精确定位事件的位置。利用该信息,可以在所识别的时间及其前后为指状***生成火焰图或其他CPU使用率信息。以这种方式,就延迟可归因于***执行的某些处理而言,可以容易地识别该处理。在其他示例中,如上所述,例如,当***在正常或预期操作范围之外操作时,CPU使用率可以独立地用于识别异常事件。在至少一些示例中,这样的事件可以与在阈值CPU使用率范围之外的***、子***、处理等的单次发生相关联。在其他示例中,事件可以与确定CPU使用率的、超出预期范围或阈值的数据的统计聚合相关联,例如,在一时间段内。
此外,本文描述的CPU使用率确定技术可用于其他诊断和/或***设计目的。例如,类似于以上参考图1、图2A和图2B描述的技术方案,CPU使用可用于了解***修改。例如,新的软件版本和/或替换组件可能对CPU使用率生成不同的影响,并且这里描述的用于确定CPU使用率的技术方案可以允许对这些***变化进行统计分析。例如,图4B中所示的分布414可以是运行一个软件版本的示意性***。在一些示例中,可以为运行不同版本软件的相同***确定类似的分布。从分布中可以明显看出对CPU使用率影响的差异。在一些示例中,可以基于比较来确定用于在车辆上实施的版本。在一些示例中,可以选择具有最低平均CPU使用率、最小方差等的版本。
图5描绘了用于实现这里讨论的技术的示例架构500的框图。在至少一项示例中,架构500可以包括车辆502,此车辆502可以类似于(或相同于)上面参考图1描述的车辆102。在所示架构500中,车辆502是自动驾驶车辆;然而,车辆502可以是任何其他类型的车辆。
车辆502可以包括:一个或多个车辆计算***504、一个或多个传感器***506、一个或多个发射器508、一个或多个通信连接510、至少一项直接连接512(例如,用于与车辆502以交换数据和/或提供电力),以及一个或多个驱动模块514。在一些情况下,车辆502可以包括车辆计算***504的附加实例。
车辆计算***504可以包括:一个或多个处理器516;以及以进行通信的方式与一个或多个处理器516相耦合的存储器518。在图中所示的示例中,车辆计算***504的存储器518存储有定位***520、感知***522、规划***524、一个或多个***控制器526、一个或多个地图528和诊断***530。在示例中,诊断***530可以和上述诊断***132相同或包括类似于的功能。尽管出于说明目的被描述为驻留在存储器518中,但预期定位***520、感知***522、规划***524、一个或多个***控制器526、地图528和/或诊断***530可以附加地或替代地可由计算***504访问(例如,存储在车辆502的不同部件中和/或可由车辆502访问(例如,远程存储))。而且,尽管某些特征和功能可以归因于各种***和组件,但是诸如仅作为示例。特征和功能可以与其他或附加组件相关联和/或由其执行。此外,归因于特定***或组件的某些功能可能分布在多个***/组件中。
在至少一项示例中,定位***520可以包括从传感器***506接收数据以确定车辆502的位置的功能。在一些实施方式中,定位***520可以包括和/或请求/接收环境的诸如地图528的三维地图,并且可以连续地确定地图内自动驾驶车辆的位置。在某些情况下,定位***520可以使用SLAM(同时定位和映射)或CLAMS(同时校准、定位和映射)来接收图像数据,例如来自飞行时间传感器、LIDAR数据、RADAR数据、SONAR数据、IMU数据、GPS数据、车轮编码器数据或它们的任何组合等以准确地确定自动驾驶车辆502的位置。在一些情况下,定位***520可以通过诸如依据本申请所公开的技术方案发布数据的方式向车辆502的各个组件提供数据,借以确定用于生成候选轨迹的自动驾驶车辆的初始位置。
在一些示例中,感知***522可以包括执行对象检测、分割和/或分类的功能。例如,感知组件522可以提供处理后的传感器数据,该数据指示车辆502附近的对象的存在和/或该对象作为对象类型的分类(例如,车辆、行人、骑行者、动物、建筑物、树木、路面、路缘石、人行道、未知物等)。在其它示例和/或替代性示例中,感知***522可以例如通过发布指示与检测到的实体相关联的一个或多个特征和/或实体所在的环境。在一些示例中,与实体相关联的特征可以包括,但不限于,x位置(全局位置)、y位置(全局位置)、z位置(全局位置)、方向、实体类型(例如,分类)、实体的速度、实体的范围(大小)等。与环境相关联的特征可以包括但不限于:环境中另一个实体的存在、状态环境中其他实体的信息、一天中的时间、一周中的一天,一个季节、天气状况、黑暗/光亮的指示等。
在一些情况下,规划***524可以确定车辆502穿过环境要遵循的路径。例如,计划***524可以确定各种路线和轨迹以及各种细节水平。例如,规划***524可以确定从第一位置(例如,当前位置)行进到第二位置(例如,目标位置)的路线。出于本次讨论的目的,路线可以是用于在两个位置之间行驶的一系列路标。作为非限制性示例,路标可以包括:街道、十字路口、全球定位***(GPS)坐标等。另外,规划组件524可以生成用于沿着从第一位置到第二位置的路线的至少一部分引导自动驾驶车辆的指令。在至少一项示例中,规划组件524可确定如何将自动驾驶车辆502从路标序列中的第一路标引导到序列中的第二路标。在一些示例中,指令可以是轨迹或轨迹的一部分。在一些示例中,可以根据后退地平线技术基本上同时生成多个轨迹(即,在技术容限内)。可选择具有最高置信水平的后退地平线中的多个轨迹中的单个轨迹来操作车辆。
在其他示例中,规划***524可替代地或附加地使用来自感知***522的数据,例如通过订阅接收的数据来确定车辆502穿越环境所要遵循的路径。例如,规划***524可以从感知***522接收关于与环境相关联的对象的数据。使用该数据,规划***524可以确定从第一位置(例如,当前位置)行进到第二位置(例如,目标位置)的路线,以避开环境中的这些物体。
在至少一项示例中,车辆计算***504可以包括一个或多个***控制器526,其可以配置为控制转向、推进、制动、安全、发射器、通信和其他***车辆502。***控制器526可以与驱动模块516和/或车辆502的其他组件的对应***通信和/或控制这些***,其中车辆502可以被配置为根据从规划***524提供的轨迹行驶。在本文描述的技术方案中,***控制器526可以订阅以接收信息关于车辆502可以沿其行驶的轨迹,例如,由规划***524公布。
尽管不是必需的,但在一些情况下,定位***520、感知***522、规划***524和***控制器526可以连续地动作。例如,定位***520可以接收数据,例如传感器数据,并且使用传感器数据生成和输出定位***数据。然后可以在感知***522处接收定位***数据,感知***522可以使用定位***数据来生成感知***数据。然后,可以在规划***524处接收感知***数据,规划***524可以使用这种感知***数据来生成规划***数据,等等。然而,在其他情况下,数据可以在多个不同***处接收(并由其使用)以执行许多不同的功能。
在一些示例中,可以将地图528存储在远程计算设备上。在一些示例中,可以基于特征(例如,实体类型、一天中的时间、一周中的哪一天、一年中的季节等)来存储地图528。存储多个映射528可以具有类似的存储器需求,但是提高可以访问映射中的数据的速度。在至少一些示例中,可以根据这里描述的实施方式公布地图528和/或与地图528相关联的信息。例如,车辆计算***504或一些其他***可以发布关于至少部分由地图528通知的道路网络的信息。
诊断***530可以被配置为确定用于车辆502的安全操作的参数,以确保车辆502在安全参数内操作和/或当车辆不在安全范围内操作时控制车辆参数。如图所示,诊断***530可以包括:延迟组件532、CPU使用率组件534和安全状态组件536。虽然诊断***530被示为存储器518中的单块,但是单独的诊断***530可以是包括在***和/或组件中或可供个人访问。作为非限制性示例,定位***520可以具有其自身相关联的安全状态组件,而与安全状态组件536和/或任何其他安全状态组件无关。例如,诊断***530的安全状态组件可以将车辆配置为响应于定位***520处的异常性能事件执行安全停止或采取一些安全相关动作。类似地,异常事件可以由仅与定位***520相关联的延迟组件532和/或CPU使用率组件来确定。
在一些实施方式中,延迟组件532可以执行与***延迟相关联的功能。例如,延迟组件532可以从与车辆502相关联的一个或多个***接收与数据的接收、创建和/或输出相关信息。在一些示例中,延迟组件532可以接收标签信息,例如作为与标签122相关联的信息。使用该信息,延迟组件532可以计算与一个或多个***相关联的延迟。举例而言,延迟组件532可以确定车辆范围的延迟,例如,通过跟踪传感器之一生成的数据或一些其他数据输入传播通过各种***并最终用于控制车辆502所花费的时间。在其他示例中,延迟组件532可用于确定车辆502上所有***(或单个***)的特定子集的延迟。例如,因为标签122累积唯一标识符126,延迟组件532可以通过跟踪一个或多个特定数据实例为任何一个或多个***生成延迟。此外,因为标签122还可以包括时间戳信息124,所以延迟组件532还可以确定任何时间窗口的延迟。在一些示例中,延迟组件532可以执行在一时间段(例如,时间窗口,例如2秒)内的延迟的统计聚合以确定关于组件的统计信息。
延迟组件532还可以将所确定的延迟(或聚合信息的统计学属性)与延迟阈值或延迟范围进行比较,以确定车辆502或车辆502的某个***是否正常运行。作为非限制性示例,车辆502上的每个***,例如,本地化***520、感知***522、传感器***506等***中的每一个***可以具有不同的可接受的延迟范围,即等于或高于第一阈值延迟和/或等于或低于第二阈值(例如,更高的)阈值延迟。在一些示例中,计算可以包括:将延迟与先前收集的标称操作行为的最小值、最大值、平均值、方差/标准偏差等进行比较。在此处描述的实施方式中,延迟组件532可以将针对给定***确定的延迟与该***的可接受延迟范围进行比较。当计算出的延迟处于可接受的范围内时,可以认为车辆正在按预期运行。然而,当计算的延迟在可接受的延迟范围之外时,延迟组件532可以识别异常延迟事件。在一些示例中,可以将关于异常延迟事件的信息提供给安全状态组件536,借以采取一些安全措施。下面更详细地描述安全状态组件536。
延迟组件532还可以被配置为确定可接受的延迟范围。举例而言,延迟组件532可以在诸如图2A所示的一个或多个特定***的扩展运行时间上接收数据。通常,如图2B所示,使用这样的数据,延迟确定组件可以确定与所接收到的数据相关联的分布函数。分布函数可以表征与***相关联的延迟历史,并且该历史可以告知***的安全操作延迟范围。例如,该范围可以是包括某个百分比的范围,例如所有确定的延迟中的95%或100%。
诊断***530的CPU使用率组件534可以包括与车辆502的***的CPU使用率相关联的功能。例如,CPU使用率组件534可以逐个***地量化CPU使用率,逐个处理和/或逐个功能的基础来确定***/处理/功能何时在可接受的运行范围之外运行。例如,CPU使用率组件534可以生成功能来执行结合图3所示的方案300一般描述的动作。在一些情况下,CPU使用率组件534可以生成车辆502和/或车辆502的一个或多个***运行的所有处理和/或功能的数据结构。例如,CPU使用率组件534可以包括审查与车辆502的一个或多个***相关联的处理日志并生成表示处理的结构的功能,例如堆栈追踪。车辆502的一个示例,每个***通常重复执行尽可能多的相同处理。例如,定位***520可以周期性地接收传感器数据并处理传感器数据以生成和输出关于车辆在环境中的位置的数据。虽然该示例极大地简化了与定位***520相关联的处理,但是定位***520确实具有离散数量的处理和功能,定位***以足够的规律性进行,仅通过跟踪与定位***524一时间段,例如以秒的数量级,可以基本上编译用于由本地化***520承担的所有处理和功能的一个或多个完整的堆栈轨迹。
还如上文结合图所讨论的并如图3所示,CPU使用率组件534可以将与处理和/或功能相关联的数据结构表征为包括多个节点的树状图。每个节点可以具有相关联的特征ID,该特征ID可以是诸如整数、多个函数中一个函数的表示的唯一ID。因此,并且如上所述,例如,几个节点可以具有相同的功能ID,这是因为一些功能可以在整个***或跨***的多个处理中执行。因此,为了区分不同处理中的相同功能,CPU使用率组件534还可以为树状图中的每个节点生成唯一节点ID。
CPU使用率组件534还可以通过确定在离散时间在CPU上运行的功能来对CPU上的操作进行采样。虽然也可以使用其他频率,但在一些示例中,CPU使用率组件534可以排他性地以大约95Hz和大约100Hz之间的速率进行采样(例如,以区别于与车辆***相关联的标准频率)。作为采样的结果,CPU使用率组件534可为每个样本生成数据分组,该数据分组包括标识CPU上功能的节点ID以及与获得样本的时间相关联的时间戳。
在一些实施方式中,CPU使用率组件534可以使用信息通过采样获得的信息以生成车辆的CPU使用率历史记录。例如,CPU使用率历史可以被可视化为图,如图4中所示的图400a。举例而言,该图可以是一种相对于CPU的整体使用而言为***、处理及功能识别CPU使用率的有效工具。此外,由于本文所述的技术方案会生成与具有时间戳的执行功能(通过节点ID标识)相关联的数据分组,所以CPU使用率组件534还可确定特定时间或时间范围内的CPU使用率。作为非限制性示例,当怀疑***运行不正常时,CPU使用率组件534可以为该特定***生成CPU使用率信息。类似地,当怀疑在特定时间运行不正常时,CPU使用率组件534可以(例如,通过取回具有对应于该时间段的时间戳的数据分组并从关联的节点ID建立堆栈轨迹)确定包括特定时间的时间段的CPU使用率。
在另外的实施方式中,CPU使用率组件534可以将确定的CPU使用率与CPU使用率阈值或与CPU使用率范围进行比较,以确定车辆502或车辆502的某个***是否正常运行。作为非限制性示例,车辆502上的每个***,例如定位***520、感知***522、传感器***506中的每一个等,可以具有不同的可接受的CPU使用率范围。换句话说,每个***可能必须共享CPU使用率,因此每个***可能预期以等于或高于第一阈值使用和/或等于或低于(较高的)第二阈值使用使用。正如所意识到的是,***之间的阈值可以是不同的。此外,范围和/或预期的CPU使用率可能是动态的。例如,因为这里描述的***可以包括许多相互关联的子***,所以整个***的总体CPU使用率可能比任何子***的CPU使用率更为重要。因此,例如,可以在一些示例中确定多个(或所有)子***的可接受的CPU使用率。因此,例如,对于给定的时间段,只要其他***执行的计算量较少,某些***可能具有相对较高的可接受CPU使用率。
在本文描述的实施方式中,CPU使用率组件534可以将针对给定***(或子***、处理或功能)确定的CPU使用率与关联于该***(或子***、处理或功能)的可接受CPU使用率范围进行比较。当计算出的CPU使用率在可接受范围内时,车辆(或***或处理或功能)可被视为按预期运行。然而,当计算出的CPU使用率在可接受的CPU使用率范围之外时,CPU使用率组件534可以识别出异常CPU使用率事件。在一些示例中,关于异常CPU使用率事件的信息可以被提供给安全状态组件536,其可以控制车辆502采取一些安全动作。下面更详细地描述安全状态组件536。
CPU使用率组件534还可以被配置为确定可接受的CPU使用率范围。例如,CPU使用率组件534可以在一个或多个特定***的扩展运行时间上接收数据,并且CPU使用率组件534可以使用这样的数据确定与接收到的数据相关联的分布函数,通常如图4B所示。在至少一些示例中,分布函数可以被确定为针对整个日志重复确定的时间窗口的CPU使用率的统计平均值。分布函数可以表征与***相关联的CPU使用率历史,并且该历史可以将安全操作CPU使用率范围通知给***。例如,该范围可以是包括某个百分比的范围,例如所有确定的CPU使用率测量值的95%或100%。在图4B中,例如,该范围可以是车辆502上所有CPU使用率的大约4.0%至大约7.0%。
安全状态组件536可以响应于延迟组件532和/或CPU使用率组件534生成确定事件的发生而确定并输出一个或多个动作。例如,安全状态组件536可以启动车辆的安全停止。在一些实施方式中,例如,除了一个或多个正常驾驶轨迹之外,规划***524可以生成安全轨迹作为后备轨迹。因此,当延迟组件532检测到一个或多个***的延迟超出预期或安全操作范围和/或CPU使用率组件534确定***(或处理,或功能)正在使用超出预期或安全操作CPU使用率范围的CPU量,安全状态组件536可使车辆执行此安全停止轨迹。而在其他实施方式中,安全状态组件536可以执行禁用车辆502的某些功能的策略,例如一旦停止车辆便防止其再移动。
在一些示例中,安全状态组件536可以确定与导致车辆停止的动作不同的动作。例如,安全状态组件536可以采取一种或多个缓解策略来缓解所检测到的事件。在一些示例中,此类缓解策略可包括创建向乘客、远程操作员或其他实体发出的警报。例如,警报可以请求实体的帮助。在其他实施方式中,安全状态组件536可以采取行动来重新配置车辆502的***和/或设置。例如,安全状态组件536可以防止某些数据被接收和/或发布,例如,试图减少网络流量,从而减少延迟。例如,过多的网络流量可能是造成过度延迟的常见原因。其他缓解策略可包括降低车辆的速度。例如,因为与或延迟和/或CPU使用率相关联的阈值可能与安全相关,所以车辆可能能够以较低的速度以较高的延迟保持安全操作。因此,例如,当车辆移动得越慢和/或越大的延迟可以容忍时,可以延长接收关键数据的周期。类似地,当车辆行驶越慢时,可接受的延迟可能越长。
尽管前述示例说明了为了确保在车辆运行时对车辆的安全控制的目的而生成延迟数据和/或CPU使用率数据,但是也可以设想其他示例使用情况。例如,这里描述的用于生成延迟数据和/或CPU使用率数据的技术也可以用于比较不同车辆和/或不同软件版本的功能。在一些示例中,通过使用这里描述的技术为多个软件版本生成频率分布数据(用于延迟和/或用于CPU使用率数据),诊断***530可以容易地确定更新的软件如何影响***。因此,诊断***530和与其相关联的功能可以用作不仅用于车辆安全操作而且用于测试和***设计的有价值的工具。
在至少一项示例中,传感器***506可以包括飞行时间传感器、位置传感器(例如,GPS、罗盘等)、惯性传感器(例如,惯性测量单元(IMU)、加速度计、磁力计、陀螺仪等)、LIDAR传感器、RADAR传感器、SONAR传感器、红外传感器、相机(例如RGB相机、IR相机、强度相机、深度相机、抖动时间相机等)、麦克风传感器、环境传感器(例如,温度传感器、湿度传感器、光传感器、压力传感器等)、超声波换能器、车轮编码器等。传感器***506可以包括上述传感器或其他类型的传感器中的每一个传感器的多个实例。例如,飞行时间传感器可以包括位于车辆502的拐角处、前面、后面、侧面和/或顶部的单独的飞行时间传感器。作为另一个例子,摄像机传感器可以包括多个摄像机,这些摄像机设置在车辆502的外部和/或内部周围的各个位置。传感器***506可以向计算***504提供输入信号,例如,通过根据这里描述的示例发布传感器数据。
如上所述,车辆502还可包括一个或多个用于发射光和/或声音的发射器508。在该示例中,发射器508包括内部音频和视觉发射器,借以与车辆502的乘客进行通信。作为示例而非限制,内部发射器可以包括扬声器、灯、标志、显示屏、触摸屏、触觉发射器(例如,振动发射器和/或力反馈发射器)、机械执行器(例如,安全带拉紧器、座椅***、头枕***等)等。在该示例中,发射器508还包括外部发射器。作为示例而非限制,该示例中的外部发射器包括用于发出行驶方向信号的信号灯或车辆动作的其他指示器(例如,指示灯、标志、灯阵列等),以及一个或多个音频发射器(例如,扬声器、扬声器阵列、喇叭等),借以与行人或其他附近的车辆进行声音上的通信,而其中的一个或多个包括声束转向技术。
车辆502还可包括一个或多个通信连接510,这种通信连接可在车辆502与一个或多个其他本地计算设备或远程计算设备之间进行通信。例如,一个或多个通信连接510可以使车辆502上的其他本地计算设备和/或一个或多个驱动模块514。一个或多个连接510可以允许车辆与其他附近的计算设备(例如,其他附近的车辆、交通信号等)进行通信。通信连接510还可以使车辆502能够与远程远程操作计算设备或其他远程服务进行通信。
通信连接510可以包括物理和/或逻辑接口,用于将计算***504连接到另一个计算设备或网络(例如,因特网),例如网络542。举例而言,510可以通过诸如IEEE 802.11标准定义的频率、短距离无线频率(例如,蓝牙)、蜂窝通信(例如2G、3G、4G、4G LTE、5G等)或任何合适的方法使相应的计算设备能够与其他计算设备对接的通信协议。
如上所述,直接连接512可以将设备物理耦合到车辆502,例如以交换数据和/或供电。在一些示例中,例如,直接连接512可以提供对一个或多个客户端计算***的访问点。
车辆502还可以包括驱动模块514。在一些示例中,车辆502可以具有单个驱动模块514。在至少一项示例中,如果车辆502具有多个驱动模块514,则单独的驱动模块514可以定位在车辆502的相对端部(例如,前部和后部等)。在至少一项示例中,驱动模块514可以包括一个或多个传感器***,以检测驱动模块514和/或车辆502的周围环境的状况。传感器***可以包括:用以感测驱动模块的车轮的旋转的一个或多个车轮编码器(例如,旋转编码器),用以测量方向驱动模块的方向与加速度的惯性传感器(例如,惯性测量单元、加速度计、陀螺仪、磁力计等),用以声学方式检测驱动模块周围物体的相机或其他图像传感器、超声波传感器,LIDAR传感器,雷达传感器等。某些传感器(例如车轮编码器)可能是驱动模块514所特有的。在某些情况下,驱动模块514可以重叠或补充车辆502的对应***(例如,传感器***506)。
驱动模块514可以包括许多车辆***,这些车辆***包括:高压电池,用于驱动车辆的电动机,将来自电池的直流电转换成交流电以供其他车辆***使用的逆变器,包括转向马达和转向齿条(可以是电动的)的转向***,包括液压致动器或电动致动器的刹车***,包括液压组件和/或气动组件的悬架***,用于分配制动力以减轻牵引力损失并保持控制的稳定性控制***,HVAC***,照明设备(例如,照明前照灯/尾灯的照明设备,以照亮车辆的外部环境)以及一个或多个其他***(例如,冷却***,安全***,车载充电***以及诸如DC/DC转换器、高压接线接头、高压电缆、充电***、充电端口等的其它电学组件)。另外,驱动模块514可以包括:驱动模块控制器,该驱动模块控制器可以接收和预处理来自传感器***的数据并控制各种车辆***的操作。在一些示例中,驱动模块控制器可以包括:一个或多个处理器以及与该一个或多个处理器通信耦合的存储器。存储器可以存储一个或多个模块以执行驱动模块514的各种功能。此外,驱动模块514还可以包括一个或多个通信连接,该通信连接使得各个驱动模块能够与一个或多个其他本地或远程计算设备。
同样如图所示。如图5所示,车辆502还可以包括总线538,车辆502的每个组件和***可以通过该总线传输信息。总线538通常可以表示组件发送和/或接收数据所经由的组件。在至少一项示例中,发布者可以通过总线538向订阅者发布信息和/或订阅者可以通过总线538接收信息。总线538可以是任何通信网络或平台,数据和信息可以通过其在车辆502的***和组件之间发送使用一个或多个协议。图5中的箭头540可以示出数据相对于总线538的方向性。因此,作为非限制性示例,安全状态组件536可以向总线538发布数据(例如,安全停止消息),并且,可以订阅接收安全停止消息的驱动模块514可以接收所发布的消息并实现安全停止。在另一个示例中,定位***520可以发布姿态信息,并且规划***524可以接收姿态信息以确定应该沿着其控制车辆的轨迹。可以理解的是,这些只是几个非常简单的例子;各种***和组件可以,例如通过订阅信息的主题或类型,将信息发布到总线538和/或从总线接收信息。虽然,图5中示出了通过总线538实现的发布/订阅方案,但也可以另外地或是替代性地使用其他通信结构。
如上所述,图5还图示了一个或多个远程计算***544。例如,远程计算***544可以是例如经由网络542与车辆502通信的一个或多个计算设备。在其他示例中,远程计算***544可以(例如,通过直接连接512)直接连接到车辆502。
远程计算***544可以包括:处理器546;以及以可进行通信的方式与处理器546相耦合的存储器548。在所示示例中,远程计算设备544的存储器548存储有诊断***550,此诊断***包括:延迟组件552、CPU使用率组件554和安全状态组件556。在至少一项示例中,诊断***550可以对应于诊断组件530的至少一部分,其中延迟组件552的对应于延迟组件532、CPU使用率组件554对应于CPU使用率组件534和/或安全状态组件556对应于安全状态组件536。例如,使用延迟组件552和/或CPU使用率组件554的诊断***550可以确定与车辆的一个或多个***相关联的异常事件。在其他示例中,远程计算***544,例如,使用诊断***550,可以接收和/或访问标签122和/或CPU使用分组328以确定与性能特征相关联的阈值和/或预期范围,例如延迟和CPU使用率。在远程计算设备上进行这种确定可能比在车上进行这种确定更为可取。此外,远程计算***544还可以从其他车辆接收性能数据,并且可以将来自那些其他车辆的数据并入对各种***的统计分析中。此外,安全状态组件556可以对应于安全状态组件536的至少一部分。例如,当延迟组件552和/或CPU使用率组件554中的一个组件或两个组件检测到事件时,安全状态组件556可以发出控制,借以在安全模式下操作车辆502。延迟组件552还可以执行上面结合延迟组件532描述的其他诊断和/或***规划功能,并且CPU使用率组件554还可以执行上面结合CPU使用率组件534描述的其他诊断和/或***规划功能。
车辆502的处理器516和远程计算***544的处理器546可以是能够执行指令以处理数据并执行如本文所述的操作的任何合适的处理器。作为示例而非限制,处理器516和处理器546可包括:一个或多个中央处理单元(CPU)、图形处理单元(GPU)或者处理电子数据以将电子数据转换为可以存储在寄存器和/或存储器中的其他电子数据的任何其它设备或设备的一部分。在一些示例中,只要集成电路(例如,ASIC等)、门阵列(例如,FPGA等)和其他硬件设备被配置为实现编码的指令,它们也可以被认为是处理器。
存储器518和存储器548是非暂时性计算机可读介质的示例。存储器518和存储器548可以存储操作***和一个或多个软件应用程序、指令、程序和/或数据,借以实现本公开所述的方法以及取决于各种***的功能。在各种实施方式中,可以使用任何合适的存储技术来实现该存储器,诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪存类型的存储器或者能够存储信息的任何其他类型的存储器。本文所描述的体系结构、***和单个元件可以包括许多其他逻辑组件、程序组件和物理组件,本公开所涉及的示例仅在说明书附图中示出了上述组件。
在某些情况下,本公开中讨论的一些或所有组件的各方面可以包括任何模型、技术和/或机器学习技术。例如,在某些情况下,存储器518和存储器548中的组件可以被实现为神经网络。
如本文所述,示例性神经网络是一种生物激励技术,其使输入数据通过一系列连接的层生成输出。神经网络中的每一层还可以包括另一个神经网络,或者可以包括任意数量的层(无论是否卷积)。在本公开全文中可以理解的是,神经网络可以利用机器学习,机器学习可以指的是广泛的这类技术,其中基于学习的参数生成输出。
尽管在神经网络的上下文中进行了讨论,但是可以根据本申请中使用任何类型的机器学***滑化(LOESS)、基于实例的技术(例如,岭回归、最小绝对收缩和选择算子(LASSO)、弹性网、最小角度回归(LARS))、决策树技术(例如,分类和回归树(CART)、迭代二分法器3(ID3)、卡方自动交互检测法(CHAID)、决策树桩、条件决策树)、贝叶斯技术(例如,朴素贝叶斯技术、高斯朴素贝叶斯技术、多项式朴素贝叶斯技术、平均一依赖估计量(AODE)技术、贝叶斯信念网络(BNN)技术,贝叶斯网络技术)、聚类技术(例如,k均值、k中位数、期望最大化(EM)、分层聚类)、关联规则学习技术(例如,感知机、反向传播、霍普菲尔德网络、径向基函数网络(RBFN)、深度学习技术(例如,深玻尔兹曼机(DBM)、深层信念网络(DBN)、卷积神经网络(CNN)、堆叠式自动编码器),降维技术(例如,主成分分析(PCA)、主成分回归(PCR)、偏最小二乘回归(PLSR)、Sammon映射、多维标度(MDS)、投影追踪、线性判别分析(LDA)、混合物判别分析(MDA)、二次判别分析(QDA)、灵活判别分析(FDA)、集成技术(例如,增强、引导聚集算法(Bagging)、AdaBoost、堆栈泛化(混合)、梯度增强机(GBM)、梯度增强回归树(GBRT)、随机森林、SVM(支持向量机)、监督学习、无监督学习、半监督学习等。
体系结构的其他示例包括神经网络,例如ResNet50、ResNet101、VGG、DenseNet、PointNet等。
图6至图9示出了根据本公开的实施例的示例处理。这些处理被图示为逻辑流程图,其中的每个操作表示可以在硬件、软件或其组合中实现的操作序列。在用软件实现的情况中,这些操作表示存储在一个或多个非暂时性计算机可读存储介质上的计算机可执行指令,当由一个或多个处理器执行时,该计算机可执行指令使计算机或自动驾驶车辆执行所列举的操作。通常,计算机可执行指令包括执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。描述操作的顺序不旨在理解为限制,并且可以将任何数量的所描述的操作组合为任何顺序和/或并行执行流程。
图6描绘了用于确定与***延迟相关联的事件已经发生并且响应于该事件将车辆置于安全状态的示例处理600。例如,处理600的一些或全部可以由图1所示的诊断***132和/或由图5所示的部件中的一个或多个部件执行。例如,处理600的一些或全部可以由车辆计算***504(例如,使用诊断***530)执行和/或由远程计算***544(例如,由诊断***550)执行。
在操作602处,处理600可以包括从各个子***接收标签信息,标签信息包括唯一ID和时间戳信息。举例而言,并且如本文所述,自动驾驶车辆的***可以生成数据分组并输出数据分组以供下游使用和/或进行其他处理。在示例中,新数据的每个实例(例如,生成的)都标有唯一ID。因此,每个唯一ID标识引入***的不同数据实例,例如离散数据分组。时间戳信息可以包括:指定生成数据分组(或数据分组中的底层数据)的时间的时间戳,和/或指定***输出新数据的时间的时间戳。如上文参考图1所述,当一个或多个***对数据进行动作(例如,进行处理)时,时间戳和***标识信息可以被添加到与生成的数据相关联的标签。在这个例子中,时间戳信息可以包括指定通过***接收数据的一个或多个时间的一个或多个时间戳。因此,并且使用图1中的实例,例如,在诊断***132的延迟确定组件134处,操作602可包括接收多个标签中的一个,标签122a。
在操作604处,处理600包括基于标签信息确定一个或多个子***的延迟。例如,可以通过随着由子***传播数据对与特定数据相关联的时间戳进行比较来确定自动驾驶车辆的一个或多个子***的延迟。在一个例子中,具体参考图1,当生成/输出数据108时,唯一ID 126b与数据108相关联。此外,随着数据108通过车辆的各种***传播,这些***更新原始标签和/或生成新标签,新标签包括唯一ID 126b、新时间戳信息(与该***相关联)和***标识信息(例如将时间与***相关联),例如数据116和数据118,以及与从数据108间接生成的数据(例如,使用数据116和数据118(因此间接使用数据108)的数据120)相关联的附加标签。因此,包括第一计算***110、第二计算***112和第三计算***114的***延迟可以通过由这些***跟踪数据108(在该示例中)来确定。当然,这只是一个简单的例子,仅用于说明;使用包括唯一标识符和时间戳的标签的这里描述的技术可允许通过复杂***(例如,自动驾驶车辆102)容易地跟踪延迟。如这里描述的,延迟可以是瞬时或接近瞬时的延迟,或者可以根据对在时间窗口上收集的数据(或标签)执行的统计分析来确定延迟。
在操作606处,处理600可以包括确定延迟是否在可接受的范围内。例如,如上所述,诸如自动驾驶车辆的复杂计算***可包括多个协同工作的子***。为确保正常运行,可能需要每个子***在特定延迟范围内操作。例如,可能需要子***以及时的方式输出数据,以供***的其它下游组件作出进一步处理。因此,每个子***可以具有其自己的延迟范围,其可以根据这里描述的技术来确定,尽管不同的子***可以具有相似或相同的范围。
如果在操作606处确定在操作604处确定的接受延迟在可接受范围内,则在操作608处,处理600包括根据命令信号来控制车辆。例如,如果每个子***是在可接受的范围内操作时,可以使用与子***相关联的处理来控制***,例如车辆。
可替换地,如果在操作606处确定在操作604处确定的延迟在可接受的延迟范围之外,例如,因为延迟远低于最小阈值,或者更可能地,延迟高于最大延迟容差,处理600可以在操作610处确定与子***相关联的事件。如上所述,车辆的***未能及时接收、处理、生成和/或输出数据可能会造成不安全的操作条件。
因此,在操作612处,处理600可以包括根据安全状态来控制车辆。例如,当在操作606处确定异常延迟事件已经发生时,本文描述的技术可以控制车辆以缓解潜在的不安全状况。如本文所述,实现安全状态可以包括采取任何数量的行动,包括但不限于,用信号通知延迟事件已经发生,采取行动来限制非关键功能(例如,减轻不适当的网络流量和/或处理、使车辆减速、执行安全停车轨迹或将车辆置于车辆的操作被禁用的状态等)。
图7示出了用于确定与***CPU使用率相关联的事件已经发生并且响应于该事件将车辆置于安全状态的另一个示例处理700。例如,处理700中的一些或全部可以由图5中所示的一个或多个组件来执行。例如,部分或全部处理700可以由车辆计算***504(例如,使用诊断***530)和/或由远程计算***544(例如,由诊断***550)执行。
在操作702处,处理700包括接收表示一个或多个处理中的功能的唯一节点ID和/或与唯一节点ID相关联的时间戳信息。例如,并且如本文所述,由自动驾驶车辆执行的处理和/或功能可以表示为数据结构(例如,前缀树),并且数据结构中的各个节点可以与各个功能相关联。在示例中,每个节点还可以具有关联的唯一节点ID。因此,每个唯一节点ID标识与数据处理相关联的功能。因为每个节点具有唯一节点ID且数据结构也是已知的,所以可以仅根据唯一节点ID来确定相关联的堆栈轨迹。时间戳信息可以包括指定在此处描述的采样处理期间对唯一节点ID进行采样的时间的时间戳,如本文所述。如图3所示,唯一节点ID和时间戳可以存储为分组328。因此,操作702可以包括例如在诊断***530的CPU使用率组件534处接收数据分组328。
在操作704处,处理700包括在一时间段内基于唯一节点ID确定一个或多个***或功能的CPU使用率。例如,在一时间段内多个采样时间中的每一个的唯一节点可用于重新创建堆栈轨迹,从而识别占用CPU的功能。聚合针对在整个时间段内的此数据会识别针对每个功能的CPU使用率相对于所有其他功能的CPU使用率。作为非限制性示例,可以至少部分地基于功能相对于所有调用的调用次数和/或相关联的堆栈轨迹的确定来确定CPU使用率的百分比。
在操作706处,处理700可以包括确定CPU使用率是否在可接受的范围内。例如,如上所述,复杂的计算***,例如自动驾驶车辆,可以包括多个协同工作的子***(它们可能不以线性方式运行)。为确保正常运行,可能需要每个子***在特定的CPU使用率范围内操作。因此,每个子***可以具有其自己的CPU使用率范围,其可以根据这里描述的技术来确定。不同的子***可能具有相似或相同的CPU使用率范围。
如果在操作706处确定在操作704处确定的CPU使用率在可接受范围内,则在操作708处,处理700包括根据命令信号控制车辆。例如,如果每个子***都在可接受的范围内操作,则可以使用与子***相关联的处理来控制***,例如车辆。
或者,如果在操作706处确定在操作704处确定的CPU使用率在可接受的CPU范围之外,例如,因为CPU使用率远低于最小阈值,或者更有可能的是,CPU使用率高于最大使用容限,则在操作710处,处理700可以确定与子***相关联的事件。如上所述,车辆***未能及时接收、处理、生成和/或输出数据可能会造成不安全的操作条件。
因此,在操作712处,处理700可以包括根据安全状态控制车辆。例如,当在操作706处确定异常CPU使用率事件已经发生时,本文描述的技术可以控制车辆以缓解潜在的不安全状况。如本文所述,实现安全状态可以包括采取任何数量的行动,包括但不限于,用信号通知延迟事件已经发生,采取行动来限制非关键功能(例如,减轻不适当的网络流量和/或处理,使车辆减速、执行安全停车轨迹或将车辆置于车辆操作被禁用的状态等)。
图8示出了根据本公开的示例的用于确定CPU使用率的示例性处理800。例如,处理800中的一些或全部可以由图5中所示的一个或多个组件来执行。例如,处理800的一些或全部可以由车辆计算***504(例如,使用CPU使用率***534)执行和/或由远程计算***544(例如,通过CPU使用率***554)执行。
在操作802处,处理800包括识别与一个或多个计算***相关联的处理,每个处理包括一个或多个功能。举例而言,复杂的***(如自动驾驶车辆)包括许多执行不同处理和功能的子***。操作802可以识别这些处理和各个功能。参照图3所示的示例,本文描述的技术可以生成将唯一功能标识符与由车辆执行的每个计算功能相关联的简单表格。
在操作804处,处理800可以包括生成表示处理的数据结构,该数据结构包括表示功能的节点。例如,本文描述的技术方案可以生成数据结构,例如表征由车辆执行的所有处理和功能的前缀树。前缀树数据结构可以包括多个分支,每个分支表示堆栈轨迹,其中每个节点表示功能或堆栈帧。同样在此处描述的实施方式中,数据结构可以将唯一功能标识符存储为节点。如本文进一步描述的,虽然车辆包括***之间的相对复杂的交互,但是跨多个***的功能可以是相同的,并且***中的个体重复地执行相同的操作。因此,可以在相对较短的时间段内确定每个处理和功能,例如通过观察车辆的运行,可以从中生成一个基本完整的前缀树。
在操作806处,处理800可以将唯一节点ID与每个节点相关联。举例而言,并且如图3所示,一旦生成数据结构(例如,前缀树),这里描述的技术可以为每个节点分配唯一节点ID。例如,唯一节点ID可以是唯一整数。在一些实施方式中,唯一节点ID用于消除不同***和/或处理中的相同功能之间的歧义,如本文进一步描述的。
在操作808处,处理800可以对计算***的操作进行采样以确定在每个采样时间在CPU上运行的功能。例如,这里描述的技术方案可以在每次采样时确定节点ID在CPU上。沿着图3的时间线示出了根据本文描述的技术的采样的示例。又如本文所述,采样可以在任何频率进行,但是在一些实施方式中,该频率可以被选择为不同于车辆的一个或多个***的一个或多个操作频率的频率。
如本文所述,使用在操作804处生成的数据结构,在操作808处获得的样本可用于生成关于利用CPU的功能的信息。更具体地,使用唯一节点ID,可以在收集样本的整个时间和/或其部分期间重新创建与CPU上功能相关联的堆栈轨迹。例如,CPU使用率可以用于生成诸如示例4A中所示的和上面描述的火焰图400a之类的图。此外,虽然图8示出了串行执行的操作802、804、806和808,但是这些操作中的一些或全部可以并行执行。作为非限制性示例,在一些实例中,本文描述的技术可以基于采样的结果识别功能、构建数据结构和/或分配唯一节点ID。例如,由于车辆上的许多处理可能以相对较高的频率重复,因此可以在相对较短的时间内对所有功能进行采样,并且可以从采样中收集数据结构。
在操作810处,处理800可以生成数据分组,其对于每个样本包括时间戳和/或对应于所确定的功能的唯一节点ID。举例而言,如上所述,在808处确定的功能具有对应的唯一节点ID,并且操作810可以将该唯一节点ID与时间戳(例如,对应于采样时间的时间戳)相关联。可在操作810处生成的数据分组的示例示出于图3中。
在操作812处,处理800可以在计算***处接收对应于异常(例如,延迟事件)的时间标识。例如,上述处理600可用于确定延迟事件并基于那些延迟事件采取行动。然而,在一些实现中辨别延迟的来源可能是有用的。正如关于处理600所讨论的,可以确定与延迟事件相关联的时间,并且可以在812处接收这样的时间。当然,与延迟事件相关联的时间只是一个示例。在其他示例中,操作812可以接收对应于任何其他事件的时间。或者,时间可能是随机采样时间或定期采样时间,例如,以允许处理800执行CPU上处理和***的***检查。
在操作814处,处理800可以包括取回针对包括时间的时间范围的数据分组。例如,因为数据分组具有相关联的时间戳,所以可以容易地取回具有确定范围内的时间戳的数据分组,以进行调查。在一些示例中,当在操作812处提供特定时间时,可以将大约一秒到大约四秒的时间帧确定为用于调查CPU使用率的范围,并且操作814可以取回针对该时间范围内的数据分组。在一些示例中,该范围可以更长或更短。然而,可以意识到的是,这里描述的技术提供了对任何时间范围的使用数据的随时取回。此外,因为可以在车外访问数据,所以可以测试和/或使用不同车辆上的类似***和/或软件的性能来确定范围、事件等,如本文所述。
在操作816处,处理800可以确定时间范围内的CPU使用率。例如,并且如本文进一步描述的,包括在814处取回的数据分组中的唯一节点ID可用于重新创建针对时间范围内的CPU上处理,因为每个唯一节点ID可被视为对应于采样时间的叶子节点。此外,该数据结构可用于重新创建与该叶子节点关联的堆栈轨迹。在一些示例中,操作816可以包括生成针对该时间范围的CPU使用率的火焰图或其他可视化。因为这里描述的技术可以提供关于车辆或车辆子***的任何时间或操作的CPU使用率的所需信息。因此,例如,这里描述的技术可以允许诊断和故障排除。
图9示出了确定针对各种性能特征的阈值操作范围的处理900。例如,处理900可用于确定针对一个或多个***的预期或目标延迟范围和/或确定针对一个或多个***的非预期或目标CPU使用率范围。在一些示例中,处理900可以由图5中所示的一个或多个组件来执行。例如,处理900的一些或全部可以由车辆计算***504(例如,使用诊断***530)和/或由远程计算***544(例如,由诊断***550)来执行。
在操作902处,处理900可以包括接收关于一个或多个计算***的性能特性的性能数据(例如,延迟数据或CPU使用率数据)。例如,操作902可以包括接收根据以上结合图1与图2A所描述的处理确定的延迟数据。替代地或者另外,根据以上结合图3与图4A所描述的,操作902可以包括接收CPU使用率数据。在此描述的技术可以允许在逐个***的基础上、针对一个或多个时间范围等考虑信息。在至少一项示例中,图2中所示的图200a说明了当数据经过***时通过跟踪数据生成的延迟数据的接收。尽管提供了延迟和CPU使用率的具体示例作为性能特征,但其他性能特征也可能是令人感兴趣的,并且可以根据处理900来接收并进行处理。
在操作904处,处理900包括生成在一时间段内的性能数据的分布。例如,延迟数据的分布在图2B中示出,并且CPU使用率数据的分布在图4B中所示。当然,这些仅是示例,其他分布可能会有所不同。
在操作906处,处理900可以包括至少部分地基于分布确定一个或多个计算***的预期操作范围。例如,预期操作范围可以是诸如延迟或CPU使用率数据的运行参数很可能存在的的范围。例如,该范围可以是对应于当***正常运行时某些在统计学上确定的性能特征下降的范围。如本文所述,该范围可用于确定异常事件,其可用于控制车辆以确保安全操作。
也可以使用根据处理900确定的范围来执行其他诊断功能。例如,可以使用具有跨版本比较范围的处理900来分析在不同版本的软件上运行的模拟。因此,有可能确定新软件将对***和/或车辆整体的操作生成的影响。
本文描述的各种技术可以在计算机可执行指令或软件(例如程序模块)的环境中实现,这些指令或软件存储在计算机可读存储器中并由一台或多台计算机或其他计算机的处理器或诸如图中所示的其它装置执行。通常,程序模块包括:执行特定功能或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。
其他架构可用于实现本文所描述的功能,并且旨在落入本公开的范围内。此外,虽然上面处于讨论的目的定义了具体的职责分配,但各种功能可以根据情况以不同方式对职责进行分配和划分。
类似地,可以以各种方式和使用不同的手段来存储和发布软件,并且上述的特定软件存储和执行配置可以以多个不同的方式变化。因此,实现上述技术的软件可以分布在各种类型的计算机可读介质上,不限于本公开具体描述的存储器形式。
示例条款
A:一种示例自动驾驶车辆包括:第一传感器,其被配置为生成并输出第一传感器数据;第二传感器,其被配置为生成并输出第二传感器数据;一个或多个处理***,其被配置为生成并输出经处理的数据,经处理的数据是至少部分地基于第一传感器数据或第二传感器数据中的至少一项的;车辆控制器;一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,所述一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以包括以下各项的动作:在车辆控制器处接收多个消息,车辆控制器被配置为至少部分地基于多个消息来生成并输出车辆控制消息;至少部分地基于多个消息或一个或多个车辆控制消息,确定与以下各项中的至少一项相关联的延迟:车辆控制器或一个或多个处理***中的至少一个;至少部分地基于延迟是异常的来确定与自动驾驶车辆相关联的事件;以及至少部分地基于事件来将自动驾驶车辆控制在安全状态中操作,其中多个消息包括:第一消息,此第一消息包括与第一传感器数据的第一实例相关联的第一标识;与第一传感器数据的第一实例相关联的第一时间戳信息;与第二传感器数据的第二实例相关联的第二标识;与第二实例相关联的第二时间戳信息;与一个或多个处理***中的第一处理***相关联的第一***标识;以及与第一处理***相关联的第一***时间戳信息;以及第二消息,此第二消息包括:第一标识、第一时间戳信息、第二标识、第二时间戳信息、与一个或多个处理***中的第二处理***相关联的第二***标识、以及与第二处理***相关联的第二***时间戳信息,并且,其中上述多个车辆控制消息中的车辆控制消息包括:第一信息和第二消息,上述第一信息包括第一标识、第二标识、第一时间戳信息、第二时间戳信息、第一***标识、第一***时间戳信息、车辆控制器标识信息以及与车辆控制器关联的车辆控制器时间戳信息,并且第二信息包括第一标识、第二标识、第一时间戳信息、第二时间戳信息、第二***标识、第二***时间戳信息、车辆控制器标识信息、以及与车辆控制器相关联的车辆控制器时间戳信息。
B:示例A的自动驾驶车辆,其中确定延迟包括:对针对多个车辆控制消息的第一标签信息和第二标签信息执行统计分析。
C:示例A或示例B的自动驾驶车辆,其中多个消息或一个或多个车辆控制消息是在第一时间生成的,该动作进一步包括:在第一时间之前确定与以下各项中的至少一项相关联的预期延迟范围:车辆控制器或一个或多个预处理***中的至少一项;将延迟与预期的延迟范围进行比较;响应于确定延迟在预期延迟范围之外,确定延迟为异常。
D:示例A至示例C中任一示例的自动驾驶车辆,其中将延迟与预期延迟范围进行比较包括以下各项中的一个或多个:比较平均延迟与平均预期延迟,将最大延迟与最大预期延迟进行比较,或将延迟变化与预期延迟变化进行比较。
E:示例A至示例D中任一示例的自动驾驶车辆,所述动作进一步包括:将与所述事件相关联的时间以及所述第一***或所述第二***中的一个的标识确定为所述事件的来源;以及,确定在包括与事件关联的时间在内的时间范围内针对由事件的来源执行的功能的CPU使用率。
F:一个示例***包括:一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:在控制***处接收在一时间段内的多个消息,该控制***被配置为至少部分地基于上述多个消息来输出控制消息;至少部分地基于控制消息或多个消息来确定延迟,其中多个消息包括:第一消息,此第一消息包括与由第一传感器生成的第一传感器数据相关联的第一标识;与第一传感器数据的相关联的第一时间戳;与由第二传感器生成的第二传感器数据相关联的第二标识;与***的第一子***相关联的第一子***标识;以及与第一子***相关联的第一子***时间戳;以及第二消息,此第二消息包括:第一标识、第一时间戳、第二标识、第二时间戳、与***的第二子***相关联的第二子***标识;以及与第二子***相关联的第二子***时间戳,并且其中控制消息包括关联信息,上述关联信息包括:第一标识、第二标识、第一时间戳、第二时间戳、第一子***标识、第二子***标识、控制***标识符和控制***标识。
G:示例F的***,其中确定延迟包括对关联信息执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示延迟的分布函数、表示平均延迟的分布函数或表示最大延迟的分布函数。
H:示例F或示例G的***,其中确定针对该时间段的延迟包括确定第二子***的延迟,该动作进一步包括:确定针对第二子***的延迟阈值,该延迟阈值定义针对第二子***的延迟范围的上限;并且至少部分地基于第二子***的延迟等于或大于延迟阈值来确定事件。
I:示例F至示例H中任一示例的***,其中该***包括自动驾驶车辆,该动作进一步包括:至少部分地基于该事件来控制该自动驾驶车辆以在安全状态下操作。
J:示例F至示例I中任一示例的***,其中针对一时间段,第一子***、第二子***或控制***中的至少一项被配置为第一配置,该时间段是第一时间段,并且所述延迟是第一延迟,所述动作还包括:接收关联信息的第二多个实例,所述第二多个实例与在不同于第一时间段的第二时间段期间生成的第二多个控制消息相关联,针对第二时间段,第一子***、第二子***或驱动控制子***中的至少一项被配置为第二配置;以及至少部分地基于关联信息的第二多个实例来确定针对第二时间段的第二子***的第二延迟。
K:示例F至示例J中任一示例的***,其中该***包括自动驾驶车辆,该动作进一步包括:至少部分地基于第一延迟和第二延迟,确定包括第一配置或第二配置的车辆配置;以及根据车辆配置来控制自动驾驶车辆。
L:示例F至示例K中任一示例的***,其中确定车辆配置包括:响应于确定第一延迟低于第二延迟而确定包括第一配置的车辆配置。
M:根据示例F至示例L中任一示例所述的***,所述动作还包括:至少部分地基于所述延迟来确定延迟事件;并且至少部分地基于延迟事件来确定在包括与延迟事件CPU相关联的时间的时间范围内针对一个或多个功能的CPU使用率。
N:示例F至示例M中任一示例的***,该动作进一步包括:将第一子***或第二子***确定为与事件相关联的子***,CPU使用率是与一个或多个功能相关联的CPU使用率,所述一个或多个功能在与事件相关联的子***上运行,确定CPU使用率包括取回针对时间范围内多个采样时间的采样信息,采样信息包括节点标识符和与采样时间相对应的时间戳,节点标识符的各个节点标识符表示一个或多个功能中的功能。
O:一种存储指令的示例非暂时性计算机可读介质,并且该指令可由一个或多个处理器执行以执行包括以下各项的动作:接收与由***中的组件生成的控制消息相关联的信息,该组件被配置为至少部分地基于多个消息来生成组件消息;以及至少部分地基于该信息,来确定与组件或***中的一个或多个相关联的延迟,其中,多个消息包括:第一消息,此第一消息包括与由第一传感器生成的第一传感器数据相关联的第一标识;与第一传感器数据相关联的第一时间戳;与由第二传感器生成的第二传感器数据相关联的第二标识;与***的第一子***相关联的第一***标识;以及与第一子***相关联的第一子***时间戳;以及第二消息,此第二消息包括:第一标识、第一时间戳、第二标识、第二时间戳、与***的第二子***相关联的第二子***标识、以及与第二子***相关联的第二子***时间戳,并且其中与控制消息相关联的信息包括:第一标识、第二标识、第一时间戳、第二时间戳、第一子***标识、第二子***标识、控制***标识符和控制***标识。
P:示例O的非暂时性计算机可读介质,其中确定延迟包括对表示时间段的信息执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示延迟的分布函数、表示平均延迟的分布函数或表示最大延迟的分布函数。
Q:示例O或示例P的非暂时性计算机可读介质,其中确定针对时间段的延迟包括:确定***的第二组件的延迟,动作进一步包括:确定针对第二组件的延迟阈值,该延迟阈值定义了针对第二组件的延迟范围的上限;以及至少部分地基于第二组件的延迟等于或大于延迟阈值来确定事件。
R:示例O到示例Q中任一示例的非暂时性计算机可读介质,其中所述***包括自动驾驶车辆,所述动作进一步包括:至少部分地基于所述事件来控制所述自动驾驶车辆以在安全状态下操作。
S:示例O至示例R中任一示例的非暂时性计算机可读介质,其中控制自动驾驶车辆以在安全状态下操作包括以下各项中的至少一项:执行安全停止轨迹;输出可听警告;输出可视警告;降低自动驾驶车辆的速度;或控制车辆以保持低于阈值速度的速度。
T:示例O至示例S中任一示例的非暂时性计算机可读介质,所述动作进一步包括:确定与事件相关联的时间;取回数据分组,所述数据分组具有在包括上述时间的时间范围内的关联时间,该数据分组包括节点标识符和与采样时间对应的时间戳,节点标识符与一个或多个功能的功能相关联;确定在时间范围期间与一个或多个功能相关联的CPU使用率;以及确定与最大CPU使用率相关联的一个或多个功能的事件功能。
U:一种示例自动驾驶车辆包括:第一组件,被配置为执行一个或多个第一处理;第二组件,被配置为执行一个或多个第二处理,该一个或多个第一处理和该一个或多个第二处理包括多个功能;一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,所述一个或多个计算机可读介质存储指令,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:以一频率查询一个或多个处理器以确定多个运行功能;至少部分地基于表示一个或多个第一处理和一个或多个第二处理的数据结构来确定与多个运行功能相关联的唯一节点标识符;将时间戳与唯一节点标识符相关联;至少部分地基于唯一节点标识符和时间戳,来确定第一计算***的第一CPU使用率和第二计算***的第二CPU使用率;至少部分地基于第一CPU使用率等于或大于第一阈值CPU使用率或第二CPU使用率等于或大于第二阈值CPU使用率来确定与自动驾驶车辆相关联的事件;并且至少部分地基于事件来控制自动驾驶车辆处于安全状态。
V:示例U的自动驾驶车辆,该动作进一步包括:将唯一节点标识符和相关联的时间戳存储为CPU使用率分组;接收与异常车辆事件相关联的时间的指示;取回与包括时间的时间范围对应的多个CPU使用分组;以及至少部分地基于多个CPU使用分组来确定针对时间范围内的CPU使用率。
W:示例U或示例V的自动驾驶车辆,其中:时间范围在约一秒和约四秒之间;确定针对时间范围内的CPU使用率包括确定针对在时间范围期间执行的多个功能中的一个或多个功能的CPU使用率;并且确定针对一个或多个功能的CPU使用率包括确定与一个或多个功能相关联的使用相对于在时间范围内确定的多个运行功能中的其他功能的使用的百分比。
X:示例U到示例W中任一示例的自动驾驶车辆,其中数据结构包括多个节点,多个节点中的各个节点包括识别多个功能中一个功能的功能的功能标识符,并且具有唯一节点标识符中的相关联的一个唯一节点标识符。
Y:示例U至示例X中任一示例的自动驾驶车辆,其中控制自动驾驶车辆处于安全状态中包括以下各项中的至少一项:控制车辆安全停车;在自动驾驶车辆停止的状态下禁用车辆的特征;降低车辆的速度;或控制车辆保持低于阈值速度的速度。
Z:一个示例***包括:第一子***,被配置为执行第一处理;第二子***,被配置为执行第二处理,第一处理和第二处理包括多个功能;一个或多个处理器;以及存储计算机可读指令的存储器,该指令当被执行时,使***执行包括以下各项的动作:生成表示第一处理和第二处理的数据结构,这种数据结构包括多个节点,这些节点中的各个节点包括识别多个功能中的功能的功能标识符;使节点标识符与节点相关联,节点标识符包括关于多个功能在第一处理和第二处理中的关系的信息;以一频率查询一个或多个处理器以确定第一计算***和第二计算***的运行功能;以及基于采样来生成多个数据分组,该多个数据分组中的各个数据分组包括节点标识符中的与多个功能中的在采样时间处操作的功能相对应的节点标识符,。
AA:示例Z的***,该动作进一步包括:确定时间范围;取回多个数据分组中的针对该时间范围内的数据分组;至少部分地基于数据分组来确定与节点标识符相关联的运行功能中的每个运行功能的时间范围内的相对CPU使用率;并且至少部分地基于相对CPU使用率来确定第一子***的第一CPU使用率和第二子***的第二CPU使用率。
BB:示例Z或示例AA的***,该动作进一步包括:确定以下各项中的至少一项:第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率,第一阈值CPU使用率和第二阈值CPU使用率是至少部分地基于在时间范围之前的时间段内对第一处理和第二处理的统计分析来确定的,至少部分地基于第一CPU使用大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率来确定事件。
CC:示例Z至示例BB中任一示例的***,其中该***包括自动驾驶车辆,动作进一步包括:至少部分地基于该事件,控制自动驾驶车辆处于安全状态中。
DD:示例Z至示例CC中任一示例的***,其中安全状态包括以下各项中的至少一项:控制车辆安全停止;在自动驾驶车辆停止的状态下禁用车辆的特征;或发出可听输出或可视输出中的至少一种。
EE:示例Z到示例DD中任一示例的***,其中时间范围是第一时间范围并且针对第一时间范围,第一子***被配置为第一配置,该动作进一步包括:确定第二时间范围,针对第二时间范围,第一子***被配置为第二配置,取回多个数据分组中的针对第二时间范围内的第二数据分组;至少部分地基于第二数据分组,来确定与节点标识符相关联的运行功能中的每个运行功能的第二时间范围内的相对CPU使用率;以及至少部分地基于相对CPU使用率来确定第一子***的第三CPU使用率。
FF:示例Z到示例EE中任一示例的***,其中该***包括自动驾驶车辆,该动作进一步包括:至少部分地基于第一CPU使用率和第三CPU使用率来确定包括第一配置或第二配置的车辆配置;并且根据车辆配置来控制自动驾驶车辆。
GG:示例Z到示例FF中任一示例的***,其中确定车辆配置包括响应于确定第三CPU使用率低于第一CPU使用率来确定包括第二配置的车辆配置。
HH:示例Z至示例GG中任一示例的***,所述动作进一步包括:确定多个时间范围;取回多个数据分组中的针对时间范围的各个时间范围的数据分组;至少部分地基于数据分组来确定在与节点标识符相关联的运行功能的每个运行功能的时间范围中的各个时间范围期间的相对CPU使用率;至少部分地基于相对CPU使用率,来确定针对时间范围的各个时间范围的第一子***的第一CPU使用率和第二子***的第二CPU使用率;确定针对第一子***的第一CPU使用率范围;以及确定针对第二子***的第二CPU使用率范围。
II:示例Z到示例HH中任一示例的***,其中确定第一CPU使用率或确定第二CPU使用率中的至少一项包括对针对时间范围的各个时间范围的第一CPU使用率或第二CPU使用率中的至少一项执行统计分析,执行统计分析包括确定以下各项中的至少一项:表示CPU使用率的分布函数、表示平均CPU使用率的分布函数或表示最大CPU使用率的分布函数。
JJ:一种存储指令的示例非暂时性计算机可读存储介质,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:生成表示在第一***上运行的第一处理和在第二***上运行的第二处理的数据结构,第一处理和第二处理包括多个功能,并且数据结构包括多个节点,这些节点的各个节点包括标识多个功能中的功能的功能标识符;将节点标识与节点相关联,节点标识包括关于多个功能在第一处理和第二处理中的关系的信息;以一频率查询一个或多个处理器以确定第一计算***和第二计算***的运行功能;以及基于查询来生成多个数据分组,多个数据分组中的各个数据分组包括节点标识符中的与运行功能中的运行功能相对应的节点标识符。
KK:示例JJ的非暂时性计算机可读介质,所述动作进一步包括:确定时间范围;取回多个数据分组中的针对该时间范围内的数据分组;至少部分地基于数据分组来确定在与节点标识符相关联的运行功能中的每个运行功能的时间范围内的相对CPU使用率;并且至少部分地基于相对CPU使用率来确定第一子***的第一CPU使用率和第二子***的第二CPU使用率。
LL:示例JJ或示例KK的非暂时性计算机可读介质,该动作还包括:确定以下各项中的至少一项:第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率,第一阈值CPU使用率和第二阈值CPU使用率是至少部分地基于对在时间范围之前的一个或多个时间段内第一处理和第二处理的功能的统计分析来确定的;以及至少部分地基于第一CPU使用率大于第一阈值CPU使用率或第二CPU使用率大于第二阈值CPU使用率来确定事件。
MM:示例JJ到示例LL中任一示例的非暂时性计算机可读介质,其中时间范围是第一时间范围并且针对第一时间范围,第一子***被配置为第一配置,动作进一步包括:确定第二时间范围,针对第二时间范围,第一子***被配置为第二配置;取回多个数据分组中的针对第二时间范围内的第二数据分组;至少部分地基于第二数据分组,确定在与节点标识符相关联的运行功能中的每个运行功能的第二时间范围内的相对CPU使用率;以及至少部分地基于相对CPU使用率来确定第一子***的第三CPU使用率。
NN:示例JJ至示例MM中的任一示例的非暂时性计算机可读介质,所述动作进一步包括:至少部分地基于第三CPU使用率低于第一CPU使用率来根据第二配置控制自动驾驶车辆。
本发明还公开了其它实现方式:
方式1:一种自动驾驶车辆,包括:第一组件,被配置为执行一个或多个第一进程;第二组件,被配置为执行一个或多个第二进程,所述一个或多个第一进程和所述一个或多个第二进程包括多个功能;一个或多个处理器;以及存储一个或多个计算机可读介质的存储器,存储所述一个或多个处理器可执行的指令,以执行多个动作,所述多个动作包括:以一定频率查询所述一个或多个处理器以确定多个运行功能;至少部分地基于表示所述一个或多个第一进程和所述一个或多个第二进程的数据结构,确定与多个运行功能相关联的唯一节点标识符;将时间戳与所述唯一节点标识符相关联;至少部分地基于所述唯一节点标识符和所述时间戳,确定所述第一计算***的第一CPU使用率和所述第二计算***的第二CPU使用率;至少部分地基于所述第一CPU使用率等于或大于第一阈值CPU使用率或所述第二CPU使用率等于或大于第二阈值CPU使用率来确定与所述自动驾驶车辆相关的事件;及至少部分基于事件在安全状态中对所述自动驾驶车辆进行控制。
方式2:按照本发明的自动驾驶车辆,其中多个动作进一步包括:将所述唯一节点标识符和相关的所述时间戳存储为CPU使用率数据包;接收与异常车辆事件相关的时间的指示;检索与包含所述时间的时间范围对应的多个所述CPU使用率数据包;以及至少部分地基于所述多个CPU使用率数据包来确定所述时间范围的CPU使用率。
方式3:按照本发明的自动驾驶车辆,其中所述时间范围介于约一秒至约四秒之间;确定所述时间范围内的所述CPU使用率包括:确定在所述时间范围内执行的所述多个功能中的一个或多个功能的CPU使用率;以及确定所述一个或多个功能的CPU使用率包括:相对于确定运行于所述时间范围中的多个功能中的其它功能而言,确定与所述一个或多个功能相关的使用率的百分比。
方式4:按照本发明的自动驾驶车辆,其中所述数据结构包括多个节点,所述多个节点中的单个节点包括具有识别多个功能中一个功能的功能并关联于多个唯一节点标识符中的一个唯一节点标识符。
方式5:按照本发明的自动驾驶车辆,其中在安全状态下控制自动驾驶车辆包括以下至少一项:控制所述车辆安全停车;在所述自动驾驶车辆停止的状态下禁用所述车辆的部件;降低所述车辆的速度;或者控制所述车辆以保持低于阈值速度的速度。
方式6:本发明还提供一种方法,包括生成数据结构,所述数据结构表示由第一子***执行的第一进程和由第二子***执行的第二进程,所述数据结构包括多个节点,所述多个节点中的单个节点包括具有识别多个功能中一个功能的功能的功能标识符,所述多个功能包括第一进程和第二进程;使多个节点标识符与所述多个节点相关联,所述多个节点标识符包括关于所述第一进程与所述第二进程中所述多个功能间关系的信息;以一定频率查询一个或多个进程,以确定所述第一子***和所述第二子***在采样时间所运行的功能;以及基于采样生成多个数据包,所述多个数据包的单个数据包包括所述多个节点标识符的单个节点标识符,所述节点标识符对应于在采样时间操作的所述多个功能的功能。
方式7:按照本发明的方法,进一步包括:确定时间范围;检索所述时间范围内的所述多个数据包中的数据包;至少部分地基于所述数据包确定与所述节点标识符相关联的每个运行功能的时间范围内的相对CPU使用率;以及至少部分地基于所述相对CPU使用率确定所述第一子***的第一CPU使用率和所述第二子***的第二CPU使用率。
方式8:按照本发明的方法,进一步包括:确定所述第一CPU使用率中的至少一个大于第一阈值CPU使用率或所述第二CPU使用率大于第二阈值CPU使用率,所述第一阈值CPU使用率及所述第二阈值CPU使用率至少部分地基于在所述时间范围之前的时间段内所述第一进程和所述第二进程的统计分析来确定,至少部分地基于所述第一CPU使用率大于所述第一阈值CPU使用率或所述第二CPU使用率大于所述第二阈值CPU使用率来确定事件。
方式9:按照本发明的方法,进一步包括:至少部分基于所述事件控制处于安全状态的自动驾驶车辆。
方式10:按照本发明的方法,其中控制所述自动驾驶车辆包括以下至少一项:控制所述车辆安全停车;在所述自动驾驶车辆停止的状态下禁用所述车辆的部件;或者发出听觉输出信号或视觉输出信号中的至少一种。
方式11:按照本发明的方法,其中所述时间范围是第一时间范围并且所述第一子***被配置为针对所述第一时间范围的第一配置,所述方法进一步包括:确定第二时间范围,所述第一子***被配置为用于所述第二时间范围的第二配置,在所述第二时间范围内检索所述多个数据包中的第二数据包;至少部分地基于所述第二数据包,确定与所述节点标识符相关联的每个运行功能在所述第二时间范围内的相对CPU使用率;以及至少部分地基于所述相对CPU使用率确定所述第一子***的第三CPU使用率。
方式12:按照本发明的方法,进一步包括:至少部分地基于所述第一CPU使用率和所述第三CPU使用率,确定包括所述第一配置或所述第二配置的车辆配置;以及根据所述车辆配置控制所述自动驾驶车辆。
方式13:按照本发明的方法,进一步包括:确定多个时间范围;
检索所述多个数据包中单个时间范围的数据包;至少部分地基于所述数据包确定在与节点标识符相关联的每个运行功能的所述多个时间范围中的单个时间范围的相对CPU使用率;至少部分地基于所述相对CPU使用率,为所述单个时间范围确定所述第一子***的第一CPU使用率和所述第二子***的第二CPU使用率;为所述第一子***确定所述第一CPU使用范围;以及为所述第二子***确定所述第二CPU使用范围。
方式14:按照本发明的方法,其中确定所述第一CPU使用率或确定所述第二CPU使用率中的至少一个包括:对所述多个时间范围中的该单个时间范围的所述第一CPU使用率或所述第二CPU使用率中的至少一个进行统计分析,进行统计分析包括:确定代表所述CPU使用率、平均CPU使用率或最大CPU使用率的分布功能中的至少一个。
方式15:按照本发明还提供一种存储有指令的非暂时性计算机可读存储介质,所述指令可由一个或多个处理器执行,以执行本公开的方法。
结论
虽然已经描述了本文描述的技术的一个或多个示例,但是其各种变化、添附、置换和等同形式也包括在本文所描述的技术方案的范围内。
在示例的描述中,参考形成其一部分的附图,其通过说明的方式示出了所要求保护的主题的特定示例。应当理解,可以使用其他示例,并且可以进行诸如结构改变之类的改变或替换。这样的示例、改变或替换不一定相对于预期的所要求保护的主题偏离范围。尽管此处的步骤可以按一定顺序显示,但在某些情况下,可以更改顺序,以便在不更改本文所描述***和方法的功能的情况下,可以在不同时间或以不同顺序提供某些输入。所公开的过程也可以以不同的顺序执行。另外,不需要以所公开的顺序执行本文所描述的各种计算,并且可以容易地实现使用计算的替代顺序的其他示例。除了重新排序外,在一些实例中,这些计算还可以分解为具有相同结果的子计算。

Claims (9)

1.一种车辆,包括:
第一组件;
第二组件;
控制***,耦合到所述第一组件和所述第二组件,所述控制***配置为控制所述车辆的功能;以及
存储有指令的一个或多个非暂时性计算机可读介质,所述指令在由一个或多个处理器执行时,使所述车辆执行包括以下各项的动作:
在所述控制***处接收消息,所述控制***配置为至少部分地基于所述消息输出控制消息,其中所述消息包括:
所述***的所述第一组件的第一标识,与所述第一组件相关联的第一时间戳,所述***的所述第二组件的第二标识,与所述第二组件相关联的第二时间戳;
至少部分地基于所述第一标识、所述第一时间戳、所述第二标识以及所述第二时间戳,确定与所述消息、所述第一组件和所述第二组件相关联的延迟;以及
由所述控制***并至少部分地基于所述控制消息与所述延迟,控制所述车辆的功能。
2.一种方法,包括:
在车辆控制器处接收消息,所述车辆控制器配置为至少部分地基于所述消息生成并输出用于控制车辆功能的车辆控制消息,其中所述消息包括:
与由所述车辆的第一组件产生的第一数据的实例相关联的第一标识,与所述第一数据的所述实例相关联的第一时间戳,与由所述车辆的第二组件产生的第二数据的实例相关联的第二标识,与所述第二数据的所述实例相关联的第二时间戳,与处理***相关联的***标识,以及与所述处理***相关联的第三时间戳;
至少部分地基于所述消息,确定与所述第一组件、所述第二组件或所述处理***中的至少一个相关联的延迟;以及
至少部分地基于所述控制消息与所述延迟,控制所述车辆。
3.一种存储有指令的非暂时性计算机可读介质,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:
在车辆控制器处接收消息,所述车辆控制器配置为至少部分地基于所述消息生成并输出用于控制车辆功能的车辆控制消息,其中所述消息包括:
与由所述车辆的第一组件产生的第一数据的实例相关联的第一标识,与所述第一数据的所述实例相关联的第一时间戳,与由所述车辆的第二组件产生的第二数据的实例相关联的第二标识,与所述第二数据的所述实例相关联的第二时间戳,与所述车辆的处理***相关联的***标识,以及与所述处理***相关联的第三时间戳;
至少部分地基于所述消息,确定与所述第一组件、所述第二组件或所述处理***中的至少一个相关联的延迟;以及
至少部分地基于所述控制消息与所述延迟,控制所述车辆。
4.一种自动驾驶车辆,包括:
第一传感器,配置为生成并输出第一传感器数据;
第二传感器,配置为产生并输出第二传感器数据;
一个或多个处理***,配置为生成并输出处理过的数据,所述处理过的数据至少部分地基于所述第一传感器数据或所述第二传感器数据中的至少一个;
车辆控制器;
一个或多个处理器;以及
存储一个或多个计算机可读介质的存储器,所述计算机可读介质存储可由所述一个或多个处理器执行的指令以执行包括以下各项的动作:
在所述车辆控制器处接收多个消息,所述车辆控制器配置为至少部分地基于所述多个消息生成并输出车辆控制消息;
至少部分地基于所述多个消息或所述一个或多个车辆控制消息,确定与至少一个车辆控制器或与所述一个或多个处理***中的至少一个处理***相关联的延迟;
至少部分地基于所述延迟是异常的,确定与所述自动驾驶车辆相关联的事件;以及
至少部分地基于所述事件,控制所述自动驾驶车辆以安全状态运行;
其中所述多个消息包括:
第一消息,包括与所述第一传感器数据的第一实例相关联的第一标识,与所述第一传感器数据的所述第一实例相关联的第一时间戳信息,与所述第二传感器数据的第二实例相关联的第二标识,与所述第二实例相关联的第二时间戳信息,与所述一个或多个处理***中的第一处理***相关联的第一***标识,以及与所述第一处理***相关联的第一***时间戳信息;及
第二消息,包括:所述第一标识、所述第一时间戳信息、所述第二标识、所述第二时间戳信息、与所述一个或多个处理***中的第二处理***相关联的第二***标识、以及与所述第二处理***相关联的第二***时间戳信息;以及,
其中多个车辆控制消息中的一个车辆控制消息包括:
第一信息,包括所述第一标识、所述第二标识、所述第一时间戳信息、所述第二时间戳信息、所述第一***标识、所述第一***时间戳信息、车辆控制器标识信息以及与所述车辆控制器相关联的车辆控制器时间戳信息,并且
第二信息,包括所述第一标识、所述第二标识、所述第一时间戳信息、所述第二时间戳信息、所述第二***标识、所述第二***时间戳信息、所述车辆控制器标识信息、以及与所述车辆控制器相关联的所述车辆控制器时间戳信息。
5.一种***,包括:
一个或多个处理器;以及
存储一个或多个计算机可读介质的存储器,所述计算机可读介质存储可由所述一个或多个处理器执行的指令以执行包括以下各项的动作:
在控制***处在一时间段期间接收多个消息,所述控制***配置为至少部分地基于所述多个消息输出控制消息;
至少部分地基于所述多个消息或所述控制消息,确定延迟;
其中所述多个消息包括:
第一消息,包括与第一传感器产生的第一传感器数据相关联的第一标识,与所述第一传感器数据相关联的第一时间戳,与第二传感器产生的第二传感器数据相关联的第二标识,与所述***中的第一子***相关联的第一***标识,以及与所述第一子***相关联的第一子***时间戳;以及
第二消息,包括:所述第一标识、所述第一时间戳、所述第二标识、所述第二时间戳、与所述***中的第二子***相关联的第二子***标识、以及与所述第二子***相关联的第二子***时间戳;以及,
其中所述控制消息包括相关联的信息,包括:所述第一标识、所述第二标识、所述第一时间戳、所述第二时间戳、所述第一子***标识、所述第二子***标识、控制***标识符以及控制***标识。
6.一种存储有指令的非暂时性计算机可读介质,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:
接收与由***中的组件产生的控制消息相关联的信息,所述组件配置为至少部分地基于多个消息产生所述组件消息;
至少部分地基于所述信息确定与所述***的一个或多个组件相关联的延迟;
其中所述多个消息包括:
第一消息,包括与第一传感器产生的第一传感器数据相关联的第一标识,与所述第一传感器数据相关联的第一时间戳,与第二传感器产生的第二传感器数据相关联的第二标识,与所述***的第一子***相关联的第一***标识,以及与所述第一子***相关联的第一子***时间戳;以及
第二消息,包括:所述第一标识、所述第一时间戳、所述第二标识、所述第二时间戳、与所述***的第二子***相关联的第二子***标识、以及与所述第二子***相关联的第二子***时间戳,以及
其中与所述组件消息相关联的所述信息包括:所述第一标识、所述第二标识、所述第一时间戳、所述第二时间戳、所述第一子***标识、所述第二子***标识、控制***标识符以及控制***标识。
7.一种自动驾驶车辆,包括:
第一组件,配置为执行一个或多个第一进程;
第二组件,配置为执行一个或多个第二进程,所述一个或多个第一进程和所述一个或多个第二进程包括多个功能;
一个或多个处理器;以及
存储一个或多个计算机可读介质的存储器,存储所述一个或多个处理器可执行的指令,以执行包括以下各项的动作:
以一频率查询所述一个或多个处理器以确定多个运行功能;
至少部分地基于表示所述一个或多个第一进程和所述一个或多个第二进程的数据结构,确定与所述多个运行功能相关联的唯一节点标识符;
将时间戳与所述唯一节点标识符相关联;
至少部分地基于所述唯一节点标识符和所述时间戳,确定第一计算***的第一CPU使用率和第二计算***的第二CPU使用率;
至少部分地基于所述第一CPU使用率等于或大于第一阈值CPU使用率或所述第二CPU使用率等于或大于第二阈值CPU使用率来确定与所述自动驾驶车辆相关联的事件;以及
至少部分基于所述事件,在安全状态中对所述自动驾驶车辆进行控制。
8.一种***,包括:
第一子***,配置为执行第一进程;
第二子***,配置为执行第二进程,所述第一进程与所述第二进程包括多个功能;
一个或多个处理器;以及
存储计算机可读指令的存储器,所述指令在执行时使所述***执行包括以下各项的动作:
生成数据结构,所述数据结构表示所述第一进程和所述第二进程,所述数据结构包括多个节点,所述多个节点中的单个节点包括识别所述多个功能中的一个功能的功能标识符;
使多个节点标识符与多个节点相关联,所述节点标识符包括关于所述第一进程与所述第二进程中所述多个功能间关系的信息;
以一频率查询所述一个或多个处理器,以确定所述第一计算***与所述第二计算***的运行功能;以及
基于采样生成多个数据包,所述多个数据包的单个数据包包括所述多个节点标识符中对应于在采样时间操作的所述多个功能中的功能的节点标识符。
9.一种存储有指令的非暂时性计算机可读存储介质,所述指令可由一个或多个处理器执行以执行包括以下各项的动作:
生成数据结构,所述数据结构表示运行在第一***上的第一进程和运行在第二***上的第二进程,所述第一进程和所述第二进程包括多个功能,并且所述数据结构包括多个节点,所述多个节点中的单个节点包括识别所述多个功能中的一个功能的功能标识符;
使多个节点标识符与所述多个节点相关联,所述节点标识符包括关于所述第一进程与所述第二进程中所述多个功能间关系的信息;
以一频率查询所述一个或多个处理器,以确定所述第一计算***与所述第二计算***的多个运行功能;以及
基于所述查询生成多个数据包,所述多个数据包中的单个数据包包括所述多个节点标识符中对应于所述多个运行功能中的运行功能的节点标识符。
CN202410062894.0A 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作 Pending CN117891603A (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US16/225,997 2018-12-19
US16/225,997 US11099573B2 (en) 2018-12-19 2018-12-19 Safe system operation using latency determinations
US16/226,128 2018-12-19
US16/226,128 US11281214B2 (en) 2018-12-19 2018-12-19 Safe system operation using CPU usage information
PCT/US2019/067584 WO2020132305A1 (en) 2018-12-19 2019-12-19 Safe system operation using latency determinations and cpu usage determinations
CN201980084468.4A CN113195331B (zh) 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN201980084468.4A Division CN113195331B (zh) 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作

Publications (1)

Publication Number Publication Date
CN117891603A true CN117891603A (zh) 2024-04-16

Family

ID=71100924

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201980084468.4A Active CN113195331B (zh) 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作
CN202410062894.0A Pending CN117891603A (zh) 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN201980084468.4A Active CN113195331B (zh) 2018-12-19 2019-12-19 使用延迟确定和cpu使用率确定的安全***操作

Country Status (4)

Country Link
EP (1) EP3898373A4 (zh)
JP (1) JP7520015B2 (zh)
CN (2) CN113195331B (zh)
WO (1) WO2020132305A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112505718B (zh) * 2020-11-10 2022-03-01 奥特酷智能科技(南京)有限公司 用于自动驾驶车辆的定位方法、***及计算机可读介质

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6349406B1 (en) * 1997-12-12 2002-02-19 International Business Machines Coporation Method and system for compensating for instrumentation overhead in trace data by computing average minimum event times
US6557167B1 (en) * 1999-09-03 2003-04-29 International Business Machines Corporation Apparatus and method for analyzing performance of a computer program
EP1388474B1 (en) * 2002-08-05 2011-06-29 Ford Global Technologies, LLC System for determining an amount of control for operating a rollover control system
US7383548B2 (en) * 2003-11-28 2008-06-03 Nortel Networks Limited CPU usage regulation
JP2006031525A (ja) * 2004-07-20 2006-02-02 Sony Corp 情報処理装置および情報処理方法、並びに、プログラム
JP4871687B2 (ja) * 2005-10-03 2012-02-08 日立オートモティブシステムズ株式会社 車両制御システム
US8345561B2 (en) * 2006-08-22 2013-01-01 Rueters America Inc. Time monitor
JP4512621B2 (ja) * 2007-08-06 2010-07-28 株式会社日立製作所 分散システム
RU2533645C2 (ru) * 2010-05-27 2014-11-20 Сергей Анатольевич Королев Интеллектуальная транспортная система и способ её использования
US8423637B2 (en) * 2010-08-06 2013-04-16 Silver Spring Networks, Inc. System, method and program for detecting anomalous events in a utility network
US8577663B2 (en) * 2011-05-23 2013-11-05 GM Global Technology Operations LLC System and methods for fault-isolation and fault-mitigation based on network modeling
JP5737075B2 (ja) * 2011-08-29 2015-06-17 富士通株式会社 イベント収集方法及び情報処理装置
US9262294B2 (en) * 2011-10-31 2016-02-16 Hewlett Packard Enterprise Development Lp System and method for event detection and correlation from moving object sensor data
US9043073B2 (en) * 2011-11-16 2015-05-26 Flextronics Ap, Llc On board vehicle diagnostic module
US20130160024A1 (en) * 2011-12-20 2013-06-20 Sybase, Inc. Dynamic Load Balancing for Complex Event Processing
JP5914245B2 (ja) * 2012-08-10 2016-05-11 株式会社日立製作所 多階層の各ノードを考慮した負荷分散方法
US9762471B2 (en) * 2013-01-26 2017-09-12 F5 Networks, Inc. Methods and systems for estimating and analyzing flow activity and path performance data in cloud or distributed systems
US8972992B2 (en) * 2013-04-30 2015-03-03 Splunk Inc. Proactive monitoring tree with state distribution ring
US20150066282A1 (en) * 2013-09-05 2015-03-05 Ford Global Technologeis, Llc Autonomous driving in areas for non-drivers
US9511764B2 (en) * 2014-02-28 2016-12-06 Ford Global Technologies, Llc Semi-autonomous mode control
US9898759B2 (en) * 2014-03-28 2018-02-20 Joseph Khoury Methods and systems for collecting driving information and classifying drivers and self-driving systems
US10089693B1 (en) * 2014-05-20 2018-10-02 State Farm Mutual Automobile Insurance Company Fully autonomous vehicle insurance pricing
US9396702B2 (en) * 2014-12-23 2016-07-19 Sony Interactive Entertainment America Llc Latency tester
JP6650242B2 (ja) * 2015-10-16 2020-02-19 日立オートモティブシステムズ株式会社 自動運転システム、自動運転制御方法、データecuおよび自動運転ecu
US20180046671A1 (en) * 2015-10-30 2018-02-15 Hitachi, Ltd. Computer scale-out method, computer system, and storage medium
US10268714B2 (en) * 2015-10-30 2019-04-23 International Business Machines Corporation Data processing in distributed computing
WO2017079349A1 (en) * 2015-11-04 2017-05-11 Zoox, Inc. System for implementing an active safety system in an autonomous vehicle
WO2017079321A1 (en) * 2015-11-04 2017-05-11 Zoox, Inc. Sensor-based object-detection optimization for autonomous vehicles
CN105700961B (zh) * 2016-02-29 2019-03-08 华为技术有限公司 业务容器创建方法及装置
US11074108B2 (en) * 2016-05-23 2021-07-27 Toyota Jidosha Kabushiki Kaisha Caching electronic control unit mapping solutions for connected vehicles
US20180349205A1 (en) * 2016-06-03 2018-12-06 Faraday&Future Inc. Multi-processor workload distribution based on sensor data
KR102004060B1 (ko) * 2016-07-21 2019-07-25 바이두 유에스에이 엘엘씨 자율 주행 차량을 작동하는 컴퓨팅 노드들 사이의 효율적 통신
US10137903B2 (en) 2016-08-16 2018-11-27 Uber Technologies, Inc. Autonomous vehicle diagnostic system
US10120718B2 (en) * 2016-08-24 2018-11-06 Ca, Inc. Reservation of hardware resources in a computer system based on utilization measurements during time ranges
WO2018066041A1 (ja) * 2016-10-03 2018-04-12 富士通株式会社 性能異常検出装置、性能異常検出方法、及び性能異常検出プログラム
US10469424B2 (en) * 2016-10-07 2019-11-05 Google Llc Network based data traffic latency reduction
JP6735683B2 (ja) 2017-01-05 2020-08-05 日立オートモティブシステムズ株式会社 車載電子制御装置、ログ格納方法
US10522043B2 (en) * 2017-01-09 2019-12-31 Satori Worldwide, Llc Systems and methods for managing assets in a geographical location
US20190340116A1 (en) * 2017-01-24 2019-11-07 Mitsubishi Electric Corporation Shared backup unit and control system

Also Published As

Publication number Publication date
EP3898373A4 (en) 2023-01-11
WO2020132305A1 (en) 2020-06-25
JP7520015B2 (ja) 2024-07-22
JP2022514103A (ja) 2022-02-09
CN113195331B (zh) 2024-02-06
EP3898373A1 (en) 2021-10-27
CN113195331A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
US10981567B2 (en) Feature-based prediction
US11099573B2 (en) Safe system operation using latency determinations
US11994858B2 (en) Safe system operation using CPU usage information
WO2019199873A1 (en) Techniques for considering uncertainty in use of artificial intelligence models
CN112166304A (zh) 传感器数据的误差检测
US11577741B1 (en) Systems and methods for testing collision avoidance systems
US20200201336A1 (en) Transition to Safe State based on Age/Integrity of Critical Messages
US11415997B1 (en) Autonomous driving simulations based on virtual simulation log data
JP7465473B2 (ja) 自律車両の安全停止解放をもたらすためのシステム及び方法
US11648962B1 (en) Safety metric prediction
US11055624B1 (en) Probabilistic heat maps for behavior prediction
WO2022232546A1 (en) Methods and systems to assess vehicle capabilities
Chang et al. Driving safety monitoring and warning for connected and automated vehicles via edge computing
US11767030B1 (en) Scenario simulation execution within a truncated parameter space
CN113195331B (zh) 使用延迟确定和cpu使用率确定的安全***操作
WO2024049925A1 (en) Trajectory prediction based on a decision tree
US11938966B1 (en) Vehicle perception system validation
US11919526B1 (en) Model-based vehicle drive system monitors
US12039008B1 (en) Data generation and storage system
US11938939B1 (en) Determining current state of traffic light(s) for use in controlling an autonomous vehicle
US20230386269A1 (en) Detecting use of driver assistance systems
WO2023009546A1 (en) Systematic fault detection in vehicle control systems
JP2023514870A (ja) 直角割り込みトレーニング
WO2023126695A1 (en) Application of mean time between failure (mtbf) models for autonomous vehicles

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