用于操作无人驾驶车辆的计算节点当中的有效通信的制作方法

文档序号:14045423阅读:121来源:国知局

本公开的实施方式总体涉及操作无人驾驶车辆。更具体地,本公开的实施方式涉及用于操作无人驾驶车辆的计算节点当中的有效通信。



背景技术:

无人驾驶车辆通常可以以手动模式或无人驾驶模式操作。以手动模式操作的车辆响应于驾驶员的输入。当以无人驾驶模式操作时,车辆可以使用车载传感器导航到各种位置,从而允许车辆在最少人机交互的情况下或在一些没有任何乘客的情况下行驶。以无人驾驶模式操作(例如,无人驾驶)的车辆可以将乘员、尤其是驾驶员从一些驾驶相关的职责中解放出来。

与传统车辆相比,自驾驶车辆本身对计算能力具有相当高的要求。无人驾驶车辆计算机的内部架构通常由以下各者组成:多个节点,其包含用于无人驾驶的各种任务(诸如,传感器处理、感知、规划和控制)的程序;以及通信信道,其链接所述节点并针对相互感兴趣的主题来传递数据。

由于无人驾驶车辆的可用性、用户体验和安全性严重依赖于端对端计算的实时性能,所以对节点当中的通信的性能需求也是非常高的。典型的需求包括但不限于:高的吞吐量(尤其是对于数据信道来说)、低时延(尤其是对于控制信道来说)、低的处理器占用、低的消息丢失率和其他高级特征(诸如,协商灵活的通信速率的能力)。与通信机制间接地有关的其他需求包括程序/进程隔离和资源管理,程序/进程隔离和资源管理使得系统鲁棒性和稳定性得到改善。常规架构无法满足此类需求。



技术实现要素:

本公开的实施方式提供一种用于管理无人驾驶车辆中的处理节点的数据流的计算机实施方法、一种非暂时性机器可读介质和一种数据处理系统。

在本公开的方面中,用于管理无人驾驶车辆中的处理节点的数据流的计算机实施方法包括:从第一处理节点接收第一请求以产生第一数据流的数据块,所述第一数据流表示待由另一个处理节点订阅的第一通信主题,其中,所述第一处理节点是多个处理节点中的一个,每个处理节点处理操作无人驾驶车辆的特定功能,并且其中,所述处理节点中的每个在具有特定操作环境的特定节点容器内实施;响应于第一请求,从全局存储器分配全局存储器区段以存储第一数据流的数据块;以及将第一本地存储器区段映射到全局存储器区段,所述第一本地存储器区段是从第一节点容器的第一本地存储器分配的,所述第一节点容器包含第一处理节点,其中,所述第一处理节点通过访问第一节点容器内所映射的第一本地存储器区段来直接访问存储在全局存储器区段中的第一数据流的数据块。

在本公开的另一个方面中,非暂时性机器可读介质,具有存储在其中的指令,所述指令在由处理器执行时使得所述处理器执行管理无人驾驶车辆中的处理节点的数据流的操作,所述操作包括:从第一处理节点接收第一请求以产生第一数据流的数据块,所述第一数据流表示待由另一处理节点订阅的第一通信主题,其中,所述第一处理节点是多个处理节点中的一个,每个处理节点处理操作无人驾驶车辆的特定功能,并且其中,所述处理节点中的每个在具有特定操作环境的特定节点容器内实施;响应于第一请求,从全局存储器分配全局存储器区段以存储第一数据流的数据块;以及将第一本地存储器区段映射到全局存储器区段,所述第一本地存储器区段是从第一节点容器的第一本地存储器分配的,所述第一节点容器包含第一处理节点,其中,所述第一处理节点通过访问第一节点容器内所映射的第一本地存储器区段来直接访问存储在全局存储器区段中的第一数据流的数据块。

在本公开的又一个方面中,数据处理系统包括:处理器;以及存储器,所述存储器联接至所述处理器、用于存储指令,所述指令在由所述处理器执行时使得所述处理器执行管理无人驾驶车辆中的处理节点的数据流的操作,所述操作包括:从第一处理节点接收第一请求以产生第一数据流的数据块,所述第一数据流表示待由另一个处理节点订阅的第一通信主题,其中,所述第一处理节点是多个处理节点中的一个,每个处理节点处理操作无人驾驶车辆的特定功能,并且其中,所述处理节点中的每个在具有特定操作环境的特定节点容器内实施;响应于第一请求,从全局存储器分配全局存储器区段以存储第一数据流的数据块;以及将第一本地存储器区段映射到全局存储器区段,所述第一本地存储器区段是从第一节点容器的第一本地存储器分配的,所述第一节点容器包含第一处理节点,其中,所述第一处理节点通过访问第一节点容器内所映射的第一本地存储器区段来直接访问存储在全局存储器区段中的第一数据流的数据块。

附图说明

本公开的实施方式在附图的各图中以举例而非限制的方式示出,附图中的相同附图标记指示类似元件。

图1是示出根据本公开的一个实施方式的网络化系统的框图。

图2是示出根据本公开的一个实施方式的无人驾驶车辆的框图。

图3是示出根据本公开的一个实施方式的数据处理系统的框图,所述数据处理系统可与无人驾驶车辆一起使用。

图4是示出根据本公开的一个实施方式的全局存储器区段的示例的框图。

图5A是示出根据本公开的一个实施方式的用于存储区段元数据的数据结构的框图。

图5B是示出根据本公开的一个实施方式的表示数据块索引的数据结构的框图。

图6是示出根据本公开的一个实施方式的操作无人驾驶车辆的存储器管理过程的流程图。

图7是示出根据本公开的另一实施方式的操作无人驾驶车辆的存储器管理过程的流程图。

图8是示出根据本公开的另一实施方式的操作无人驾驶车辆的存储器管理过程的流程图。

图9是示出根据一个实施方式的数据处理系统的框图。

具体实施方式

以下将参考所讨论的细节来描述本公开的多个实施方式和方面,附图将示出所述多个实施方式。以下描述和附图是对本公开的说明,而不应当解释为限制本公开。描述了许多特定细节以便提供对本公开的多个实施方式的全面理解。然而,在某些实例中,并未描述众所周知的或常规的细节以便提供对本公开的实施方式的简洁讨论。

本说明书中对“一个实施方式”或“实施方式”的提及意味着结合该实施方式所描述的特定特征、结构或特性可以包括在本公开的至少一个实施方式中。在本说明书中各处出现的短语“在一个实施方式中”不必全部指同一实施方式。

根据一些实施方式,在无人驾驶车辆内的处理节点当中利用高度有效的通信机制,其中,所述通信机制是基于在包含所述处理节点的节点容器当中共用的存储器区段。新的通信机制在性能和稳定性因素方面提供了优于传统方法的显著优点。在一个实施方式中,每个计算任务由通过独立的节点容器(例如,虚拟机)托管的处理节点来执行,其可以以进程的形式来执行、具有不同的根目录或甚至被进一步隔离。因此,可以保持系统稳定性和可靠性。通信机制将共用的全局存储器区段管理为节点间通信的基础。在不同节点容器中对同一主题感兴趣的多位发布者和订阅者通过直接访问映射到他们自己的本地存储器地址空间中的共用全局存储器来发送和接收数据,以实现具有高稳定性和可靠性的更高性能。

在一个实施方式中,当从作为生产者节点的第一处理节点接收第一请求以产生或发布与待由另一处理节点订阅的通信主题相关联的数据流的数据块时,从全局存储器分配全局存储器区段以存储所述数据流的数据块。第一处理节点是在操作无人驾驶车辆的数据处理系统内运行的多个处理节点中的一个。处理节点中的每个可配置成执行操作无人驾驶车辆的特定功能。为实现稳定性、可靠性或安全性,所述处理节点中的每个在具有独立的操作环境的节点容器(诸如,虚拟机)内实施。一旦全局存储器区段已分配给第一数据流,便可从第一本地存储器分配第一本地存储器区段,所述第一本地存储器与包含第一处理节点的第一节点容器相关联。

然后,将第一本地存储器区段映射到全局存储器的全局存储器区段,使得第一处理节点可以经由所映射的第一本地存储器区段来访问第一数据流的数据块。换句话说,全局存储器区段的全局存储器地址空间被映射到第一节点容器的本地存储器地址空间。第一处理节点可以在第一节点容器与全局存储器之间无安全漏洞的情况下简单地访问第一节点容器内被映射的第一本地存储器区段以访问存储在全局存储器区段内的数据块。

随后,根据一个实施方式,当从作为订阅者节点的第二处理节点接收到第二请求以订阅第一数据流时,从第二本地存储器分配第二本地存储器区段,所述第二本地存储器与包含第二处理节点的第二节点容器相关联。然后,将第二本地存储器区段映射到全局存储器区段,使得第二处理节点可以在第二节点容器与全局存储器之间无安全漏洞的情况下经由第二节点容器内所映射的第二本地存储器区段来访问存储在全局存储器区段中的数据块。第一本地存储器区段、第二本地存储器区段和全局存储器区段可从不同存储器装置分配,或可替代地,它们可以从同一存储器装置的不同存储器区域或区分配。在一个实施方式中,第一本地存储器区段、第二本地存储器区段和全局存储器区段是作为具体地分配给节点容器和存储器管理器的虚拟存储器的一部分的虚拟存储器区段。因此,通过将处理节点包含在独立的节点容器内,可以极大地改善访问由生产者节点产生和由订阅者节点订阅的数据块的效率,同时可以保持处理节点当中的稳定性、可靠性和安全性。

图1是示出根据本公开的一个实施方式的无人驾驶车辆网络配置的框图。参考图1,网络配置100包括可通过网络102以通信的方式联接到一个或多个服务器103-104的无人驾驶车辆101。尽管示出了一个无人驾驶车辆,但是多个无人驾驶车辆可以通过网络102联接到彼此和/或联接到服务器103-104。网络102可以是任何类型的网络,诸如有线或无线的局域网(LAN)、诸如互联网、蜂窝网络、卫星网络的广域网(WAN)或其组合。服务器103-104可以是任何种类的服务器或服务器集群,诸如网络或云服务器、应用服务器、后端服务器或其组合。服务器103-104可以是数据分析服务器、内容服务器、交通信息服务器、地图和兴趣点(POI)服务器或位置服务器等。

无人驾驶车辆是指可以配置成处于无人驾驶模式下的车辆,在所述无人驾驶模式下车辆在极少或没有来自驾驶员的输入的情况下导航通过环境。此类无人驾驶车辆可以包括传感器系统,所述传感器系统具有配置成检测与车辆操作环境有关的信息的一个或多个传感器。车辆及其相关联的控制器使用所检测到的信息来导航通过环境。无人驾驶车辆101可以以手动模式、完全无人驾驶模式或部分无人驾驶模式来操作。

在一个实施方式中,无人驾驶车辆101包括但不限于数据处理系统110、车辆控制系统111、无线通信系统112、用户接口系统113、信息娱乐系统114和传感器系统115。无人驾驶车辆101可进一步包括普通车辆中所包括的某些通用部件(诸如,引擎、轮子、方向盘、变速箱等),所述通用部件可由车辆控制系统111和/或数据处理系统110使用多种通信信号和/或命令(诸如,加速信号或命令、减速信号或命令、转向信号或命令、制动信号或命令等)来控制。

部件110-115可经由互连件、总线、网络或其组合以通信的方式互相联接。例如,部件110-115可经由控制器局域网(CAN)总线以通信的方式互相联接。CAN总线是车辆总线标准,其设计成允许微控制器和装置在无主计算机的应用中彼此通信。它是基于消息的协议,最初被设计成用于汽车内的多路复用电气布线,但也用在许多其他情境中。

现参考图2,在一个实施方式中,传感器系统115包括但不限于一个或多个相机211、全球定位系统(GPS)单元212、惯性测量单元(IMU)213、雷达单元214以及光探测和测距(LIDAR)单元215。GPS系统212可包括收发器,所述收发器可操作为提供与无人驾驶车辆的位置有关的信息。IMU单元213可基于惯性加速度来感测无人驾驶车辆的位置和定向变化。雷达单元214可表示利用无线电信号来感测无人驾驶车辆的本地环境内的对象的系统。在一些实施方式中,除感测对象之外,雷达单元214另外还可感测对象的速度和/或前进方向。LIDAR单元215可使用激光器来感测无人驾驶车辆所处环境中的对象。LIDAR单元215可包括其他系统部件之中的一个或多个激光源、激光扫描器以及一个或多个检测器。相机211可包括用于拍摄无人驾驶车辆周围环境的图像的一个或多个装置。相机211可以是静物相机和/或摄像机。相机可以是可机械地移动的,例如通过将相机安装到旋转平台和/或倾斜平台上。

传感器系统115还可包括其他传感器,诸如声纳传感器、红外传感器、转向传感器、节气门传感器、制动传感器和音频传感器(例如,麦克风)。音频传感器可配置成捕获来自无人驾驶车辆周围环境的声音。转向传感器可配置为感测方向盘、车辆的轮子或其组合的转向角度。节气门传感器和制动传感器分别感测车辆的节气门位置和制动位置。在一些情况下,节气门传感器和制动传感器可整合为集成式节气门/制动传感器。

在一个实施方式中,车辆控制系统111包括但不限于转向单元201、节气门单元202(也称为加速单元)、制动单元203、计算机视觉系统204、导航单元205(也称为导航和寻路或导航/寻路系统)及防撞单元206(也称为障碍物回避系统)。转向单元201将调节车辆的方向或前进方向。节气门单元202将控制马达或引擎的速度,所述马达或引擎转而控制车辆的速度和加速度。制动单元203将通过提供摩擦放慢车辆的轮子或轮胎来使车辆减速。

计算机视觉单元或系统204将处理并分析由一个或多个相机211捕获的图像以便识别无人驾驶车辆环境中的对象和/或特征。所述对象可包括交通信号、车行道边界、其他车辆、行人和/或障碍物等。计算机视觉系统204可使用对象辨识算法、视频跟踪和其他计算机视觉技术。在一些实施方式中,计算机视觉系统204可以绘制环境地图、跟踪对象和估算对象的速度等。

导航单元或系统205将确定无人驾驶车辆的驾驶路径。例如,导航系统可确定用于使无人驾驶车辆实现沿以下路径移动的一系列速度和定向前进方向:所述路径在使无人驾驶车辆总体上沿通往最终目的地的、基于车行道的路径前进的同时,基本上避开所感知到的障碍物。目的地可根据通过用户接口进行的用户输入来设定。导航系统205可在无人驾驶车辆处于操作的同时动态地更新行车路径。导航系统205可以将来自GPS系统的数据和一个或多个地图合并以便确定无人驾驶车辆的驾驶路径。

防撞单元或系统206将识别、评估并且避开或以其他方式绕过无人驾驶车辆环境中的潜在障碍物。例如,防撞系统206可通过以下方式实现无人驾驶车辆的导航中的变化:操作控制系统中的一个或多个子系统来采取转弯操纵、转向操纵、制动操纵等。防撞系统206可基于周围的交通模式、道路状况等自动确定可行的障碍物回避操纵。防撞系统206可配置成使得当其他传感器系统检测到位于将转弯进入的、与无人驾驶车辆相邻的区域中的车辆、建筑障碍物等时不采取转弯操纵。防撞系统206可自动选择既可用又使得无人驾驶车辆乘员的安全性最大化的操纵。防撞装置206可选择预测为使得无人驾驶车辆的乘客舱中出现最小量的加速度的避开操纵。应注意,如图2中所示的部件可以以硬件、软件或其组合来实施。

返回参考图1,无线通信系统112将允许无人驾驶车辆101与外部系统(诸如,装置、传感器、其他车辆等)之间的通信。例如,无线通信系统112可以直接地或经由通信网络与一个或多个装置无线地通信,诸如通过网络102与服务器103-104通信。无线通信系统112可以使用任何蜂窝通信网络或无线局域网(WLAN)(例如,使用WiFi)与另一个部件或系统通信。无线通信系统112可例如使用红外链路、蓝牙等与装置(例如,乘客的移动装置、显示装置、车辆101内的扬声器)直接通信。用户接口系统113可以是在车辆101内实施的外围装置的一部分,包括例如关键字、触屏显示装置、麦克风和扬声器等。

无人驾驶车辆101的一些或全部功能可由数据处理系统110来控制或管理,尤其是当以无人驾驶模式操作时。数据处理系统110包括必要的硬件(例如,处理器、存储器、存储装置)和软件(例如,操作系统、规划和路由程序),所述硬件和软件用于从传感器系统115、控制系统111、无线通信系统112和/或用户接口系统113接收信息、处理接收到的信息、规划从起始点到目的地的路线或路径,且然后基于规划和控制信息来驾驶车辆101。可替代地,数据处理系统110可与车辆控制系统111整合在一起。

例如,作为乘客的用户可例如经由用户接口来指定行程的起始位置和目的地。数据处理系统110与无人驾驶车辆101的其他部件通信以获得与行程有关的数据。例如,数据处理系统110可从可作为服务器103-104的一部分的位置服务器以及地图和POI(MPOI)服务器获得位置和路线信息。位置服务器提供位置服务,并且MPOI服务器105提供地图服务和某些位置的POI。可替代地,此类位置和MPOI信息可本地缓存在数据处理系统110的永久存储装置中。

在无人驾驶车辆101沿所述路线行驶期间,数据处理系统110还可从交通信息系统或服务器(TIS)获得实时交通信息。应注意,服务器103-104可由第三方实体进行操作。可替代地,服务器103-104的功能可与数据处理系统110整合在一起。基于实时交通信息、MPOI信息和位置信息以及由传感器系统115检测或感测到的实时局部环境数据(例如,障碍物、对象、附近车辆),数据处理系统110可以规划最佳路线并根据所规划的路线例如经由控制系统111来驾驶车辆101,以安全和有效地到达指定目的地。

根据一个实施方式,无人驾驶车辆101可进一步包括用于将信息和娱乐提供给车辆101的乘客的信息娱乐系统114。可基于本地和/或远程存储的(例如,由服务器103-104提供)内容信息来接收、编译及呈现所述信息和娱乐内容。例如,信息可通过网络102从服务器103-104中的任一个实时地流式传输并且在车辆101的显示装置上显示。所述信息可以与例如通过一个或多个相机实时捕获的本地信息添加到一起,且然后以虚拟现实方式来显示添加的内容。

在无人驾驶车辆中,可能不存在实际的或物理的窗口。相反,“窗口”(在本文中被称为虚拟窗口)可由显示装置(即,模制成车窗形状的平面或曲面屏幕显示装置,可选地具有触屏)表示或代替。显示装置将显示通过一个或多个适当的相机实时动态地捕获的图像或图像流(例如,视频),好像用户正在通过透明车窗观看或观察实际的物理内容一样。对于每个“窗口”(例如,显示装置),存在用于流传输待实时显示的对应内容的对应显示信道,所述对应内容可由增强现实系统(例如,信息娱乐系统114和/或数据处理系统110)进行集中处理。在这种情况下,以虚拟现实方式(也被称为增强现实方式)经由信息娱乐系统114来显示添加的图像。

例如,从内容数据库或从远程内容提供者或内容服务器接收到的内容项目可叠加到由相机本地捕获的图像上,以变成添加的图像。然后,在无人驾驶车辆101内的显示装置上显示添加的图像。所述显示装置可配置成呈现为车辆的普通窗口。当用户看着显示装置时,以虚拟现实方式将图像的对象显示为虚拟对象,好像用户通过车辆的普通窗口观察物理对象一样。显示装置可实时显示添加的图像(例如,添加的视频)的流,这类似于或模拟增强现实(AR)环境。

在一个实施方式中,基于位置和路线信息、MPOI信息和/或实时交通信息,信息娱乐系统114和/或数据处理系统110确定适合于当前交通环境(例如,MPOI)的某些类型的内容。系统在内容索引(未示出)中执行查找操作以例如基于实时行驶信息来识别作为内容项目候选项的列表内容项目(例如,赞助内容或Ad)。

在一个实施方式中,系统使用多种排序算法来对列表中的内容项目进行排序。可基于用户的用户配置文件对内容项目进行排序。例如,可基于用户偏好对内容项目进行排序,所述用户偏好可从用户配置文件中导出。可基于用户在过去的用户操作历史来对用户配置文件进行编译。在一个实施方式中,系统将一个或多个内容排序模型应用于内容项目中的每个以确定每个内容项目的排序得分。可选择排序得分高于预定阈值的内容项目。可使用表示过去的类似行驶环境或交通状况的已知特征的集合来训练内容排序模型。还可基于相似用户的用户配置文件来训练内容排序模型。

然后,所选择的内容项目经渲染,并且在无人驾驶车辆内的显示装置上显示。在一个实施方式中,系统进一步将所选择的内容项目添加到使用无人驾驶车辆的一个或多个相机在时间点上捕获的图像上。在一个实施方式中,对图像执行图像辨识以导出或理解由所述图像表示的内容。例如,可导出一个或多个关键字来描述所述图像或POI。内容项目列表可进一步基于由图像表示的一个或多个关键字或POI来识别。系统然后将所选择的内容项目添加到图像上以生成添加的图像,其中所述内容项目可叠加在图像上。然后,在无人驾驶车辆的显示装置上显示添加的图像。应注意,根据一些实施方式,信息娱乐系统114可与数据处理系统110整合在一起。

可替代地,用户可以从来自内容存储库或数据库的预编译内容(例如,视频、电影)列表中进行具体地选择,所述内容存储器或数据库可通过网络(例如,云网络)根据内容提供者的内容服务器进行周期性地更新。因此,用户可以具体地选择实时捕获的实时实际内容或先前渲染的内容来在显示装置上显示(例如,从数据存储器125检索)。例如,如果无人驾驶车辆101正在纽约市中在下雪天行驶,那么用户可以切换显示装置以显示夏威夷的晴朗环境,好像无人驾驶车辆101正在晴天行驶。内容可在多个显示装置(例如,多个窗口)中以协作或协调的方式(即,虚拟现实方式)显示。

根据一个实施方式,数据处理系统110包括多个处理节点,每个处理节点执行操作无人驾驶车辆101的特定功能。所述处理节点可由主节点协调或由适合于操作并控制无人驾驶车辆101的操作系统(诸如,机器人操作系统(ROS))托管。ROS是用于机器人软件开发的、在异构计算机集群上提供类操作系统功能的软件框架的集合。ROS提供标准操作系统服务,诸如硬件抽象、低级装置控制、常用功能的实施、进程之间的消息传递和包管理。基于ROS的进程的运行集合以图形架构表示,在图形架构中,处理在可接收、发布和多路复用传感器消息、控制消息、状态消息、规划消息、致动器消息及其他消息的节点中进行。

由处理节点执行的操作无人驾驶车辆101的功能可包括例如传感器处理、感知、规划和控制、缺陷识别、分段与辨识、面部辨识、手势辨识、运动跟踪、运动理解、立体视觉(例如,经由多个相机的深度感知)等。这些功能中的一个或多个可以由一个或多个处理节点来执行。在一个实施方式中,每个处理节点可被托管并包含在特定节点容器中,且由主节点来管理。节点容器可以是虚拟机或沙箱环境,其中,沙箱环境具有独立的操作环境以及专用处理资源的集合(例如,处理器、存储器、存储装置、网络堆栈)。

在一个实施方式中,处理节点可经由共用的基于存储器的通信机制彼此通信。所有通信数据或消息可存储在全局存储器中,并由处理节点经由在它们相应的节点容器内的它们的映射的本地存储器地址空间来访问。两个处理节点之间的通信会话被建构为呈数据(或消息)生产者节点和数据订阅者节点的形式的通信主题。待交换的数据存储在全局存储器区段中,所述全局存储器区段从与主节点相关联的全局存储器分配。

生产者节点和订阅者节点中的每个将从其本地存储器分配本地存储器区段,并将全局存储器区段映射到其本地存储器区段。然后,生产者节点可以简单地将数据写入到其映射的本地存储器区段,所述映射的本地存储器区段转而将数据存储在对应的全局存储器区段中。类似地,订阅者节点可以简单地从其映射的本地存储器区段读取数据,所述映射的本地存储器区段转而从对应的全局存储器区段读取数据。通过将本地存储器区段映射到全局存储器区段,处理节点可以通过将处理节点包含在独立的节点容器中来实现更高的性能同时保持处理节点之间的安全性。当通信会话结束时(例如,已读取所有数据且无新的数据被写入),全局存储器区段和本地存储器区段可以被解除映射并释放回到对应的空闲存储器池。

图3是示出根据本公开的一个实施方式的数据处理系统的框图,所述数据处理系统可与无人驾驶车辆一起使用。系统300可实施为图1的数据处理系统110的一部分。参考图3,系统300包括但不限于主节点301,所述主节点协调和/或管理处理节点302-303。尽管此处示出了两个处理节点302-303,但可实施更多或更少的处理节点。节点301-303可加载到系统存储器中并且由一个或多个处理器执行。处理节点302-303中的每个可执行用于操作无人驾驶车辆(诸如,图1的无人驾驶车辆101)的功能中的一个或多个。所述功能可包括但不限于传感器处理、感知、规划和控制、缺陷识别、分段与辨识、面部辨识、手势辨识、运动跟踪、运动理解、立体视觉(例如,经由多个相机的深度感知)等。

在一个实施方式中,处理节点302-303中的每个可被托管在特定节点容器(在这个示例中,分别是节点容器311-312)中。节点容器是指沙箱操作环境,其中,执行操作无人驾驶车辆的一个或多个功能的一个或多个进程在所述沙箱操作环境中执行。节点容器具有可实施为物理处理资源的集合的专用处理资源的集合(诸如,处理器、存储器、存储装置、网络带宽等)。可替代地,与节点容器相关联的处理资源可以是这样的处理资源的逻辑集合,这些处理资源从由托管其他处理节点的其他节点容器所共用的全局处理资源的集合分配。通常,节点容器提供隔离式或沙箱操作环境,在隔离式或沙箱操作环境下,在节点容器内运行的部件无法直接访问在所述节点容器外部的任何资源。例如,托管在节点容器内的处理节点可不直接访问在所述节点容器外部的全局存储器。在一个实施方式中,节点容器311-312中的每个实施为虚拟机。

在计算中,虚拟机(VM)是对特定计算机系统的仿真。虚拟机基于真实或假想计算机的计算机架构和功能来操作,且它们的实施方式可涉及专门的硬件、软件或两者的组合。存在不同种类的虚拟机,每种具有不同功能。系统虚拟机(也称为全虚拟化VM)提供针对作为目标的真实机器的完全替代品和执行完整操作系统所需的功能水平。管理程序使用本机执行以共用和管理硬件,从而允许彼此隔离的多个不同环境在同一个物理机器上执行。现代管理程序使用硬件辅助的虚拟化,所述硬件辅助的虚拟化通过使用虚拟化特定硬件能力(主要来自主处理器)来提供有效和完全的虚拟化。进程虚拟机设计成通过提供抽象的和平台独立的程序执行环境来执行单个计算机程序。一些虚拟机设计成也仿真不同架构并允许执行针对另一个处理器或架构所写入的软件应用程序和操作系统。操作系统级虚拟化允许经由内核对多个隔离的用户空间实例的支持来分割计算机的资源,所述用户空间实例通常被称为容器且对于最终用户来说可看起来并且感觉像是真实机器。

返回参考图3,主节点301可实施为虚拟机监控器或管理器(VMM)的一部分或虚拟化层的一部分。主节点301可在主节点容器内运行,或包含在主节点容器内。例如,主节点301可由主操作系统托管,而处理节点302-303可分别由客户操作系统托管。主节点301将协调或管理被托管在节点容器311-312中的处理节点302-303。在一个实施方式中,存储器管理器321(也称为共用存储器通信管理器)将管理在处理节点302-303当中存储器的使用。存储器管理器321例如经由应用编程接口(API)与节点容器311-312的节点管理器322-323通信。节点管理器322-323可实施为到相应处理节点302-303的插件。如上文所描述,处理节点302-303中的每个具有操作无人驾驶车辆的特定或预配置的功能。处理节点302-303可以是由操作系统(例如,ROS操作系统)提供的一组标准文件库的一部分。类似地,存储器管理器321可实施为主节点301的一部分或实施为到主节点301的插件,其中主节点301可包含由操作系统提供的标准管理功能。

根据一个实施方式,存储器管理器321负责管理全局存储器310的存储器使用,包括分配和解除分配用于存储与不同通信主题或会话相关联的数据流的全局存储器区段。节点管理器322-323负责将它们的相应本地存储器区段332-333映射到有关的全局存储器区段,以经由在它们的相应节点容器311-312内对应的所映射的本地存储器区段332-333来访问(例如,写入、读取)存储在全局存储器区段中的数据流的数据块。在这个示例中,处理节点302是产生一个或多个数据流的生产者节点,而处理节点303是订阅或消费一个或多个数据流的订阅者或消费者节点。

在一个实施方式中,当处理节点302要发布或产生新的数据流时,节点管理器322例如经由API与存储器管理器321通信以请求发布数据流。响应于所述请求,存储器管理器321从全局存储器310分配全局存储器区段以存储并保持数据流的数据块。在这个示例中,全局存储器310包含各自存储与特定数据流对应的数据块(例如,数据块307-308)的全局存储器区段305-306的阵列。本文中的数据流是指在特定通信会话中在处理节点当中交换的数据,其中全局存储器区段用来保持数据流的数据块。

在这个示例中,存储器管理器321响应于请求将全局存储器区段305分配给处理节点302。存储器管理器321将全局存储器区段305的存储器指针传回到节点管理器322。节点管理器322响应于存储器指针来分配本地存储器区段(在这个示例中,本地存储器区段332)。然后,节点管理器322将本地存储器区段332映射到全局存储器区段305。节点管理器322可调用由托管节点管理器322的操作系统提供的存储器映射功能,以将本地存储器区段332映射到全局存储器区段305。其后,当处理节点302试图发布数据块时,处理节点302和/或节点管理器322可以简单地将数据块写入到节点容器311内的本地存储器区段332内的恰当位置,所述数据块转而被写入于全局存储器区段305的对应位置内。

类似地,根据一个实施方式,当处理节点303要订阅由处理节点302产生的数据流时,节点管理器323经由API与存储器管理器321通信以请求所述订阅。存储器管理器321响应于所述请求来识别与所请求的数据流对应的全局存储器区段(在这个示例中,全局存储器区段305)。存储器管理器321可保持这样的数据结构或索引(未示出),该数据结构或索引记录数据流及它们相关联的全局存储器区段以及它们的生产者节点。存储器管理器321将所识别的全局存储器区段的存储器指针传回到节点管理器323。节点管理器323响应于存储器指针来分配其本地存储器的本地存储器区段333并将本地存储器区段333映射到全局存储器区段305。其后,处理节点303可通过经由节点容器312内的本地存储器区段333来简单地读取数据块来访问存储在全局存储器区段305中的数据块307。

在一个实施方式中,存储器管理器321还针对全局存储器区段305-306执行某些管理或内务管理功能。存储器管理器321可周期性地监控全局存储器310的使用和来自处理节点302-303的互动。当通信会话结束时,可释放或解除分配其对应的全局存储器区段以供以后重新使用。例如,如果数据流的所有数据块已由所有订阅者读取并且在预定的时间段内不存在由对应的生产者节点产生的新数据块,那么可释放对应的全局存储器区段。可替代地,如果生产者节点和所有订阅者节点已例如经由API从通信主题注销,那么可以释放相关联的全局存储器区段。再次,存储器管理器321可保持哪位已注册哪个通信主题的信息。可存在API以允许任何处理节点注册特定通信主题和/或从特定通信主题注销。

在一个实施方式中,在释放或解除分配全局存储器区段(例如,全局存储器区段305)之前,存储器管理器321与生产者节点和所有订阅者节点通信(例如,经由诸如API的通信接口)以允许所述生产者节点和所述订阅者节点注销、解除映射并释放他们的对应的本地存储器区段(例如,本地存储器区段332-333)。

在一个实施方式中,数据流的数据块可存储在预先配置的环形缓冲区(也称为环形队列、循环缓冲区或环缓冲区)中。在一个实施方式中,存储器管理器321可与节点管理器322-323进行协调以确保对存储在全局存储器区段中的数据流的数据块的访问的一致性。在一个实施方式中,为了将数据块写入到全局存储器区段,生产者节点必须获取至少被访问的数据块的排他锁。另一方面,订阅者可能需要或可能不需要获取排他锁来读取数据块。存储器管理器321和/或处理节点的节点管理器负责通过检查数据块的状态来保持和强制执行哪位可以或无法访问特定数据块。

另外,重要的是防止生产者节点产生数据块比订阅者节点读取数据块快的情况,且反之亦然。通信接口可保持为在相对应的处理节点无法跟上速度的情况下允许生产者节点或订阅者节点注册回调函数。例如,如果订阅者节点已完成了读取所有数据块,而生产者节点无法跟上产生新数据块的速度,那么订阅者节点可注册回调函数。当随后可获得新数据块时,存储器管理器321通知订阅者节点,使得订阅者节点可以重新开始消费数据块。类似地,当订阅者节点无法跟上读取数据块的速度时,生产者节点也可以注册回调函数。当数据块已被读取且它的存储空间变为空闲时,可经由回调接口来通知生产者节点重新开始产生新数据块。

应注意,本地存储器区段332、本地存储器区段333和全局存储器区段305-306可从不同存储器装置(例如,不同物理存储器装置)分配,或可替代地,它们可从同一存储器装置的不同存储器区域或区分配。在一个实施方式中,本地存储器区段332、本地存储器区段333和全局存储器区段305-306是作为具体地分配给节点容器311-312和存储器管理器321的虚拟存储器的一部分的虚拟存储器区段。

在计算中,虚拟存储器是使用硬件与软件两者来实施的存储器管理技术。它将由程序使用的存储器地址(称为虚拟地址)映射到计算机存储器中的物理地址中。如由进程或任务所见的主存储器呈现为连续地址空间或连续地址空间的集合。操作系统管理虚拟地址空间和真实存储器向虚拟存储器的分配。处理器中的地址翻译硬件(常称为存储器管理单元或MMU)将虚拟地址自动翻译为物理地址。操作系统内的软件可扩展这些能力以提供可超出真实存储器的容量的空间,并且因此引用比计算机中实际存在的存储器更多的存储器的虚拟地址空间。虚拟存储器的主要益处包括使应用程序摆脱必须管理共用存储器空间、由于存储器隔离增强的安全性和使用分页的技术能够从概念上使用比可能实际可用的存储器更多的存储器。

应注意,处理节点可以是生产者节点和/或订阅者节点。处理节点可以产生一个或多个数据流,且同时订阅由另一处理节点产生的一个或多个数据流。在一个实施方式中,对于每个通信主题来说仅存在一个生产者节点,而对于通信主题来说可存在一个以上的订阅者节点。本文中,共用的全局存储器区段用作从生产者节点到一个或多个订阅者节点的单向通信信道。在另一实施方式中,对于给定的通信主题来说可存在多个生产者节点和一个或多个订阅者节点。

图4是示出根据本公开的一个实施方式的全局存储器区段的示例的框图。全局存储器区段400可表示图3的全局存储器区段305-306中的任一个。参考图4,全局存储器区段400包括但不限于存储由生产者节点产生并由一个或多个订阅者节点消费的数据块的数据缓冲器401。缓冲器401可以是环形缓冲区或先进先出(FIFO)缓冲器。环形缓冲区是指使用单个、大小固定的缓冲器的数据结构,好像它是端对端连接的一样。这个结构容易适合于缓冲数据流。环形缓冲区的有用的性质是当一个元素被消费掉时它不需要使其元素到处移动。

另外,全局存储器区段400包括某些存储器区段元数据,诸如例如写入指针402、一个或多个读取指针403、订阅者计数404、数据块索引405和回调注册表406。写入指针402存储指向存储在缓冲器401中的数据块中作为下一个数据块的一个且生产者节点在下一个写入循环将写入新数据块的存储器地址。读取指针403存储表明存储在缓冲器401中的一个或多个数据块的存储器地址,一个或多个订阅者节点在下个读取循环将从该一个或多个数据块中读取下一数据块。读取指针的数目与当前订阅的订阅者节点的数目对应,其被作为订阅者计数404的一部分记录。如果存在多个生产者节点,那么在生产者节点当中共用写入指针402。写入指针402可用作排他锁的一部分以允许一个生产者在给定时间点写入数据。回调注册表406记录已注册回调通知的处理节点(为生产者节点或者订阅者节点)。处理逻辑(诸如,存储器管理器321)可周期性地扫描回调注册表406以鉴于存储在缓冲器401中的数据块的状态来确定是否需要通知处理节点。

数据块索引405可记录存储在缓冲器401中的数据块的具体状态。例如,块状态可以是“被读取”、“被写入”或“默认”或“空闲”中的一个。“被写入”状态指示生产者节点正在缓冲器401的对应块位置处写入新数据块。“被读取”状态指示订阅者节点正读取对应数据块。“空闲”或“默认”状态指示不存在当前正访问对应数据块的处理节点。数据块索引405的块状态用可作用于访问对应块位置的排他访问锁或权限。如果允许多个订阅者同时读取数据块,那么可能不需要“被读取”状态;由于当生产者节点向同一数据块写入时不允许订阅者访问数据块,所以仅需要“被写入”。

图5A是示出根据本公开的一个实施方式的用于存储区段元数据的数据结构的框图。数据结构500可保持在全局存储器区段中以存储区段元数据(诸如,如图4中所示的元数据402-406)。参考图5,数据结构500(在这个示例中,表)包括多个条目。每个条目与处理节点501(为生产者节点或者订阅者节点)对应。每个条目还包括存储访问指针的字段502,所述访问指针表明处理节点501要访问的下一数据块的数据块存储器地址。对于生产者节点来说,访问指针502是写入指针,而对于订阅者节点来说,访问指针502是读取指针。

在一个实施方式中,处理逻辑(诸如,存储器管理器321和/或处理节点的节点管理器)可以检查指针502以确定哪些数据块已被读取和是否所有数据块已被读取。处理逻辑还可以基于指针502来确定产生新数据块和订阅数据块的速度。如果读取指针与写入指针相同或接近,那么其可指示大多数或所有数据块已被读取。其还可指示特定处理节点比另一个处理节点或相对应的处理节点更快地访问数据块。如果存在多个生产者节点,那么在所述生产者节点当中共用写入指针。写入指针可用作排他锁的一部分以允许一个生产者在给定时间点写入数据。在写入数据之前,生产者节点或存储器管理器可确定谁已获取写入指针。

在一个实施方式中,每个条目可进一步包括存储时间戳的字段503,所述时间戳指示指针502更新的时间。时间戳503可用来确定是否存在由生产者节点产生的任何新数据块。如果生产者节点的写入指针502在如由时间戳503指示的一段时间内未更新,那么可以将其解释为不存在产生的新数据块。类似地,如果订阅者节点在预定时间内未更新它的读取指针,那么其可指示所述订阅者节点不再订阅通信主题。此类指示与如字段502中所指示的写入指针与读取指针的接近程度结合,处理逻辑可以确定所有数据块是否已由订阅者读取以及在预定的时间段内是否无新数据块产生。如果是这样,则对应的通信会话可结束且可释放对应的全局存储器区段。可替代地,时间戳503可用来确定特定处理节点是否失灵。例如,如果特定处理节点在一段时间内未更新它的指针,那么所述处理节点可能已毁坏或可能陷入循环。然后,处理逻辑可以重设存储在数据结构中的一些信息以重新开始通信会话。

在一个实施方式中,每个条目进一步包括存储指示符的字段504,所述指示符指示是否要经由回调接口来通知特定处理节点。如上文所描述,当处理节点(例如,生产者节点或订阅者节点)访问数据块的速度远大于它的相对应方(例如,订阅者节点或生产者节点)时,所述处理节点可以注册回调函数且然后转变到睡眠状态或在等待的同时执行另一个任务。当新数据块可被获得或数据块已被读取且它的位置变得可用时,处理逻辑可扫描字段504以确定需要通知哪个处理节点。如果处理节点的字段504被设定到预定值,那么将通知所述处理节点以重新开始访问数据块。

图5B是示出根据本公开的一个实施方式的表示数据块索引的数据结构的框图。数据块索引550可实施为图4的数据块索引405的一部分。参考图5B,在一个实施方式中,数据块索引550包括多个条目,每个条目与全局存储器区段中的数据块中的一个对应,并且由数据块识别符(ID)551编入索引。数据块ID 551可以是数据缓冲器(诸如,图4的缓冲器401)内的有序次序位置。每个条目进一步包括存储对应数据块的状态的字段552。状态552可以是“被写入”、“被读取”或默认(或空白/空)中的一个。状态552可用作排他访问锁的一部分或者用作指示处理节点是否试图访问对应数据块的指示符。

每个条目可进一步包括:节点ID 553,指示谁正在访问数据块;以及时间戳554,指示处理节点(由节点ID 553标识的)访问数据块已有多长时间(例如,处理节点获取并拥有排他访问锁已有多长时间)。可利用此类信息来确定特定处理节点是否已卡死或失灵。例如,如果处理节点已访问数据块预定的时间段,那么可将所述处理节点理解为失灵节点,且可执行重设过程以解决死锁情况。

还可以利用上文所描述的技术来支持具有不同写入/读取策略(例如,消息丢弃策略)的发布者和/或订阅者。例如,一方面,如果时延和吞吐性能对于在容器内部运行的应用程序来说是关键性考虑因素,那么发布者可以采取不管其与先前写入的块的次序如何都始终向任何可用块写入的激进策略。可替代地,订阅者可以不管先前读取发生在哪里都采取始终遵循写入者(上一个更新的块)的策略。在这些策略下,系统在更低的时延和更大的吞吐量的情况下而更具有响应性。另一方面,发布者和/或订阅者还可以尝试按次序写入或读取下一存储器块。如果预期的块不可用于写入/读取,那么发布者/订阅者将被阻止并且等待一段时间。在这些保守策略下,可能承受一般的性能,但系统将具有更一致且可预测的行为。例如,当传输速率或发布/订阅比由于自动驾驶情况发生变化或系统资源出现临时负担而突然变化时,此类策略可以动态地调节通信速率,而不致使不必要地跳过或丢失数据块或消息。

图6是示出根据本公开的一个实施方式的操作无人驾驶车辆的存储器管理过程的流程图。过程600可由处理逻辑来执行,所述处理逻辑可包括软件、硬件或其组合。例如,过程600可由图3的系统300(具体地,由存储器管理器321)来执行。可响应于对新通信会话的请求(例如,按照需要)来执行过程600,或可替代地,可在系统的初始化(例如,启动)期间执行过程600。参考图6,在框601处,处理逻辑从在第一节点容器内运行的生产者节点接收对新通信主题(例如,新通信会话)的第一请求。在框602处,处理逻辑响应于第一请求从全局存储器(例如,全局存储器地址空间)分配全局存储器区段以存储与新通信主题相关联的数据块。在框603处,处理逻辑将第一节点容器内的本地存储器的第一本地存储器区段映射到全局存储器区段。在一个实施方式中,处理逻辑将全局存储器区段的指针(例如,存储器地址)传回到生产者节点,以允许生产者节点将全局存储器区段映射到第一节点容器内的本地存储器的第一本地存储器区段。随后,在框604处,处理逻辑从在第二节点容器内运行的订阅者节点接收订阅通信主题的第二请求。在框605处,处理逻辑响应于第二请求将第二节点容器内的本地存储器的第二本地存储器区段映射到全局存储器区段。在一个实施方式中,处理逻辑将全局存储器区段的指针传回到订阅者节点,以允许订阅者节点将全局存储器区段映射到从第二节点容器内的第二本地存储器的第二本地存储器区段分配。

图7是示出根据本公开的一个实施方式的操作无人驾驶车辆的存储器管理过程的流程图。过程700可由处理逻辑来执行,所述处理逻辑可包括软件、硬件或其组合。例如,过程700可由图3的系统300(具体地,由存储器管理器321)周期性地执行。参考图7,在框701处,处理逻辑监控对存储在与通信主题相关联的全局存储器区段中的数据块的访问。在框702处,处理逻辑例如通过比较写入指针和(多个)读取指针而检测到所有数据块已由所有订阅者读取。在框703处,处理逻辑例如通过检查写入指针及其时间戳而检测到生产者在预定的时间段内未产生新数据块。在框704处,处理逻辑可选地通知生产者和(多个)订阅者将释放全局存储器区段。此类通知将允许生产者和(多个)订阅者解除映射并释放他们的相应本存储器区段。在框705处,处理逻辑将全局存储器区段释放回到空闲存储器池以供以后使用。

图8是示出根据本公开的一个实施方式的操作无人驾驶车辆的存储器管理过程的流程图。可过程800由处理逻辑来执行,所述处理逻辑可包括软件、硬件或其组合。例如,过程800可由图3的系统300(具体地,由处理节点的节点管理器)来执行。参考图8,在框801处,处理逻辑接收访问(例如,产生、订阅)通信主题的请求。在框802处,处理逻辑例如经由API将访问通信主题的请求传输到存储器管理器。在框803处,处理逻辑从存储器管理器接收与通信主题对应的全局存储器区段的存储器指针。在框804处,处理逻辑基于存储器指针从本地存储器分配本地存储器区段并将本地存储器区段映射到全局存储器区段。在框805处,处理逻辑经由映射的本地存储器区段来访问存储在全局存储器区段中的数据。随后,在框806处,处理逻辑响应于指示将释放全局存储器区段的通知解除映射并释放本地存储器区段。

图9是示出可与本公开的一个实施方式一起使用的数据处理系统的示例的框图。例如,系统1500可表示上文所描述的执行上述过程或方法中的任一个的任一数据处理系统,诸如图1的数据处理系统110或服务器103-104中的任一个。系统1500可包括多个不同的部件。这些部件可以实施为集成电路(IC)、集成电路的部分、离散电子装置或适应于电路板(诸如,计算机系统的主板或插入卡)的其他模块,或实施为以其他方式并入计算机系统的机箱内的部件。

还应注意,系统1500旨在示出计算机系统的多个部件的概要图。然而,应当理解的是,某些实施方式中可存在额外的部件,此外,其他实施方式中可出现所示部件的不同布置。系统1500可表示台式计算机、膝上型计算机、平板计算机、服务器、移动电话、媒体播放器、个人数字助理(PDA)、智能手表、个人通信器、游戏装置、网络路由器或集线器、无线接入点(AP)或中继器、机顶盒或其组合。此外,虽然仅示出了单个机器或系统,但是术语“机器”或“系统”还应当被理解为包括单独地或共同地执行一个(或多个)指令集以执行本文所讨论的任何一种或多种方法的机器或系统的任何集合。

在一个实施方式中,系统1500包括经由总线或互连件1510的处理器1501、存储器1503和装置1505-1508。处理器1501可表示其中包括有单个处理器核心或多个处理器核心的单个处理器或多个处理器。处理器1501可表示一个或多个通用处理器,诸如微处理器、中央处理单元(CPU)等。更具体地,处理器1501可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实施其他指令集的处理器、或实施指令集的组合的处理器。处理器1501也可以是一个或多个专用处理器,诸如专用集成电路(ASIC)、蜂窝或基带处理器、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、加密处理器、共处理器、嵌入式处理器或能够处理指令的任何其他类型的逻辑。

处理器1501(其可以是低功率多核处理器插座,诸如超低电压处理器)可充当用于与系统的各种部件通信的主处理单元和中央集线器。此类处理器可以实施为片上系统(SoC)。处理器1501配置成执行用于执行本文中所讨论的操作和步骤的指令。系统1500可进一步包括与可选的图形子系统1504通信的图形接口,所述图形子系统可包括显示控制器、图形处理器和/或显示装置。

处理器1501可与通信,在一个实施方式中,存储器1503可经由多个存储器装置来实施以提供给定量的系统存储器。存储器1503可包括一个或多个易失性存储器(或存储器)装置,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM)或其他类型的存储装置。存储器1503可存储包括由处理器1501或任何其他装置执行的指令的序列的信息。例如,多种操作系统、装置驱动程序、固件(例如,输入输出基本系统或BIOS)和/或应用程序的可执行代码和/或数据可加载到存储器1503中并由处理器1501执行。操作系统可以是任一类型的操作系统,诸如机器人操作系统(ROS)、来自公司的操作系统、来自苹果公司的Mac来自公司的或其他实时或嵌入式操作系统(诸如VxWorks)。

系统1500可进一步包括IO装置,诸如装置1505-1508,装置1505-1508包括网络接口装置1505、可选的输入装置1506和其他可选的IO装置1507。网络接口装置1505可包括无线收发器和/或网络接口卡(NIC)。无线收发器可以是WiFi收发器、红外收发器、蓝牙收发器、WiMax收发器、无线蜂窝电话收发器、卫星收发器(例如,全球定位系统(GPS)收发器)或其他射频(RF)收发器或其组合。NIC可以是以太网卡。

输入装置1506可包括鼠标、触摸板、触敏屏幕(其可与显示装置1504整合在一起)、指针装置(诸如,触笔)和/或键盘(例如,物理键盘或作为触敏屏幕的一部分显示的虚拟键盘)。例如,输入装置1506可包括联接到触摸屏的触模屏控制器。触摸屏和触摸屏控制器例如可以使用多种触摸敏感技术(包括但不限于电容、电阻、红外和表面声波技术)中的任一种以及用于确定与触摸屏的一个或多个接触点的其他类似传感器阵列或其他元件来检测接触和接触的移动或间断。

IO装置1507可包括音频装置。音频装置可包括扬声器和/或麦克风,以促进支持语音的功能,支持语音的功能诸如语音辨识、语音复制、数字记录和/或电话功能。其他IO装置1507可进一步包括通用串行总线(USB)端口、并行端口、串行端口、打印机、网络接口、总线桥(例如,PCI-PCI桥)、传感器(例如,运动传感器,诸如加速度计、陀螺仪、磁强计、光传感器、罗盘、接近传感器等)或其组合。装置1507可进一步包括成像处理子系统(例如,相机),所述成像处理子系统可包括用来促进相机功能(诸如,记录照片和视频片段)的光学传感器,诸如电荷耦合装置(CCD)或互补金属氧化物半导体(CMOS)光学传感器。某些传感器可经由传感器集线器(未示出)联接到互连件1510,而诸如键盘或热传感器的其他装置可由嵌入式控制器(未示出)控制,这取决于系统1500的具体配置或设计。

为了提供信息(诸如,数据、应用程序、一个或多个操作系统等)的永久性存储,处理器1501也可联接有大容量存储装置(未示出)。在各种实施方式中,为了实现更薄且更轻的系统设计以及改善系统响应能力,这种大容量存储装置可经由固态装置(SSD)实施。然而,在其他实施方式中,大容量存储装置可主要使用硬盘驱动器(HDD)来实施,并且大容量存储装置中,较小量的SSD存储装置充当SSD高速缓存以在断电事件期间实现上下文状态以及其他此类信息的非易失性存储,从而使得在系统活动重新启动时能够实施快速启动。另外,闪存装置可例如通过串行外围接口(SPI)联接到处理器1501。这种闪存装置可提供系统软件的非易失性存储,系统软件包括系统的BIOS以及其他固件。

存储装置1508可包括计算机可访问的存储介质1509(也称为机器可读存储介质或计算机可读介质),存储介质1509上存储有实现任一种或多种本文中所描述的方法或功能的一个或多个指令集或软件(例如,模块、单元和/或逻辑1528)。模块/单元/逻辑1528可表示任一上述部件。模块/单元/逻辑1528也可在其由数据处理系统1500执行期间完全地或至少部分地存在于存储器1503内和/或处理器1501内,存储器1503和处理器1501也构成机器可访问的存储媒介。模块/单元/逻辑1528可进一步通过网络经由网络接口装置1505被传输或接收。

计算机可读存储介质1509也可用来永久性地存储以上描述的一些软件功能。虽然计算机可读存储介质1509在例示性实施方式中被示为单个介质,但是术语“计算机可读存储介质”应当被认为包括存储所述一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。术语“计算机可读存储介质”还应当被认为包括能够存储或编码指令集的任何介质,所述指令集用于由机器执行并且使得所述机器执行本公开的任一种或多种方法。因此,术语“计算机可读存储介质”应当被认为包括但不限于固态存储器以及光学介质和磁性介质或者任何其他非暂时性机器可读介质。

本文中所描述的模块/单元/逻辑1528、部件以及其他特征可以实施为离散硬件部件或整合在硬件部件(诸如,ASICS、FPGA、DSP或类似装置)的功能中。另外,模块/单元/逻辑1528可实施为硬件装置内的固件或功能电路。此外,模块/单元/逻辑1528可在硬件装置与软件部件的任何组合中实施。

应注意,虽然系统1500被示出为具有数据处理系统的各种部件,但是其不旨在表示使部件互相连接的任何特定的架构或方式;因为此类细节与本公开的实施方式没有密切关系。还将了解,具有更少部件或可能具有更多部件的网络计算机、手持计算机、移动电话、服务器和/或其他数据处理系统也可与本公开的实施方式一起使用。

前述详细描述中的一些部分已经按照在计算机存储器内对数据位的运算的算法和符号表示而呈现。这些算法描述和表示是数据处理领域中的技术人员所使用的方法,以便最有效地将它们的工作实质传达给本领域中的其他技术人员。这里,算法通常被认为是导致期望的结果的运算的自洽序列。这些运算是需要对物理量进行物理操控的运算。

然而,应当牢记,所有这些和类似的术语均要与适当的物理量相关联,并且仅仅是应用于这些量的适宜标记。除非在以上讨论中另外明确地说明清楚,否则应当了解,在本说明书全文中,利用诸如以下权利要求中所阐述的术语的讨论是指计算机系统或类似电子计算装置的动作和处理,所述计算机系统或类似电子计算装置操控计算机系统的寄存器和存储器内的表示为物理(电子)量的数据,并将所述数据变换成计算机系统存储器或寄存器或其他此类信息存储器、传输或显示装置内类似地表示为物理量的其他数据。

本公开的实施方式还涉及用于执行本文中的操作的设备。此类计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪速存储器装置)。

前述附图中所描绘的过程或方法可由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,实现在非暂时性计算机可读介质上)或两者的组合。尽管在上文中,过程或方法是依据一些有序操作来描述的,但是应当了解,所描述的操作中的一些可按不同的次序执行。此外,一些操作可并行地而不是顺序地执行。

本公开的实施方式并未参考任何特定的编程语言进行描述。将了解,可使用多种编程语言来实施如本文中所描述的本公开的实施方式的教导。

在以上的说明书中,已经参考本公开的具体示例性实施方式对其实施方式进行了描述。将显而易见的是,在不脱离如所附权利要求中阐述的本公开的更宽泛的精神和范围的情况下,可对其做出各种修改。因此,应当以说明性意义而非限制性意义来理解说明书和附图。

前述详细描述中的一些部分已经按照在计算机存储器内对数据位的运算的算法和符号表示而呈现。这些算法描述和表示是数据处理领域中的技术人员所使用的方法,以便最有效地将它们的工作实质传达给本领域中的其他技术人员。这里,算法通常被认为是导致所期望结果的运算的自洽序列。这些运算是需要对物理量进行物理操控的运算。

然而,应当牢记,所有这些和类似的术语均要与适当的物理量相关联,并且仅仅是应用于这些量的适宜标记。除非在以上讨论中另外明确地说明清楚,否则应当了解,在说明书全文中,利用诸如以下权利要求中所阐述的术语的讨论是指计算机系统或类似电子计算装置的动作和处理,所述计算机系统或电子计算装置操控计算机系统的寄存器和存储器内的表示为物理(电子)量的数据,并将所述数据变换成计算机系统存储器或寄存器或其他此类信息存储器、传输或显示装置内类似地表示为物理量的其他数据。

本公开的实施方式还涉及一种用于执行本文中的操作的设备。此类计算机程序被存储在非暂时性计算机可读介质中。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机构。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质(例如,只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪速存储器装置)。

前述附图中所描绘的过程或方法可由处理逻辑来执行,所述处理逻辑包括硬件(例如,电路、专用逻辑等)、软件(例如,实现在非暂时性计算机可读介质上)或两者的组合。尽管在上文中,过程或方法是按照一些有序操作来描述的,但是应当了解,所描述的操作中的一些可按不同的次序执行。此外,一些操作可并行地而非顺序地执行。

本公开的实施方式并未参考任何特定的编程语言进行描述。将了解,可使用多种编程语言来实施如本文中所描述的本公开的实施方式的教导。

在以上的说明书中,已经参考本公开的具体例示性实施方式对其实施方式进行了描述。将显而易见的是,在不脱离如所附权利要求中阐述的本公开的更宽泛的精神和范围的情况下,可对其做出各种修改。因此,应当以说明性意义而非限制性意义来理解说明书和附图。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1