初始定位的制作方法

文档序号:26186386发布日期:2021-08-06 18:37阅读:59来源:国知局
初始定位的制作方法

本公开总体上涉及诸如辅助驾驶车辆或自动驾驶车辆(av)的车辆,并且具体而言,一些实施例涉及确定车辆的初始位置和方位或确定相对于地图或道路的姿态。



背景技术:

当前,全球定位系统(gps)信号可用于在初始启动时定位车辆。定位可以包括确定车辆相对于地图坐标和道路坐标的位置和方位,并且可能需要确定侧倾角、俯仰角和偏航角。然而,gps信号有时不可靠,尤其是在被遮挡的区域中(例如树木下,被大型建筑物包围的地方或在隧道中)。用于定位车辆的其他当前方法可能是耗时且不准确的。本公开解决了这些不足,即使在gps信号不可用时,本公开也提供一种高效且有效的系统来对车辆进行定位。



技术实现要素:

本公开的各种实施例提供了一种系统,包括:一个或多个处理器;以及存储指令的存储器,当该指令被一个或多个处理器执行时,该指令使系统执行以下操作:获取车辆的先前姿态;在先前姿态期间获取与一个或多个车轮编码器相对应的一个或多个先前读数;获取与在先前姿态之后获取的一个或多个车轮编码器相对应的一个或多个读数;以及基于一个或多个读数调整先前姿态以获取当前姿态。

在一些实施例中,先前的姿态包括车辆的位置、方位和速度中的任何一个。

在一些实施例中,调整先前姿态包括:确定在一个或多个先前读数与一个或多个读数之间每个车轮的相应变化是否匹配;以及响应于确定每个车轮的各个变化匹配:基于一个或多个读数,确定车辆相对于先前姿态的位置变化;基于位置和先前姿态的变化确定当前姿态。

在一些实施例中,确定车辆的位置变化包括:确定与每个车轮的相应变化相对应的转数;以及基于转数和每个车轮的直径确定自先前姿态以来每个车轮行进的距离。

在一些实施例中,获取车辆的先前姿态包括:从gps或imu获取先前姿态。

在一些实施例中,获取车辆的先前姿态包括:在系统关闭之前获取车辆的最新姿态。

在一些实施例中,调整先前姿态包括:针对车轮打滑补偿一个或多个读数。

在一些实施例中,针对车轮打滑补偿一个或多个读数包括:基于电机电流数据补偿一个或多个读数。

在一些实施例中,调整先前姿态包括:响应于确定每个车轮的相应变化不匹配:基于一个或多个读数、来自gps的数据、来自lidar传感器的数据或来自imu的数据确定车辆相对于先前姿态的位置变化。

在一些实施例中,调整先前姿态包括:响应于确定每个车轮的相应变化不匹配:基于估计的每个车轮的位置的变化确定车辆相对于先前姿态的位置变化。

本公开的各个实施例提供了一种由计算系统实现的方法,该计算系统包括一个或多个处理器以及存储机器可读指令的存储介质,其中,该方法是使用一个或多个处理器执行的,该方法包括:获取车辆的先前姿态;在先前姿态期间获取与一个或多个车轮编码器相对应的一个或多个先前读数;获取与先前姿态之后获取的一个或多个车轮编码器相对应的一个或多个读数;基于一个或多个读数调整先前姿态以获取当前姿态。

在一些实施例中,先前姿态包括车辆的位置、方位和速度中的任何一个。

在一些实施例中,调整先前姿态包括:确定在一个或多个先前读数与一个或多个读数之间每个车轮的相应变化是否匹配;以及响应于确定每个车轮的各个变化匹配:基于一个或多个读数,确定车辆相对于先前姿态的位置变化;以及基于位置和先前姿态的变化确定当前姿态。

在一些实施例中,确定车辆的位置变化包括:确定与每个车轮的相应变化相对应的转数;以及基于转数和每个车轮的直径确定自先前姿态以来每个车轮行进的距离。

在一些实施例中,获取车辆的先前姿态包括:从gps或imu获取先前姿态。

在一些实施例中,获取车辆的先前姿态包括在计算系统关闭之前获取车辆的最新姿态。

在一些实施例中,调整先前姿态包括:针对车轮打滑补偿一个或多个读数。

在一些实施例中,针对车轮打滑补偿一个或多个读数包括:基于电机电流数据补偿一个或多个读数。

在一些实施例中,调整先前姿态包括:响应于确定每个车轮的相应变化不匹配:基于一个或多个读数、来自gps的数据、来自lidar传感器的数据或来自imu的数据,确定车辆相对于先前姿态的位置变化。

在一些实施例中,调整先前姿态包括:响应于确定每个车轮的相应变化不匹配:基于估计的每个车轮的位置的变化,确定车辆相对于先前姿态的位置变化。

通过参考附图考虑以下描述和所附权利要求书,本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征、以及结构的相关元件和部分的组合的操作和功能的方法以及制造的经济性将变得显而易见,所有附图形成本说明书的一部分,其中在各个附图中,相同的附图标记表示相应的部分。然而,应该明确地理解,附图仅出于说明和描述的目的,并且不旨在作为对本发明的限制的定义。

附图说明

在所附权利要求中具体阐述了本技术的各种实施例的某些特征。通过参考下面的详细描述,将获得对技术的特征和优点的更好的理解,以下详细描述阐述了说明性实施例和附图,在说明性实施例中利用了本发明的原理,并且附图中:

图1示出了根据本公开的一个或多个实施例的系统的示例环境。

图2-图3示出了根据本公开的实施例的车轮编码器的示例实施方式。

图4a、4b和图5示出了根据本公开的实施例的车轮编码器和计算系统的示例实施方式。

图6示出了根据本公开的实施例的方法的示例的流程图。

图7是用于实现本文公开的特征的示例计算机系统的图。

具体实施方式

图1示出了系统的示例环境100,该系统获取车辆的先前姿态,在先前姿态期间获取与一个或多个车轮编码器相对应的一个或多个先前读数,获取与在先前姿态之后获取的一个或多个车轮编码器相对应的一个或多个读数,并基于一个或多个读数来调整先前姿态以获取当前姿态。在图1中,诸如自动驾驶车辆101之类的车辆可以包括无数传感器(lidar系统102、雷达系统104、相机106、gps、声纳、超声波、一个或多个imu(惯性测量单元)107、加速度计、陀螺仪,磁力计和fir(远红外)传感器)来检测和识别周围的物体。另外,车辆101可包括车轮108和在车轮108中的每个上的车轮编码器109。车轮编码器109可以包括光学编码器或磁性编码器。在一些示例中,lidar系统102可以生成环境的三维地图。lidar系统102还可以检测环境中的物体。在另一个示例中,雷达系统104可以确定车辆101周围的物体的距离和速度,并且可以被配置用于自适应巡航控制和/或事故避免和盲点检测。在另一示例中,相机106可以捕获和处理图像数据以检测和识别诸如道路标志的物体并且解密诸如道路标志上的速度限制之类的物体的内容。例如,这样的物体可以包括但不限于例如行人、道路标志、交通信号灯和/或其他车辆。在一些实施例中,相机106可以识别、解释和分析道路标志(例如,限速、学校区域、建筑区域等)和交通灯(例如,红灯、黄灯、绿灯、闪烁的红灯等等)。车辆101还可以包括无数致动器,以在周围推动和导航车辆101。这样的致动器可以包括例如任何合适的机电装置或系统,以控制节气门响应、制动动作、转向动作等。在一些实施例中,基于由相机106捕获的图像数据,车辆101可以基于张贴在道路上的限速标志来调节车辆速度。例如,车辆101可以与前方车辆保持恒定的安全距离(例如,自适应巡航控制)。在该示例中,车辆101通过不断地将其车速调节为前方车辆的速度来维持该安全距离。

在各种实施例中,车辆101可以基于来自无数传感器的数据在道路、街道和/或地形上以有限或无人为输入来导航。本文中所使用的“车辆(vehicle)”一词包括在地面上行驶的交通工具(例如汽车、卡车、公共汽车等),但也可能包括在空中行驶的交通工具(例如无人机、飞机、直升机等)、在水上行驶的交通工具(例如船、潜艇等)。此外,本文讨论的“车辆”可能会也可能不会容纳一个或多个乘客。此外,短语“自动驾驶车辆”、“无人驾驶车辆”或不需要其他积极参与的任何其他车辆可以互换使用。

通常,车辆101可以对驾驶员自身进行人类驾驶员可以在其上进行的任何控制。例如,车辆101可以像人类驾驶员在常规车辆上一样可以加速、制动、向左或向右转或以反向方向行驶。车辆101还可以像人类驾驶员一样感测环境条件、测量空间关系(例如,物体与其自身之间的距离)、检测和分析道路标志。此外,车辆101可以在没有任何人工输入的情况下执行更复杂的操作,诸如并行停车、在拥挤的停车场停车、避免碰撞等。

在各个实施例中,包括一个或多个处理器和存储器的至少一个计算系统112可以通过网络150连接到设备131。至少一个计算系统112可以物理和/或电连接到车辆101。在一些实施例中,至少一个计算系统112可以被集成为车辆101的一部分。一个或多个用户可以通过设备131请求、查看和/或访问传感器102、104、106、107,车轮编码器109和车辆101的详细信息。

处理器可以被配置为通过解释机器可读指令来执行各种操作。在一些实施例中,示例环境100可以被实现为数据平台。在一些实施例中,示例环境100可以被配置为与数据平台的至少一个计算系统112交互。在各种实施例中,数据平台的至少一个计算系统112可以协调和/或控制获取车辆101的先前姿态的一个或多个操作;在先前姿态期间获取与车轮编码器109中的一个或多个相对应的一个或多个先前读数;获取与先前姿态之后获取的一个或多个车轮编码器109相对应的一个或多个读数;基于一个或多个读数调整先前姿态以获取当前姿态。在一些实施例中,至少一个计算系统112可以包括过程引擎114。处理引擎114可以由计算系统112的处理器执行,以执行包括参考至少一个计算系统112描述的那些操作的各种操作。通常,过程引擎114可以全部或部分地实现为能够在一个或多个计算设备或系统上运行的软件。在一个示例中,过程引擎114可以被实现为在一个或多个计算设备(例如,用户或客户端设备)和/或一个或多个服务器上(例如,网络服务器或云服务器、服务器130)运行的软件应用程序或在这种软件应用程序内实现。环境100还可包括计算系统112可访问的一个或多个服务器130。一个或多个服务器130可以存储和更新从一个或多个计算系统112生成或输出的信息。例如,一个或多个服务器130可以存储指示来自车轮编码器109的信息的数据。

计算系统112可以直接地或通过网络150访问一个或多个服务器130。在一些情况下,例如,一个或多个服务器130可以包括联合数据存储区,数据库或可以存储和检索数据的任何其他类型的数据源。在一些实施方式中,一个或多个服务器130可以包括各种类型的数据集,可以在这些数据集上确定准确性或与其他信息的一致性。通常,操作计算设备的用户可以例如通过一个或多个图形用户界面和/或应用程序编程界面通过网络150与计算系统112交互。

至少一个计算系统112可以确定车辆101的先前姿态。在一些实施例中,车辆101的先前姿态可以包括车辆101的位置、方位和/或速度。车辆101的方位可以包括车辆101的侧倾、俯仰和/或偏航。在一些实施例中,当至少一个计算系统112被关闭或终止时,车辆101的先前姿态可以是车辆101的最新姿态。例如,可以在车辆101仍在行驶时关闭至少一个计算系统112。如图2-图4所示,一旦至少一个计算系统112再次被开启,则至少一个计算系统112可以重新启动,并且在重新启动后,使用车轮编码器109恢复或确定车辆101的当前姿态。在一些示例中,至少一个计算系统112可以在车辆101也被关闭的同时被关闭。一旦车辆101再次开启,则至少一个计算系统112可以重新建立车辆101的姿态。

图2示出了诸如车轮编码器109的车轮编码器的示例实施方式200。在一些示例中,车轮编码器可以包括磁性编码器。磁性编码器可以包括电路板202、传感器204和磁体209。传感器204可以包括霍尔效应传感器或磁阻传感器。间隙212可以设置在传感器204和磁体209之间。磁体209可以包括环形磁体。磁体209可以附接到使车轮旋转的电机的轴210。在一些示例中,当电机旋转车轮时,磁体209也旋转。传感器204可在磁体209旋转的同时检测磁场的变化,并且计数磁体209旋转的次数。如果传感器204是霍尔效应传感器,则传感器204可以检测由于电子的磁偏转而导致的电路板202的电压的变化。如果传感器204是磁阻传感器,则传感器204可以检测到由磁体209的磁场引起的电阻变化。

图3示出了诸如车轮编码器109的车轮编码器的示例实施方式300。在一些示例中,车轮编码器可以包括光学编码器。光学编码器可包括光源302(诸如led)、包括间隙305的盘304、一个或多个检测器306以及处理器307。一个或多个检测器306检测由光源302发射的光的图案。在一些实施例中,光源302发射单个光束,该单个光束被分成两个单独的光束。当两个单独的光束行进穿过盘304的间隙305时,它们可以对准。一个或多个检测器306以两个单独的光束之间的相位关系检测相对相位,例如超前或滞后信号。一个或多个检测器306中的每个可在光束穿过间隙305时检测到单独的光束。

图4a示出了诸如计算系统112之类的计算系统和诸如图1的车轮编码器109或图2或3中所示的车轮编码器之类的车轮编码器的示例实现。在图4a中,在计算系统或诸如车辆101之类的车辆已经被关闭或终止之后,计算系统可以从车轮编码器获取读数。在关闭或终止计算系统或车辆时,例如,从在关闭或终止计算系统或车辆时的车轮编码器读数,可以知道车辆的姿态,包括位置和/或方位。车轮编码器的读数402、404、406和408可以来自每个单独的车轮编码器,例如,分别来自左前车轮编码器、右前车轮编码器、左后车轮编码器和右后车轮编码器。读数402、404、406和408可以例如在计算系统或车辆被关闭或终止时指示自车辆最近的姿态以来车辆上的每个车轮已经行驶的距离。在图4a的示例中,读数402、404、406和408指示在车辆最近的姿态之后,每个车轮已经行驶了4转的距离。因此,读数402、404、406和408可以指示每个车轮已经行驶了相同的距离,这意味着车辆自从其最近的姿态以来一直沿直线行驶。如果读数402、404、406和408指示每个车轮已经行驶了相同的距离,则计算系统可以通过将读数402、404、406和408从转数转换为实际距离来确定车辆的当前姿态,并将实际距离添加到车辆的最新位置,同时保持与最新方位相同的方位。为了将读数从转数转换为实际距离,计算系统可以使用如图4b所示的轮子中的一个车轮的直径。在一些实施例中,由于天气、温度、大气压力和/或轮胎压力的变化,车轮中的一个车轮的直径可以不时地变化。例如,车轮452的直径可以减小,如车轮454所示。车轮中每个车轮的直径可以使用传感器数据(例如来自gps、imu和/或lidar的数据)以预设间隔或每当用于获取传感器数据的传感器可用时进行动态校准或测量。计算系统可以基于车轮中每个车轮的直径的动态更新的数据来确定实际距离。例如,计算系统可以在获取车轮编码器数据的时间点或在最接近获取车轮编码器数据的时间点,将由车轮编码器数据指示的转数与车轮直径相乘,并将结果乘pi以获取实际距离。例如,如果车轮编码器数据是在1:00pm采集的,则车轮直径也可以在1:00pm或使用最接近1:00pm的传感器读数获取。另外,如果读数402、404、406和408指示车辆自其最近的已知姿态以来没有移动,则当前姿态被确定为车辆的最近的姿态。在一些实施例中,计算系统可以基于在计算系统或车辆被关闭或终止时的车轮编码器读数与在计算系统或车辆被关闭或终止之后的车轮编码器读数之间的差来确定车辆的当前姿态和/或位置。

图5示出了诸如计算系统112之类的计算系统和诸如图1的车轮编码器109或图2或图3中所示的车轮编码器之类的车轮编码器的示例实施方式。在图5中,来自车轮编码器的读数502、504、506和508不匹配。因此,确定车辆自最近的姿态以来未沿直线行驶。在这种情况下,计算系统可以使用每个车轮的车轮编码器读数502、504、506和508中的任何一个或它们的组合、gps和/或imu读数来确定当前位置。例如,每个车轮的当前位置可以由距离或自最近姿态以来行进的距离之和来确定或估计。可以基于每个车轮的确定或估计的位置来确定车辆的当前位置和/或方位。

在一些实施例中,车轮编码器读数402、404、406和408或502、504、506和508中的一个或多个可针对车轮打滑或下沉而被补偿。例如,如果车辆在雪、沙或松散的泥土上行驶,则车轮中的一个或多个车轮的旋转可能无法完全转换为行驶的线性距离。车轮编码器读数402、404、406和408、或502、504、506和508,可以与imu的z轴陀螺仪和/或施加到车轮中的每个车轮的电机电流进行比较。电机电流可以大致与施加到车轮中的每个车轮的扭矩量成比例,以推动车辆克服车轮与车轮行驶的表面之间的滚动阻力。如果发生打滑或下沉,则与施加到线性平移的车轮的扭矩的量相比,施加到车轮的扭矩的量可能会减少。例如,可基于在车轮线性平移时施加到车轮中的每个车轮的预期电机电流与实际施加到车轮中的每个车轮的测量电机电流之间的差异来确定车轮打滑或下沉的量。

图6示出了根据一些实施例的方法的流程图。在该流程图和其他流程图中,流程图600示例性地示出了一系列步骤。应该理解的是,这些步骤可以被重组以并行执行,或者在适用时被重新排序。而且,为了清楚起见,可能已经包括的一些步骤可能已经被去除以避免提供过多的信息,并且可能已经去除了所包括的一些步骤,但是为了说明清楚起见,可能已经包括了一些步骤。来自其他附图的描述也可以适用于图6。

在步骤602中,计算系统可以获取车辆的先前姿态。在步骤604中,计算系统可以在先前姿态期间获取与一个或多个车轮编码器相对应的一个或多个先前读数。例如,在车辆和/或计算系统被关闭或终止时,计算系统可以从每个车轮获取编码器读数。在步骤606中,计算系统可以获取与在先前姿态之后获取的一个或多个车轮编码器相对应的一个或多个读数。在步骤608中,计算系统可以基于一个或多个读数来调整先前的姿态以获取当前姿态,诸如关于图4和图5所描述的。

硬件实现方式

本文中描述的技术由一个或多个专用计算设备来实现。专用计算设备可以硬连线以执行该技术,或者可能包含电路或数字电子设备(诸如一个或多个专用集成电路(asic)或被永久编程为执行该技术的现场可编程门阵列(fpga)),或者可以包括一个或多个硬件处理器,该硬件处理器被编程为根据固件、存储器、其他储存器(storage)或组合中的程序指令来执行技术。这样的专用计算设备还可以将定制的硬连线逻辑、asic或fpga与定制的编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持式设备、网络设备或结合硬连线和/或程序逻辑来实现技术的任何其他设备或设备组合。

计算设备通常由操作系统软件控制和协调,诸如ios、android、chromeos、windowsxp、windowsvista、windows7、windows8、windowsserver、windowsce、unix、linux、sunos、solaris、ios、blackberryos、vxworks或其他兼容的操作系统。在其他实施例中,计算设备可以由专有操作系统控制。传统的操作系统控制和调度以供执行的计算机进程,执行存储器管理,提供文件系统、联网、i/o服务,并且提供诸如图形用户界面(“gui”)的用户界面功能,等等。

图7是示出了可以实现本文中所描述的任何实施例的计算机系统700的框图。计算机系统700包括用于传送信息的总线702或其他通信机制、用于处理信息的与总线702联接的一个或多个硬件处理器704。硬件处理器704可以是例如一个或多个通用微处理器。

计算机系统700还包括联接到总线702的主存储器706(诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备),用于存储将由处理器704执行的信息和指令。主存储器706还可以用于在执行将由处理器704执行的指令期间存储临时变量或其他中间信息。这些指令在被存储在处理器704可访问的存储介质中时将计算机系统700渲染为被定制为执行指令中指定的操作的专用机器。

计算机系统700进一步包括联接到总线702的只读存储器(rom)708或其他静态存储设备,用于存储用于处理器704的静态信息和指令。提供了存储设备710(诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等),其耦合到总线702,用于存储信息和指令。

计算机系统700可以经由总线702联接到输出设备712(诸如阴极射线管(crt)或lcd显示器(或触摸屏)),用于向计算机用户显示信息。包括字母数字键和其他键的输入设备714联接到总线702,用于将信息和命令选择传送给处理器704。用户输入设备的另一种类型是光标控件716(诸如鼠标、轨迹球或光标方向键),其用于将方向信息和命令选择传送给处理器704并控制输出设备712上的光标移动。该输入设备通常在两个轴上具有两个自由度,即第一轴(例如,x)和第二轴(例如,y),这允许该设备指定平面中的位置。在一些实施例中,可以通过在没有光标的情况下接收触摸屏上的触摸来实现与光标控制相同的方向信息和命令选择。

计算系统700可以包括用户接口模块以实现gui,该用户接口模块可以作为由计算设备执行的可执行软件代码存储在大容量存储设备中。举例来说,该模块和其他模块可以例如包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、函数、属性、过程、子例程、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。

一般而言,本文中所使用的单词“模块”是指体现在硬件或固件中的逻辑,或者指用编程语言(例如,java、c或c++)编写的、可能具有入口点和出口点的软件指令的集合。可以将软件模块编译并链接到可执行程序中、安装在动态链接库中,或者可以用解释性编程语言(例如,basic、perl或python)编写该软件模块。可以理解,软件模块可以从其他模块或从其自身调用,并/或可以响应于检测到的事件或中断而被调用。可以将被配置为在计算设备上执行的软件模块提供在计算机可读介质(诸如光盘、数字视频光盘、闪存驱动器、磁盘或任何其他有形介质)上,或者可以提供为数字下载(并且可以最初以需要在执行之前进行安装、解压缩或解密的压缩或可安装的格式存储)。可以将这样的软件代码部分或全部地存储在执行中的计算设备的存储设备上,以由该计算设备执行。可以将软件指令嵌入在诸如eprom的固件中。还将理解,硬件模块可以由连接的逻辑单元(诸如门和触发器)组成,并/或可以由可编程单元(诸如可编程门阵列或处理器)组成。本文中描述的模块或计算设备功能优选地被实现为软件模块,但是可以以硬件或固件来表示。通常,本文中描述的模块是指可以与其他模块组合的模块或被划分为子模块的逻辑模块,而不考虑其物理组织或存储方式。

计算机系统700可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑(其与计算机系统结合使计算机系统700成为或编程为专用机器)来实施本文中描述的技术。根据一个实施例,本文中的技术由计算机系统700响应于处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列来执行。可以从诸如存储设备710的另一存储介质将这样的指令读入主存储器706。主存储器706中包含的指令序列的执行使处理器704执行本文中所述的处理步骤。在替代性实施例中,硬连线电路可以代替软件指令来使用或与软件指令结合使用。

如本文中所用,术语“非暂时性介质”和类似术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如储存设备710。易失性介质包括动态存储器,诸如主存储器706。非暂时性介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram,任何其他存储器片或盒式磁盘以及其网络版本。

非暂时性介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,其包括构成总线702的线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。

各种形式的介质可涉及将一个或多个指令的一个或多个序列传送给处理器704以供执行。例如,最初可以将指令承载在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统700本地的调制解调器可以在电话线上接收数据,并使用红外发射器将该数据转换为红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路可以将该数据放置在总线702上。总线702将数据携带到主存储器706,处理器704从主存储器706中检索并执行指令。由主存储器706接收的指令可以检索并执行指令。由主存储器706接收的指令可以可选地在由处理器704执行之前或之后被存储在存储设备710上。

计算机系统700还包括联接到总线702的通信接口718。通信接口718提供双向数据通信,其联接到连接到一个或多个本地网络的一个或多个网络链路。例如,通信接口718可以是集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供到对应类型的电话线的数据通信连接。作为另一示例,通信接口718可以是局域网(lan)卡,以提供与兼容lan(或与wan通信的wan组件)的数据通信连接。也可以实现无线链接。在任何这样的实现中,通信接口718发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。

网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供到主机计算机或到由互联网服务提供商(isp)操作的数据设备的连接。isp依次通过现在通常被称为“互联网(internet)”的全球分组数据通信网络提供数据通信服务。局域网和互联网都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路上并且通过通信接口718的信号(其携带去往和来自计算机系统700的数字数据)是传输介质的示例形式。

计算机系统700可以通过网络、网络链路和通信接口718发送消息并接收数据(包括程序代码)。在互联网示例中,服务器可以通过互联网、isp、本地网络和通信接口718传输针对应用程序的请求代码。

所接收的代码可以在其被接收时由处理器704执行,并/或被存储在储存设备710或其他非易失性储存器中,以供以后执行。

前面各部分中描述的进程、方法和算法中的每个可以体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中,或者由该代码模块完全或部分自动化。可以在应用专用电路中部分或全部实现进程和算法。

前述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。另外,在某些实施方式中,可以省略某些方法或过程框。本文中所述的方法和过程也不限于任何特定的顺序,并且与其相关的框或状态可以以其他适当的顺序执行。例如,可以以不同于具体公开的顺序来执行所描述的框或状态,或者可以在单个框或状态中组合多个框或状态。示例框或状态可以串行、并行或以其他方式执行。块或状态可以被添加到所公开的示例实施例中或从所公开的示例实施例中去除。本文中描述的示例系统和组件可以被配置为与所描述的不同。例如,与所公开的示例实施例相比,元件可以被添加到所公开的示例性实施例中、从所公开的示例性实施例中移除或重新排列。

条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。

在本文中描述的和/或在附图中描绘的流程图中的任何过程描述、元件或框应当被理解为潜在地表示代码的模块、段或部分,其可能包括一个或多个用于在进程中实现特定逻辑功能或步骤的可执行指令。如本领域技术人员将理解的,替代性实施方式包括在本文中所述实施例的范围内,其中取决于所涉及的功能,可以删除、不按所示的或所讨论的顺序执行(包括基本上同时或以相反的顺序执行)元件或功能。

应该强调的是,可以对上述实施例进行许多变型和修改,其元件应被理解为是其他可接受的示例中的一种。所有这些修改和变型旨在包括在本公开的范围内。前面的描述详述了本发明的某些实施例。然而,应当理解,无论前述内容在文本中显示的多么详细,都可以以许多方式来实践本发明。如上所述,应当注意的是,在描述本发明的某些特征或方面时,使用特定术语并不意味着暗示术语在本文中被重新定义为限于包括与该术语相关联的本发明的特征或方面的任何特定特征。因此,本发明的范围应根据所附权利要求及其任何等同物来解释。

引擎、组件和逻辑

本文中将某些实施例描述为包括逻辑或多个组件、引擎或机制。引擎可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以以某种物理方式被配置或布置。在各种示例实施例中,可以通过软件(例如,应用程序或应用程序部分)将一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,一个处理器或一组处理器)被配置为被操作为执行本文所述的某些操作的硬件引擎。

在一些实施例中,可以机械地、电子地或其任何合适的组合来实现硬件引擎。例如,硬件引擎可以包括永久性地被配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件引擎还可以包括可编程逻辑或电路,其由软件临时被配置为执行某些操作。例如,硬件引擎可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过此类软件进行配置,则硬件引擎将成为专门定制为执行配置功能的特定机器(或机器的特定组件),并且不再是通用处理器。将意识到,机械地、在专用且永久配置的电路中或在临时配置的电路中实施硬件引擎的决定可能受成本和时间考虑的影响。

因此,短语“硬件引擎”应被理解为包括有形实体,该有形实体是被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)为以某种方式操作或执行本文所述的某些操作的实体。如本文中所使用的,“硬件实现的引擎”是指硬件引擎。考虑到硬件引擎被临时配置(例如,编程)的实施例,硬件引擎中的每个无需在任何时候都及时被配置或实例化。例如,在硬件引擎包括由软件被配置为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件引擎)。软件相应地配置一个或多个特定处理器,例如,以在一个时间实例中构成特定的硬件引擎,并在不同的时间实例中构成不同的硬件引擎。

硬件引擎可以向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,所描述的硬件引擎可以被认为是通信联接的。在同时存在多个硬件引擎的情况下,可以通过在硬件引擎中的两个或多个之间的信号传输(例如,通过适当的电路和总线)来实现通信。在以不同时间配置或实例化多个硬件引擎的实施例中,可以例如通过在多个硬件引擎可以访问的存储器结构中存储和检索信息来实现这种硬件引擎之间的通信。例如,一个硬件引擎可执行操作并将该操作的输出存储在其通信联接的存储设备中。然后,另一硬件引擎可以在以后的时间访问该存储设备以检索和处理所存储的输出。硬件引擎还可以发起与输入或输出设备的通信,并且可以在资源(例如,信息的集合)上进行操作。

本文中描述的示例方法的各种操作可以至少部分地由一个或多个临时配置(例如,通过软件)或永久被配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的引擎,其被操作为执行本文所述的一个或多个操作或功能。如本文所使用的,“处理器实现的引擎”是指使用一个或多个处理器实现的硬件引擎。

类似地,本文中描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的引擎来执行。此外,一个或多个处理器还可操作为在“云计算”环境中或作为“软件即服务”(saas)支持相关操作的性能。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可以通过网络(例如,互联网)和一个或多个适当的接口(例如,应用程序接口(api))来访问。

某些操作的性能可以分布在处理器之间,不仅驻留在单个计算机内,而且可以部署在多个计算机上。在一些示例实施例中,处理器或处理器实现的引擎可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。

语言

在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管将一种或多种方法的单独操作示出并描述为单独的操作,但是可以同时执行单独操作中的一个或多个,并且不需要按照所示顺序执行操作。在示例配置中被呈现为单独的组件的结构和功能可以被实现为组合的结构或组件。类似地,被呈现为单个组件的结构和功能可以被实现为单独的组件。这些和其他变型、修改、添加和改进落入本文中的主题的范围内。

尽管已经参考特定示例实施例描述了本主题的概述,但是在不脱离本公开的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。主题的这样的实施例在本文中可以仅仅为了方便起见而单独地或共同地由术语“发明”来指代,并且如果实际上公开了多个公开或概念,则并不旨在将本申请的范围限制为任何单个公开或概念。

足够详细地描述了本文所示的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中导出,使得可以在不脱离本公开的范围的情况下进行结构和逻辑上的替换和改变。因此,不应从限制的意义上理解详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所授权的等同物的全部范围来限定。

应当理解,“引擎”、“系统”、“数据存储库”和/或“数据库”可以包括软件、硬件、固件和/或电路。在一个示例中,包括能够由处理器执行的指令的一个或多个软件程序可以执行本文中所述的引擎、数据存储库、数据库或系统的一个或多个功能。在另一示例中,电路可以执行相同或相似的功能。替代性实施例可以包括更多、更少或功能上等效的引擎、系统、数据存储库或数据库,并且仍在本实施例的范围内。例如,各种系统、引擎、数据存储库和/或数据库的功能可以被不同地组合或划分。

“开源”软件在本文中被定义为允许作为源代码和编译形式分发的源代码,具有获得源的公开和索引方式,可选地具有允许修改和衍生作品的许可。

本文所述的数据存储库可以是任何合适的结构(例如,活动数据库、关系数据库、自引用数据库、表、矩阵、数组、平面文件、面向文档的存储系统、非关系型no-sql系统等),并且可以基于云或以其他方式。

如本文所使用的,术语“或”可被解释为包含性的或排他性的意义。此外,可以为在本文中被描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、引擎、引擎和数据存储库之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想其他的功能分配,并且可以落入本公开的各种实施例的范围内。一般而言,在示例配置中呈现为单独资源的结构和功能可以被实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被认为是说明性的而不是限制性的。

条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。

例如,在一些实施例中,“要”可以意味着“应该”、“需要”、“被要求”或“期望”。

在以下描述中,阐述了某些特定细节,以提供对本发明的各种实施例的透彻理解。然而,本领域技术人员将理解,可以在没有这些细节的情况下实践本发明。而且,尽管本文公开了本发明的各种实施例,但是根据本领域技术人员的公知常识,可以在本发明的范围内做出许多适应和修改。这样的修改包括用已知的等同物替代本发明的任何方面,以便以基本上相同的方式获得相同的结果。

除非上下文另外要求,否则在整个说明书和权利要求书中,词语“包括”及其变体(例如“包括”和“包含”)应以开放的、包容性的意义来解释,即为“包括但不仅限于。”在整个说明书中对数值的数值范围的引用旨在用作速记符号,分别指代落入包括限定范围的值在内的范围内的每个单独的值,并且每个单独的值都包含在说明书中,如本文中单独叙述的那样。另外,单数形式的“一”、“一个”和“该”包括复数对象,除非上下文另外明确指出。短语“以下项中的至少一个”、“选自以下项的组的至少一个”或“选自由以下项组成的组的至少一个”等将在析取语(例如,不解释为a中的至少一个和b中的至少一个)中解释。

在整个说明书中对“一个实施例”或“一个实施例”的引用是指结合该实施例描述的特定特征,结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在一个实施例中”不一定都指的是同一实施例,而是在某些情况下可能出现。此外,在一个或多个实施例中,可以以任何合适的方式来组合特定特征、结构或特性。

尽管出于说明的目的已经基于当前被认为是最实际和优选的实施方式详细描述了本发明,但是应当理解,这种细节仅用于该说明的目的,并且本发明不限于所公开的实施方式,但是,相反地,其旨在覆盖所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本发明考虑了在可能的范围内,任何实施例的一个或多个特征可以与任何其他实施例的一个或多个特征及进行组合。

已经出于说明和描述的目的提供了本发明的前述描述。并非旨在穷举或将本发明限制为所公开的精确形式。本发明的广度和范围不应受到任何上述示例性实施例的限制。许多修改和变化对本领域技术人员而言是显而易见的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够理解本发明的各种实施例以及适合于所设想的特定用途的各种修改。本发明的范围旨在由所附权利要求及其等同物来限定。

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