机器人任务规划 背景技术 [0001] 在未知或动态环境中的诸如机器人抓握和操纵的自主操作存在各种技术挑战。动态环境中的自主操作可被应用于大规模定制(例如,低量多种制造),智能工厂中的按需灵活制造过程、智能商店中的仓库自动化、智能物流中来自分配中心的自动递送等。为了进行自主操作,诸如抓握和操纵,机器人可以通过探索环境来学习技能。具体地,例如,机器人可以在不同情况下与不同对象交互。然而,通常,机器人在现实世界中的这种物理交互是耗时的、成本过高的,并且在某些情况下是危险的。对象或环境的三维(3D)重构可以创建机器人的给定环境或机器人或机器人的一部分的数字孪生或模型,这可以使机器人能够有效且安全地学习技能。 [0002] 然而,本公开认识到当前的重建或建模方法缺乏效率和能力。尤其是,当前的方法通常限于可以在单个步骤中进行的抓握和操纵操作。本公开还认识到机器人需要进行多个步骤或一系列运动的各种操作(例如,组装任务)。 发明内容 [0003] 本发明的实施方式通过提供用于确定机器人执行以实现给定任务的运动序列的方法、系统和设备来解决和克服本公开所描述的一个或多个缺点或技术问题。根据各种实施方式,为了确定或规划用于实现任务的运动序列,包括机器人的自主系统可以执行对象识别、姿势估计、可供性分析、决策、概率任务或运动规划以及对象操纵。 [0004] 在示例方面,自主系统包括配置成在物理环境中操作的自主机器或机器人装置。 自主系统还包括处理器和存储指令的存储器,指令在由处理器执行时使自主系统进行各种操作。尤其是,例如,系统可以检测物理环境内的对象,并对对象进行姿势估计,以确定对象的初始状态。系统可以识别需要自主机器与对象交互的任务。基于任务,系统可以确定对象的最终或目标状态。另外,系统可以确定与对象相关联的多个中间状态。中间状态可以定义对象从初始状态到达目标状态的相应运动序列。系统可以被训练和配置成选择其中一个运动序列,以定义选择的运动序列。自主机器可以进一步配置成执行选择的运动序列,以实现任务。 [0005] 在一些情况下,系统可以生成与对象相关联的可供性图。基于可供性图,系统可以确定在没有达到多个中间状态中的至少一个的情况下,对象的目标状态是不可达到的。在示例中,系统确定选择的运动序列定义了比其它运动序列短的路径。尤其是,例如,系统可以通过解决由初始状态、最终状态和多个中间状态定义的马尔可夫决策问题来选择给定的运动序列。在又一示例中,选择的运动序列可以定义多个状态转换,并且系统可以执行多个状态转换中的第一状态转换。在执行多个状态转换中紧跟第一状态转换的第二状态转换之前,系统可以确定是否达到与第一状态转换相关联的第一中间状态。 附图说明 [0006] 当结合附图阅读时,从下面的详细描述中可以最好地理解本发明的上述和其它方面。为了说明本发明,在附图中示出了目前优选的实施方式,然而,应当理解,本发明不限于所公开的特定手段。附图中包括下列附图: [0007] 图1示出了根据示例实施方式的包括各种对象的示例物理环境中的示例自主机器。 [0008] 图2示出了根据各个实施方式的示例神经网络,神经网络可以被训练和配置成在其它输出中生成可供性图。 [0009] 图3是示出可根据各种实施方式进行的示例操作的流程图。 [0010] 图4示出了根据示例实施方式的围绕示例对象的一部分的示例边界框。 [0011] 图5示出了可以由图2所示的系统处理和进行的示例运动序列的示例状态。 [0012] 图6示出了可以实现本公开的实施方式的计算环境。 具体实施方式 [0013] 作为最初的问题,本公开认识到机器人的面向任务的抓握和操纵可能存在技术挑战,这些技术挑战可能不同于或附加于与其它非面向任务的抓握机器人操作相关联的挑战,在其它非面向任务的抓握机器人操作中,目标被限制为安全地抓握对象和/或将对象旋转/平移到期望状态。面向任务的抓握和操纵操作可以集中于给定任务,使得抓握和操纵策略基于任务。作为示例而非限制,刀具上的抓握位置可基于任务而不同。尤其是,例如,机器人可能需要在其手柄处抓握刀具用于一个切换任务,并且机器人可能需要抓握刀具的刀片用于一个切割任务。另外,机器人可能需要取决于任务不同地操纵刀具,以实现给定的任务。 [0014] 应当理解,上述描述的用例出于示例的目的而被简化,并且面向任务的抓握和操纵可以在复杂性和用例等方面变化,并且所有这些面向任务的抓握和操纵都被认为在本公开的范围内。例如,可以进行多步骤抓握和操纵操作以实现组装任务等。作为示例,当机器人进行Lego组装时,一些任务可能涉及将小件放置到期望的位置。为此,给定工件和机器人夹具可能需要处于期望的状态或取向。尤其是,例如,给定工件可能需要面向(例如,向上)机器人抓握工件并拾取工件的方向,使得工件可以插入两个其它工件之间。继续该示例,如果工件在其原始状态中面向相反方向(例如,向下),则机器人不能在单个步骤中抓握工件并实现组装目标。相反,可能需要机器人进行一系列运动以最终实现任务。在各种示例中,由机器人进行的所需技能可以包括但不限于:对象识别和姿势估计、可供性分析、决策、概率任务规划/运动规划和对象操纵。 [0015] 因此,本公开认识到,当前的自主操作的方法通常限于在已知可行任务的假设下的抓握和操纵操作。例如:机器人从桌子拾取马克杯。本公开进一步认识到,机器人中存在各种操作(例如,组装任务),在进行任务之前不知道可行的操作/运动规划。(例如,机器人在桌子上的密封盒子中拾取咖啡杯)。任务需要进行多个步骤或一系列运动,并且必须在运行中生成一些中间任务/步骤。例如:机器人开箱是一项新颖的中间任务。为了确定或规划用于实现任务的运动序列,包括机器人的自主系统可以进行对象识别、姿势估计、可供性分析、决策、概率任务或运动规划以及对象操纵。如本公开所描述,任务规划器模块可以自动生成新的中间操作步骤,以经由任务相关的可供性分析和深度强化学习将初始不可行的任务转换为可行的任务。 [0016] 现在参考图1,示出了示例工业或物理环境100。如这里所使用的,物理环境可以指任何未知的或动态的工业环境。重建或模型可以定义物理环境100或物理环境100内的一个或多个对象106的虚拟表示。物理环境100可以包括被配置成执行一个或多个制造操作(例如组装,运输等)的计算机化的自主系统102。自主系统102可以包括一个或多个机器人装置或自主机器,例如自主机器或机器人装置104,其被配置成进行一个或多个工业任务,如箱拾取、抓握等。系统102可以包括一个或多个计算处理器,其被配置成处理信息并且控制系统102(尤其是自主机器104)的操作。自主机器104可以包括一个或多个处理器,例如处理器 108,其被配置成处理信息和/或控制与自主机器104相关联的各种操作。用于在物理环境内操作自主机器的自主系统可以还包括用于存储模块的存储器。处理器可还被配置成执行模块以处理信息并基于信息生成模型。应当理解,为了示例的目的,简化了所示的环境100和系统102。环境100和系统102可以根据需要改变,并且所有这样的系统和环境都被认为在本公开的范围内。 [0017] 仍参考图1,自主机器104可以还包括机器人臂或操纵器110以及被配置成用于支撑机器人操纵器110的底座112。底座112可以包括轮子114,或者可被配置成在物理环境100内移动。自主机器104可还包括附接至机器人操纵器110上的末端执行器116。末端执行器 116可包括被配置成抓握和/或移动对象106的一个或多个工具。示例末端执行器116包括手指夹持器或基于真空的夹持器。机器人操纵器110可被配置成移动以改变末端执行器116的位置,例如以在物理环境100内放置或移动对象106。系统102可还包括一个或多个相机或传感器,例如三维(3D)点云相机118,其被配置成检测或记录物理环境100内的对象106。相机 118可被安装到机器人操纵器110上以其它方式配置成生成给定场景(例如物理环境100)的 3D点云。可替换地或附加地,系统102的一个或多个相机可以包括一个或多个标准二维(2D)相机,其可以记录或捕获来自不同视点的图像(例如,RGB图像或深度图像)。这些图像可用于构建3D图像。例如,2D相机可以被安装到机器人操纵器110上以从沿着由操纵器110限定的给定轨迹的多个视角捕获图像。 [0018] 继续参考图1,在示例中,一个或多个相机可以被定位在自主机器104上方,或者可以以其它方式被布置以连续地监测环境100内的任何对象。例如,当对象(例如其中一个对象106)在环境100内被布置或移动时,相机118可以检测对象。在示例中,处理器108可以确定所检测的给定对象是否被自主系统102识别,以确定对象被分类为已知还是未知(新的)。 在一些示例中,对一组对象训练深度神经网络。基于其训练,当在环境100内检测到对象时,深度神经网络可计算给定新对象的相应区域的抓握分数。在示例中,当抓握分数大于预定阈值时,与图形分数相关联的区域被分类为末端执行器116(例如基于真空的抓握器)可以抓握的范围。相反地,在示例中,当抓握分数低于预定阈值时,与图形分数相关联的区域被分类为除末端执行器116(例如基于真空的抓握器)可以抓握的范围之外的范围(例如边缘、负空间)。 [0019] 如这里所描述的,机器人装置104和/或系统102可以定义一个或多个神经网络,其被配置成学习各种对象,以识别可以在各种工业环境中找到的各种对象的姿势、抓握点(或位置)和/或可供性。现在参考图2,根据各种示例实施方式,示例系统或神经网络模型200可被配置成例如基于图像来学习对象和抓握位置。在训练神经网络200之后,例如,对象的图像可以由机器人装置104发送到神经网络200用于分类,尤其是抓握位置或可供性的分类。 [0020] 示例神经网络200包括多个层,例如被配置成接收图像的输入层202a,被配置成生成与图像或图像的多部分相关联的类或输出分数的输出层203b。例如,输出层203b可被配置成用抓握可供性度量来标记输入图像的每个像素。在一些情况下,抓握可供性度量或抓握分数指示关联抓握成功的概率。成功通常是指在没有对象掉落的情况下抓握和携带对象。神经网络200还包括连接在输入层202a和输出层203b之间的多个中间层。尤其是,在一些情况下,中间层和输入层202a可以定义多个卷积层202。中间层可以还包括一个或多个完全连接层203。卷积层202可以包括被配置成接收诸如图像的训练和测试数据的输入层 202a。在一些情况下,输入层202a接收的训练数据包括任意对象的合成数据。合成数据可以指的是已经在仿真中创建的训练数据,以类似于实际的相机图像。卷积层202可以还包括最终卷积层或最后特征层202c,以及设置在输入层202a和最终卷积层202c之间的一个或多个中间或第二卷积层202b。应当理解,为了示例的目的,简化了所示的模型200。尤其是,例如,模型可以根据需要包括任意数量的层,尤其是任意数量的中间层,并且所有这样的模型都被认为在本公开的范围内。 [0021] 可以包括第一层203a和第二或输出层203b的完全连接层203包括完全连接层之间的连接。例如,第一层203a中的神经元可将其输出传送到第二层203b中的每个神经元,使得第二层203b中的每个神经元接收来自第一层203a中的每个神经元的输入。将再次理解,为了解释的目的简化了模型,并且模型200不限于所示出的完全连接层203的数量。与完全连接层相反,卷积层202可以是局部连接的,使得例如中间层202b中的神经元可以连接到最终卷积层202c中的有限数量神经元。卷积层202还可被配置成共享与每个神经元强度相关联的连接强度。 [0022] 仍参考图2,输入层202a可被配置成接收输入204,例如图像204,并且输出层203b可被配置成返回输出206。在一些情况下,输入204可以定义由指向对象的一个或多个相机(诸如系统102的相机)捕获的对象的深度帧图像。输出206可以包括与输入204相关联的一个或多个分类或分数。例如,输出206可以包括指示与对应输入204的各个部分(例如像素)相关联的多个分数208的输出向量。作为示例,输入204可以定义对象120的深度图像,例如对象120,尤其是咖啡杯120。例如,基于马克杯120的图像,输出206可以包括与输入图像204的像素相关联的各种分数208,从而包括马克杯120的区域。例如,抓握分数可以与马克杯 120的相应区域相关联300。抓握分数可指示基于特定末端执行器116抓握对象的最佳位置。 [0023] 因此,输出层203b可被配置成生成与图像204相关联的,尤其是与图像204的像素相关联的抓握分数208,从而生成与图像204中描绘的对象的位置相关联的抓握分数。分数 208可包括与给定末端执行器116的图像204的最佳抓握位置相关联的目标分数208a。如这里所描述的,输出层203b可被配置成生成与工业设置中使用的各种对象的各种区域相关联的抓握分数或可供性208,例如门、手柄、用户接口、显示器、工件、孔、插头等。 [0024] 为了示例的目的,输入204也被称为图像204,但是实施方式不限于此。输入204可以是工业图像,例如包括被分类以识别组件的抓握区域的部分的图像。应当理解,模型200可以提供对由各种传感器或相机捕获的各种对象和/或图像的视觉识别和分类,并且所有这些对象和图像都被认为在本公开的范围内。 [0025] 现在参考图3,自主系统102可以执行根据各种实施方式的示例操作300。在302,可以例如通过相机118捕获对象(例如其中一个对象106)的一个或多个图像。在一些示例中,可以生成对象的3D重建,这一般是指将空间上有界的对象的多个视图(例如,相机视图)融合在一起,以构造对象的3D几何模型。可以在3D重建中使用的示例视图包括RGB图像、深度图像、RGB‑D图像等。在一些情况下,在304,可以基于对象的重建来估计对象的姿势(例如,位置和取向),重建可以基于对象的图像。 [0026] 可替代地或附加地,自主系统102可以捕获给定对象的RGB图像,并且基于图像来辨别或识别对象。此后,在304,自主系统可以基于所捕获的图像(例如RGB图像)来估计对象的姿势。尤其是,例如,可以将图像输入到姿势CNN或其它神经网络中,例如可被配置成估计姿势的神经网络200,以定义输入204。在示例中,姿势CNN可以通过定位对象在相应图像中的中心,并且预测中心距所捕获对应图像的相机的距离来估计对象的3D平移。然后,在304,可以通过回归到四元数表示来估计对象的3D旋转。本公开认识到,姿势CNN对于遮挡可以是高度鲁棒的,并且可以在一些情况下仅使用彩色图像作为输入来提供准确的姿势估计。根据各种示例,可以对对称对象和非对称对象进行姿势估计。 [0027] 在估计对象的姿势之后,自主系统可以进行任务计划。与对象相关联的任务可以由自主系统102接收(例如,经由用户接口)或以其它方式获得(例如,经由存储器),例如捕获对象的图像时。在一些情况下,任务可以指示环境内对象的最终或目标位置。作为示例,任务可以涉及系统或泡壳包装的组装,使得对象(例如,部件或产品)的目标位置对应于其在系统或泡壳包装内的最终位置。参照图3,在306,基于对象的任务和姿势估计,自主系统 102可以对对象进行可供性分析,这可以生成对象的可供性图。因此,在306,自主系统102可以生成与对象相关联的可供性。 [0028] 可供性或可供性图定义了对象的属性,该属性指示可以采取的涉及相应对象的运动。例如,可供性可以定义机器人或自主机器104与其环境100之间的关系。因此,可供性可以定义对象(例如对象106的对象或马克杯120)的属性与施动者(例如自主机器104)的能力之间的关系。这种关系可以指示施动者可以使用对象的各种方式。在一些情况下,与对象的组件或部分相关的可供性,使得可供性描述组件或零件之间的功能(例如,结构、材料)语义属性和拓扑关系。从这样的组件或零件可供性,可以为对象类识别和视觉感知系统构建通用的、可扩展的和认知的体系结构。 [0029] 再次参考图3,姿势CNN的输出可以包括给定对象的姿势估计,其可以与对象的一个或多个图像一起被输入到可供性网络中(在306)。可供性网络可定义深度神经网络模型,例如神经网络200,其被训练和配置成从RGB深度(RGB‑D)图像中检测与对象相关联的可供性。尤其是,例如,可供性网络可以包括一个或多个深度卷积神经网络(CNN),例如对象检测器神经网络和定义条件随机域(CRF)的可供性神经网络,其被配置成检测真实世界场景中的对象可供性。在一些情况下,自主系统102可以训练其对象检测器神经网络以从图像生成边界框候选。还参考图4,可以生成包围马克杯120的手柄404的边界框402。更一般地,被配置成对象检测器的深度网络(例如神经网络200)可以生成与被抓握或操纵的对象相关联的边界框。然后,可供性网络可以使用与对象相关联的边界框来学习与具有相应边界框的对象的多部分相关联的深度特征。因此,可供性网络可以生成特征或可供性图,其可以用密集CRF进行后处理,以改进沿类边界的预测。因此,基于任务输入和对象的可供性图,可以确定对象的期望交互区。这种期望交互区,例如马克杯120的手柄404,可以定义对自主系统102的任务规划器模块的输入。 [0030] 再次参考图3,在308,任务规划器模块可以确定机器人(例如自主机器104)的运动序列,用于和对象进行任务。在一些情况下,任务规划器模块解决定义离散时间随机控制过程的马尔可夫决策过程(MDP)。因此,任务规划器模块可以提供用于结果是部分随机且部分是在决策者控制下的情况下对决策执行建模的数学框架。尤其是,任务规划器模块可以学习经由动态编程和强化学习解决的优化问题。例如,在给定的时间步骤,过程或自主机器 104处于给定状态,并且决策者可以选择可从给定状态获得的任何动作。过程在下一个时间步骤通过随机地移动到新状态并给予决策者对应的奖励来响应。 [0031] 还参考图5,示出了示例环境500的示例离散化状态502。在示例中,环境500包括自主机器104和对象106,尤其是马克杯120和咖啡壶504。应当理解,环境500和状态502被有目的的简化,例如使得环境和状态可以在复杂度方面变化,并且具有任何数量的状态的所有这样的环境被认为在本公开的范围内。由自主系统102的任务规划器模块处理的状态502可以涉及自主机器104或环境500内的任何对象106的物理状态,尤其是马克杯120和咖啡壶 502的物理状态。 [0032] 作为示例,还参考图3,在302,可以对环境500内的对象,尤其是马克杯120和咖啡壶504进行姿势估计。作为姿势估计的结果,可以识别第一或初始状态502a。根据所示的示例,初始状态502a指示马克杯120和壶502彼此相邻放置。因此,初始状态502a可以定义对象的姿势。在504处,可进行可检测对象的抓握属性的可供性分析。例如,系统102可以进行可供性分析以确定马克杯120是否可以由自主机器抓握。尤其是,例如,系统102可以确定手柄 404不能被自主机器104抓握,因为它太靠近壶504。在304,基于输入任务,任务规划器模块可以确定目标或最终状态502b。在一些情况下,可执行姿势估计以确定与目标状态相关联的姿势。根据示出的示例,目标状态502b可以指示马克杯120的手柄404被自主机器104、尤其是末端执行器116抓握。另外,基于目标状态502b和初始状态502a,任务规划器模块可以在初始状态502a和目标状态502b之间生成一个或多个中间状态,例如第一中间状态502c和第二中间状态502d。中间状态可以使系统102能够从初始状态达到目标状态。根据示出的示例,中间状态502c‑d可以使自主机器104能够抓握马克杯120,尤其是马克杯120的手柄404。 尤其是,继续参考图5,第一中间状态502c可以指示壶504被自主机器104抓握,并且第二中间状态502d可以指示壶504被移动远离马克杯120。 [0033] 在308,任务规划器可以采用MDP以确定自主机器104的运动序列。例如,对于在对象的不同位置上的不同类型的抓握,可能存在对象被丢弃的不同概率。因此,成功运动的可能性可以由自主系统102、尤其是任务规划器模块经由随机学习来建模或学习。再次参考图 5,使用MDP,任务规划器可以确定初始状态502a和目标状态502b之间的最短可行(例如,成功运动的可能性大于阈值)路径。在一些情况下,任务规划器模块可以生成从初始状态502a到目标状态502b的多个可行路径或解决方案。多个可行路径可以被图示为具有多个节点的图,其中节点表示状态,并且连接节点的线表示运动或状态转换,诸如可行动作506。因此,任务规划器模块可以生成给定任务的规划,该规划可以定义多个中间状态和可行动作。多个可行状态和多个可行动作可以定义用于从初始状态执行至目标状态的多个可行路径。任务规划器可以进一步选择可行路径中的一个,例如最短的可行路径,以定义规划的轨迹。 [0034] 再次参考图3,在生成规划轨迹之后,自主机器104可以执行规划轨迹或运动序列的操作或步骤(在310),以最小化系统102的不确定性。例如,参考图5,机器人104可以执行第一可行动作506a,其可以将环境从初始状态502a设置为第一中间状态502c。在312,自主系统102、尤其是任务规划器模块,可以确定是否达到目标状态502b。如果达到目标状态,则过程可执行到314,在该处任务结束或完成。如果没有达到目标状态,则在316,任务规划器模块可以确定是否已经达到最大迭代次数。如果已经达到最大迭代次数,则任务规划器模块可以结束任务的执行。如果尚未达到最大迭代次数,则路径规划器模块可以尝试在新的迭代期间找到新的可行路径。因此,过程可以返回到302。最大迭代次数可以定义用于规划或重新规划完成给定任务的动作序列的预定次数。 [0035] 因此,如这里根据各种实施方式所描述,自主系统可以包括被配置成在物理环境中运行的自主机器或机器人装置。自主系统可以还包括处理器和存储指令的存储器,指令在由处理器执行时使得自主系统进行各种操作。尤其是,例如,系统可以检测物理环境内的对象,并对对象进行姿势估计,以确定对象的初始状态。还可执行姿势估计以确定与对象的目标状态相关联的姿势。系统可以识别需要自主机器与对象交互的任务。基于任务,系统可以确定对象的最终或目标状态。另外,系统可以确定与对象相关联的多个中间状态。在一些情况下,基于初始状态、与目标状态相关联的姿势和任务来确定中间状态。在示例中,对对象进行可供性分析以确定自主机器在完成任务时的多个可行动作。 [0036] 中间状态可以定义对象从初始状态到达目标状态的相应运动序列。系统可以被训练和配置成选择其中一个运动序列,以定义选择的运动序列。自主机器可以被进一步配置成进行选择的运动序列,以完成任务。 [0037] 在一些情况下,系统可以生成与对象相关联的可供性图。基于可供性图,系统可以确定在没有达到多个中间状态中的至少一个的情况下,对象的目标状态是不可达到的。可替换地或附加地,基于可供性图和任务,系统可以生成多个中间状态中的至少一个中间状态,其中至少一个附加中间状态使得目标状态是可到达的。另外,系统可以用至少一个附加中间状态来扩充可供性图。 [0038] 在示例中,系统确定选择的运动序列定义了比其它运动序列短的路径。尤其是,例如,系统可以通过解决由初始状态、最终状态和多个中间状态定义的马尔可夫决策问题来选择给定的运动序列。在又一示例中,选择的运动序列可以定义多个状态转换,并且系统可以执行多个状态转换中的第一状态转换。在执行多个状态转换中紧跟第一状态转换的第二状态转换之前,系统可以确定是否达到与第一状态转换相关联的第一中间状态。 [0039] 图6示出了可以实现本公开的实施方式的计算环境的示例。计算环境600包括计算机系统610,其可包括诸如系统总线621的通信机制或用于在计算机系统610内传送信息的其它通信机制。计算机系统610还包括与系统总线621耦合的用于处理信息的一个或多个处理器620。自主系统102可以包括或耦合到一个或多个处理器620。 [0040] 处理器620可以包括一个或多个中央处理单元(CPU)、图形处理单元(GPU)或本领域已知的任何其它处理器。更一般地,这里描述的处理器是用于执行存储在计算机可读介质上的机器可读指令的装置,用于执行任务,并且可以包括硬件和固件中的任何一个或它们的组合。处理器还可以包括存储可执行用于执行任务的机器可读指令的存储器。处理器通过操纵、分析、修改、转换或传输由可执行程序或信息装置使用的信息和/或通过将信息输送到输出装置来对信息起作用。处理器可以使用或包括例如计算机、控制器或微处理器的能力,并且使用可执行指令来调节以进行不由通用计算机进行的专用功能。处理器可以包括任何类型的适当处理单元,包括但不限于中央处理单元、微处理器、精简指令集计算机(RISC)微处理器、复杂指令集计算机(CISC)微处理器、微控制器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、片上系统(SoC)、数字信号处理器(DSP)等。另外,处理器620可以具有任何合适的微体系结构设计,其包括任何数量的构成组件,例如寄存器、多路复用器、算术逻辑单元、用于控制对高速缓存的读/写操作的高速缓存控制器、分支预测器等。处理器的微体系结构设计能够支持多种指令集中的任何指令集。处理器可以与能够在其间执行交互和/或通信的任何其它处理器耦合(电耦合和/或包括可执行组件)。用户界面处理器或生成器是已知的元件,包括用于生成显示图像或其部分的电子电路或软件或两者的组合。用户界面包括使用户能够与处理器或其它装置交互的一个或多个显示图像。 [0041] 系统总线621可以包括系统总线、存储器总线、地址总线或消息总线中的至少一个,并且可以允许在计算机系统610的各个组件之间的信息交换(例如:数据(包括计算机可执行代码)、信令等)。系统总线621可以包括但不限于存储器总线或存储器控制器、外围总线、加速图形端口等。系统总线621可以与任何合适的总线体系结构相关联,包括但不限于工业标准体系结构(ISA)、微通道体系结构(MCA)、增强型ISA(EISA)、视频电子标准协会(VESA)体系结构、加速图形端口(AGP)体系结构、外围组件互连(PCI)体系结构、PCI‑Express体系结构、个人计算机存储卡国际协会(PCMCIA)体系结构、通用串行总线(USB)体系结构等。 [0042] 继续参考图6,计算机系统610还可以包括耦合到系统总线621的系统存储器630,用于存储信息和待由处理器620执行的指令。系统存储器630可以包括易失性和/或非易失性存储器形式的计算机可读存储介质,诸如只读存储器(ROM)631和/或随机存取存储器(RAM)632。RAM 632可以包括其它动态存储装置(例如,动态RAM、静态RAM和同步DRAM)。ROM 631可以包括其它静态存储装置(例如,可编程ROM,可擦除PROM和电可擦除PROM)。此外,系统存储器630可用于在处理器620执行指令期间存储临时变量或其它中间信息。基本输入/输出系统633(BIOS)包含有助于诸如在启动期间在计算机系统610内的元件之间传递信息的基本例程,它可被存储在ROM 631中。RAM 632可以包含可由处理器620立即访问和/或当前正由处理器620操作的数据和/或程序模块。系统存储器630还可以包括例如操作系统 634、应用程序635和其它程序模块636。应用程序635还可以包括用于开发应用程序的用户门户,允许输入参数并在必要时执行修改。 [0043] 操作系统634可以被加载到存储器630中,并且可以提供在计算机系统610上执行的其它应用软件与计算机系统610的硬件资源之间的接口。更具体地,操作系统634可包括一组计算机可执行指令,用于管理计算机系统610的硬件资源并用于向其它应用程序提供公共服务。例如,管理各种应用程序中的存储器分配)。在某些示例实施方式中,操作系统 634可以控制被描绘为存储在数据存储器640中的一个或多个程序模块的执行。操作系统 634可包括现在已知或将来可开发的任何操作系统,包括但不限于任何服务器操作系统,任何主机操作系统,或任何其它专有或非专有操作系统。 [0044] 计算机系统610还可以包括耦合到系统总线621以控制用于存储信息和指令的一个或多个存储装置的盘/介质控制器643,诸如磁硬盘641和/或可移动介质驱动器642(例如,软盘驱动器、光盘驱动器、磁带驱动器、闪存驱动器和/或固态驱动器)。可以使用适当的装置接口(例如,小型计算机系统接口(SCSI)、集成装置电子装置(IDE)、通用串行总线(USB)或FireWire)将存储装置640添加到计算机系统610。存储装置641,642可以在计算机系统610的外部。 [0045] 计算机系统610还可以包括耦合到系统总线621的现场设备接口665,以控制现场设备666,诸如在生产线中使用的装置。计算机系统610可以包括用户输入接口或GUI 661,其可以包括一个或多个输入装置,诸如键盘、触摸屏、输入板和/或定点装置,用于与计算机用户交互并向处理器620提供信息。 [0046] 计算机系统610可以响应于处理器620执行包含在诸如系统存储器630的存储器中的一个或多个指令的一个或多个序列来进行本发明实施方式的处理步骤的一部分或全部。 这样的指令可以从存储器640的另一计算机可读介质(磁硬盘641或可移动介质驱动器642)读入系统存储器630。磁硬盘641(或固态驱动器)和/或可移动介质驱动器642可以包含本公开的实施方式所使用的一个或多个数据存储和数据文件。数据存储器640可包括但不限于数据库(例如,关系型、面向对象的等)、文件系统、平面文件、数据存储在计算机网络的多于一个节点上的分布式数据存储、对等网络数据存储等。数据存储器可以存储各种类型的数据,例如技能数据,传感器数据或根据本公开的实施方式生成的任何其它数据。数据存储内容和数据文件可以被加密以提高安全性。处理器620还可以用在多处理装置中,以执行包含在系统存储器630中的一个或多个指令序列。在替换实施方式中,硬连线电路可以代替软件指令或与软件指令结合使用。因此,实施方式不限于硬件电路和软件的任何特定组合。 [0047] 如上所陈述,计算机系统610可以包括至少一个计算机可读介质或存储器,用于保存根据本发明的实施方式编程的指令,并且用于包含数据结构、表、记录或这里描述的其它数据。这里使用的术语“计算机可读介质”是指参与向处理器620提供指令以供执行的任何介质。计算机可读介质可以采用许多形式,包括但不限于非瞬态、非易失性介质、易失性介质和传输介质。非易失性介质的非限制性示例包括光盘、固态驱动器、磁盘和磁光盘,诸如磁硬盘641或可移动介质驱动器642。易失性介质的非限制性示例包括动态存储器,诸如系统存储器630。传输介质的非限制性示例包括同轴电缆、铜线和光纤,包括构成系统总线621的导线。传输介质也可以采用声波或光波的形式,例如在无线电波和红外数据通信期间生成的声波或光波。 [0048] 用于执行本公开的操作的计算机可读介质指令可以是汇编指令、指令集体系结构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据,或以一种或多种编程语言的任何组合编写的源代码或目标代码,编程语言包括诸如Smalltalk、C++等的面向对象的编程语言,以及诸如“C”编程语言或类似编程语言的常规过程编程语言。计算机可读程序指令可以完全在用户的计算机上执行,部分在用户的计算机上执行,作为独立的软件包,部分在用户的计算机上执行,部分在远程计算机上执行,或者完全在远程计算机或服务器上执行。在后一种情况下,远程计算机可以通过任何类型的网络连接到用户的计算机,包括局域网(LAN)或广域网(WAN),或者连接到外部计算机(例如,通过使用因特网服务提供商的因特网)。在一些实施方式中,包括例如可编程逻辑电路,现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来使电子电路定制化来执行计算机可读程序指令,以执行本公开的各方面。 [0049] 参考根据本公开的实施方式的方法、设备(系统)和计算机程序产品的流程图图示和/或框图来描述本公开的各方面。应当理解,流程图图示和/或框图的每个框以及流程图图示和/或框图中的框的组合可以由计算机可读介质指令来实现。 [0050] 计算环境600可以还包括使用到诸如远程计算装置680等一个或多个远程计算机的逻辑连接在联网环境中操作的计算机系统610。网络接口670可以实现例如经由网络671与其它远程装置680或系统和/或存储装置641,642的通信。远程计算装置680可以是个人计算机(膝上型计算机或台式计算机)、移动装置、服务器、路由器、网络PC、对等装置或其它公共网络节点,并且通常包括以上相对于计算机系统610描述的许多或所有元件。当在联网环境中使用时,计算机系统610可以包括调制解调器672,用于在诸如因特网的网络671上建立通信。调制解调器672可经由用户网络接口670或经由另一适当机制连接到系统总线621。 [0051] 网络671可以是本领域中通常已知的任何网络或系统,包括因特网、内联网、局域网(LAN)、广域网(WAN)、城域网(MAN)、直接连接或串联连接、蜂窝电话网络、或能够促进计算机系统610与其它计算机之间的通信的任何其它网络或介质(例如,远程计算装置680)。 网络671可以是有线的、无线的或它们的组合。有线连接可以使用以太网、通用串行总线(USB)、RJ‑6或本领域公知的任何其它有线连接来实现。无线连接可以使用Wi‑Fi、WiMAX和蓝牙、红外、蜂窝网络、卫星或本领域公知的任何其它无线连接方法来实现。另外,多个网络可单独工作或彼此通信以促进网络671中的通信。 [0052] 应当理解,在图6中描述为存储在系统存储器630中的程序模块、应用程序、计算机可执行指令、代码等仅仅是说明性的而不是穷举性的,并且描述为由任何特定模块支持的处理可以可替换地分布在多个模块上或者由不同的模块进行。此外,可以提供各种程序模块、脚本、插件、应用编程接口(API)、或在计算机系统610、远程装置680上本地托管的和/或在可经由一个或多个网络671访问的其它计算装置上托管的任何其它合适的计算机可执行代码,以支持由图6中描绘的程序模块,应用或计算机可执行代码提供的功能性和/或附加或替换功能。另外,功能性可以被不同地模块化,使得描述为由图6中描绘的程序模块集合共同支持的处理可以由更少或更多数量的模块来进行,或者描述为由任何特定模块支持的功能性可以至少部分地由另一模块来支持。此外,支持这里描述的功能性的程序模块可形成可根据诸如客户机‑服务器模型、对等模型等任何合适的计算模型在任何数量的系统或装置上执行的一个或多个应用程序的一部分。此外,被描述为由图6中描绘的任何程序模块支持的任何功能性可以至少部分地以硬件和/或固件在任何数量的装置上实现。 [0053] 还应当理解,在不脱离本公开的范围的情况下,计算机系统610可以包括所描述或描绘之外的替代和/或附加硬件、软件或固件组件。更尤其是,应当理解,被描绘为形成计算机系统610的一部分的软件、固件或硬件组件仅仅是说明性的,并且在各种实施方式中可以不存在某些组件或者可以提供附加组件。虽然已将各种说明性程序模块描绘和描述为存储在系统存储器630中的软件模块,但应了解,描述为由程序模块支持的功能性可由硬件、软件和/或固件的任何组合来实现。应进一步了解,在各种实施方式中,上述模块中的每一者可表示所支持功能的逻辑分区。逻辑分区是为了便于解释功能而描绘的,并且可以不代表用于实现功能的软件、硬件和/或固件的结构。因此,应了解,在各种实施方式中,描述为由特定模块提供的功能性可至少部分地由一个或一个以上其它模块提供。另外,在某些实施方式中可不存在一个或一个以上所描绘的模块,而在其它实施方式中,可存在未描绘的附加模块且可支持功能性和/或附加功能性的至少一部分。此外,虽然某些模块可被描绘和描述为另一模块的子模块,但在某些实施方式中,此类模块可被提供为独立模块或其它模块的子模块。 [0054] 虽然已经描述了本公开的特定实施方式,但是本领域的普通技术人员将认识到,在本公开的范围内存在许多其它修改和替换实施方式。例如,关于特定装置或组件描述的任何功能和/或处理能力可以由任何其它装置或组件来进行。另外,虽然已经根据本公开的实施方式描述了各种说明性实现方式和体系结构,但是本领域普通技术人员将理解,对本公开描述的说明性实现方式和体系结构的许多其它修改也在本公开的范围内。此外,应了解,本公开中描述为基于另一操作、元件、组件、数据等的任何操作、元件、组件、数据等可另外基于一个或一个以上其它操作、元件、组件、数据等。因此,短语“基于”或其变体应被解释为“至少部分地基于”。 [0055] 虽然已经用结构特征和/或方法行动专用的语言描述了实施方式,但是应当理解,本公开不必限于所描述的具体特征或行动。相反,这些具体特征和行动是作为实现这些实施方式的说明性形式而公开的。条件性语言,例如“能”、“能够”、“可以”或“可”等,除非另外具体说明或在所使用的上下文中另外理解,通常旨在传达某些实施方式可包括但不包括某些特征,元件和/或步骤。因此,此类条件性语言一般并非意在暗示一个或多个实施方式以任何方式要求特征、元件和/或步骤,或者一个或多个实施方式必须包括用于在有或没有用户输入或提示的情况下决定这些特征、元件和/或步骤是否被包括在任何特定实施方式中或要在任何特定实施方式中执行的逻辑。 [0056] 图中的流程图和框图示出了根据本公开的各种实施方式的系统,方法和计算机程序产品的可能实现方式的体系结构、功能性和操作。在这点上,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现指定逻辑功能的一个或多个可执行指令。在一些可替换的实现方式中,方框中指出的功能可以不按附图中指出的顺序发生。例如,取决于所涉及的功能性,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行。还将注意到,框图和/或流程图图示中的每个框以及框图和/或流程图图示中的框的组合可以由执行指定功能或行动或执行专用硬件和计算机指令的组合的基于专用硬件的系统来实施。