自主驾驶车辆运行状况监控的制作方法

文档序号:29943484发布日期:2022-05-07 15:18阅读:60来源:国知局
自主驾驶车辆运行状况监控的制作方法

1.本发明大体上涉及车辆部件操作运行状况监控,并且更具体地,在一些实施例中,涉及基于车辆部件的监控操作运行状况调整自主驾驶车辆部件之间的任务分配。


背景技术:

2.现代车辆包括大量不同的车辆部件。在过去的几十年中,自主车辆技术取得了巨大进步,支持此类技术所需的汽车部件的数量也相应增加。特别是,现代车辆比过去包括更多的传感器、更多的处理电路等,以支持更先进的技术,例如自适应巡航控制、盲点检测、车道保持、物体回避等。自主车辆包括更大数量的车辆部件,以支持实现自主车辆运行所需的更复杂的处理(例如,对象检测、实例分割、自主车辆导航等)。
3.车辆部件,例如自主车辆中的部件,可以包括对车辆内的恶劣操作环境具有不同容限的多种类型的部件。此外,车辆部件可能表现出不同的失效率。本文描述的是解决与车辆部件失效和车辆部件对车辆中恶劣操作条件的不耐受相关联的技术问题的技术解决方案。


技术实现要素:

4.在示例性实施例中,公开了一种用于车辆部件故障检测的计算机实现的方法。该方法包括:在一段时间内监控第一车辆部件的运行状态;检测第一车辆部件的失效;以及确定与第一车辆部件的失效相关联的失效级别。该方法还包括:至少部分地基于失效级别和第一车辆部件的部件类型来确定车辆部件任务重新分配;以及实施车辆部件任务重新分配。实施车辆部件任务重新分配包括将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载到第二车辆部件,其中第二车辆部件的操作运行状况满足一个或多个操作运行状况标准。
5.在示例性实施例中,检测第一车辆部件的失效包括确定与由第一车辆部件执行的任务处理相关联的延迟在该时间段期间增加了至少阈值量。
6.在示例性实施例中,确定与第一车辆部件的失效相关联的失效级别包括:确定与在第一车辆部件的失效之后由第一车辆部件执行的任务处理相关联的延迟或与第一车辆部件的失效相关联的延迟增加量;并根据失效级别到延迟范围或延迟变化范围的映射来确定失效级别。
7.在示例性实施例中,确定车辆部件任务重新分配包括:确定第二车辆部件的部件类型与第一车辆部件的部件类型匹配;并且确定将由第一车辆部件在发生失效之前执行的任务处理的至少一部分卸载到第二车辆部件将满足最低车辆操作要求。
8.在示例性实施例中,确定将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载到第二车辆部件将满足最低车辆操作要求包括:确定与第二车辆部件而不是第一车辆部件执行任务处理的至少一部分相关联的延迟的变化;确定延迟变化需要车速的相应变化;并且确定车速的变化小于阈值最大车速变化。
9.在示例性实施例中,上述实施例中的任一者还包括结合实施车辆部件任务重新分配来启动车辆速度的改变。
10.在示例性实施例中,确定车辆部件任务重新分配包括:识别与和第一车辆部件的部件类型相同的部件类型相关联的第三车辆部件;确定将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载在第三车辆部件将导致第三部件的至少阈值量的性能退化;识别第二车辆部件,其中第二车辆部件的部件类型不同于第一车辆部件的部件类型;并且确定第二车辆部件的操作运行状况满足一个或多个操作运行状况标准。
11.在示例性实施例中,确定第二车辆部件的运行状况满足一个或多个操作运行状况标准包括确定第二车辆部件具有至少阈值量的可用处理能力。
12.在示例性实施例中,确定第二车辆部件的操作运行状况满足一个或多个操作运行状况标准包括确定将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载到第二车辆部件将导致低于阈值量的性能退化。
13.上述实施例中的任一者还可以包括:对第一车辆部件进行实时故障诊断,启动第一车辆部件的故障恢复处理;确定第一车辆部件的操作运行状况已经恢复到至少阈值操作运行水平;并且恢复到第一车辆部件失效之前的车辆部件任务分配,其中恢复到车辆部件任务分配包括将任务处理的至少一部分从第二车辆部件重新分配到第一车辆部件。
14.在示例性实施例中,公开了一种用于车辆部件故障检测的系统。该系统包括至少一个处理器和至少一个存储计算机可执行指令的存储器。至少一个处理器被配置为访问至少一个存储器并执行计算机可执行指令以执行一组操作,包括在一段时间内监控第一车辆部件的运行状态、检测第一车辆部件的失效,以及确定与第一车辆部件的失效相关联的失效级别。该组操作还包括:至少部分地基于失效级别和第一车辆部件的部件类型来确定车辆部件任务重新分配;以及实施车辆部件任务重新分配。实施车辆部件任务重新分配包括将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载到第二车辆部件,其中第二车辆部件的操作运行状况满足一个或多个操作运行状况标准。上述系统还被配置为执行任何操作/功能并且可以包括与本发明的示例性计算机实现的方法相关的上述本发明的示例性实施例的任何附加特征/方面。
15.在示例性实施例中,公开了一种用于车辆部件故障检测的计算机程序产品。该计算机程序产品包括存储计算机/机器可执行指令的非暂时性计算机可读介质,该指令响应于包括一个或多个处理单元的处理电路的执行而导致方法被执行。该方法包括:在一段时间内监控第一车辆部件的运行状态;检测第一车辆部件的失效;以及确定与第一车辆部件的失效相关联的失效级别。该方法还包括:至少部分地基于失效级别和第一车辆部件的部件类型来确定车辆部件任务重新分配;以及实施车辆部件任务重新分配。实施车辆部件任务重新分配包括:将由第一车辆部件在失效之前执行的任务处理的至少一部分卸载到第二车辆部件,其中第二车辆部件的操作运行状况满足一个或多个操作运行状况标准。上述计算机程序产品还被配置为执行任何操作/功能,并且可以包括与本发明的示例计算机实现的方法相关的上述本发明的示例性实施例的任何附加特征/方面。
16.参考形成本说明书的一部分的所有附图,其中相同的附图标记表示各个附图中的对应部分,考虑以下描述和所附权利要求,在此公开的系统、方法和非暂时性计算机可读介质的这些和其他特征,以及结构的相关元件的操作方法和功能以及部件的组合和制造的经
济性,将变得更加明显。然而,应当清楚地理解,附图仅用于说明和描述的目的,并不旨在作为对本发明的限制的定义。
附图说明
17.本技术的各种实施例的某些特征在所附权利要求中具体阐述。参考以下阐述说明性实施例的详细说明,其中利用了本发明的原理,将获得对本技术的特征和优点的更好理解,其中附图说明如下:
18.图1是根据本发明的示例性实施例的将非耐受车辆部件与车辆中的恶劣操作环境隔离的示意图。
19.图2示意性地示出了根据本发明的示例实施例的车辆部件运行监控和故障检测。
20.图3是根据本发明的示例实施例的用于车辆部件运行监控和故障检测的说明性方法的过程流程图。
21.图4是根据本发明的示例性实施例的用于对发生故障的车辆部件执行故障恢复处理的说明性方法的过程流程图。
22.图5是示出被配置为实现本发明的示例性实施例的示例性联网架构的示意框图。
具体实施方式
23.在以下描述中,阐述了某些特定细节以提供对本发明的各个实施例的透彻理解。然而,本领域技术人员将理解,可以在没有这些细节的情况下实践本发明。此外,虽然在此公开了本发明的各种实施例,但是根据本领域技术人员的公知常识,可以在本发明的范围内做出许多调整和修改。这样的修改包括对本发明的任何方面的已知等效物的替换,以便以基本上相同的方式实现相同的结果。
24.除非上下文另有要求,在整个本说明书和权利要求书中,词语“包括”及其变体,例如“包含”和“含有”应被解释为开放的、包容性的含义,即“包括,但不限于。”在整个说明书中对数值范围的引用旨在作为单独引用的、落入限定范围的值的包容性范围内的每个单独的值的速写符号,并且每个单独的值都包含在说明书中,如在该处所单独引用的。此外,除非上下文另有明确规定,否则单数形式“一”、“一个”和“所述”包括复数指代对象。短语“至少一个”、“至少一个选自
……”
或“至少一个选自由
……
组成的组”等应以分离式解释(例如,不应解释为a中的至少一个和b中的至少一个)。
25.本说明书中对“一个实施例”或“一实施例”的提及意味着结合实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在本说明书各处出现的短语“在一个实施例中”或“在一个实施例中”不必然都指代相同的实施例,而可能是指某些情况。此外,特定特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。
26.现代车辆(例如自主车辆)包括支持许多不同车辆功能/技术所需的大量车辆部件。车辆部件可包括各种类型的机械和电气部件。例如,车辆部件可以包括各种处理器/处理电路,例如图形处理单元(gpu)、中央处理单元(cpu)、专用集成电路(asic)、现场可编程门阵列(fpga)等。车辆部件,特别是自主车辆部件,还可以包括各种类型的传感器,包括但不限于:光探测和测距(lidar)传感器、雷达、摄像机、全球定位系统(gps)接收器、基于声纳的传感器、超声波传感器、惯性测量单元(imu)、加速度计、陀螺仪、磁力计、远红外(fir)传
感器等。
27.一些车辆部件可以是能够承受车辆内恶劣操作环境的汽车级部件。例如,此类部件可被设计成承受高温、高电压、高水平蒸发或可能存在于车辆操作环境中的任何这些参数的大的波动。在一些情况下,诸如各种传感器(例如,lidar、摄像机等)的车辆部件可以设置在车辆的外部。因此,虽然这样的部件可能不会暴露于恶劣的车辆内部操作环境,但它们会暴露于外部环境中的恶劣条件,例如风、降水、高温等。设置在车辆外部的传感器或其他部件可以包括在保护部件免受自然因素影响的壳体中。
28.虽然一些车辆部件是汽车级的,并因此能够承受恶劣的内部车辆操作条件,但其他部件,例如市售部件,可能无法承受这样的条件。市售部件可以包括例如计算机处理部件,例如gpu、cpu、fpga、asic等;传感器,例如gps接收器、加速度计等;以及其他。由于车辆中恶劣的操作环境,此类市售部件可能更容易失效
29.本发明的实施例克服了在基于计算机的技术领域中特别是在自主车辆的技术领域中出现的技术问题。特别地,本发明的示例性实施例提供了对上述技术问题的技术方案,即商用车辆部件由于恶劣的车辆操作环境而增加的失效的可能性。这些技术方案以系统、方法、非暂时性计算机可读介质、技术和方法论的形式公开,用于将商用部件与恶劣的车辆操作环境隔离以增加这些部件的寿命并降低它们的失效率。
30.还以系统、方法、非暂时性计算机可读介质、技术和方法论的形式公开了这样的技术方案,用于监控车辆部件针对失效的操作运行状态,并且在检测到部件失效时,启动任务重新分配和故障恢复处理。以此方式,即使通过将部件与恶劣的车辆操作环境隔离而实现了降低的失效率但商用车辆部件仍然发生故障,在为该部件启动故障恢复处理的同时,该部件在失效之前处理的处理负载也可以卸载到一个或多个其他车辆部件。当故障部件再次运行时,车辆可以恢复到部件失效之前就位的任务分配,可以继续当前的任务分配,或者可以过渡到另一不同的任务重新分配。本发明的示例性实施例因此通过提供用于降低商用车辆部件的失效率的机制以及用于通过车辆部件任务重新分配和故障恢复来补偿此类部件的失效的机制的两个机制而对现有车辆技术进行改进。
31.图1是根据本发明的示例实施例的车辆102的示意图。车辆102可以是例如自主车辆。图1示意性地描绘非耐受车辆部件104与车辆102中的恶劣操作环境的隔离。非耐受车辆部件104可以包括例如商用部件,例如gpu、cpu或其他类型的控制器/处理器/处理电路。非耐受车辆部件104还可包括任何类型的商业级传感器,所述商业级传感器不能承受在恶劣的内部车辆操作环境中存在的温度、电压或其他条件。在示例实施例中,可以提供隔离屏障106,其用于将不耐受恶劣的车辆内部环境的车辆部件104与该环境隔离,包括与耐受恶劣环境的任何车辆部件108隔离。
32.在示例实施例中,隔离屏障106可以为非耐受部件104创造环境,该环境表现出比隔离屏障106外的内部车辆操作环境较不恶劣的操作条件。更具体地,隔离屏障106可以为非耐受部件104创建子环境,使得非耐受部件104在该子环境内经受较不恶劣的内部操作条件。例如,隔离屏障106可以具有与屏障106外部的内部车辆操作环境相比降低了由屏障106创建的子环境内的操作温度范围的绝缘特性。作为另一个非限制性示例,隔离屏障106可以包括导致在由屏障106创建的子环境内较低的电压操作范围和/或较不恶劣的蒸发条件的材料、表面特征、物理配置等。应当理解,以上示例仅是说明性的,并且隔离屏障106可以包
括导致由隔离屏障106创建的、呈现出对于不能忍受屏障106外的内部车辆操作环境的部件104更有利的操作参数/条件的子环境的任何特性。
33.在示例实施例中,由隔离屏障106创建的较不恶劣的子环境可以延长不耐受恶劣环境的部件104的性能寿命并降低它们的失效率。特别地,因为部件104在由隔离屏障106创建的子环境内经受较不恶劣的操作条件(例如,较低温度、较低电压等),与部件104相关联的失效率可以降低。尽管这降低了失效率,一些部耐受恶劣环境的部件104仍然可能继续经历过早失效或其他性能退化。为了解决这个问题,本发明的示例实施例为车辆部件提供故障检测、任务重新分配和故障恢复机制。虽然此类机制适用于耐受恶劣操作环境的车辆部件108以及不耐受的车辆部件104两者,但不耐受恶劣操作环境的部件104可能比耐受车辆部件108更可能发生故障(尽管通过隔离屏障106实现了降低的失效率),因此,本发明的示例性实施例对于解决部件104中的失效可能是特别有利的。
34.图2示意性地示出根据本发明的示例性实施例的车辆部件运行状态监控和故障检测。图3是根据本发明的示例性实施例的用于车辆部件运行状态监控和故障检测的说明性方法300的过程流程图。图4是根据本发明的示例性实施例的用于对发生故障的车辆部件执行故障恢复处理的说明性方法400的过程流程图。下文将结合图2分别描述图3和图4。
35.方法300和/或方法400中的每个操作可以由图2或图5中描绘的引擎/程序模块中的一个或多个执行,其操作将在下文中更详细地描述。这些引擎/程序模块可以在硬件、软件和/或固件的任何组合中实施。在某些示例性实施例中,这些引擎/程序模块中的一个或多个可以至少部分地实施为软件和/或固件模块,该软件和/或固件模块包括当由处理电路执行时导致执行一个或多个操作的计算机可执行指令执行。在示例性实施例中,这些引擎/程序模块可以是在诸如定制fpga或asic之类的定制的计算机器内实施的定制的计算机可执行逻辑。在此描述为被配置成实施本发明的示例性实施例的系统或设备可以包括一个或多个处理电路,每个处理电路可以包括一个或多个处理单元或处理核。计算机可执行指令可以包括计算机可执行程序代码,当由处理核执行时,计算机可执行程序代码可使包含在计算机可执行程序代码中或由计算机可执行程序代码引用的输入数据被处理核访问并处理以产生输出数据。
36.首先参考图2,在此描述的故障检测和恢复功能可以由结合任务调度器210操作的车辆部件运行状态监控引擎204提供。在一些实施例中,车辆部件运行状态监控引擎204可以包括可由一个或多个处理单元执行的软件/固件指令集。在一些实施例中,构成车辆部件运行状态监控引擎204的指令集可以存储在微控制器202的车载存储器(例如,随机存取存储器(ram)、只读存储器(rom)等)中。微控制器202可以是能够承受车辆中恶劣操作环境条件的汽车级集成电路。例如,还参考图1,微控制器202可以位于隔离屏障106之外,因此可能经受恶劣的操作环境条件。在其他示例实施例中,微控制器202可以位于由隔离屏障106创建的子环境内。无论微控制器在车辆内的位置如何,微控制器202可以包括一个或多个处理单元(例如,具有一个或多个处理核的cpu),其被配置成访问微控制器202的车载存储器并执行车辆部件操作运行监控引擎204的存储指令以监控车辆部件(例如,一个或多个部件104,以及任选地,一个或多个部件108)的操作运行状态;执行故障检测、诊断和恢复处理;并响应于检测到的受监控车辆部件的失效而启动任务重新分配。
37.应当理解,图2所示的具体实现方式仅是说明性的。在一些实施例中,任务调度器
210可以包括驻留在微控制器204的车载存储器中并且可由微控制器204的处理器执行的计算机/机器可执行指令。在其他示例性实施例中,任务调度器210可以包括驻留在设置在车辆中的其他计算机可读存储介质上并且可由处理单元(例如,微处理器、电子控制单元等)执行的、并非微控制器204相关联的软件/固件模块。此外,在一些实施例中,车辆部件运行状态监控引擎204可由不同于微控制器204的微处理器或其他处理单元执行。此外,在一些实施例中,引擎204和/或任务调度器210可以在硬件中实现为例如定制的计算设备(如asic和fpga)的硬连线逻辑。
38.车辆部件运行状态监控引擎204可以包括一个或多个软件、固件和/或硬件模块。例如,引擎204可以包括故障检测模块206,其可以被配置成提供与监控车辆部件的运行状态、检测车辆部件的失效以及通知任务调度器210启动任务重新分配过程的失效相关的功能。引擎204还可以包括故障诊断模块236,其可以被配置成提供实时故障诊断功能。更具体地,响应于车辆部件失效的检测,故障诊断模块236可以对失效部件运行各种诊断以表征部件所经历的失效的性质。引擎204还可以包括故障恢复模块208,其可以被配置成提供与针对经历失效的车辆部件的启动恢复处理相关的功能。在一些示例性实施例中,故障诊断模块236可以向故障恢复模块208发送表征车辆部件经历的失效的性质的信息,并且故障恢复模块208可以启动专门针对部件失效的特性定制的故障恢复处理。参考图3和图4的说明性方法300、400将分别更详细地描述模块206、208的功能。
39.现在参考图3结合图2,在方法300的块302处,车辆部件运行状态监控引擎204可以监控各种车辆部件218的操作运行状态。车辆部件218可以包括一个或多个部件104(图1),例如gpu、cpu、asic、fpga、某些类型的传感器等,它们可以是不耐受恶劣的内部车辆操作环境的商用部件。由引擎204监控的车辆部件218可任选地进一步包括一个或多个耐受恶劣操作环境的部件108(图1)。
40.在示例性实施例中,引擎204可以从车辆部件218接收操作状态信息216。操作状态信息216可以包括与被监控的每个部件相关的状态信息。例如,在gpu的情况下,相应的操作状态信息216可以包括与gpu的各种操作参数相关的数据,例如当前处理负载;一段时间内的峰值处理负载;一段时间内的平均处理负载;时钟频率;操作温度数据;操作电压数据;与gpu执行的计算/处理相关的延迟数据等。类似地,指示操作参数的操作状态信息216也可以从其他类型的车辆部件接收。
41.在一些实施例中,车辆部件运行状态监控引擎204可以以周期性间隔从部件218中提取操作状态信息216。在其他示例实施例中,部件218可以周期性地、批量地或响应于触发事件而向引擎204发送操作状态信息216。示例的触发事件可以包括但不限于:操作参数的变化超过阈值量;操作参数的变化低于或高于相应的阈值;或类似事件。在一些实施例中,部件218可以利用一种或多种通信协议(例如,蓝牙)经由一种或多种有线或无线网络连接将操作状态信息216传送到引擎204。在其他示例性实施例中,一个或多个车辆部件218可以经由一个或多个专用总线与引擎204通信,或更概括地与微控制器202通信。
42.仍然参考图3并结合图2,在方法300的块304处,车辆部件运行状态监控引擎204,或更具体地,故障检测模块206可以确定车辆部件218是否已经失效。在一些实施例中,当部件完全不可操作时,该部件可被认为已失效。在其他示例实施例中,当相应的操作状态信息216指示出部件的一个或多个操作参数针对可能的某些最小阈值时间段具有未能满足最小
阈值水平和/或超过最大阈值水平的值时,可以检测到部件失效/故障。例如,如果gpu的处理延迟针对可能的至少阈值时间段大于最大允许延迟时间,则可以认为gpu或cpu失效。作为另一个非限制性示例,如果部件的时钟速率/频率针对可能的至少阈值时间段内失效低于最小时钟速率/频率,则可以认为gpu或cpu已经失效。应当理解,考虑部件失效的其他标准/指标。
43.在方法300的块306处,故障检测模块206可以确定与车辆部件失效相关联的失效级别。在一些实施例中,失效级别可以是离散失效级别的集合中的一个,代表车辆部件的性能退化程度逐渐提高。例如,每个可能的失效级别可对应于偏离一个或多个预期值(或预期值范围)至少一个相应阈值量的部件的一个或多个操作参数。在一些实施例中,失效级别可以是从连续或离散的分数/值的范围中分配给部件失效的分数/值。失效级别分数可以通过评估与一个或多个预期值(或预期值范围)相关的一个或多个操作参数来确定。失效级别分数可以通过聚合一个或多个操作参数值与一个或多个预期值(或预期值范围)的差异来获得,并可能地基于操作参数对于车辆部件的整体操作运行状态的参数的影响将不同的权重分配给不同的操作参数。作为非限制性示例,确定车辆部件的失效级别可以包括首先确定与车辆部件在其失效之后执行的任务处理相关联的延迟时间或与车辆部件失效相关联的延迟时间增加的量,以及随后根据失效级别到延迟范围或延迟变化范围的映射来确定失效级别。
44.在方法300的块308,故障检测模块206可以向任务调度器210发送部件失效通知212。部件失效通知212可以包括经历失效的特定车辆部件的标识符以及所确定的失效级别的指示。在一些实施例中,部件失效通知212可包括造成或指示部件失效的特定操作参数的值。例如,部件失效通知212可以包括失效组件的处理延迟时间值和指示部件失效的相应的预期值/范围。
45.在方法300的块310处,任务调度器210可以访问进行任务重新分配评估所需的各种类型的数据。一般而言,任务调度器210可以被配置成确定和管理各种车辆部件中的任务处理分配。例如,任务调度器210可以被配置成确定如何在各种车辆部件中分配任务集合以供处理,其中这样的车辆部件可以包括一个或多个传感器220(1)-220(v);一个或多个gpu 222(1)-222(x);一个或多个fpga 224(1)-224(y);一个或多个cpu 226(1)-226(z)等。变量v、x、y和z各自可以是大于或等于1的任何整数。应当理解,图2仅非穷举地描绘示例性的车辆部件,任务调度器210可以将任务处理分配给该示例性车辆部件。
46.在示例实施方式中,在块310处,任务调度器210可以访问一个或多个数据存储214以检索多种类型的数据,任务调度器210可以使用该数据以根据部件失效通知212中标识的车辆部件的失效进行任务重新分配评估。这样的数据可以包括但不限于:延迟数据214a、操作规则数据214b、任务调度数据214c和车辆操作数据214d。延迟数据214a可以包括例如指示与处理各种任务处理的各种车辆部件相关联的相应处理延迟的数据。处理延迟可以指与车辆部件(例如,gpu)完成特定任务或任务的一部分的处理相关联的时间/延迟量。处理延迟可能取决于:部件的类型(例如,cpu通常可能比gpu表现出更大的延迟);部件正在处理的任务处理量(处理负载)(反之,部件的可用处理能力);部件借以将任务处理输出发送到另一个车辆部件(如被配置为利用任务处理的结果的控制器/处理器)的通信总线或网络的大小;等等。
222(x)至少具有阈值量的可用处理能力。作为另一个非限制性示例,任务调度器210可以确定将由gpu 222(1)在失效之前执行的任务处理的至少一部分卸载到gpu 222(x)将导致gpu 222(x)的小于阈值量的性能下降。应当理解,上述操作运行状况标准仅仅是说明性的而不是详尽的。
53.在一些示例实施方式中,任务调度器210可以首先尝试识别一个或多个候选任务重新分配,其将涉及将失效车辆部件在失效之前执行的任务处理卸载到与失效车辆部件相同部件类型的一个或多个其他车辆部件。例如,假设gpu 222(1)失效,则任务调度器210可以首先评估一个或多个其他gpu(例如,gpu 222(x))是否可以承担由gpu 222(1)在失效之前执行的任务处理的至少一部分,同时仍满足将任务处理卸载到的gpu的操作运行状况标准。将先前由失效车辆部件执行的任务处理卸载到相同类型的另一个车辆部件可能是符合期望的,因为它可能导致处理延迟没有变化、处理延迟减少或发生的处理延迟增加比当任务处理如果被卸载到与失效车辆部件的部件类型不同的一个或多个车辆部件时更小。
54.在一些实施方式中,任务调度器210可以进一步确定将任务处理从失效gpu 222(1)卸载到一个或多个其他gpu(例如,gpu 222(x))除了满足操作运行状况标准以外还将满足最低车辆操作要求。例如,任务调度器210可以确定将任务处理的至少一部分从gpu 222(1)卸载到gpu 222(x)将不会导致处理延迟的减少,因此,无需改变车辆操作参数,如车辆速度。作为另一个非限制性示例,任务调度器210可以确定将任务处理的至少一部分从gpu 222(1)卸载到gpu 222(x)将导致处理延迟的一些增加,在这种情况下,任务调度器210可以确定将发生的处理延迟增加的量。然后任务调度器210可以确定补偿处理延迟的增加所需的车辆速度的相应降低。如果降低后的车辆速度仍然符合操作规则数据214b(例如,降低后的车辆速度仍然高于车辆当前正在穿过的道路的阈值最小车辆速度),则任务调度器210可以继续进行任务重新分配。
55.在一些实施方式中,由失效车辆部件(例如,gpu 222(1))在失效之前执行的任务处理的一些部分可以在失效之后继续由该车辆部件执行。如前所述,车辆部件的失效可能对应于不同级别的失效,其中至少一些可能不对应于完全的部件失效。因此,在一些情况下,gpu 222(1)可能已经经历了对应于特定失效级别的性能下降,但仍然可以部分操作,因此,在经历失效之后,仍然能够处理它在失效之前正在处理的部分任务处理。
56.在一些示例实施方式中,任务调度器210可以确定没有与失效车辆部件相同部件类型的车辆部件可用于承担来自失效车辆部件的任务处理。例如,任务调度器210可以确定将任务处理从失效的gpu 222(1)卸载到任何一个或多个其他gpu 222(2)-222(x)将导致处理被卸载到的部件的性能下降和/或处理延迟增加,这将导致被考虑用于任务卸载的gpu 222(2)-222(x)中的任何一个不满足操作运行状况标准和/或将导致不满足在操作规则数据214b中指定的操作规则。在这样的示例实施方式中,任务调度器210可以评估由失效车辆部件执行的任务处理的至少一部分是否可以卸载到与失效车辆部件不同部件类型的一个或多个其他车辆部件,同时确保操作满足这些部件的运行状况标准并且满足车辆操作规则。
57.例如,再次假设gpu 222(1)已经失效并且不能对一个或多个其他gpu 222(2)-222(x)进行候选任务重新分配,则任务调度器210可以确定由gpu 222(1)在失效之前执行的任务处理的至少一部分可以卸载到一个或多个fpga(例如,fpga224(1))和/或一个或多个cpu
(例如,cpu 226(1))。在一些实施方式中,任务调度器210可以首先确定是否可以仅使用一个或多个cpu来实现任务重新分配,因为如果将任务处理仅卸载到cpu,则与卸载到cpu和其他处理单元(例如fpga)的组合相比,可能发生较小的处理延迟的增加。
58.事实上,在一些示例实施方式中,任务调度器210可以基于部件类型的等级来评估任务重新分配。例如,假设gpu 222(1)发生失效,任务调度器210可首先确定候选任务重新分配是否可用,其涉及将所有需要从失效gpu 222(1)卸载的任务处理卸载到一个或多个其他gpu 222(2)-222(x)。这可能是理想的任务重新分配,因为与gpu 222(1)失效之前的任务分配相比,它可能不涉及处理延迟的变化,仅涉及最小的处理延迟的增加,或者在某些情况下,处理延迟的减少。如果不存在既满足针对卸载选择的部件的操作运行状况标准又满足操作规则数据214b的此类候选任务重新分配,则任务调度器210可以确定涉及将任务处理从发生失效的gpu 222(1)卸载到一个或多个其他gpu 222(2)-222(x)和一个或多个cpu 226(1)-226(z)的组合的候选任务重新分配是否可用,其中cpu例如在部件等级中为低一级。如果没有这样的任务重新分配可用,则任务调度器210可以继续确定仅涉及cpu、接着是cpu和fpga的组合、接着是仅涉及fpga等等的任务重新分配是否可用。
59.应当理解,本文讨论的gpu、cpu、fpga等仅用于说明目的。例如,在其他示例实施方式中,任务调度器210可以评估关于其他类型的车辆部件(如asic等)的潜在任务重新分配。在一些实施方式中,某些类型的车辆部件可以与其他不同类型的部件在部件等级中处于相同级别。例如,asic和fpga可以在部件等级中处于相同级别,使得任务调度器210关于其任务重新分配评估不表现出单独基于部件类型的两者之间的偏好。还应当理解,作为其任务重新分配评估的一部分,任务调度器210可以首先尝试识别涉及在部件等级中与失效车辆部件处于相同级别或更高级别(如果可能)的车辆部件的任务重新分配。例如,如果cpu(如226(1))发生失效,则任务调度器210可以首先尝试识别将涉及将任务处理从发生失效的cpu卸载到gpu或gpu的组合的任务重新分配,然后再考虑涉及其他cpu的任务重新分配。类似地,如果fpga发生失效,则任务调度器210可以首先尝试识别将涉及将任务处理从发生失效的fpga卸载到gpu、gpu的组合、gpu和cpu的组合、cpu或cpu的组合的任务重新分配,然后再考虑涉及其他fpga的任务重新分配。
60.如前所述,在gpu 222(1)发生失效时,任务调度器210可以确定不存在满足此类gpu的操作运行状况标准以及操作规则数据214b的仅涉及其他gpu的候选任务重新分配,并且可以替代地识别包括一个或多个cpu 226(1)-226(z)和/或一个或多个fpga224(1)-224(y)的任务候选任务重新分配。任务调度器210可以通过确保由于任务重新分配而发生的操作参数的变化不会违反车辆操作规则(如需要维持的最小阈值车辆速度)来确定此类任务重新分配是合适的候选。
61.例如,任务调度器210可以确定在任务重新分配之后的操作参数值(如处理延迟)可能增加的量。然后任务调度器210可以基于车辆操作数据214d(例如当前车辆速度)确定需要降低的车辆速度的量以补偿处理延迟的增加。然后任务调度器210可以对照操作规则数据214b(例如,车辆当前穿过的道路的需要维持的最小阈值车辆速度)评估在该降低的车辆速度下是否可以发生安全车辆操作。在一些实施方式中,任务调度器210可以对照阈值允许的最大车辆速度变化来评估车辆速度将需要降低的量。例如,如果车辆以相对高的速度穿过高速公路,出于安全考虑,可能不允许超过阈值的车辆速度变化。在这样的示例实施方
式中,可以拒绝将需要超过车辆速度的阈值变化的任务重新分配作为候选。
62.在一些实施方式中,与车辆正在穿过的环境相关联的特征可以确定由于任务重新分配而发生的处理延迟增加的程度,从而确定用于补偿增加的处理延迟的车辆速度必须降低到的程度。例如,如果车辆的周围环境包括大量障碍物,则如果此类任务的处理至少部分地从失效gpu 222(1)卸载到例如一个或多个cpu 226(1)-226(z),则与执行诸如目标检测和实例分割的任务相关联的处理延迟可能会显著增加。由于处理延迟的这种较大的增加,所需的车辆速度的降低可能相应地增加。因此,环境因素可能影响由于与任务重新分配相关联的任务卸载而导致的处理延迟增加的量,并因此影响所需的相应车辆速度降低的程度。因此,涉及将任务处理从失效部件(例如,失效的gpu 222(1))卸载到一组特定的车辆部件(例如,一个或多个cpu 226(1)-226(z))的任务重新分配可能是在某些环境条件下的候选任务重新分配,而不是取决于是否可以通过仍然高于车辆需要维持的阈值最小车辆速度的车辆速度降低来补偿引起的处理延迟的增加的其他候选任务重新分配。
63.仍然参考图3结合图2,如果任务调度器210识别出没有满足操作规则数据214b的候选任务重新分配(块312处的否定确定),则任务调度器210可以通知车辆部件运行状况监测引擎204,并且在方法300的块314处可以启动紧急安全协议。如前所述,在示例实施方式中,候选任务重新分配的缺失可能指示任务调度器210不能识别出失效部件执行的任务处理可以被卸载到的一个或多个车辆部件(例如,gpu 222(1)),同时确保维持此类部件的操作运行状况标准,同时仍然符合由操作规则数据214b指定的车辆操作规则,如最小车辆速度。
64.在这样的示例实施方式中,紧急安全协议可以包括使自主车辆停在被识别为安全的位置、打开警告指示器(例如,危险警告灯)等。在一些实施方式中,车辆可以保持停止直到完成故障恢复处理(本公开稍后描述的图4的方法400)以及失效的车辆部件(例如,gpu 222(1))再次操作正常或直到既满足任务重新分配中涉及的部件的操作运行状况标准又满足车辆的操作规则(例如,必须维持的最小车辆速度)的新的候选任务重新分配变得可用。在一些实施方式中,在块314启动紧急安全协议之后,任务调度器210可以立即开始根据包含在部件失效通知212中的数据(例如,失效车辆部件的部件类型、部件的失效级别等)重新评估从数据存储214检索的数据(例如,延迟数据214a、任务调度数据214c和/或车辆操作数据214d),来确定满足操作规则数据214b的候选任务重新分配是否已经变得可用。在其他示例实施方式中,任务调度器210可以启动可配置的延迟,以在再次评估任务重新分配的可行性之前允许失效部件的操作运行状况得到改善或恢复和/或允许其他车辆部件的处理能力得到释放。
65.另一方面,响应于在块312处指示至少一个候选任务重新分配已经被任务调度器210识别的肯定确定,在方法300的块316处任务调度器210可以继续选择用于实施的特定的候选任务重新分配。然后在方法300的块318处,任务调度器210可以启动所选择的任务重新分配。在一些实施方式中,可以在任务重新分配的实施之前或至少部分地与任务重新分配的实施同时启动由任务重新分配迫使的车辆速度改变。
66.在示例实施方式中,任务调度器210可以通过将任务重新分配信息发送到将从失效车辆部件接收处理负载的车辆部件来启动所选择的任务重新分配。例如,再次假设gpu 222(1)已经失效,则任务调度器210可以将任务重新分配信息230发送到由失效的gpu 222
(1)在失效之前执行的任务处理的至少一部分(作为所选任务重新分配的一部分)将被卸载到的一个或多个其他gpu 222(2)-222(x)。附加地或可替换地,任务调度器210可以将任务重新分配信息232发送到由失效gpu 222(1)在失效之前执行的任务处理的至少一部分(作为所选任务重新分配的一部分)将被卸载到的一个或多个fpga 224(1)-222(y)和/或将任务重新分配信息发送到一个或多个cpu 226(1)-226(z)。
67.任务调度器210可以被配置为基于一个或多个选择标准从多个潜在任务重新分配中选择特定的任务重新分配。作为非限制性示例,任务调度器210可以选择导致处理延迟增加最小并由此导致车辆速度所需降低最小的任务重新分配。例如,任务调度器210可以选择涉及将处理从失效的gpu 222(1)仅卸载到一个或多个其他gpu的候选任务重新分配,该选择优先于涉及至少部分地将任务处理卸载到处理能力较低的部件(如cpu、fpga或asic)的候选任务重新分配。作为另一个非限制性示例,任务调度器210可以选择包括最大数量的在部件等级中较高级别的车辆部件的任务重新分配。例如,任务调度器210可以选择涉及将任务处理从失效的gpu 222(1)以分散方式卸载到三个不同的cpu的候选任务重新分配,该选择优先于涉及将任务处理卸载到2个cpu和2个fpga的候选任务重新分配。
68.图4描绘了在一些实施例中可至少部分地与故障检测方法300同时执行的说明性车辆部件故障恢复方法400。现在参考图4并结合图2,在方法400的框402处,故障诊断块236可执行失效车辆部件的实时诊断。实时诊断可包括在失效部件上运行诊断,以评估和表征车辆部件(例如gpu 222(1))经历的失效。在一些示例实施例中,运行诊断可包括在部件的检测到失效之前的第一时间段和检测到失效之后的第二时间段访问和比较与失效车辆部件的操作相对应的延迟数据214a和/或车辆操作数据214d。故障诊断块236可确定在第一时间段与第二时间段之间车辆部件的操作模式/活动的变化,并可将这些变化与各种标准/阈值进行比较,以表征车辆部件所经历的失效的性质。例如,一个或多个失效前操作参数与一个或多个失效后操作参数之间的偏差越大(例如,失效前的处理延迟与失效后的处理失效),和/或操作参数与预配置值之间的偏差越大,故障诊断块236可能与检测到的失效相关联的严重级别越高。
69.在方法400的框404处,故障恢复块208可启动失效车辆部件的故障恢复处理。例如,故障恢复块208可向失效车辆部件(例如,gpu 222(1))发送故障恢复启动信号228以启动故障恢复处理。在一些实施例中,故障恢复启动信号228可指示失效部件启动自恢复处理。在其他示例实施例中,故障恢复块208可自行执行恢复,或指示一个或多个其他车辆部件执行恢复。示例方法400假定失效部件(例如,gpu 222(1))的失效级别使得该部件能够从导致失效的故障中恢复。
70.在示例性实施例中,故障诊断块236可以向故障恢复块208发送失效特征信息,其指示车辆部件的失效是如何被特征化的。失效特征信息可指示发生失效的车辆部件、分配给失效的严重级别、失效类型等。在一些示例实施例中,故障诊断块236还可以向故障恢复块208提供指示失效前和失效后失效部件的操作参数的诊断信息。故障恢复块208可评估失效特征信息和诊断信息,以确定失效车辆部件的适当故障恢复处理。在一些实施例中,故障恢复块208可以从一组预定的故障恢复处理中选择车辆部件的类型和所经历的失效类型。在其他示例性实施例中,故障恢复块208可以修改故障恢复处理,以基于结合部件的失效观察到的特定度量来为失效部件生成定制的恢复处理。
71.在方法400的框406处,故障恢复块208可监测失效车辆部件的故障恢复状态。在一些实施例中,故障恢复块208可以周期性地ping失效部件(例如,gpu 222(1))以获取恢复状态信息,该信息指示该部件已恢复到其失效前的操作状态的程度。
72.在方法400的框408处,故障恢复块208可确定失效车辆部件是否再次操作运行。当部件的一个或多个操作运行参数满足相应的最小阈值时,车辆部件可被视为再次操作运行。例如,gpu 222(1)行可被视为再次操作运行,gpu 222(1)再次可用于处理至少阈值量的处理负载。作为另一非限制性示例,当与由gpu 222(1)执行的任务处理相关联的处理延迟再次下降到最大允许处理延迟以下时,gpu 222(1)可被视为再次操作运行。故障恢复块208可以继续周期性地或连续地监控失效车辆部件的故障恢复状态,只要故障恢复信息指示失效部件尚未操作运行(框408处的否定确定)。另一方面,响应于在框408处指示失效车辆部件已再次达到最小可行操作运行状态的肯定确定,方法400可进入框410,其中故障恢复块208可通知任务调度器210失效车辆部件再次操作运行。
73.在接收到失效车辆部件再次操作运行的指示时,任务调度器210可在方法400的框412处继续访问来自数据存储214的数据,以再次进行任务重新分配评估。更具体地说,任务调度器210可访问延迟数据214a(其可已被更新以反映与响应于车辆部件的失效而采用的任务重新分配相关联的处理延迟);操作运行规则数据214b;任务调度数据214c(也可能已被更新以反映响应车辆部件失效而采用的任务重新分配);以及车辆操作运行数据214d(其也可能已被更新以反映,例如,先前采用任务重新分配所需的新车辆速度)。任务调度器210随后可根据先前失效部件的操作状态的恢复来确定可采用的一种或多种候选任务重新分配。在这些候选任务重新分配中,可能包括在车辆部件发生失效之前立即到位的任务分配、为响应车辆部件的失效而采用的当前任务分配,或其他不同的任务重新分配。
74.然后,在方法400的框414,任务调度器210可以基于选择标准选择候选任务重新分配中的一个,选择标准可以包括前面描述的任何选择标准。任务调度器210随后可在方法400的框416处启动(或维持)所选任务分配。在一些实施例中,尽管先前发生失效的车辆部件变得再次操作运行,但是任务调度器210可决定维持响应于车辆部件的失效而采用的当前任务分配。例如,在当前任务分配下,一个或多个其他gpu可能已经从发生失效的gpu 222(1)拾取了处理负载,并且这些其他gpu执行任务处理的效率如在发生失效之前已执行处理的gpu 222(1)的效率一样或者潜在更高。在其他示例性实施例中,任务调度器210可以恢复到在gpu 222(1)发生失效之前就位的任务分配,或者可以基于例如在延迟数据214a中识别的处理延迟来选择完全不同的任务重新分配。
75.硬件实现方式
76.图5是示出配置成实现本发明的示例实施例的示例网络架构500的示意性框图。联网架构500可包括经由一个或多个网络506通信地联接到各种车辆部件504的一个或多个专用计算装置502。车辆部件504可以包括本文描述的任何示例类型的部件,包括商业化组件(例如,gpu、cpu、asic、fpga等);汽车级组件(例如,汽车级微控制器,其他机械/电气汽车零部件等);以及车载传感器(例如,lidar、雷达、相机、gps接收器、基于声纳的传感器、超声波传感器、imu、加速度计、陀螺仪、磁力计和fir传感器等)。车辆部件504可以设置在诸如自主车辆的车辆的外部上或内部中。专用计算装置502可以包括与车辆集成的装置,并且可以经由本地网络连接(例如,wifi、蓝牙、专用短程通信(dsrc)等)接收来自部件504的数据(例
如,操作运行状况数据、传感器数据等)。在其他示例实施例中,专用计算装置502可以远离车辆设置,并且可以经由一个或多个远程网络从部件504接收数据。
77.可以硬接线专用计算装置502以执行技术;可以包括被持久性地编程为执行该技术的电路或数字电子装置,诸如一个或多个asic或fpga;和/或可以包括被编程为依据固件、存储器、其他存储设备或它们的组合中的程序指令来执行该技术的一个或多个硬件处理器。专用计算装置502也可以将定制硬接线逻辑、asic或fpga与定制编程组合以完成该技术。专用计算装置502可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持式装置、联网装置或结合了硬接线和/或编程逻辑以实现该技术的任何其他装置或装置组合。
78.专用计算装置一般可以由操作系统软件520控制和协调,包括可移动操作系统,诸如ios、android、chrome os等,桌面操作系统,大型机操作系统,或其他兼容操作系统。在其他实施例中,计算装置402可以由专有操作系统控制。操作系统软件420可以控制和调度计算机进程以供执行;执行存储器管理;提供文件系统、联网和i/o服务;以及提供用户界面功能性,诸如图形用户界面(“gui”)。
79.尽管在本文中可以单数描述计算装置502和/或传感器504,但应了解,可提供任何此类部件的多个实例,并且结合任何特定部件描述的功能性可分布在该部件的多个实例上。在某些示例实施例中,本文中结合架构500的任何给定部件描述的功能性可分布在架构500的多个部件间。例如,可以将描述为由计算装置502提供的功能性的至少一部分分布在多个此类计算装置502间。
80.网络506可包括但不限于任一种或多种不同类型的通信网络,例如有线网络、公共网络(例如,互联网)、专用网络(例如,帧中继网络)、无线网络、蜂窝网络、电话网络(例如,公共交换电话网络)或任何其他合适的专用或公共分组交换或电路交换网络。网络506可具有与其相关联的任何合适的通信范围并可包括例如全球网络(例如,互联网)、城域网(man)、广域网(wan)、局域网(lan)或个人局域网(pan)。另外,网络506可包括通信链路和相关联的联网装置(例如,链路层交换机、路由器等),以在任何合适类型的介质上传输网络流量,该合适类型的介质包括但不限于同轴电缆、双绞线(例如,双绞铜线)、光纤、同轴混合光纤(hfc)介质、微波介质、射频通信介质、卫星通信介质或它们的任何组合。
81.在说明性配置中,计算装置502可包括一个或多个处理器508、一个或多个存储器装置510(在本文中通称为存储器510)、一个或多个输入/输出(“i/o”)接口512、一个或多个网络接口514以及数据存储设备518。计算装置502还可包括功能性地联接计算装置502的各种部件的一个或多个总线516。数据存储设备可以存储一个或多个引擎、程序块、部件等,其包括但不限于车辆部件状况监控引擎524和任务调度器530。车辆部件状况监控引擎524可以进一步包括一个或多个引擎、程序块、部件或其他,包括但不限于故障检测块526和故障恢复块528。图5中描绘的引擎/部件中的每一者可以包括用于结合对应地命名的引擎/部件执行先前描述的过程或任务中的任一者的逻辑。在某些示例实施例中,所描绘的引擎/部件中的任一者可以在诸如一个或多个asic或fpga的数码电子装置内的硬连线电路中实现,持久地编程数码电子装置以执行对应的技术。在示例实施例中,车辆部件状况监控引擎524和任务调度器530可以在汽车级微控制器等上执行。
82.总线516可包括系统总线、存储器总线、地址总线或消息总线中的至少一者,并且
可准许在计算装置502的各种部件之间交换信息(例如,数据(包括计算机可执行代码)、信令等)。总线516可包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。总线516可与任何合适的总线架构相关联,包括但不限于工业标准架构(isa)、微通道架构(mca)、增强型isa(eisa)、视频电子标准协会(vesa)架构、加速图形端口(agp)架构、外围部件互连(pci)架构、pci-express架构、国际个人计算机存储卡协会(pcmcia)架构、通用串行总线(usb)架构等。
83.存储器510可包括:易失性存储器(当被供电时维持其状态的存储器),诸如随机存取存储器(ram);和/或非易失性存储器(即使当未被供电时也维持其状态的存储器),诸如只读存储器(rom)、快闪存储器、铁电ram(fram)等。持久性数据存储设备,如在本文中使用该术语时,可包括非易失性存储器。在某些示例实施例中,易失性存储器可实现比非易失性存储器快的读/写访问。然而,在某些其他示例实施例中,某些类型的非易失性存储器(例如,fram)可实现比某些类型的易失性存储器快的读/写访问。
84.在各种实施例中,存储器510可包括多种不同类型的存储器,诸如各种类型的静态随机存取存储器(sram)、各种类型的动态随机存取存储器(dram)、各种类型的不可更改rom和/或rom的可写变体,诸如电可擦除可编程只读存储器(eeprom)、快闪存储器等。存储器510可包括主存储器以及各种形式的高速缓存存储器,诸如指令高速缓存、数据高速缓存、转译后备缓冲器(tlb)等。另外,高速缓存存储器诸如数据高速缓存可是组织为一个或多个高速缓存级(l1、l2等)的分级结构的多级高速缓存。在示例实施例中,存储器510可以包括图1中描绘的数据存储设备106(1)-106(p)和/或数据存储设备120。可替代地,数据存储设备106(1)-106(p)可以是形成数据存储设备518的一部分的硬盘存储设备并且/或者数据存储设备120可以是作为fov语义计算机器524自身的一部分提供的ram或高速缓存存储器的形式。
85.数据存储设备518可包括可移动存储设备和/或不可移动存储设备,包括但不限于磁性存储设备、光盘存储设备和/或磁带存储设备。数据存储设备518可提供对计算机可执行指令和其他数据的非易失性存储。存储器510和数据存储设备518(可移动和/或不可移动),如在本文中使用该术语时,是计算机可读存储介质(crsm)的示例。数据存储设备518可存储可被加载到存储器510中并可由处理器508执行以致使处理器508执行或发起各种操作的计算机可执行代码、指令等。数据存储设备518可另外地存储可被复制到存储器510以供处理器508在执行计算机可执行指令期间使用的数据。此外,由于由处理器508执行计算机可执行指令产生的输出数据可最初存储在存储器510中,并且可最终复制到数据存储设备518以进行非易失性存储。
86.更具体地,数据存储设备518可存储一个或多个操作系统(o/s)520和一个或多个数据库管理系统(dbms)522,该一个或多个o/s和一个或多个dbms配置成潜在地经由网络506中的一者或多者访问存储器510和/或一个或多个外部数据存储(未描绘)。此外,数据存储设备518还可以存储一个或多个程序块、应用、引擎、计算机可执行代码或脚本等。例如,在图5中描绘的引擎/部件中的任一者可以实现为软件和/或固件,其包括可加载到存储器510中的由处理器508中的一个或多个处理器执行的计算机可执行指令(例如,计算机可执行程序代码),以执行块本文描述的任一项技术。
87.尽管图5中未描绘,但数据存储设备518还可存储计算装置502的引擎/部件所利用
的各种类型的数据。此种数据可以包括但不限于传感器数据、反馈数据,包括历史传感器操作运行数据、初始参数数据等。可将存储在数据存储设备518中的任何数据加载到存储器510中以供处理器508在执行计算机可执行程序代码时使用。另外,存储在数据存储设备518中的任何数据可潜在地存储在一个或多个外部数据存储中,该外部数据存储可经由dbms 522访问并可加载到存储器510中以供处理器508在执行计算机可执行指令/程序代码时使用。
88.处理器508可被配置为访问存储器510并执行加载在其中的计算机可执行指令/程序代码。例如,处理器508可配置成执行计算机器524的fov语义的各种引擎/部件的计算机可执行指令/程序代码,以使得或促进根据本发明的一个或多个实施例执行各种操作。处理器508可包括能够接受数据作为输入、根据存储的计算机可执行指令处理输入数据并生成输出数据的任何合适的处理单元。处理器508可包括任何类型的合适的处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(risc)微处理器、复杂指令集计算机(cisc)微处理器、微控制器、专用集成电路(asic)、现场可编程门阵列(fpga)、片上系统(soc)、数字信号处理器(dsp)等。另外,处理器508可具有包括任何数量的构成部件(诸如像寄存器、多路复用器、算术逻辑单元、用于控制对高速缓存存储器的读/写操作的高速缓存控制器、分支预测器等)的任何合适的微架构设计。可使处理器508的微架构设计能够支持多种指令集中的任一种。
89.现在参考被描绘为存储在数据存储设备518中的其他说明性部件,o/s 520可从数据存储设备518加载到存储器510中并可提供在计算装置502和计算装置502的硬件资源上执行的其他应用程序软件之间的接口。更具体地,o/s 520可包括用于管理计算装置502的硬件资源和用于向其他应用程序提供公共服务的一组计算机可执行指令。在某些示例实施例中,o/s 520可包括或以其他方式控制存储在数据存储设备518中的引擎/程序块中的一者或多者的执行。o/s 520可包括现在已知或可在将来开发的任何操作系统,包括但不限于任何服务器操作系统、任何大型机操作系统或任何其他专有或非专有操作系统。
90.dbms 522可被加载到存储器510中并可支持用于访问、检索、存储和/或操纵存储在存储器510中的数据、存储在数据存储设备518中的数据和/或存储在外部数据存储中的数据的功能性。dbms 522可使用多种数据库模型中的任一种(例如,关系模型、对象模型等)并可支持多种查询语言中的任一种。dbms 522可访问以一种或多种数据模式表示并存储在任何合适的数据存储库中的数据。可以由计算装置502经由dbms 522访问的数据存储可包括但不限于数据库(例如,关系、面向对象的等)、文件系统、平面文件、其中数据存储在计算机网络的多于一个节点上的分布式数据存储、对等网络数据存储等。
91.现在参考计算装置502的其他说明性部件,输入/输出(i/o)接口512可促进计算装置502从一个或多个i/o装置接收输入信息以及从计算装置502向一个或多个i/o装置输出信息。i/o装置可包括如下中的任一种:具有触摸表面或触摸屏多种部件如显示器或显示屏幕;用于产生声音的音频输出装置,诸如扬声器;音频捕获装置,诸如麦克风;图像和/或视频捕获装置,诸如相机;触觉单元等。这些部件中的任一者都可集成到计算装置502中或可与其分开。i/o装置还可包括例如任何数量的外围装置,诸如数据存储装置、打印装置等。
92.i/o接口512还可包括用于外部外围装置连接(诸如通用串行总线(usb)、firewire、thunderbolt、以太网端口或可连接到一个或多个网络的其他连接协议)的接口。
i/o接口512还可包括与一个或多个天线的连接,以经由无线局域网(wlan)(诸如wi-fi)无线电、蓝牙和/或无线网络无线电(诸如能够与无线通信网络诸如长期演进(lte)网络、wimax网络、3g网络等通信的无线电)连接到一个或多个网络。
93.计算装置502还可包括一个或多个网络接口514,计算装置502可经由该一个或多个网络接口与多种其他系统、平台、网络、装置等中的任一者通信。网络接口514可使得能够经由网络506中的一者或多者与例如传感器504和/或一个或多个其他装置通信。在示例实施例中,网络接口514提供联接到连接到网络506中的一者或多者的一个或多个网络链路的双向数据通信。例如,网络接口514可以包括集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或用于提供到对应类型的电话线的数据通信连接的调制解调器。作为另一个非限制性示例,网络接口514可以包括局域网(lan)卡,以提供到兼容lan(或与wan通信的广域网(wan)部件)的数据通信连接。也可以实现无线链路。在任何此类实现方式中,网络接口514可以发送和接收携带表示各种类型的信息的数字数据流的电、电磁或光信号。
94.网络链路典型地提供通过一个或多个网络到其他数据装置的数据通信。例如,网络链接可以通过局域网提供到主计算机或到由互联网服务提供商(isp)运营的数据设备的连接。isp继而可以通过现在通常称为“互联网”的全球分组数据通信网络提供数据通信服务。局域网和互联网两者都使用携带数字数据流的电、电磁或光信号。通过各种网络504的信号以及在网络链路上并通过网络接口514的信号是传输介质的示例形式,该信号携带去往和来自计算装置502的数字数据。在示例实施例中,计算装置502可通过网络506、网络链路和网络接口514发送消息和接收数据,包括程序代码。例如,在互联网示例中,服务器可通过互联网、isp、局域网和网络接口514传输针对应用程序的请求的代码。接收到的代码可以在其被接收到时由处理器508执行,和/或存储在数据存储设备518或其他非易失性存储器中,以供之后执行。
95.应了解,作为计算装置502的一部分的图5中描绘的引擎仅是说明性的而不是穷举的。具体地,能够以任何合适的方式对功能性进行模块化,使得被描述为由任何特定引擎支持的处理可以可替代地分布在多个引擎、程序模块、部件等上,或者由不同的引擎、程序模块、部件等执行。另外,在某些实施例中可以存在或不存在一个或多个所描绘的引擎,而在其他实施例中,可存在未描绘的附加引擎,并且该附加引擎可支持所描述的功能性和/或附加功能性的至少一部分。另外,各种引擎、程序模块、脚本、插件、应用程序编程接口(api)或本地托管在计算装置502上和/或托管在可经由网络502中的一者或多者访问的其他计算装置(例如,502)上的任何其他合适的计算机可执行代码可提供来支持由图5中描绘的引擎提供的功能性和/或附加或替代功能性。另外,支持本文中描述的功能性的引擎可至少部分地以硬件和/或固件来实现,并且可根据任何合适的计算模型(诸如像客户端-服务器模型、对等模型等)在任何数量的计算装置502上执行。
96.还应了解,在不脱离本发明的范围的情况下,计算装置502可包括除了所描述或描绘的那些之外的替代和/或附加硬件、软件和/或固件部件。更具体地,应了解,被描绘为形成计算装置502的部分的软件、固件和/或硬件部件仅是说明性的,并且在各种实施例中,可以存在或不存在一些部件,或者可以提供附加部件。还应了解,在各种实施例中,描绘并描述的引擎中的每者表示支持的功能性的逻辑分区。该逻辑分区是为了易于解释功能性而描绘的,并且可以表示或不表示用于实现功能性的软件、硬件和/或固件结构。
97.一般来讲,如本文所使用的术语引擎、程序模块等是指体现在硬件、固件和/或电路系统中的逻辑,或是指以编程语言诸如java、c或c++编写的可能具有入口点和出口点的软件指令的集合。软件引擎/模块可以被编译并链接到可执行程序、安装在动态链接库中,或者可以用解释性编程语言诸如像basic、perl或python编写。将了解到,软件引擎/模块可以从其他引擎/模块或从它们自身被调用,和/或可以响应于检测到的事件或中断而被调用。配置成在计算装置上执行的软件引擎/模块可以提供在计算机可读介质诸如压缩盘、数字视频盘、快闪存储器驱动器、磁盘或任何其他有形介质上,或作为数字下载(并且可最初以要求在执行之前安装、解压缩或解密的压缩或可安装格式存储)。此类软件代码可以部分地或全部地存储在正在执行的计算装置的存储器装置上,以由计算装置执行。“开源”软件是指源代码,源代码可作为源代码和/或以编译形式分发,并且以广为人知且有索引的手段获得源代码,并且任选地具有允许修改和衍生作品的许可。软件指令可以被嵌入在固件中并且例如被存储在诸如可擦除可编程只读存储器(eprom)的闪存上。还将了解,硬件模块/引擎可以包括连接的逻辑单元,诸如门和触发器,和/或还可以包括可编程单元,诸如可编程门阵列或处理器。
98.示例性实施例在本文中被描述为包括引擎或程序模块。此类引擎/程序模块可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以特定物理方式被配置或布置。在各种示例实施例中,一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,处理器或一组处理器)可以通过软件(例如,应用程序或应用程序部分)配置为操作来执行如本文所描述的某些操作的硬件引擎。
99.在一些实施例中,硬件引擎可机械地、电子地或以它们的任何合适的组合实现。例如,硬件引擎可包括持久性地配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可为专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件引擎还可以包括由软件临时配置为执行某些操作的可编程逻辑或电路。例如,硬件引擎可以包括通用处理器或由软件配置的其他可编程处理器,在这种情况下,配置的处理器成为唯一被定制以执行配置的功能的特定机器,并且不再构成通用处理器。将了解,可以由成本和时间考虑促成对在专用且持久性地配置的电路中还是在暂时地配置的电路(例如,由软件配置)中机械地实现硬件引擎的决策。
100.因此,术语“引擎”或“程序模块”应理解为涵盖有形实体,是物理地构造、持久性地配置(例如,硬接线)或暂时地配置(例如,编程)来以某种方式操作或执行本文中描述的某些操作的实体。考虑到其中暂时地配置(例如,编程)硬件引擎的实施例,不需要在任一时刻配置或实例化硬件引擎中的每一个。例如,在硬件引擎包括由软件配置成为专用处理器的通用处理器的情况下,通用处理器可以在不同时间分别配置为不同专用处理器(例如,包括不同硬件引擎)。软件可相应地配置一个或多个特定处理器,例如,以在给定的时刻构成特定硬件引擎,以及在不同时刻构成不同硬件引擎。
101.硬件引擎可向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,所描述的硬件引擎可被认为是通信地联接的。在同时地存在多个硬件引擎的情况下,可通过在硬件引擎中的两者或更多者之间或之中的信号传输(例如,通过适当的电路和总线)来实现通信。在其中在不同时间上配置或实例化多个硬件引擎的实施例中,例如,可通过对多个硬件
引擎可访问的存储器结构中的信息的存储和检索来实现在这种硬件引擎之间的通信。例如,一个硬件引擎可执行一个操作并将该操作的输出存储在与之通信地联接的存储器装置中。然后,另一个硬件引擎可在之后时间上访问存储器装置以检索和处理存储的输出。硬件引擎还可发起与输入或输出装置的通信,并且可在资源(例如,信息集合)上操作。
102.本文中描述的示例方法的各种操作可至少部分地由暂时地配置(例如,通过软件)或持久性地配置为执行相关操作的一个或多个处理器执行。无论是临时配置还是永久配置,此类处理器都可以构成硬件引擎的实现方式。类似地,本文中描述的方法可以至少部分地是处理器实现的,其中一个或多个特定处理器是硬件的示例。此外,一个或多个处理器还可以在“云计算”环境中或作为“软件即服务”(saas)来支持相关操作的执行。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可经由网络(例如,互联网)和经由一个或多个适当的接口(例如,api)访问。
103.本文所述的示例方法的某些操作的执行可以分布在多个处理器间,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,处理器可以位于单个地理位置(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施例中,处理器可以分布在多个地理位置上。
104.本发明可被实现为系统、方法和/或计算机程序产品。计算机程序产品可包括其上体现有用于致使处理器执行本发明的方面的计算机可读程序指令的计算机可读存储介质(或媒介)。
105.计算机可读存储介质,如在本文中使用该术语时,是非暂时性媒介的形式,并且可为可保留和存储指令以供指令执行装置使用的任何有形装置。计算机可读存储介质可为例如但不限于电子存储装置、磁性存储装置、光学存储装置、电磁存储装置、半导体存储装置或前述项的任何合适的组合。计算机可读存储介质以及更一般地,非暂时性介质,可以包括非易失性介质和/或易失性介质。计算机可读存储介质的更具体的示例的非穷举性列表包括:便携式计算机软盘,诸如软盘或柔性盘;硬盘;随机存取存储器(ram)、只读存储器(rom)、可擦除可编程只读存储器(eprom或快闪存储器)、静态随机存取存储器(sram)或任何其他存储器芯片或盒式磁带;便携式压缩盘只读存储器(cd-rom);数字多功能盘(dvd);存储棒;固态驱动器;磁带或任何其他磁性数据存储介质;机械地编码的装置,诸如打孔卡或其上记录有指令的凹槽中凸起结构或具有孔图案的任何物理介质;上述项的任何联网版本;以及上述项的任何合适的组合。
106.非暂时性介质不同于传输介质,并且因此如本文所使用,计算机可读存储介质不应被理解为自身是瞬时信号,诸如无线电波或其他自由地传播的电磁波、通过波导或其他传输介质(例如,通过光纤电缆的光脉冲)传播的电磁波或通过接线传输的电信号。然而,非暂时性介质可与传输介质结合操作。具体地,传输介质可以参与在非暂时性介质之间传送信息。例如,传输介质可包括同轴电缆、铜线和/或光纤,包括包含总线502中的至少一些的接线。传输介质也可采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的那些。
107.可经由例如互联网、局域网(lan)、广域网(wan)和/或无线网络等网络将本文中描述的计算机可读程序指令从计算机可读存储介质下载到相应计算/处理装置或下载到外部计算机或外部存储装置。网络可以包括铜传输电缆、光传输纤维、无线传输、路由器、防火
墙、交换机、网关计算机和/或边缘服务器。每个计算/处理装置中的网络适配器卡或网络接口从网络接收计算机可读程序指令并转发计算机可读程序指令以存储在相应计算/处理装置内的计算机可读存储介质中。
108.用于执行本发明的操作的计算机可读程序指令可为汇编程序指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或用一种或多种编程语言(包括面向对象的编程语言(例如smalltalk、c++等)和常规过程编程语言(例如“c”编程语言或类似编程语言))的任意组合编写的源代码或对象代码。计算机可读程序程序代码可完全地在用户的计算机上执行,部分地在用户的计算机上执行,作为独立的软件包执行,部分地在用户的计算机上且部分地在远程计算机上执行,或者完全地在远程计算机或服务器上执行。在后一种情况下,远程计算机可通过任何类型的网络(包括lan或wan)连接到用户的计算机,或者可连接到外部计算机(例如,通过使用互联网服务提供商(isp)的互联网)。在一些实施例中,包括例如可编程逻辑电路、fpga或可编程逻辑阵列(pla)的电子电路系统可通过利用计算机可读程序指令的状态信息以个性化电子电路系统来执行计算机可读程序指令,以便执行本发明的方面。
109.在本文中参考根据本发明的实施例的方法、设备(系统)和计算机程序产品的流程图说明和/或框图来描述本发明的方面。将理解,可通过计算机程序指令实现流程图说明和/或框图的每个框以及流程图说明和/或框图中的框的组合。这些计算机可读程序指令可以提供给通用计算机、专用计算机的处理器或者其他可编程数据处理设备以产生机器,使得经由计算机的处理器或其他可编程数据处理设备来执行的指令创建用于实施流程图和/或框图的一个或多个框中指定的功能/动作的手段。这些计算机可读程序指令还可以存储于计算机可读存储介质中,计算机可读存储介质可指导计算机、可编程数据处理设备和/或其他装置以特定方式起作用,使得其中存储有指令的计算机可读存储介质包括制造物品,制造物品包括实施在流程图和/或框图的一个或多个框中指定的功能/动作的方面的指令。计算机可读程序指令还可以被加载到计算机、其他可编程数据处理设备或其他装置上,以使得在计算机、其他可编程设备或其他装置上执行一系列操作步骤,以产生计算机实施的过程,使得在计算机或其他可编程设备上执行的指令提供实施在流程图和/或框图框中指定的功能/动作。
110.上述各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合都旨在落入本发明的范围内。另外,在一些实现方式中,可以省略某些方法或过程框。本文中描述的方法和过程也不限于任何特定序列,并且与其相关的框或状态能够以其他适当的序列执行。例如,所描述的框或状态可以不同于具体公开的顺序执行,或者多个框或状态可在单个框或状态中组合。可以以串行、并行或以某种其它方式执行示例框或状态。可以向所公开的示例实施例添加块或状态或从其中移除块或状态。本文中描述的示例系统和部件可以配置成与所描述的不同。例如,与所公开的示例实施例相比,可以向其添加、从中移除或重新布置要素。
111.附图中的流程图和框图说明根据本发明的各种实施例的系统、方法和计算机程序产品的具有可能的实施例的架构、功能性和操作。在这方面,流程图或框图中的每个框可以表示指令的模块、段或部分,指令包括用于实现指定的逻辑功能的一个或多个可执行指令。在一些替代实施例中,框中提及的功能可以不按图中指出的次序发生。例如,依据所涉及的
功能性,连续示出的两个框实际上可以部分地、基本上或完全地同时执行,或者这些框有时可以按相反次序执行。
112.应强调的是,可以对上述实施例作出许多改变和修改,实施例的要素应被理解为在本发明的其他示例实施例之中。所有此修改和变化在本文中旨在被包括在本发明的范围内。尽管本文中可以通过术语“发明”单独地或共同地指代本发明的示例实施例,但这仅是为了方便起见,并且如果事实上公开多于一个,则不将本发明的范围限于任何单个公开或概念。前述描述详述了本发明的某些实施例。然而,应理解,无论前述内容在文本中显示得多么详细,都能够以许多方式来实践本发明。应注意的是,在描述本发明的某些特征或方面时使用特定术语并不暗示在该术语在本文中重新定义为限制于包括与该术语相关联的本发明的特征或方面的任何特定特性。
113.本文中示出的实施例被足够详细地描述以使得本领域的技术人员能够实践所公开的教导。可以使用其他实施例并从中得出其他实施例,使得在不脱离本发明的范围的情况下,可以进行结构和逻辑替换和改变。因此,不应从限制意义上理解具体实施方式,并且各种实施例的范围仅由所附权利要求书以及此类权利要求所赋予的等同物的整个范围来限定。
114.尽管出于基于当前认为是最实际和优选的实现方式的说明的目的详细描述了本发明,但应理解,此种细节仅用于该目的,并且本发明不限于所公开的实现方式,相反,本发明旨在覆盖在所附权利要求书的精神和范围内的修改和等同布置。例如,应理解,在可能的范围内,本发明考虑了任何实施例的一个或多个特征可与任何其他实施例的一个或多个特征组合。
115.如本文所使用,术语“或”可以包括性或排他性意义来解释。此外,可提供在本文中被描述为单个实例的资源、操作或结构的多个实例。另外,在各种资源、操作、程序模块、引擎和/或数据存储之间的边界在一定程度上是任意的,并且在具体说明性配置的上下文中说明了特定操作。可设想功能性的其他分配,并且这些可以落入本发明的各种实施例的范围内。一般来讲,可以将在示例配置中呈现为独立资源的结构和功能性实现为组合结构或资源。类似地,可以将呈现为单个资源的结构和功能性实现为独立资源。这些和其他变型、修改、添加和改进落入如所附权利要求书所表示的本发明的实施例的范围内。因此,说明书和附图被认为是说明性的,而不是限制性的。
116.除非另外明确说明,或另外在如所使用的背景内理解的,否则诸如“能够”、“可”、“可能”或“可以”等条件性语言一般旨在传达某些实施例包括,而其他实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示一个或多个实施例以任何方式需要特征、要素和/或步骤,或者一个或多个实施例必须包括用于在具有或不具有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中或将在任何特定实施例中执行的逻辑。另外,应了解,在本文中被描述为基于另一个操作、元件、部件、数据等的任何操作、元件、部件、数据等可另外地基于一个或多个其他操作、元件、部件、数据等。因此,短语“基于”或其变体应被解释为“至少部分地基于”。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1