地图坐标畸变补偿的制作方法

文档序号:31547395发布日期:2022-09-17 01:37阅读:109来源:国知局
地图坐标畸变补偿的制作方法
地图坐标畸变补偿
1.相关申请的交叉引用
2.本技术要求于2019年12月10日提交的美国申请no.16/709,239的优先权,该申请的全部内容通过引用并入本文。
技术领域
3.本公开总体上涉及地图坐标系和利用地图坐标系的导航系统,特别是用于车辆,诸如自动驾驶车辆。


背景技术:

4.目前,从3-d地球生成2-d地图不可避免地导致畸变,这意味着2-d地图上的相对距离可能不准确。一种生成2-d地图的方法包括使用通用横轴墨卡托(utm)坐标系。因为由里程计数据生成的某些传感器数据(诸如速度和加速度)可以被转变为2-d地图的坐标,所以2-d地图中的不准确可以导致转变后的传感器数据中的不准确。例如,如果传感器数据指示物体在100英里远,但2-d地图在该距离处具有1%的畸变误差,则当该物体在地图上看起来在100英里远时,转变到2-d地图上的传感器数据可以指示该物体实际上在101英里远。一些试图纠正这些不准确的方法是耗时的。本公开解决了这些不足,本公开提供了一种高效且有效的系统来补偿2-d地图上的畸变并准确地显示传感器数据。


技术实现要素:

5.本公开的各种实施例提供了一种系统,其包括:一个或多个处理器;以及存储器,其存储指令,该指令在由一个或多个处理器执行时使系统执行:生成具有原点的地图的投影;相对于距原点的距离确定地图的畸变因子;确定从车辆到原点的距离;确定来自车辆的传感器的读数;并且基于对应于距离的畸变因子将读数调整到地图的坐标。
6.在一些实施例中,读数包括速度或加速度。
7.在一些实施例中,基于畸变因子将读数调整到地图的坐标包括:将读数乘以对应于距离的畸变因子。
8.在一些实施例中,指令进一步使系统执行:基于经调整的读数导航车辆。
9.在一些实施例中,指令进一步使系统执行:基于对应于距离的畸变因子调整传感器操作的范围。
10.在一些实施例中,地图的畸变因子随着距原点的距离增加而增加。
11.在一些实施例中,生成具有原点的地图的投影包括:在纬度方向上基于通用横轴墨卡托(utm)坐标系并且在经度方向上基于世界大地测量系统(wgs84)坐标系来生成地图。
12.在一些实施例中,相对于距原点的距离确定地图的畸变因子包括:基于通用横轴墨卡托(utm)坐标系的在距原点的对应的距离处的相应畸变量来确定畸变因子。
13.在一些实施例中,畸变因子指示:通用横轴墨卡托(utm)坐标系的在距原点的对应的距离处的相应畸变量。
14.在一些实施例中,传感器包括惯性测量单元(imu)、车轮编码器、lidar传感器和雷达传感器中的任何一个。
15.本公开的各种实施例提供了一种由计算系统实现的方法,该计算系统包括一个或多个处理器以及存储有机器可读指令的存储介质,其中。该方法使用一个或多个处理器来执行,该方法包括:生成具有原点的地图的投影;相对于距原点的距离确定地图的畸变因子;确定从车辆到原点的距离;确定来自车辆的传感器的读数;以及基于对应于距离的畸变因子将读数调整到地图的坐标。
16.在一些实施例中,读数包括速度或加速度。
17.在一些实施例中,基于畸变因子将读数调整到地图的坐标包括:将读数乘以对应于距离的畸变因子。
18.在一些实施例中,该方法进一步包括:基于经调整的读数导航车辆。
19.在一些实施例中,该方法进一步包括:基于对应于距离的畸变因子调整传感器操作的范围。
20.在一些实施例中,地图的畸变因子随着距原点的距离增加而增加。
21.在一些实施例中,生成具有原点的地图的投影包括:在纬度方向上基于通用横轴墨卡托(utm)坐标系并且在经度方向上基于世界大地测量系统(wgs84)坐标系来生成地图。
22.在一些实施例中,相对于距原点的距离确定地图的畸变因子包括:基于通用横轴墨卡托(utm)坐标系的在距原点的对应的距离处的相应畸变量来确定畸变因子。
23.在一些实施例中,畸变因子指示:通用横轴墨卡托(utm)坐标系的在距原点的对应的距离处的相应畸变量。
24.在一些实施例中,传感器包括惯性测量单元(imu)、车轮编码器、lidar传感器和雷达传感器中的任何一个。
25.通过参考附图考虑以下描述和所附权利要求书,本文公开的系统、方法和非暂时性计算机可读介质的这些和其他特征、以及结构的相关元件和部分的组合的操作和功能的方法以及制造的经济性将变得显而易见,所有附图形成本说明书的一部分,其中在各个附图中,相同的附图标记表示对应的部分。然而,应该明确地理解,附图仅出于说明和描述的目的,并不旨在作为对本发明的限制的定义。
附图说明
26.在所附权利要求中具体阐述了本技术的各种实施例的某些特征。通过参考下面的详细描述,将获得对技术的特征和优点的更好的理解,以下详细描述阐述了说明性实施例和附图,在说明性实施例中利用了本发明的原理,并且附图中:
27.图1示出了根据本公开的一个或多个实施例的系统的示例环境。
28.图2-图5示出了根据本公开的实施例的计算系统的示例实施方式。
29.图6示出了根据本公开的实施例的方法的示例的流程图。
30.图7是用于实施本文公开的特征的示例计算机系统的图。
具体实施方式
31.图1示出了系统的示例环境100,该系统生成具有原点的地图的投影,相对于距原
点的距离确定地图的畸变因子,确定从车辆到原点的距离,确定来自车辆的传感器的读数,基于读数和地图估计车辆的方位,并基于对应于距离的畸变因子调整所估计的方位。在图1中,车辆(诸如自动驾驶车辆101)可以包括无数传感器(lidar系统102、雷达系统104、相机106、gps、声纳、超声、一个或多个imu(惯性测量单元)107、加速度计、陀螺仪、磁力计和fir(远红外)传感器)来检测和识别周围的物体。此外,车辆101可以包括车轮编码器109。例如,lidar系统102可以生成环境的三维地图。lidar系统102还可以检测环境中的物体。在另一个示例中,雷达系统104可以确定车辆101周围的物体的距离和速度,并且可以被配置用于自适应巡航控制和/或事故避免和盲点检测。在另一个示例中,相机106可以捕获和处理图像数据以检测和识别物体,诸如道路标志,以及解密物体的内容,诸如张贴在道路标志上的限速。例如,此类物体可以包括但不限于行人、道路标志、交通信号灯和/或其他车辆。在一些实施例中,相机106可以识别、解释和分析道路标志(例如,限速、学校区、施工区等)和交通信号灯(例如,红灯、黄灯、绿灯、闪烁的红灯、etc。)。车辆101还可以包括无数致动器以在周围推进和导航车辆101。此类致动器可以包括例如任何合适的机电设备或系统以控制节气门响应、制动动作、转向动作等。在一些实施例中,基于由相机106捕获的图像数据,车辆101可以基于道路上张贴的限速标志调整车辆速度。例如,车辆101可以与前方车辆保持恒定的安全距离(例如,自适应巡航控制)。在该示例中,车辆101通过不断地将其车辆速度调整到前方车辆的车辆速度来保持该安全距离。
32.在各种实施例中,车辆101可以在有限人类输入或没有人类输入的情况下并基于来自无数传感器的数据穿过道路、街道和/或地形导航。本文中使用的“车辆”或“多个车辆”一词包括在地面上行驶的车辆(例如汽车、卡车、公共汽车等),但也可以包括在空中行驶的车辆(例如无人机、飞机、直升机等),在水上行驶的车辆(例如,船、潜艇等)。进一步地,本文中讨论的“车辆”或“多个车辆”在其中可以容纳或可以不容纳一个或多个乘客。此外,短语“自动驾驶车辆”、“无人驾驶车辆”或不需要人类主动参与的任何其他车辆可以互换使用。
33.通常,车辆101可以实现人类驾驶员在常规车辆上可以实现的对自身的任何控制。例如,车辆101可以加速、制动、左转或右转,或者反向行驶,就像人类驾驶员可以在常规车辆上进行的一样。车辆101还可以像人类驾驶员一样感测环境条件、计量空间关系(例如,物体与其自身之间的距离)、检测和分析道路标志。此外,车辆101可以在没有任何人类输入的情况下执行更复杂的操作,诸如平行停车、在拥挤的停车场停车、避免碰撞等。
34.在各种实施例中,包括一个或多个处理器和存储器的至少一个计算系统112可以通过网络150连接到设备131。至少一个计算系统112可以物理连接和/或电连接到车辆101。在一些实施例中,可以将至少一个计算系统112集成为车辆101的一部分。一个或多个用户可以通过设备131请求、查看和/或访问传感器102、104、106、107和109以及车辆101的细节。
35.处理器可以被配置为通过解释机器可读指令来执行各种操作。在一些实施例中,示例环境100可以实施为数据平台。在一些实施例中,示例环境100可以被配置为与数据平台的至少一个计算系统112交互。在各种实施例中,数据平台的至少一个计算系统112可以协调和/或控制下列项中的一个或多个操作:生成具有原点的地图的投影;相对于距原点的距离确定地图的畸变因子;确定从车辆到原点的距离;确定来自车辆的传感器的读数;基于读数和地图估计车辆的方位;基于对应于距离的畸变因子调整所估计的方位。
36.在一些实施例中,至少一个计算系统112可以包括处理引擎114。处理引擎114可以
包括生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122。处理引擎114可以由计算系统112的(一个或多个)处理器执行以执行各种操作,包括参考生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122描述的那些操作。一般而言,处理引擎114可以全部或部分实施为能够在一个或多个计算设备或系统上运行的软件。在一个示例中,处理引擎114可以实施为运行在一个或多个计算设备(例如,用户或客户端设备)和/或一个或多个服务器(例如,网络服务器或云服务器、服务器130)上的软件应用程序中或实施在该软件应用程序内。在一些情况下,生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122的各个方面可以在一个或多个计算系统和/或设备中实现。在一些情况下,生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122中的一个或多个可以组合或集成为单个处理器,并且由生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122中的一个或多个执行的一些或所有功能可以不在空间上分开,而是可以由公共处理器执行。环境100还可以包括计算系统112可访问的一个或多个服务器130。一个或多个服务器130可以存储和更新从生成引擎116、确定引擎118、感测引擎120、调整引擎121和导航引擎122中的任何一个生成或输出的信息。例如,一个或多个服务器130可以存储指示在距地图的原点的对应的距离处的畸变因子的数据。
37.一个或多个服务器130可直接或通过网络150由计算系统112访问。在一些实施例中,一个或多个服务器130可以存储可以由处理引擎114访问的数据以提供本文描述的各种特征。在一些情况下,例如,一个或多个服务器130可以包括联合的数据存储装置、数据库或可以从其中存储和检索数据的任何其他类型的数据源。在一些实施方式中,一个或多个服务器130可以包括各种类型的数据集,可以在这些数据集上确定准确性或与其他信息的一致性。通常,操作计算设备的用户可以通过网络150与计算系统112交互,例如,通过一个或多个图形用户界面和/或应用程序编程界面。一个或多个服务器130可以存储来自车辆101的数据132并且与另一车辆140交换数据132。一个或多个服务器130可以存储来自另一车辆140的数据并且与车辆101交换来自另一车辆140的数据。一个或多个服务器130可以与车辆101或另一车辆140交换来自一个或多个服务器130的数据。
38.生成引擎116可以被配置为从3维(3d)地球生成地图的2维(2d)投影。在一些实施例中,生成引擎116可以被配置为生成具有原点的地图的2d投影。原点可以在预定位置。在一些实施例中,可以基于通用横轴墨卡托(utm)坐标系生成地图的2d投影。在一些实施例中,可以在纬度方向上基于通用横轴墨卡托(utm)坐标系并且在经度方向上基于世界大地测量系统(wgs84)坐标系来生成地图的2d投影。确定引擎118可以被配置为相对于距原点的距离确定所生成的2d地图的畸变因子。在一些实施例中,确定引擎118可以被配置为在距原点的每个距离处确定所生成的2d地图的畸变因子。畸变因子可以指示一个量,将地图坐标的相对距离相乘该量以获得匹配传感器读数的实际相对距离。例如,如果在距原点的特定距离(诸如100km)处的畸变因子为1.01,并且传感器读数指示两个位置之间的相对距离为100km,则对应于传感器读数中的100km相对距离的地图坐标中的距离将为101km。在一些实施例中,位置处的畸变因子可以主要或仅基于该位置距原点的距离。在一些实施例中,可以基于或等于通用横轴墨卡托(utm)坐标系的在距原点的对应的距离处的相应畸变量来获得畸变因子。
39.感测引擎120可以包括获取传感器读数的传感器102、104、106、107和109。传感器
读数可以包括速度、加速度和距离信息。调整引擎121可以被配置为基于对应于距离的畸变因子将来自感测引擎120的传感器读数调整到地图的坐标。调整引擎121可以将传感器读数乘以对应于距离的畸变因子以将传感器读数调整到地图的坐标。例如,如果在距原点的特定距离(诸如100km)处的畸变因子为1.01,并且传感器读数指示两个位置之间的相对距离为50km,则对应于或匹配传感器读数中的100km相对距离的地图坐标中的距离将为50km
×
1.01或50.5km。调整引擎121可以调整两个位置之间的相对距离(诸如两个物体或实体之间的相对距离)以匹配地图坐标中的经调整的读数。例如,调整引擎121可以将两个位置之间(诸如车辆101和物体或实体之间)的相对距离调整为相距50.5km而不是相距50km。调整引擎121可以使用其他传感器或来自诸如gnss传感器(包括rtk、psr、sp和双天线航向)的传感器的经验证的卫星地图数据验证地图坐标中的经调整的读数。在一些实施例中,调整引擎121可以被配置为响应于累积误差超过阈值误差而将传感器读数调整到地图坐标。响应于传感器读数是速度,调整引擎121可以通过确定速度、两个传感器输入之间的时间间隔和畸变因子减去一的乘积来确定累积误差。响应于传感器读数是加速度,调整引擎121可以通过确定加速度、两个传感器输入之间的时间间隔的平方和畸变因子减去一的乘积来确定累积误差。调整引擎121可以被配置为通过确定范围和畸变因子减去一的乘积来确定传感器范围内的畸变,并且响应于传感器范围内的所确定的畸变超过阈值误差,通过畸变因子调整范围内的传感器读数。例如,如果lidar传感器的截止范围为120m,假设距地图的原点141km的距离(该处的畸变因子为1.00012),则畸变误差将为0.00012
×
120m或1.44cm。在707km的距离处,此处的畸变因子为1.0031,畸变误差将为0.031
×
120m或37.2cm。
40.导航引擎122可以基于地图坐标中的经调整的传感器读数和/或两个位置或实体之间的经调整的相对距离来确定、调整或修改一个或多个车辆导航动作。例如,导航引擎122可以确定采取替代路线或绕道以避开施工场地,或采取让行动作以让行给行人或另一车辆。
41.图2示出了本公开的计算系统的示例实施方式。在图2中,生成引擎(诸如生成引擎116)可以从3d地球212生成地图214的2d投影。生成引擎116可以使用通用横轴墨卡托(utm)坐标系,或在纬度方向上使用通用横轴墨卡托(utm)坐标系并且在经度方向上使用世界大地测量系统(wgs84)坐标系,生成地图214的2d投影。
42.图3示出了本公开的计算系统的示例实施方式。在图3中,确定引擎(诸如确定引擎118)可以在距原点的不同距离312处确定所生成的2d地图(诸如地图214)畸变因子314。确定引擎118可以生成表310(诸如查找表),其指示在距原点的不同距离中的每一个处的畸变因子。确定引擎118可以将表310存储在一个或多个服务器130中。畸变因子可以随着距原点的距离增加而增加。
43.图4a示出了本公开的计算系统的示例实施方式,具体地,调整引擎(诸如调整引擎121)的示例实施方式。在图4a的实施方式400中,感测引擎120可以最初获取指示道路位于距地图214的原点一定距离(诸如100km)远的数据并将数据投影到地图(诸如地图214)上,道路包括车道460、470、480、490和492以及施工场地422。车道460、470、480、490和492距原点的相对方位可以已经被验证,而施工场地422距原点的相对方位可以未被验证。实施方式400在不考虑地图214的畸变的情况下示出了施工场地422的方位,如车道470旁边。调整引擎121可以在实施方式405中调整施工场地422的方位以考虑在距地图的原点100km远处的
畸变因子,调整到它的正确位置。现在可以确定施工场地422在车道492旁边。
44.图4b示出了本公开的计算系统的示例实施方式,具体地,导航引擎(诸如导航引擎122)的示例实施方式。在图4b的实施方式450中,导航引擎122假设将基于在不考虑地图214的畸变的情况下指示施工场地422的方位的实施方式400,在施工场地422被确定为在此方位处的情况下,确定车辆410的一个或多个导航动作。可以实施为车辆101的车辆410可以包括有源多普勒传感器418和/或用于获得车辆410的环境的数据的其他传感器。车辆410可以包括灯阵列412,其可以包括灯413、414、415、416和417。在一些实施例中,阵列412可以包括任何数量的灯。仅出于说明目的而示出五个灯。例如,车辆410将经由导航引擎122确定绕道进入车道494以便避开施工场地422。
45.在实施方式455中,导航引擎122可以基于施工场地422的经调整的方位确定车辆410的一个或多个导航动作,以便避开施工场地422或利用由施工场地422导致的绕道。在一些实施例中,导航引擎122可以确定车辆410要沿着车道480行进并转入车道470。在一些实施例中,导航引擎122可以不以实施方式450确定导航动作,并且替代地以实施方式455确定导航动作,因为实施方式450没有示出障碍物422的准确的或经调整的方位。
46.图5a示出了本公开的计算系统的示例实施方式,具体地,调整引擎(诸如调整引擎121)的示例实施方式。在图5a的实施方式500中,感测引擎120可以最初获取指示道路位于距地图214的原点一定距离(诸如100km)远的数据并将数据投影到地图(诸如地图214)上,道路包括车道560、570、580、590和492以及障碍物540。车道560、570、580、590和592距原点的相对方位可以已经被验证,而障碍物540距原点的相对方位可以未被验证。实施方式500在不考虑地图214的畸变的情况下示出障碍物540的方位,如车道560旁边。调整引擎121可以在实施方式505中调整障碍物540的方位以考虑在距地图的原点100km远处的畸变因子,调整到它的正确位置。现在可以确定障碍物540在车道592旁边。在一些实施例中,障碍物540可以是倒下的树。
47.图5b示出了本公开的计算系统的示例实施方式,具体地,导航引擎(诸如导航引擎122)的示例实施方式。在图5b的实施方式550中,导航引擎122假设将基于在不考虑地图214的畸变的情况下指示障碍物540的方位的实施方式500,在施工场地被确定为在此方位处的情况下,确定车辆510的一个或多个导航动作。可以实施为车辆101的车辆510可以包括有源多普勒传感器518和/或用于获得车辆510的环境的数据的其他传感器。车辆510可包括灯阵列512,其可以包括灯513、514、515、516和517。在一些实施例中,阵列512可以包括任何数量的灯。仅出于说明目的而示出五个灯。例如,车辆510将经由导航引擎122确定绕道进入车道594以便避开障碍物540。
48.在实施方式555中,导航引擎122可以基于障碍物540的经调整的方位确定车辆510的一个或多个导航动作,以便避开障碍物540或利用由障碍物540导致的绕道。在一些实施例中,导航引擎122可以确定车辆510要沿着车道580行进并转入车道570。在一些实施例中,导航引擎122可以不以实施方式550确定导航动作,并且替代地以实施方式555确定导航动作,因为实施方式550没有示出障碍物540的准确的或经调整的方位。
49.图6示出了根据一些实施例的方法的流程图。在该流程图和其他流程图中,流程图600通过示例示出了一系列步骤。应该理解的是,步骤可以在适用时被重组以并行执行,或者被重新排序。此外,为了清楚起见,可能已经包括的一些步骤可能已被移除以避免提供过
多的信息,并且为了说明清楚起见,可以移除被包括的一些步骤,但这些步骤可能已经被包括在内。来自其他附图的描述也可以适用于图6。
50.在步骤602中,可以生成具有原点的地图的投影。在步骤602中,可以相对于距原点的距离确定地图的畸变因子。在步骤606中,可以确定从车辆到原点的距离。在步骤608中,可以确定从传感器到车辆的读数。在步骤610中,可以基于读数和地图来估计车辆的方位。在步骤612中,可以基于对应于距离的畸变因子来调整所估计的方位。例如,如果车辆在100km远,则可以基于对应于距原点100km远的距离的畸变因子来调整所估计的方位。
51.硬件实施方式
52.本文中描述的技术由一个或多个专用计算设备来实现。专用计算设备可以硬连线以执行该技术,或者可能包含电路或数字电子设备(诸如一个或多个专用集成电路(asic)或被永久编程为执行该技术的现场可编程门阵列(fpga)),或者可以包括一个或多个硬件处理器,该硬件处理器被编程为根据固件、存储器、其他储存器(storage)或组合中的程序指令来执行技术。这样的专用计算设备还可以将定制的硬连线逻辑、asic或fpga与定制的编程相结合,以实现这些技术。专用计算设备可以是台式计算机系统、服务器计算机系统、便携式计算机系统、手持式设备、网络设备或结合硬连线和/或程序逻辑来实现技术的任何其他设备或设备组合。
53.计算设备通常由操作系统软件控制和协调,诸如ios、android、chrome os、windows xp、windows vista、windows 7、windows 8、windows server、windows ce、unix、linux、sunos、solaris、ios、blackberry os、vxworks或其他兼容的操作系统。在其他实施例中,计算设备可以由专有操作系统控制。传统的操作系统控制和调度以供执行的计算机进程,执行存储器管理,提供文件系统、联网、i/o服务,并且提供诸如图形用户界面(“gui”)的用户界面功能,等等。
54.图7是示出了可以实现本文中所描述的任何实施例的计算机系统700的框图。计算机系统700包括用于传送信息的总线702或其他通信机制、用于处理信息的与总线702联接的一个或多个硬件处理器704。硬件处理器704可以是例如一个或多个通用微处理器。
55.计算机系统700还包括联接到总线702的主存储器706(诸如随机存取存储器(ram)、高速缓存和/或其他动态存储设备),用于存储将由处理器704执行的信息和指令。主存储器706还可以用于在执行将由处理器704执行的指令期间存储临时变量或其他中间信息。这些指令在被存储在处理器704可访问的存储介质中时将计算机系统700渲染为被定制为执行指令中指定的操作的专用机器。
56.计算机系统700还包括联接到总线702的只读存储器(rom)708或其他静态存储设备,用于存储用于处理器704的静态信息和指令。提供了储存设备710(诸如磁盘、光盘或usb拇指驱动器(闪存驱动器)等),其联接到总线702,用于存储信息和指令。
57.计算机系统700可以经由总线702联接到输出设备712(诸如阴极射线管(crt)或lcd显示器(或触摸屏)),用于向计算机用户显示信息。包括字母数字键和其他键的输入设备714联接到总线702,用于将信息和命令选择传送给处理器704。用户输入设备的另一种类型是光标控件716(诸如鼠标、轨迹球或光标方向键),其用于将方向信息和命令选择传送给处理器704并控制显示器712上的光标移动。该输入设备通常在两个轴上具有两个自由度,即第一轴(例如,x)和第二轴(例如,y),这允许该设备指定平面中的方位。在一些实施例中,
可以通过在没有光标的情况下接收触摸屏上的触摸来实现与光标控制相同的方向信息和命令选择。
58.计算系统700可以包括用户接口模块以实现gui,该用户接口模块可以作为由计算设备执行的可执行软件代码存储在大容量存储设备中。举例来说,该模块和其他模块可以例如包括组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、函数、属性、过程、子例程、程序代码段、驱动程序、固件、微代码、电路、数据、数据库、数据结构、表、数组和变量。
59.一般而言,本文中所使用的单词“模块”是指:体现在硬件或固件中的逻辑,或者指用编程语言(例如,java、c或c++)编写的、可能具有入口点和出口点的软件指令的集合。可以将软件模块编译并链接到可执行程序中、安装在动态链接库中,或者可以用解释性编程语言(例如,basic、perl或python)编写该软件模块。可以理解,软件模块可以从其他模块或从其自身调用,并/或可以响应于检测到的事件或中断而被调用。可以将被配置为在计算设备上执行的软件模块提供在计算机可读介质(诸如光盘、数字视频光盘、闪存驱动器、磁盘或任何其他有形介质)上,或者可以提供为数字下载(并且可以最初以需要在执行之前进行安装、解压缩或解密的压缩或可安装的格式存储)。可以将这样的软件代码部分或全部地存储在执行中的计算设备的存储设备上,以由该计算设备执行。可以将软件指令嵌入在诸如eprom的固件中。还将理解,硬件模块可以由连接的逻辑单元(诸如门和触发器)组成,并/或可以由可编程单元(诸如可编程门阵列或处理器)组成。本文中描述的模块或计算设备功能优选地被实现为软件模块,但是可以以硬件或固件来表示。通常,本文中描述的模块是指可以与其他模块组合的模块或被划分为子模块的逻辑模块,而不考虑其物理组织或存储方式。
60.计算机系统700可以使用定制的硬连线逻辑、一个或多个asic或fpga、固件和/或程序逻辑(其与计算机系统结合使计算机系统700成为或编程为专用机器)来实施本文中描述的技术。根据一个实施例,本文中的技术由计算机系统700响应于处理器704执行包含在主存储器706中的一个或多个指令的一个或多个序列来执行。可以从诸如储存设备710的另一存储介质将这样的指令读入主存储器706。主存储器706中包含的指令序列的执行使处理器704执行本文中所述的处理步骤。在替代性实施例中,硬连线电路可以代替软件指令来使用或与软件指令结合使用。
61.如本文中所用,术语“非暂时性介质”和类似术语是指存储使机器以特定方式操作的数据和/或指令的任何介质。这样的非暂时性介质可以包括非易失性介质和/或易失性介质。非易失性介质包括例如光盘或磁盘,诸如储存设备710。易失性介质包括动态存储器,诸如主存储器606。非暂时性介质的常见形式包括例如软盘、软磁盘、硬盘、固态驱动器、磁带或任何其他磁数据存储介质、cd-rom、任何其他光数据存储介质、具有孔图案的任何物理介质、ram、prom和eprom、flash-eprom、nvram,任何其他存储器片或盒式磁盘以及其网络版本。
62.非暂时性介质不同于传输介质,但是可以与传输介质结合使用。传输介质参与非暂时性介质之间的信息传输。例如,传输介质包括同轴电缆、铜线和光纤,其包括构成总线702的线。传输介质还可以采用声波或光波的形式,诸如在无线电波和红外数据通信期间生成的声波或光波。
63.各种形式的介质可涉及将一个或多个指令的一个或多个序列传送给处理器704以供执行。例如,最初可以将指令承载在远程计算机的磁盘或固态驱动器上。远程计算机可以将指令加载到其动态存储器中,并使用调制解调器通过电话线发送指令。计算机系统700本地的调制解调器可以在电话线上接收数据,并使用红外发射器将该数据转换为红外信号。红外检测器可以接收红外信号中携带的数据,并且适当的电路可以将该数据放置在总线702上。总线702将数据携带到主存储器706,处理器704从主存储器706中检索并执行指令。由主存储器706接收的指令可以检索并执行指令。由主存储器706接收的指令可以可选地在由处理器704执行之前或之后被存储在储存设备710上。
64.计算机系统700还包括联接到总线702的通信接口718。通信接口718提供双向数据通信,其联接到连接到一个或多个本地网络的一个或多个网络链路。例如,通信接口718可以是集成服务数字网络(isdn)卡、电缆调制解调器、卫星调制解调器或调制解调器,以提供到对应类型的电话线的数据通信连接。作为另一示例,通信接口718可以是局域网(lan)卡,以提供与兼容lan(或与wan通信的wan组件)的数据通信连接。也可以实现无线链接。在任何这样的实现中,通信接口718发送和接收携带表示各种类型的信息的数字数据流的电信号、电磁信号或光信号。
65.网络链路通常通过一个或多个网络向其他数据设备提供数据通信。例如,网络链路可以通过本地网络提供到主机计算机或到由互联网服务提供商(isp)操作的数据设备的连接。isp依次通过现在通常被称为“互联网(internet)”的全球分组数据通信网络提供数据通信服务。局域网和互联网都使用承载数字数据流的电信号、电磁信号或光信号。通过各种网络的信号以及在网络链路上并且通过通信接口718的信号(其携带去往和来自计算机系统700的数字数据)是传输介质的示例形式。
66.计算机系统700可以通过网络、网络链路和通信接口718发送消息并接收数据(包括程序代码)。在互联网示例中,服务器可以通过互联网、isp、本地网络和通信接口718传输针对应用程序的请求代码。
67.所接收的代码可以在其被接收时由处理器704执行,并/或被存储在储存设备710或其他非易失性储存器中,以供以后执行。
68.前面各部分中描述的进程、方法和算法中的每个可以体现在由一个或多个计算机系统或包括计算机硬件的计算机处理器执行的代码模块中,或者由该代码模块完全或部分自动化。可以在应用专用电路中部分或全部实现进程和算法。
69.前述的各种特征和过程可以彼此独立地使用,或者可以以各种方式组合。所有可能的组合和子组合旨在落入本公开的范围内。另外,在某些实施方式中,可以省略某些方法或过程框。本文中所述的方法和过程也不限于任何特定的顺序,并且与其相关的框或状态可以以其他适当的顺序执行。例如,可以以不同于具体公开的顺序来执行所描述的框或状态,或者可以在单个框或状态中组合多个框或状态。示例框或状态可以串行、并行或以其他方式执行。块或状态可以被添加到所公开的示例实施例中或从所公开的示例实施例中去除。本文中描述的示例系统和组件可以被配置为与所描述的不同。例如,与所公开的示例实施例相比,元件可以被添加到所公开的示例性实施例中、从所公开的示例性实施例中移除或重新排列。
70.条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用
的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常并不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。
71.在本文中描述的和/或在附图中描绘的流程图中的任何过程描述、元件或框应当被理解为潜在地表示代码的模块、段或部分,其可以包括一个或多个用于在进程中实现特定逻辑功能或步骤的可执行指令。如本领域技术人员将理解的,替代性实施方式包括在本文中所述实施例的范围内,其中取决于所涉及的功能,可以删除、不按所示的或所讨论的顺序执行(包括基本上同时或以相反的顺序执行)元件或功能。
72.应该强调的是,可以对上述实施例进行许多变型和修改,其元件应被理解为是其他可接受的示例中的一种。所有这些修改和变型旨在包括在本公开的范围内。前面的描述详述了本发明的某些实施例。然而,应当理解,无论前述内容在文本中显示的多么详细,都可以以许多方式来实践本发明。如上所述,应当注意的是,在描述本发明的某些特征或方面时,使用特定术语并不意味着暗示术语在本文中被重新定义为限于包括与该术语相关联的本发明的特征或方面的任何特定特征。因此,本发明的范围应根据所附权利要求及其任何等同物来解释。
73.引擎、组件和逻辑
74.本文中将某些实施例描述为包括逻辑或多个组件、引擎或机制。引擎可以构成软件引擎(例如,体现在机器可读介质上的代码)或硬件引擎。“硬件引擎”是能够执行某些操作的有形单元,并且可以以某种物理方式被配置或布置。在各种示例实施例中,可以通过软件(例如,应用程序或应用程序部分)将一个或多个计算机系统(例如,独立计算机系统、客户端计算机系统或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,一个处理器或一组处理器)被配置为被操作为执行本文所述的某些操作的硬件引擎。
75.在一些实施例中,可以机械地、电子地或其任何合适的组合来实现硬件引擎。例如,硬件引擎可以包括永久性地被配置为执行某些操作的专用电路或逻辑。例如,硬件引擎可以是专用处理器,诸如现场可编程门阵列(fpga)或专用集成电路(asic)。硬件引擎还可以包括可编程逻辑或电路,其由软件临时被配置为执行某些操作。例如,硬件引擎可以包括由通用处理器或其他可编程处理器执行的软件。一旦通过此类软件进行配置,则硬件引擎将成为专门定制为执行配置功能的特定机器(或机器的特定组件),并且不再是通用处理器。将意识到,机械地、在专用且永久配置的电路中或在临时配置的电路(例如,由软件配置)中实施硬件引擎的决定可能受成本和时间考虑的影响。
76.因此,短语“硬件引擎”应被理解为包括有形实体,该有形实体是被物理构造、永久配置(例如,硬连线)或临时配置(例如,编程)为以某种方式操作或执行本文所述的某些操作的实体。如本文中所使用的,“硬件实现的引擎”是指硬件引擎。考虑到硬件引擎被临时配置(例如,编程)的实施例,硬件引擎中的每个无需在任何时候都及时被配置或实例化。例如,在硬件引擎包括由软件被配置为专用处理器的通用处理器的情况下,该通用处理器可以在不同时间分别被配置为不同的专用处理器(例如,包括不同的硬件引擎)。软件相应地配置一个或多个特定处理器,例如,以在一个时间实例中构成特定的硬件引擎,并在不同的
时间实例中构成不同的硬件引擎。
77.硬件引擎可以向其他硬件引擎提供信息并从其他硬件引擎接收信息。因此,所描述的硬件引擎可以被认为是通信联接的。在同时存在多个硬件引擎的情况下,可以通过在硬件引擎中的两个或多个之间的信号传输(例如,通过适当的电路和总线)来实现通信。在以不同时间配置或实例化多个硬件引擎的实施例中,可以例如通过在多个硬件引擎可以访问的存储器结构中存储和检索信息来实现这种硬件引擎之间的通信。例如,一个硬件引擎可执行操作并将该操作的输出存储在其通信联接的存储设备中。然后,另一硬件引擎可以在以后的时间访问该存储设备以检索和处理所存储的输出。硬件引擎还可以发起与输入或输出设备的通信,并且可以在资源(例如,信息的集合)上进行操作。
78.本文中描述的示例方法的各种操作可以至少部分地由一个或多个临时配置(例如,通过软件)或永久被配置为执行相关操作的处理器执行。无论是临时配置还是永久配置,这样的处理器都可以构成处理器实现的引擎,其被操作为执行本文所述的一个或多个操作或功能。如本文所使用的,“处理器实现的引擎”是指使用一个或多个处理器实现的硬件引擎。
79.类似地,本文中描述的方法可以至少部分地由处理器实现,其中一个或多个特定处理器是硬件的示例。例如,方法的操作中的至少一些可以由一个或多个处理器或处理器实现的引擎来执行。此外,一个或多个处理器还可操作为在“云计算”环境中或作为“软件即服务”(saas)支持相关操作的性能。例如,操作中的至少一些可以由一组计算机(作为包括处理器的机器的示例)执行,其中这些操作可以通过网络(例如,互联网)和一个或多个适当的接口(例如,应用程序接口(api))来访问。
80.某些操作的性能可以分布在处理器之间,不仅驻留在单个计算机内,而且可以部署在多个计算机上。在一些示例实施例中,处理器或处理器实现的引擎可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器场内)。在其他示例实施例中,处理器或处理器实现的引擎可以分布在多个地理位置上。
81.语言
82.在整个说明书中,多个实例可以实现被描述为单个实例的组件、操作或结构。尽管将一种或多种方法的单独操作示出并描述为单独的操作,但是可以同时执行单独操作中的一个或多个,并且不需要按照所示顺序执行操作。在示例配置中被呈现为单独的组件的结构和功能可以被实现为组合的结构或组件。类似地,被呈现为单个组件的结构和功能可以被实现为单独的组件。这些和其他变型、修改、添加和改进落入本文中的主题的范围内。
83.尽管已经参考特定示例实施例描述了本主题的概述,但是在不脱离本公开的实施例的更广范围的情况下,可以对这些实施例进行各种修改和改变。主题的这样的实施例在本文中可以仅仅为了方便起见而单独地或共同地由术语“发明”来指代,并且如果实际上公开了多个公开或概念,则并不旨在将本技术的范围限制为任何单个公开或概念。
84.足够详细地描述了本文所示的实施例,以使本领域技术人员能够实践所公开的教导。可以使用其他实施例并从中导出,使得可以在不脱离本公开的范围的情况下进行结构和逻辑上的替换和改变。因此,不应从限制的意义上理解详细描述,并且各种实施例的范围仅由所附权利要求以及这些权利要求所授权的等同物的全部范围来限定。
85.应当理解,“引擎”、“系统”、“数据存储库”和/或“数据库”可以包括软件、硬件、固
件和/或电路。在一个示例中,包括能够由处理器执行的指令的一个或多个软件程序可以执行本文中所述的引擎、数据存储库、数据库或系统的一个或多个功能。在另一示例中,电路可以执行相同或相似的功能。替代性实施例可以包括更多、更少或功能上等效的引擎、系统、数据存储库或数据库,并且仍在本实施例的范围内。例如,各种系统、引擎、数据存储库和/或数据库的功能可以被不同地组合或划分。
[0086]“开源”软件在本文中被定义为允许作为源代码和编译形式分发的源代码,具有获得源的公开和索引方式,可选地具有允许修改和派生作品的许可。
[0087]
本文所述的数据存储库可以是任何合适的结构(例如,活动数据库、关系数据库、自引用数据库、表、矩阵、数组、平面文件、面向文档的存储系统、非关系型no-sql系统等),并且可以基于云或以其他方式。
[0088]
如本文所使用的,术语“或”可被解释为包含性的或排他性的意义。此外,可以为在本文中被描述为单个实例的资源、操作或结构提供多个实例。另外,各种资源、操作、引擎、引擎和数据存储库之间的边界在某种程度上是任意的,并且在特定说明性配置的上下文中说明了特定操作。可以设想其他的功能分配,并且可以落入本公开的各种实施例的范围内。一般而言,在示例配置中呈现为单独资源的结构和功能可以被实现为组合的结构或资源。类似地,呈现为单个资源的结构和功能可以实现为单独的资源。这些和其他变型、修改、添加和改进落入由所附权利要求表示的本公开的实施例的范围内。因此,说明书和附图应被认为是说明性的而不是限制性的。
[0089]
条件语言,诸如“能够”、“能”、“可能”或“可以”,除非另外特别说明,或者在所使用的上下文中另外理解,通常旨在传达某些实施例包括而某些实施例不包括某些特征、元件和/或步骤。因此,这种条件语言通常不旨在暗示特征、元件和/或步骤无论如何都是一个或多个实施例所需的,或者暗示一个或多个实施例必须包括用于在具有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否包括在任何特定实施例中的逻辑或将在任何特定实施例中执行的逻辑。
[0090]
例如,在一些实施例中,“要”可以意味着“应该”、“需要”、“被要求”或“期望”。
[0091]
在下面的描述中,阐述了某些特定细节以便提供对本发明的各种实施例的透彻理解。然而,本领域技术人员将理解,可以在没有这些细节的情况下实践本发明。此外,尽管本文公开了本发明的各种实施例,但是根据本领域技术人员的公知常识,可以在本发明的范围内做出许多改变和修改。这样的修改包括用已知的等同物替代本发明的任何方面,以便以基本上相同的方式获得相同的结果。
[0092]
除非上下文另外要求,否则在整个说明书和权利要求书中,词语“包括”及其变体(诸如“包括”和“将
……
包括”)应以开放、包容的含义来解释,即为“包括但不仅限于”。在整个说明书中对值的数值范围的引用旨在用作速记符号,分别指代落入包括限定范围的值在内的范围内的每个单独的值,并且每个单独的值如本文单独记载的那样并入说明书中。另外,单数形式的“一”、“一个”和“该/所述”包括复数对象,除非上下文另外明确指出。短语
“……
的至少一个”、“从
……
的组中选择的至少一个”或“选自由
……
组成的组中的至少一个”等要以析取方式进行解释(例如,不要解释为a中的至少一个和b中的至少一个)。
[0093]
在整个说明书中,对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。因此,在整个说明书中各处出现
的短语“在一个实施例中”或“在实施例中”不一定全部指的是相同实施例,而是在某些情况下可以指相同实施例。此外,在一个或多个实施例中,可以以任何合适的方式组合特定的特征、结构或特性。
[0094]
尽管出于说明的目的已经基于当前被认为是最实际和优选的实施方式详细描述了本发明,但是应当理解,这种细节仅用于该说明的目的,并且本发明不限于所公开的实施方式,但是,相反地,其旨在覆盖所附权利要求的精神和范围内的修改和等同布置。例如,应当理解,本发明考虑了在可能的范围内,任何实施例的一个或多个特征可以与任何其他实施例的一个或多个特征及进行组合。
[0095]
已经出于说明和描述的目的提供了本发明的前述描述。并非旨在穷举或将本发明限制为所公开的精确形式。本发明的广度和范围不应受到任何上述示例性实施例的限制。许多修改和变化对本领域技术人员而言是显而易见的。修改和变化包括所公开特征的任何相关组合。选择和描述实施例是为了最好地解释本发明的原理及其实际应用,从而使本领域的其他技术人员能够理解本发明的各种实施例以及适合于所设想的特定用途的各种修改。本发明的范围旨在由所附权利要求及其等同物来限定。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1