用于灵活的人机协作的系统和方法与流程

文档序号:12506383阅读:583来源:国知局
用于灵活的人机协作的系统和方法与流程

本申请涉及由Kelleher Guerin、Gregory D.Hager和Sebastian Riedel于2014年9月2日提交的题为“System and Method for Flexible Human-Machine Collaboration”(“用于灵活人机协作的系统和方法”)的美国专利申请No.14/475,184,要求其申请优先权并且其内容以引用方式整体并入本文中。

政府支持声明

本发明是在国家科学基金会拨款编号为NRI-1227277的资助下政府支持完成的。美国政府对本发明具有一定权利。

技术领域

本公开一般涉及用于通过支持机器人性能表示和人机协作行为的动态适配和重复使用的可泛化框架来实现人机协作的系统和方法。



背景技术:

机器人工业自动化已经在大规模制造业中取得了巨大成功,因为其在任务(比如,焊接、切削、冲压、涂漆、沉重的材料处理、精密材料加工等)规模上具有显著的优势。机器人自动化在大规模制造业中的成功已经导致了长期以来对于将机器人自动化的使用扩展到中小型制造企业(“SME”)中的愿望。然而,与大规模制造相比,通常SME的生产处理的特征在于生产量小和/或产品变化性高。因此,对于SME,灵活机器人自动化将基础设施、专业人员、设置和编程摊销的能力锐减。

SME的处理有时包括需要高级定制的任务,因此必然涉及人类的技能和判断。例如,翻新任务和按订单生产制造处理必须适应无法预见的工件变化和装备修改。在这种情况下,可以发现,现有的以人为中心的生产处理难以确定机器人自动化能够在何处或如何成为高效人力密集型处理的有用补充,而非高效人力密集型处理的重复或弱化。以拥有大量技术娴熟的员工的专门从事定制家具制造的SME为例。这种SME可能希望通过使用机器人系统来自动操作涉及灵巧动作的重复任务(比如,钻孔或磨砂任务),从而提高其员工的效率和生产力。然而,在这种情况下,现成的商业机器人系统将是没有作用的,这是因为对于SME来说现成的商业机器人系统不可能利用其员工现有的任务知识和经验。

因此,存在对克服现有技术所呈现的上述问题和其它问题的系统和方法的需求。



技术实现要素:

许多任务领域还没有利用自动化机器人系统,这是因为缺乏提供与这种机器人系统灵活和有效地交互的合适的协作系统。这样的任务领域的示例包括SME处理、对身体残疾的个人的家庭看护、协作机器人手术等。在这些任务领域中,手动或完全自动地执行任务既不理想也不实用。因此,存在对这样的协作机器人系统和方法的需求,该协作机器人系统和方法不仅提供灵活和有效的用户-机器人交互,而且其在具有不同的持续时间、复杂性和对用户交互的约束的范围广泛的任务中是有效的。

根据各实施例的示例性协作机器人系统可以以可泛化的方式被指示或训练以执行范围广泛的任务,并且能够在不需要重新训练的情况下在任务之间平稳地进行切换。协作机器人系统支持用于各种用户角色和机器人性能的人-机器人协作操作,并且经由多组机器人性能和将机器人性能与特定用户交互性能相关联的协作行为来对人-机器人系统进行建模,其中,用户交互性能是用户接口或交互范例。机器人性能可以与其它机器人性能组合并针对特定任务而被专门化。为了执行任务,协作机器人系统可以使用各种任务相关信息或参数(比如,工具可供性或工具行为约束、工具运动基元和感知基础模板(perceptual grounding template))来动态地适配机器人性能。对于特定任务和机器人性能,协作机器人系统必须确定机器人性能在可用接口的约束下完成任务所需的一个或多个用户交互模态。因此,包括一个或多个机器人性能和一个或多个用户交互性能的组合的协作行为必须将用户交互性能映射到机器人性能,以满足机器人性能对用户交互的需求。

本公开的实施例涉及用于经由支持机器人性能表示和人机协作行为的动态适配和重复使用的可泛化框架来实现人机协作的系统和方法。具体地,一种实现用户-机器人协作的计算机实现的方法包括步骤:提供机器人性能和一个或多个用户交互性能的组合,其中,所述机器人性能对基于一个或多个参数的集合执行一种类型的任务动作的机器人的至少一个功能进行建模;利用信息核将所述机器人性能专门化,其中,所述信息核封装所述一个或多个参数的集合;基于所述机器人性能和所述信息核来提供机器人性能元素,其中,所述机器人性能元素是所述机器人性能的实例;基于所述一个或多个用户交互性能提供一个或多个交互性能元素,其中,所述一个或多个交互性能元素是所述一个或多个用户交互性能的实例;将所述机器人性能元素连接到所述一个或多个交互性能元素;基于所述一个或多个交互性能元素提供一个或多个用户接口,以获取与所述一个或多个参数的集合相关联的用户输入;以及基于所述用户输入和所述信息核,经由所述机器人性能元素控制所述机器人的至少一个功能,以执行所述类型的任务动作中的任务动作。

本公开的实施例的另外的目的和优点将在下面的描述中部分地阐述并根据描述将是部分地显而易见的,或者可以通过实践实施例来认识到。将通过在所附权利要求特别指出的要素和组合来实现和获得实施例的目的和优点。

应当理解,前述的一般性描述和以下详细描述都仅是示例性和说明性的,并不是所要求保护的实施例的限制。

附图说明

图1A是示出根据本公开的实施例的与各种类型的工具相关联的各种类型的工具行为约束的示例的示图。

图1B示出了根据本公开的实施例的在其中用户可以与机器人的化身交互以指定运动轨迹的沉浸式虚拟现实环境。

图2示出了包括连接至用户和机器人的性能组合的协作行为的示例。

图3A和图3B示出了根据本公开的原理的人机协作系统的示例性实施例。

图4示出了根据本公开的原理的对协作行为所需的行为部件进行指定的行为清单的示例。

图5示出了根据本公开的原理的由人机协作系统提供的用户接口的示例。

图6是示出根据本公开的实施例的用于经由支持机器人性能表示和人机协作行为的动态适配和重复使用的可泛化框架来实现人机协作的示例方法的流程图。

图7和图8是示出根据本公开的实施例的用于提供实施人机协作行为的各种类型的性能和链接的示例方法的流程图。

图9是示出根据本公开的实施例的用于组合人机协作行为的示例方法的流程图。

图10是根据本公开的用于执行所公开的实施例的示例计算机系统。

具体实施方式

现在将具体参考附图中示出的示例实施例。在适当的时候,在整个附图中使用相同的附图标记来指代相同或相似的部件。

为了简化和说明的目的,通过主要参考本公开的示例性实施例来描述本公开的原理。然而,本领域普通技术人员之一将容易地认识到,相同的原理同样适用于各种类型的信息和系统,并且可以在各种类型的信息和系统中实现该相同原理,并且任何这样的变化均不脱离本公开的真实的精神和范围。此外,在以下详细描述中,参考示出了具体示例性实施例的附图。在不脱离本公开的精神和范围的情况下,可以对示例性实施例做出电气、机械、逻辑和结构上的改变。因此,以下详细描述不应被理解为限制性的,并且本公开的范围由所附权利要求及其等同物限定。

人类安全工业机器人的日益流行正在激发用于SME和其它新兴任务领域(比如,用于老年人或伤残人士的救助和协作手术机器人)的协作机器人系统的兴趣,人类用户利用该协作机器人系统和机器人围绕一组半结构化的任务进行交互。这些领域中被执行的任务范围可以快速变化,因此,对协作机器人系统存在平稳地适配各种任务而无需彻底重新编程的需求。

本公开的各实施例包括用于经由支持广泛的协作设计和使用模式的框架来实现人机协作的系统和方法。根据本公开的各实施例的示例性人机协作系统实现了可泛化框架,该可泛化框架支持可重复使用的机器人性能表示的组合、动态适配和管理,从而实现通过一个或多个人类用户对一个或多个机器人进行操作、训练、故障排除或重新派遣任务的至少一个具体模式。机器人性能表示的动态适配包括将由协作系统捕获的关于工具、工件和/或机器人的工作环境的信息和参数进行泛化,其中,协作系统可以将这些信息和参数存储在一般机器人性能表示中,并且协作系统可针对各种类型的任务动作而重复使用这些信息和参数。任务动作的类型可以包括例如运动约束、运动即时回放、轨迹生成等。机器人性能表示的动态适配还包括使一般机器人性能表示专门化以执行特定任务动作。可泛化框架支持人机协作行为的组合、重复使用和管理,包括性能表示(例如,机器人性能和用户交互性能)的组合以及性能表示之间的映射。通过实现可泛化框架,可以以可泛化方式来指导或训练协作系统来执行大范围的任务和任务动作,并且无需重新训练或彻底重新编程就可以在任务之间平稳地切换。

在本公开中,将使用词语“机器人”来代替机器人操纵器和机器人操纵器组。通常,机器人是用于自动化或半自动化生产应用的工业机器人操纵器或工业机器人操纵器组。机器人的包络空间是机器人可以物理地移动或到达的运动范围,其包括可以由机器人的末端操纵装置(effector)(其可以是附接至机器人的工具操纵装置或是由附接至机器人的夹持型末端操纵装置所抓握或保持的工具)所到达的空间中的一组点。例如,机器人的包络空间可以包括机器人的工具操纵装置点(“TEP”)可以物理地移动或到达的运动范围。机器人的TEP可以被定义为附接至机器人的工具操纵装置的点云中的参考点(例如,用户选择的点、工具操纵装置的端点、工具操纵装置附接至机器人的点等)或由机器人末端操纵装置所抓握的工具的点云中的参考点(例如,用户选择的点、工具的端点、末端操纵装置抓握工具的点等)。机器人的包络空间的大小和形状取决于机器人的坐标几何,并且受机器人的设计(比如,机器人的构造(例如,接合点的类型、接合点的活动范围、连接接合点的连杆的长度等)、自由度(“DOF”)的数量等)的影响。在一些实施例中,机器人的包络空间的大小和形状也可以受附接至机器人的工具操纵装置或机器人的末端操纵装置所抓握的工具的大小和尺寸的影响。机器人可以在其最大工作空间(通常包含机器人的包络空间中的所有或几乎所有的点)内执行工作。协作系统可以将机器人的工作空间限制到机器人的最大工作空间中的点的子集,以实施或应用一个或多个约束,这将在下文中更详细地描述。

通过可泛化框架,协作系统可以与至少一个人类用户进行交互,以捕获用于与至少一个机器人协作地执行任务的任务知识,并且随后将所捕获的任务知识进行适配,用以以有效和便携的方式来与所述机器人和/或至少一个其它机器人协作地执行其它任务。随着捕获到更多的任务知识,协作系统变得更有能力,并且随着协作系统变得更有能力,每任务需要从用户得到的信息越少。此外,所捕获的任务知识的性质可以从低级(例如,密集轨迹的手动演示)前进至更高级(例如,点击输入、语言命令等)。随着系统性能的提高和对详细的用户交互的需求降低,协作系统可以针对新应用而按比例缩小,并且协作系统可以被逐渐地引入至由于缺乏环境结构或建模从而还未典型地实施自动化的环境中。

在各实施例中,可泛化框架定义并提供用于以下方面的模型:(1)性能,其是基于不频繁变化的参数而将输入信息映射至输出信息或动作的高阶函数,和(2)协作行为,其是在任务的至少一个未知维度与人类用户同机器人一起工作以完成该任务的至少一个适当的接口之间的映射。可以为不同类别的性能(包括机器人性能和用户交互性能)提供可泛化框架。机器人性能用作可专用于特定任务的可重复使用的机器人性能表示,并且机器人性能对机器人运行时的至少一个功能进行建模,并且可以连接至用户交互性能或其它机器人性能。用户交互性能通过要求输入命令或显示反馈来向用户提供一个或多个接口模态。通过使用由可泛化框架提供的性能和协作行为,协作系统为可以说明协作交互的动态性质的灵活的人机协作提供环境结构。

协作系统可以通过捕获和归纳来自一种情形的信息来创建一般的机器人性能,并且随后通过利用一个或多个情况特有参数将一般机器人性能实例化和参数化来针对不同情况甚至新情况使一般机器人性能专门化。一般机器人性能对用于使用一种工具类型的附接工具来执行需要一组任务相关参数的一类任务动作的机器人的至少一个功能进行建模。在各实施例中,协作系统可以基于三种类型的任务相关参数(工具行为约束或工具可供性、工具运动基元和感知模板)来动态地使机器人性能适应各种类型的任务工作。

可以基于工具的至少一个工具可供性来确定工具的工具行为约束。工具可供性是工具的使实体(例如,机器人、人、另一个工具等)有能力或能够利用该工具执行一个或多个动作的一个或多个特征、性能、属性或特性。协作系统可以经由运动演示、关于工具和工件的参数以及将一个或多个任务动作与机器人的工作环境相关联的参数来捕获信息。所捕获的信息可以被封装和泛化,并且随后被存储在可重复使用的机器人性能表示中。例如,某些钻孔机参数对于多于一种类型的钻具或工件是有效的,并且运动演示可以定义可针对特定情况进行调节的原型运动,比如平行于附接的钻具的纵向轴线的线性钻孔移动。

协作系统可以通过以下方式来创建协作行为:将用于执行特定任务动作或特定类型的任务动作的一个或多个机器人性能组合成为机器人性能的组合,并且将满足用于用户交互的机器人性能的要求的一个或多个用户交互性能映射至机器人性能。为了提供任务特有或子任务特有的机器人辅助或增强,协作系统可以通过终端用户演示和/或轻量参数化和交互来修改机器人性能的组成和/或针对给定任务的特定需要而使机器人性能专门化。协作系统支持现有机器人性能和协作行为的动态适配以执行新任务,从而有助于针对简单任务快速训练机器人,并实现与各种工具和工件的灵活交互,这使得针对复杂任务的机器人训练更直观。通过实现可泛化框架,协作系统使得用户(例如,终端用户,现场工程师等)能够通过用户交互、用户演示、与各种工具和工件的灵活交互等来进行简单且直观的机器人编程、重新编程、训练和再训练。

协作系统可以卸载任务知识和使用该知识的权限,这可以通过在机器人上使用机器人性能元素(“RC元素”)形式的机器人性能实例来实现。协作系统还可以提供适当的用户接口(“UI”)元素(这可以通过使用用户交互性能元素(“IC元素”)形式的用户交互性能实例来实现)以供用户与机器人协作、交互、和/或给予机器人输入。执行任务所需的一组性能元素(例如,RC元素和IC元素)可以根据任务的复杂性而变化,这是因为执行任务所需的任务知识、使用该知识的权限以及用户输入会随着这种复杂性而改变。

性能

在各实施例中,性能被定义为:基于被定义为一个或多个不频繁变化的参数的信息核(kernel)来将输入信息映射到输出信息或动作的高阶函数。在不失一般性的情况下,这样的参数可以是在运行时评估的函数。协作系统可以使用性能来在动态和不确定环境中成功地执行一个或多个机器人动作。

更正式地,性能C可以被定义为:C(κ):γ→φ,其中κ是信息核,γ是性能的输入集合,并且φ是输出集合。如果信息核κ未定义,则性能C被认为是未实例化的或泛化的,因此缺乏对输入γ进行操作的必要信息。可泛化框架还定义了两个组合算子:串行组合(serial composition)⊙和并行组合(parallel composition)⊕。本领域技术人员将理解,在不脱离本公开的精神和范围的情况下,其它组合算子也是可能的。通过使用组合算子,性能C可以由其它性能组成。因此,性能C可以是其他性能的组合并且被认为是复合性能。相反,如果性能C不包括其它性能,则性能C可以被认为是基本性能。

串行组合算子⊙通常是非交换的,并且表示将一个性能的输出连接到另一性能的输入中:

CAA)⊙CBB):γA→φB

并行组合算子⊕是可交换的,并且表示两种性能的联合(union):

CAA)⊕CBB):(γA∪γB)→(φA∪φB)

在并行组合中,输出φA和φB假定为在不失一般性的情况下不相交,这是因为性能可以由选取来自CA还是CB的相冲突输出的决策函数组成。此外,这两种性能组合均需要用于所组合的性能的信息核的联合。

性能可以被分为用户交互性能和机器人性能。用户交互性能其中是协作系统可用的所有用户交互性能的集合,其通过要求输入命令或显示反馈来向用户提供一个或多个接口模态。

机器人性能其中是协作系统可用的所有机器人性能的集合,其对机器人运行时的至少一个功能进行建模,并且可以连接至一个或多个用户交互性能和/或一个或多个其它机器人性能。表1中示出了机器人性能的示例。

表1:机器人性能的示例

机器人性能R最初可以是一般的或未被实例化的,并且可以针对由信息核κ的参数化所定义的任务空间和任务动作来泛化这种形式的机器人性能R。协作系统可以针对特定情况利用信息核κ来将机器人性能R参数化,以形成实例化的机器人性能R(κ)。然后,协作系统可以利用输入γ对实例化的机器人性能R(κ)进行操作用以生成输出φ,诸如命令机器人执行一个或多个特定任务动作。

为了与实施运动约束的机器人协作地实施精确钻孔的示例任务,协作系统需要两个性能:从用户接收姿态命令的用户交互性能,以及在描述特定钻具的信息核所施加的约束下移动机器人的一般机器人性能Rmc。表1中示出了一般机器人性能Rmc的示例。在给定了包含使用钻具所必需的公共运动约束的信息核κdrill时,协作系统可以将一般机器人性能Rmc实例化以形成用于提供钻孔运动约束的实例化机器人性能Rmcdrill)。在该示例中,信息核κdrill封装了用于将钻具的几何特征映射到笛卡尔约束的参数,并且协作系统可以将这些参数重复用于具有相同特征的任何工具(例如,其它钻具)。此外,协作系统可以将一般机器人性能Rmc实例化为在不改变其接口γ和φ的情况下不仅对钻具还对其它工具进行约束。

使性能专门化

在各实施例中,用户可以使用协作系统来通过基于一组特定参数、演示或其他用户提供的信息定义信息核的指令来使性能专门化。指令可以被定义为使用用户演示或参数化来创建新的信息核或指定现有信息核的参数的方法。使用上述精确钻孔的示例任务来使用于钻孔的机器人性能Rmc专门化,用户可以执行指定从钻具几何结构到约束几何结构的映射的指令Idrill。协作系统可以将此映射封装在κdrill中,并且在这样做时,将Rmc专门化为Rmcdrill)。

协作系统可以基于可用于执行各种类型的任务动作的各种类型的信息来使性能专门化,其中,所述信息包括(1)使用工具行为约束的工具可供性,(2)使用TMP的运动轨迹,以及(3)使用感知模板的感知基础。例如,协作系统可以响应于用户执行使性能专门化的指令来使性能专门化,其中指令指定以下内容:(1)工具行为控制,其描述工具如何工作并且提供关于使用工具来执行任务动作的一个或多个行为控制;(2)TMP,其描述执行任务动作时所涉及的一个或多个运动;和/或(3)感知模板,其提供机器人的工作环境的背景下的一个或多个行为控制。本领域技术人员将理解,在不脱离本公开的精神和范围的情况下,可以使用其它类别的信息来使性能专门化。

工具行为约束

通常在考虑特定用例的情况下设计工具(特别是在工业制造领域中),这通常涉及对利用工具执行任务时可以做出的运动的约束。由协作系统实现的框架将工具使用的这一方面形式化来作为工具行为约束。更具体地,与工具相关联的工具行为约束描述了工具如何工作的预想概念,并且提供了与执行一个或多个任务动作时工具的使用有关的一个或多个行为控制和/或运动约束。可以基于工具的至少一个工具可供性来确定工具行为约束。工具可供性被定义为使实体有能力或能够利用工具执行一个或多个动作的工具的一个或多个特征、性能、属性或特性。当用户希望机器人执行或辅助需要使用上述工具或其特性和特征与上述工具的特性和特征基本相同的另一工具的任务时,用户可以将与工具相关联的至少一个工具行为约束参数化,从而给予机器人关于如何使用该工具来执行任务的概念。用户可以通过指定机器人抓紧或附接了的工具的几何结构等来将该工具的工具行为约束参数化。

当关于工具来对机器人性能进行建模时,协作系统可以利用以下事实:每个工具或每种类型的工具具有提供有用动作的几何特征,从而对可以实现有用动作的运动设置约束。例如,钻具的圆柱形钻头限制钻头沿着线的运动,并且当钻具用于钻孔时,附接的钻头限定轴向平移方向;类似的约束适用于打孔机或金属板冲模。又例如,磨砂或抛光工具通常具有平坦的操作表面,这将工具的运动限制为沿着平坦的操作表面切向接触。类似地,各种工具行为约束适用于其它工具应用,例如运动通常限于直线或曲线的切削工具。

更正式地,工具t可以被表示为三元组t=<r,A,G>,其中r是工具t的三维(“3D”)几何结构的表示或模型,A=<a0,a1,...,an>是一组行为约束,并且G=<g0,g1,...,gn>是相对于表示r的一组抓握配置。协作系统可以使用工具t来表示特定工具或具有基本相同特性和特征的特定的一类工具中的任何工具。假设固定式末端操纵装置,gi∈SE(3)是特定工具相对位置。每个行为约束转而是一个对(pair)a=<p,q>,其中p∈SE(3)是约束坐标系(frame),q是约束类型,即q∈{轴,曲线,角度,平面...}。对于工具t,协作系统可以通过使工具t的表示r适合于约束类型q来基于约束类型q生成约束坐标系p。表示r可以整体或部分地对工具t建模。通过将表示r的形式的工具t的几何结构映射到约束类型q,协作系统可以形成可重复使用的信息核κi,从而将机器人性能R(例如,如表1所示的运动约束性能Rmc)专门化为专用的机器人性能R(κi)。当工具t附接到机器人时,协作系统可以操作专用的机器人性能R(κi)来控制机器人。在表2和图1A中示出了各种类型的工具行为约束的示例。

表2:约束类型的示例

当机器人抓握或捕获工具时,协作系统可以使用与工具相关联的一个或多个工具行为约束来定义一个或多个约束,该一个或多个约束允许例如通过使用零空间投影方法将工具移动分解成受约束的DOF和外部控制的DOF。例如,协作系统可以通过从工具的几何特征的表示(例如工具的3D点云)开始来指定与工具相关联的工具行为约束。协作系统可以通过让用户选择现有表示、生成新表示或选择且修改现有表示来提供工具的表示。在各实施例中,协作系统还可以自主地提供工具的表示。用户可以使用协作系统来交互地选择作为工具原点的点云的区域,然后选择约束类型。基于所选择的区域和约束类型,协作系统可以相对于工具原点确定工具尖端坐标系和一个或多个工具行为约束。协作系统可以基于用户选择将工具的任何区域映射到工具行为约束。协作系统还可以基于用户选择或其它考虑来选择工具的点云的任何区域或将工具原点或工具尖端坐标系用作为工具的TEP。

例如,假设工具t1是钻具,则协作系统可以提供钻具的3D表示r1(其包括附接的钻头的表示rbit),然后选择“轴”作为约束类型q1。因此,当工具t1附接到机器人时,表示r1或rbit在机器人使用工具t1执行钻孔任务的同时对机器人的运动施加轴向约束。通过将表示为r1的形式的工具t1和/或表示为rbit的形式的附加钻头的几何结构映射到约束类型q1,协作系统可以形成可重复使用的6DOF信息核κdrill,以例如将运动约束机器人性能Rmc(如表1中所示)专门化为专用的机器人性能Rmcdrill)。然后,协作系统可以操作专用的机器人性能Rmcdrill)以在使用工具t1时约束机器人的运动。

工具运动基元

TMP描述机器人使用工具执行任务时的运动;该工具可以是特定工具或者具有类似或甚至基本相同的特性和特征的一类工具中的任何工具。在各实施例中,协作系统可以以捕获工具相关特征和参数同时保持其它参数不受约束的方式来将可重复使用的运动表示为TMP。TMP可以扩展为动态运动基元(“DMP”),其为可以在保持运动的结构不变的同时被重新参数化的可重复使用的运动表示提供了基础。

TMP可以将机器人的工作空间和/或环境中的工具背景下的轨迹数据以及一个或多个点或其它约束封装。更正式地,TMP T可以被表示为T=<a,d>,其中a=<p,q>是与工具相关联的工具行为约束,并且d表示所演示的轨迹。TMP T可以是在工具行为约束坐标系p1...pn中的一个中所构建的DMP,从而允许协作系统捕获工具和轨迹坐标系之间的相对定向或对准,而不是机器人的末端操纵装置相对于某些任意世界坐标系的方向。以这种方式,可以针对不同的工作环境重新参数化由TMP T专门化的机器人性能(例如,如表1所示的运动即时回放性能Rir或轨迹生成器性能Rig),并且可以恰当地将运动重复用于具有TMP T中指定的工具行为约束的任何工具。

协作系统可以通过以下步骤生成与工具相关联的TMP:首先,经由用户演示、相关UI或其组合获取轨迹数据;然后,将该轨迹数据泛化,以在涉及使用该工具的各种任务使用。轨迹数据描述了在使用工具来执行用于完成任务的动作时所涉及的一个或多个运动。协作系统可以通过进入学习模式、让用户演示运动、以及感知或感测所演示的运动来捕获轨迹数据,从而经由用户演示获取轨迹数据。

使用磨砂任务作为示例,用户可以利用磨砂机来演示在磨砂机的作用面(face)所处的平面中从起始点向外前进的螺旋磨砂轨迹。协作系统可以获取或捕获螺旋磨砂轨迹的形状和磨砂机相对于轨迹方向的对准或定向。例如,协作系统可以捕获到磨砂机的作用面与轨迹的方向平行。协作系统还可以生成TMP Tsander,该Tsander封装了起点的背景下的螺旋磨砂轨迹以及在螺旋磨砂轨迹的方向的背景下的磨砂机的对准或定向。

在获取轨迹数据之后,协作系统可以通过泛化轨迹数据来生成TMP。协作系统可以基于例如用户指定的点和/或与新任务相关联的感知模板来适配或重新参数化用于新任务的TMP。在各实施例中,协作系统可以通过让用户经由通道控制(admittance control)来使得机器人沿着6DOF姿态轨迹移动来获取TMP。协作系统可以将姿态轨迹存储为DMP或TMP,其可以被生成地用于创建给出机器人的工作空间或环境和/或一个或多个感知模板中的一个或多个目标点的新的运动。协作系统还可以存储相对于机器人的初始姿态的姿态轨迹,使得当生成新的运动时,协作系统可以将运动限制到所附接的工具的工具尖端坐标系而不是某个任意的坐标系统。对于按性能封装的工具行为约束和TMP,协作系统可以将结果坐标系、几何信息、轨迹和其它数据保存在其它性能可用的至少一个轻量级数据库中。使用上面描述的示例TMP Tsander,即使在TMP Tsander与其作用面以不同角度安装的磨砂机一起记录的情况下,协作系统仍然可以在例如平行于磨砂机的作用面的方向上正确地应用螺旋磨砂轨迹。

在各实施例中,当用户正在演示在利用工具执行任务时所涉及的一个或多个运动时,协作系统可以实施与工具相关联的一个或多个可适用的工具行为约束。更具体地,在用户演示期间,协作系统可以通过将机器人的工作空间约束到机器人的最大工作空间内的点的子集来实施或应用可适用的工具行为约束。当用户在用户演示期间在工具上或其附近处施加力以指挥或引导机器人时,用户所施加的力可以具有一个或多个不期望的方向上的一个或多个分量,该一个或多个分量将导致机器人(例如,机器人的TEP)离开其受限工作区。为了解决这个问题,协作系统可以指示机器人保持在受约束的工作空间内或返回到受约束的工作空间。可以通过仅抵抗用户施加的力在不期望方向上的分量、抵抗用户施加的全部力等来指示机器人停留在受约束的工作空间内。可以通过提供负力反馈(例如,经由阻抗控制、振动或其它形式的触觉反馈等)、在对用户而言安全时将机器人移动到受约束的工作空间中的点和/或将机器人重定向等来指示机器人返回至受约束的工作空间。通过实施与工具相关联的可适用的工具行为约束,协作系统允许用户更精确和有效地示范如何使用工具。协作系统可以在运动演示期间通过例如以下步骤实施可适用的工具行为约束:形成工具的信息核κtool、利用信息核κtool的将运动约束性能Rmc专门化为专用的机器人性能Rmcdrill),提供专用的机器人性能Rmcdrill)的实例作为RC元素、以及根据可适用工具行为约束来操作RC元素以控制机器人。

例如,在用于执行上述钻孔任务的钻孔运动的用户演示期间,协作系统可以指示机器人仅允许用户在线性运动中移动被激活了的钻具,这有助于用户完成精确的单次演示。协作系统可以通过将机器人的工作空间约束到沿着附接到钻具的钻头的纵向轴线的直线上的一组点来实现上述内容。当钻具被激活时,如果用户试图通过用户施加的力来指挥机器人偏离沿着钻头的纵向轴线的线,则协作系统可以例如通过抵抗用户施加的力在一个或多个不期望的方向上的一个或多个分量(例如,仅允许用户施加的力在沿着钻头的纵向轴线的方向上的分量)来指示机器人仅在沿着钻头的纵向轴线的方向上移动。作为替代或此外,协作系统可以指示机器人进行以下行为:经由抵消用户施加的力的阻尼力来提供负反馈、在对于用户而言安全时返回到受限制的工作空间、在对于用户而言安全时重新定向末端操纵装置以使得钻头返回到受限制的工作空间等。又例如,在用户演示用于执行上述磨砂任务的磨砂运动期间,协作系统可以指示机器人仅允许用户在与平面或预定表面相切的运动(例如,平面运动)中移动被激活了的磨砂机。

感知模板

感知模板通过提供针对与机器人的工作环境相关联的感知数据(比如,正在处理的目标工件的一个或多个特性、机器人的工作空间中的一个或多个点等)描述的一个或多个行为控制来支持受约束工具运动的定义。因此,感知模板提供工作环境的背景下的一个或多个行为控制。更正式地,感知模板P是一个对P=<S,E>,其将所选场景区域S与场景中的指定几何实体E=[e1...en]相关联。场景区域S可以是3D点云或者红色、绿色和蓝色加深度(“RGBD”)数据的所选体积、图像的所选二维(“2D”)区域等。几何实体E中的几何实体ei是任务相关几何特征,比如,点、线或曲线、平面或表面、3D空间等。协作系统可以使用感知模板将工具行为约束、TMP和其它任务约束作为感知数据的基础。虽然工具行为约束和TMP提供了用于重复使用约束和运动数据的机制,但是感知模板提供了需要被指定以执行任务动作但不被工具行为约束或TMP捕获的任务相关参数。

任务相关参数可以是相对于机器人的工作环境而由用户指定的参数,比如,相对于目标工件的位置和/或定向指定的参数。作为替代或此外,协作系统可以获得描述机器人的工作环境并且与感知模板提供的任务相关参数相关的感知数据。协作系统可以从感知或检测(例如,经由传感器、相机等)、用户交互(例如,经由交互式设置、直接的用户输入或选择等)、存储的数据或者它们的组合中获得感知数据。协作系统可以以适当的速率(例如,1Hz、5Hz等)连续地获得感知数据,以允许用户重新定位或移动目标工件。存储的数据可以包括与一个或多个可重复使用的任务相关参数相关联的数据值和信息,比如,与工件类型相关联的数据值、之前输入的用于对类似类型的工件执行类似任务的数据值等。用户还可以将经由感知和/或用户交互而获取的数据和信息存储在与目标工件或其类型相关联的一个或多个感知模板中。

在各实施例中,协作系统可以在操作机器人性能以执行任务动作时获得感知数据。在获得感知数据之后,协作系统可以基于感知数据指定与任务相关的参数,以作为与机器人性能和任何任务约束相关联的任何工具行为约束和TMP的基础。因此,协作系统可以在没有机器人的工作环境的先验知识的情况下,在执行任务动作的同时重复使用与任务相关的参数,比如,目标工件相对于机器人的位置和/或定向。

对于以半自动方式在部件行程上重复地钻出孔的图案的示例任务,可适用的感知模板Phole可以包括需要被指定以执行示例任务的任务相关参数,比如,相对于工件表面的钻孔角度、相对于工件表面上的一个或多个点待钻出的孔的图案等。孔的图案可以被表示成相对于工件表面成一定角度的线。在操作机器人性能以执行任务动作时,协作系统可以使用感知模板Phole来获得感知数据,比如,目标工件表面Sw、目标工件表面Sw上的一个或多个参考点、目标工件表面Sw的定向等。对于部件行程中的每个部件,协作系统可以使用感知模板Phole来:(1)获得描述部件的相关感知数据,(2)基于该感知数据指定相关的任务相关参数,(3)通过设置κ=Phole来专门化机器人性能R(例如,如表1中所示的轨迹生成器性能Rtg)以形成专用的机器人性能R(Phole),(4)提供专用的机器人性能R(Phole)的实例作为RC元素,以及(5)使用RC元素来指示机器人以相对于目标表面Sw而指定的角度在由部件的目标表面Sw上的孔的图案指定的位置处钻孔。

可以使用一个或多个传感器从用户、从存储的数据或它们的组合获得感知数据。例如,协作系统可以首先通过利用相机获得输入深度数据并且在该输入深度数据中检测工件的一个或多个平坦的表面来感知一个或多个工件表面及其定向。然后,协作系统可以提示用户从目标工件表面中选择目标表面Sw、选择目标表面Sw上的一个或多个参考点和/或孔的图案。协作系统还可以加载先前保存的孔的图案。

用于使性能专门化的指令器

在各实施例中,协作系统提供至少一个指令器,其用于基于一组指定的参数、演示或其它的用户所提供的信息来生成指令。指令器可以用于创建新的信息核或指定现有信息核的参数,协作系统可利用所创建的信息核或指定的参数来专门化机器人性能。协作系统可以调用指令器来获得不同类别的信息,比如,工具行为约束、TMP形式的运动轨迹、感知模板等。

为了生成用于指定一个或多个工具行为约束的指令,指令器可以提供由用户选择的工具的表示或者基于附接到机器人的工具而提供工具的表示(例如,3D点云)。该表示可以包括至少一个工具原点。指令器可以自主地或基于交互式用户选择来选择表示中的区域和约束类型。然后,指令器可以基于所选择的区域和约束类型使工具的表示适合于约束类型,以定义约束坐标系,并且因此可以生成相对于工具原点的工具操纵装置和一个或多个工具行为约束。可以基于用户选择将工具的任何区域映射到工具行为约束。指令器存储工具行为约束并且可以以格式化信息核的形式生成用于指定工具行为约束的指令,该格式化信息核可以通过需要一个或多个工具行为约束的任何性能(比如,表1中所示的运动约束性能Rmc)来加载。

为了生成用于指定用于以一个或多个TMP的形式使用指定工具或指定类中的工具的一个或多个运动轨迹的指令,指令器可以提供用于获取运动轨迹的用户接口。例如,指令器可以提供如图1B中所示的沉浸式虚拟现实(“VR”)环境。通过VR环境,用户可以与机器人的化身进行交互以指定运动轨迹。用户可以在与机器人握持工具的方式相同的位置中握持虚拟工具代理(例如3D定点设备),并且演示任意数量的6DOF运动轨迹。指令器可以将所演示的运动轨迹记录为关于所选择的工具的一个或多个DMP,基于该DMP和与工具相关联的约束坐标系生成一个或多个TMP,并且针对所选择的工具或指定类中的工具来存储TMP。用于指定TMP的指令生成格式化信息核,该格式化信息核可通过需要一个或多个TMP的任何机器人性能(例如,表1中所示的运动即时回放性能Rir或轨迹生成器性能Rig)加载。

为了生成用于指定一个或多个感知模板的指令,指令器可以感知机器人的工作环境中的场景,并提供实时显示场景并允许用户选择场景中的一个或多个点、线或平面的用户接口。例如,指令器可以使用RGBD传感器来感知场景,检测场景中的候选特征(例如,工件的顶点、边、表面等),并实时显示3D可视化场景和任何候选特征。指令器可以自主地或基于用户选择从候选特征中选择至少一个参考特征。指令器还可以基于用户选择来选择模板特征,并且在参考特征的背景下定义每个模板特征,比如,每个模板特征相对于参考特征的相对位置、角度、定向、深度或其它属性。例如,指令器可以选择工件的候选表面作为参考表面,并且将用户所选择的待被钻取的孔的图案作为模板特征。图案中的每个孔的角度可以相对于参考表面而被定义,并且每个孔的位置可以相对于参考表面的两条或更多条边而被定义。指令器可以存储候选特征、参考特征和/或模板特征,以及感知模板中的特征之间的关系。用于指定感知模板的指令生成格式化信息核,该格式化信息核可通过需要一个或多个感知模板的任何机器人性能(比如,表1中所示的轨迹生成器性能Rig)加载。

协作行为

协作行为包括一个或多个机器人性能、一个或多个用户交互性能、以及机器人性能和用户交互性能之间的映射的各组合。虽然机器人性能可以被构建和组合以用于控制机器人执行特定任务动作或特定类型的任务动作,但是,协作系统依赖于协作行为向用户提供用户针对任何特定机器人行为和性能水平与协作系统和/或机器人进行交互所必需的接口。至少在这方面,协作系统不同于现有的机器人系统,现有的机器人系统仅专注于高级用户-机器人协作关系,而忽略了低级接口元素。

对于组合性能中的每个机器人性能,协作系统需要关于以下内容的明确信息:用户需要什么输入、应当向用户呈现什么反馈,并且因此需要什么样的用户交互性能。假设机器人性能R=γR→φR是通过组合算子(例如,⊕和⊙)由一组n个实例化的或专用的机器人性能{R11),…,Rnn)}组合而成的。对于机器人性能R和协作系统可用的所有用户交互性能的集合兼容性函数选择适当的一组用户接口性能U:γU→φU(其中,),该组用户接口性能U:γU→φU向R提供输入或从R接收输出(但不可同时执行),这是因为通过人类操作者关闭任何反馈环。

因此,协作行为B可以被定义为机器人性能R的组合,其中,通过一组用户交互性能来满足机器人性能R的组合的所有用户交互需求。机器人性能R可以是基本机器人性能或组合机器人性能。图2示出了包括通信地连接到用户和机器人的性能的组合的协作行为的示例。应当注意,协作系统对协作行为中的性能之间的连接进行管理,以控制什么信息被传递到用户和从用户传递出什么信息,但是协作系统不设计也不指示与性能相关联的用户接口的任何特定设计。相反,性能的创建者和设计者可以自由地设计与性能相关联的用户接口。

为了执行与实施运动约束的机器人协作地精确钻孔的上述示例任务,协作系统可以生成和/或修改性能的组合并将该组合存储在协作行为B1中。对于该示例任务,钻具专用的运动约束机器人性能Rmcdrill)需要来自用户的至少一个6DOF命令。协作系统可以基于兼容性函数Δ来选择具有与6DOF命令匹配的所需输出的力引导用户交互性能Uforce。因此,协作行为B1可以是B1=Uforce⊙Rmcdrill)。协作系统可以使用类似的方法来导出用于其它任务(比如,在由用户手动引导的位置处钻相似的孔的任务、或者以上面相对于感知模板所描述的半自动方式重复地在部件的行程上钻取孔的图案的示例任务)的更复杂的交互需求。

示例性实施例

图3A和3B示出了根据本公开原理的协作系统的示例性实施例。图3A中示出了各实施例中的一个示例,协作系统可以包括计算机300,其可以经由至少一个UI 310与至少一个用户(未示出)交互。计算机300可以是本领域技术人员公知的通用计算机或专用计算机,比如,台式计算机、膝上型计算机、平板计算机、移动装置、机器人控制器、服务器、计算机集群等或它们的任意组合。计算机300还可以是任何合适类型的机器,比如,虚拟机器、实体机器等或它们的任意组合。安装在计算机300上的软件可以包括协作框架320和至少一个操作系统(“OS”)330。

协作框架320是上述可泛化框架的示例实施方式,其定义和提供性能、链接和协作行为的模型。协作框架320可以与至少一个机器人340和/或用户进行通信和交互以学习和/或提供与协作行为相关联的协作/辅助功能。例如,用户可以经由用户演示通过指挥机器人340完成与协作/辅助功能相关联的一个或多个运动来向协作框架320教授所完成的动作。协作框架320可以使用UI 310来与用户进行通信和交互,并且可以经由计算机300的一个或多个部件或外围设备(比如,视觉显示器、定点装置或控制器、键盘/小型键盘、电声换能器、动态或有形用户接口等、或它们的任意组合)来提供UI 310。定点装置或控制器可以包括例如鼠标、3D定点装置、触摸屏、触摸板、操纵杆、示教器等。协作框架320还可以经由机器人340的一个或多个部件(比如,传感器、致动器等、或者它们的任意组合)来提供UI 310。传感器可以包括例如力传感器、位置传感器、视觉传感器、触觉传感器等。本领域技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以使用其它部件和外围设备来提供UI 310。

协作框架320可以由OS 330支持和/或构建在OS 330的上层。OS 330可以是诸如机器人操作系统(“ROS”)的任何商业、开源或专有操作系统或平台,其可以用作为基于部件的软件功能和网络的组合与过程管理的中间件。符合本公开原理的操作系统的其它公知示例包括LINUX、UNIX、ORACLE SOLARIS、MICROSOFT WINDOWS、MAC OS、OPEN VMS和IBM AIX。

尽管图3A将协作框架320描述为提供UI 310并且经由直接通信链接通信地耦接至机器人340,但是本领域技术人员将理解,协作框架320可以提供UI 310和/或经由任何合适类型的通信链接(比如,通过诸如局域网、广域网、内联网、互连网等的至少一个通信网络的网络连接)通信地耦接至机器人340。本领域技术人员还将理解,图3A中所示的单计算机配置和协作系统的各个部件的布置仅仅是代表性的,并且在不脱离本公开的精神和范围的情况下,使用其它配置和布置也是可能的,图3B中示出了其它配置和布置的一个示例,并且下文中对它们进行了更详细地描述。

如图3A所示,协作框架320包括管理协作行为、机器人性能以及机器人性能接口之间的链接(比如,输入γ和输出φ)的行为管理器322以及管理用户交互性能的UI管理器324。在行为管理器322和UI管理器324作为单独且有区别的模块或处理运行的情况下,协作框架320可以将用户交互性能与协作行为、机器人性能和链接进行分开地且区别地管理,以保持与协作行为的概念性定义的一致性。机器人和用户交互性能的明确分离使得行为管理器322和UI管理器324在单独的机器(无论是实体的还是虚拟的,只要机器彼此之间通信地耦接(例如,联网的)即可)上运行。此外,协作框架320可以包括在一个或多个机器上运行的UI管理器324的多个实例,图3B中示出了它的一个示例,下文将会更详细地描述该示例。协作框架320还可以包括以分布式方式在一个或多个机器(未示出)上运行的行为管理器322的多个实例。

管理机器人性能和链接

在各实施例中,协作框架320可以调用行为管理器322来编辑(例如,撰写、修改、存储、删除等)机器人性能以及在各种状态下(包括在运行时间期间)管理(例如,加载、初始化、运行、停止、终止、卸载等)并且动态地适配(例如,专门化、泛化、重新专门化等)RC元素。协作框架320可以以诸如C++、PYTHON等的一种或多种编程语言来创建机器人性能,并且可以将机器人性能实现为可以被组合成复合元素的软件元素。机器人性能可以扩展或基于ROS节点,这为软件元素(例如,机器人性能的实例)之间的类型化连接提供了通信层和接口。协作框架320可以将机器人性能的输入和输出之间的链接实现为发布和订阅的ROS主题形式的链接元素。

协作框架320可以通过调用与机器人性能相关联的ROS启动文件来提供机器人性能的实例作为RC元素。已经由协作框架320提供的RC元素可以处于几个状态(包括未实例化或泛化、实例化或专门化、运行、等待、停止等)中的一个或多个。泛化的RC元素包含用以从其接口读取(即,性能输出)和向其接口写入(即,性能输入)的代码以及用于执行期望类型的任务动作的代码,除此之外还包含接收RC元素运行所需的信息核的未实例化信息类。协作框架320可以将信息核实现为在运行时被加载至存储器中并且用于实例化信息类的特定格式化的数据文件,从而将RC元素专门化。协作框架320可以包括至少一个指令器,其生成信息核并将信息核存储在所有性能元素可访问的数据库中。

协作框架320可以通过在元素启动文件中指定机器人性能和所需的信息核来基于该机器人性能提供专用的RC元素。协作框架320可以通过将专用的RC元素的信息核置换为不同的信息核,而在运行时将已经专门化的RC元素重新专门化。使用表1所示的运动约束性能Rmc作为示例,协作框架320可以在不必卸载运动约束性能Rmc的情况下,将包含与工具相关联的参数的信息核置换为包含与不同工具相关联的参数的另一个信息核。例如,协作框架320可以在不必卸载Rmc的情况下,将专用的运动约束性能Rmcdrill)的信息核κdrill置换为信息核κsander,以形成新的专用的运动约束性能Rmcsander)。

管理用户交互性能

在各实施例中,协作框架320可以调用UI管理器324以在各种状态下(包括运行时间期间)撰写、修改、加载、卸载、存储用户交互性能和在用户交互性能之间进行切换。协作框架320可以将用户交互性能实现为可以组成复合元素的软件元素。类似于RC元素,IC元素可以扩展或者可基于ROS节点,因此与RC元素共享共同通信层和接口。协作框架320利用IC元素向用户提供一个或多个交互范例(其可以采取驱动形式或与外围设备(比如,2D或3D显示器、触摸屏等)的软件接口的其它形式)。例如,允许用户操纵附接到机器人的6DOF操纵杆的通道控制交互元素可以提供作为通道控制交互元素的输入γ的用户的运动和作为通道控制交互元素的输出φ的命令姿态输出之间的映射。

管理协作行为

为了实现协作行为,协作框架320提供以下工具:用于组成用于协作行为的机器人性能的组合的工具、用于导出组合中的机器人性能的用户接口需求的工具、以及基于导出的用户接口需求将用户交互性能映射到组合中的机器人性能的工具。协作框架320可以通过指定组合中的机器人性能之间的链接来组成组合。在各实施例中,协作框架320可以通过填充行为清单(其可以是基于YAML标准、JavaScript对象符号等根据数据规范或序列化格式而格式化的文件)来构建组合。每个行为清单可以将用于协作行为的一个或多个机器人性能、用户交互性能以及链接封装到标签中,在该标签下列出了协作行为所需的性能和链接。可以在一个或多个启动文件(例如,ROS启动文件)和/或包含行为清单的文件中指定各种性能,并且可以基于一个或多个发布和订阅的主题(例如,ROS发布和订阅的主题)指定链接。例如,协作框架320可以对指定可用性能的一个或多个启动文件进行处理,并且可以对包含将协作行为所需的机器人性能、用户交互性能和链接封装的行为清单的一个或多个文件进行处理。

图4中所示的行为清单400是指定通道控制协作行为所需的机器人性能、用户交互性能和链接的行为清单的示例。可以以YAML布线格式指定的行为清单400给出了至少一个机器人的至少一个用户通道控制,其具有用以基于当前使用的工具和/或当前正在加工的工件来约束机器人的运动的选项。行为清单400可以包括作为顶级项(top-level key)的行为名称410和用于所需性能或链接的列表425a至425c的作为较低级别项(lower-level key)的行为标签420a至420c。列表425a可以列出一组所需的机器人性能,列表425b可以列出一组所需的用户交互性能,列表425c可以列出一组所需的链接。本领域技术人员将理解,行为清单400的格式和内容仅仅是代表性的,并且在不脱离本公开的精神和范围的情况下,也可以使用其它格式和内容。

在启动期间,协作框架320可以例如通过解析本地文件系统用以获得具有与协作框架320相关联的前缀的任何启动文件,来指示行为管理器322建立可用的机器人性能的列表,并且还可以定位和读取包含行为清单的任何文件。行为管理器322可以在各种状态下(包括在运行时间期间)或者在至少一个协作行为参与进来的同时加载、参与、分离、卸载协作行为和在协作行为之间进行切换。UI管理器324和/或协作框架320的另一模块可以定义和提供一个或多个管理UI,用户可以通过所述一个或多个管理UI执行各种管理功能。

管理功能可以包括:查看各种性能(例如,机器人性能和/或用户可用但未加载、加载、未实例化或泛化、实例化或专门化、运行、等待、停止等的用户交互性能)的列表;创建新的性能;为协作框架320选择现有性能以进行加载、实例化或专门化、未实例化或泛化、重新实例化或重新专门化、卸载、交换、详述、修改、删除等,以及选择可以针对不同的性能以相同的方式来执行的其它功能。管理功能还可以包括:查看各种协作行为(例如,用户可用的、被加载的、被参与的等等的协作行为)的列表;创建新的协作行为;为协作框架320选择现有协作行为以进行加载、参与、分离、卸载、交换、详述、修改、删除等,以及选择可以针对不同协作行为以相同方式来执行的其它功能。例如,用户可以使用管理UI来浏览可用协作行为的列表,并且为协作框架320选择协作行为以进行加载和/或参与、详述、修改、删除等。又例如,用户可以使用管理UI来浏览任何参与的协作行为,并为协作框架320选择任何参与的协作行为以进行分离、卸载、交换、详述、修改等。

响应于协作框架320或其中的任何模块接收到加载协作行为的命令,行为管理器322可以定位与该协作行为相关联的至少一个行为清单所需的机器人性能的组合,并且将RC元素作为所需机器人性能的单独子进程而进行启动。这允许行为管理器322例如通过启动、停止、重新启动、终止或必要时取消RC元素来管理它们和在它们之间平稳地进行转换;在这种转换期间,行为管理器322可以停止机器人,或指令并等待机器人进入停止状态。

在启动所有所需的RC元素之后,行为管理器322随后可以查找协作行为所需的所有链接的行为清单和/或所需的RC元素。对于所需的链接中的每一个,行为管理器322可以产生链接元素或包含用以订阅发送节点(例如,针对给定主题进行发布的RC元素)并发布至接收节点(例如,针对给定主题所订阅的RC元素)的逻辑的明确生成的临时部件。这种抽象概念提供了若干好处。通过使用链接元素,每个链接可以被划分入其自己的进程中,而不是使链接逻辑(发布者和订阅者)直接在行为管理器322中生成,由此允许行为管理器322在运行时容易地重新组织RC元素之间的链接。这种抽象概念还实现有用的内省,这是因为连接的性能元素的图形式结构被保留。例如,用户可以经由可视化工具(例如,rqt_graph,一种ROS图形可视化工具)查看RC元素之间的显式连接,而不是查看全部连接到行为管理器322的中央集线器的许多RC元素。

作为对每个运行的RC元素和链接元素使用单独的处理的结果,行为管理器322可以容易地实施和执行各种其它行为命令和管理活动。响应于用以卸载协作行为的命令,行为管理器322可以简单地终止运行与协作行为相关联的RC元素和链接元素。响应于用以将已经被加载的第一协作行为切换为正在被请求但尚未被加载的第二协作行为的命令,行为管理器322可以找到第一协作行为和第二协作行为共有的交叉机器人性能,从而仅加载和卸载未被第一协作行为和第二协作行为共有的RC元素和链接元素。

行为管理器322可以在各种状态下添加或减去个体RC元素并建立或断开个体链接。例如,在加载或甚至使协作行为参与之后,行为管理器322可以将一个或多个新的个体RC元素和/或链接元素添加到协作行为,并且可以减去与协作行为相关联的一个或多个个体RC元素和/或链接元素;如果协作行为处于参与状态,则行为管理器322可以在尽可能多地保持协作行为的功能的同时添加或减去个体RC元素和/或链接元素。对行为管理器322的请求或命令可以被实现为服务(例如,ROS服务),使得它们可以容易地连接到图形UI或者被程序地调用。

行为管理器322还可以在协作框架320处于各种状态(包括运行时间期间)时动态地适配个体RC元素。例如,在加载RC元素之后,行为管理器322可以利用已经通过一个或多个指令而被定义的信息核来实例化或专门化RC元素。行为管理器322可以通过将现有信息核与RC元素去耦接来将专用的RC元素去实例化或泛化。行为管理器322还可以通过将现有信息核换为新的信息核来将专用的RC元素重新实例化或重新专门化。

如上所述,协作框架320可以对与协作行为相关联的IC元素以与RC元素和链接元素分开和区别的方式进行管理。为了满足协作行为的UI需求,协作框架320的UI管理器324可以基于可用的用户交互性能来提供一组IC元素。UI管理器324可以以与行为管理器322启动RC元素的方式相类似的方式来将IC元素作为单独的进程进行启动,从而当在管理IC元素和在IC元素之间转换时向UI管理器324提供与如上所述的功能和优点类似的功能和优点。此外,IC元素作为独立于RC元素和链接元素的进程而被启动。然而,UI管理器324不定义运行的IC元素之间的显式链接。相反,UI管理器324可以利用上述Δ(即,兼容性函数)的概念来确定IC元素用于特定RC元素的适当性。在各实施例中,与协作行为相关联的兼容性函数可以指定的是:当通过协作框架320加载(无论通过协作行为自身(例如,在行为清单中)还是通过协作行为中的至少一个特定机器人性能(例如,在启动文件中)协作行为时,所加载的协作行为需要某些IC元素。图5描绘了填充有由IC元素提供的工具行为UI元素510的UI 500的示例,其允许用户选择和/或应用与磨砂机相关联的工具行为约束,并且下面将相对于示例处理来更详细地描述UI 500。

在各实施例中,协作框架320可以通过根据兼容性函数Δ满足机器人性能的协作行为组合中的机器人性能的所有用户交互需求来创建协作行为。在将组合中的每个机器人性能作为RC元素加载之后,协作框架320可以基于针对机器人性能的启动文件中所列出的需求来确定机器人性能所需的用户交互性能。机器人性能的需求可以列出一个或多个明确需要的用户交互性能和/或一个或多个抽象接口需求的列表。例如,工具运动约束性能可以要求用于使用操纵杆的笛卡尔控制的特定用户交互性能。工具运动约束性能还可以提供一个或多个抽象接口需求的列表,诸如文本字段、按钮和开关。协作框架320可以解析抽象接口需求的列表,并确定哪些用户交互性能与抽象接口需求相匹配。然后,协作框架320可以定位和加载所需的IC元素并将每个IC元素连接到需要IC元素或由IC元素提供的用户接口的一个或多个RC元素。

响应于协作框架320或任何模块中接收到用以加载协作行为的命令,UI管理器324可以自动地加载在与协作行为相关联的行为清单中作为UI需求而列出的所有IC元素。另外,如果在协作框架320加载具有超出整体协作行为的UI需求的特定UI需求的一个或多个欠缺的RC元素时,则该欠缺的RC元素可以在加载过程期间在数据的共享存储器空间(例如,ROS参数服务器)上广播它们的UI需求。响应于广播UI要求,UI管理器324可以加载上述欠缺的RC元素所需的IC元素。在加载了协作行为和/或任何欠缺的RC元素所需的IC元素之后,UI管理器324可以调用所加载的IC元素以提供适合于UI需求的一个或多个UI元素,并布置任何必要的连接。为了确保UI针对协作行为向用户提供必要的交互模态,协作行为的创建者或设计者必须明确地指定用于协作行为的至少一个最小的UI需求集。

图3B中示出了协作系统的示例,在各实施例中,协作系统可以包括具有在一组单独的计算机(未示出)上运行的模块的分布式协作框架350。计算机组可以包括多个通用计算机或专用计算机,其示例包括客户端-服务器网络、对等网络、计算机集群、网格、云等、或者它们的任意组合。计算机可以是经由至少一个网络360通信地耦接的任何类型(例如,实体、虚拟等)的机器,所述至少一个网络360可以包括任何合适类型的一个或多个通信网络(比如,局域网、广域网、内联网、互联网等)。例如,计算机组可以包括通过ROS联网的单独的机器。组中的每个计算机可以通信地耦接(例如,联网)至组中的至少一个其它计算机。安装在计算机组上的软件可以包括分布式协作框架350的模块和一个或多个操作系统(未示出)的多个实例。分布式协作框架350的模块可以由操作系统支持和/或构建在操作系统的上层,其中,操作系统可以是任何商业、开源或专有操作系统或平台(比如,ROS或其它合适的操作系统)。

分布式协作框架350的模块可以包括管理RC元素和链接元素的行为管理器352以及管理IC元素的UI管理器的一个或多个实例354。分布式协作框架350可以通过经由计算机的一个或多个部件或外围设备和/或机器人380的一个或多个部件提供UI 370来使用一个或多个UI 370与一个或多个用户进行通信和交互。本领域技术人员将认识到,在不脱离本公开的精神和范围的情况下,可以经由其它部件和外围设备来提供UI 370。分布式协作框架350可以经由网络360与一个或多个机器人380和/或用户进行通信和交互,以学习和/或提供与协作行为相关联的协作/辅助功能。

在协作框架350中的RC元素和IC元素明确分离的情况下,行为管理器352和UI管理器实例354中的至少一个实例可以在单独的计算机上运行。这样的配置灵活性在分布式协作框架350需要一个或多个高耗电的逻辑模块来管理逻辑部件和链接但具有轻量UI前端的情况下是有用的。为了优化这些情况中的性能,分布式协作框架350可以在强大的远程计算机或计算机集群(未示出)上运行行为管理器352,并且在一个或多个不太强大的本地计算机(比如,台式计算机机、膝上型计算机、平板计算机、移动装置、机器人控制器等)上运行UI管理器实例354中的一个或多个分布式实例(未示出)。

此外,UI管理器实例354可以基于连接到本地计算机的部件或外围设备(例如,显示器)的类型和性质来自定义UI 370中的元素的一个或多个显示参数和其它特性。例如,在小型触摸屏平板计算机上显示的UI 370之一的UI元素可以利用为触摸交互定制的更大按钮而更紧凑。又例如,经由虚拟现实装置显示的UI 370之一的UI元素可以包括沉浸式UI元素。分布式协作框架350的配置灵活性(其允许UI管理器实例354分布在单独的计算机上并且自定义UI 370中的UI元素)实现了域特定的交互,在其中可以基于硬件平台(通过其分布式协作框架350与用户交互)自动配置UI 370。

诸如本文所述的以及图3A和图3B中所示的协作系统的示例性实施例旨在以具体方式呈现概念并且被足够详细地描述以使本领域技术人员能够实践这些实施例。然而,在不脱离本公开的范围的情况下,可以利用其他实施例并且可以做出改变。

图6是根据本公开的实施例的可泛化框架所执行的处理600的流程图,该可泛化框架支持可重复使用性能表示的创建、动态适配和管理以及人机协作行为的创建、重复使用和管理。处理600可以由协作框架(比如,如图3A所示的协作框架320或如图3B所示的分布式协作框架350)执行。处理600可以通过启动或提供协作框架而开始,或者处理600可以在协作框架启动期间或之后开始。

在块602处,协作框架可以提供包括行为管理器(例如,行为管理器322,352)中的至少一个实例和UI管理器(例如,UI管理器324,354)的至少一个实例的模块。行为管理器和UI管理器的实例可以各自作为单独的处理而被启动和执行,因此它们可以在不同的计算机或机器上运行。在协作框架的启动期间和/或之后,协作框架可以指示行为管理器和/或UI管理器构建可用性能和/或协作行为的一个或多个列表。列表可以包括以下内容的一个或多个列表:机器人性能(例如,一般机器人性能、专用机器人性能等)、用户交互性能、链接、RC元素(即,一个或多个机器人性能的实例)、IC元素(即,一个或多个用户交互性能的实例)、链接元素(即,一个或多个链接的实例)、信息核、协作行为等。协作框架可以通过解析本地文件系统用以获得具有与协作框架相关联的前缀的任何启动文件来构建可用性能或协作行为的列表,并且还可以定位和读取包含行为清单(例如,行为清单400)的任何文件。

接下来,在块604处,协作框架可以接收用以使协作行为参与或组合成协作行为的输入。协作框架可以经由一个或多个UI元素、经由命令窗(command shell)、或以编程方式接收命令从而创建新的协作行为或选择现有协作行为来进行参与和/或修改。如果协作框架接收到使现有协作行为参与的输入,则协作框架可以行进至块612。作为替代,在决策块610处,如果协作框架接收到用以组成协作行为(例如,创建新的协作行为或修改现有协作行为)的输入,则协作框架可以执行处理900,这将在下文中针对图9更详细地进行描述。

在块612处,协作框架可以选择用于与至少一个用户交互并控制机器人协作地执行任务的协作行为。协作框架可以动态地适配协作行为的性能以控制机器人与用户协作地执行特定任务或特定任务类中的任务。任务可以要求完成一个或多个任务动作,并且协作框架可以使一个或多个协作行为参与进来以执行任务动作。如果协作行为尚未加载到工作存储器中,则在块614处,协作框架可以获得并解析指定协作行为的性能组合的协作行为的规范(例如,行为清单400)。

接下来,在块616处,协作框架可以基于协作行为的性能组合来提供作为一个或多个性能的实例的一组性能元素。该性能元素包括一个或多个RC元素和一个或多个IC元素。在各实施例中,协作框架可以通过执行图7中所示的且下文中更详细地描述的处理700来提供一组性能元素。然后,在块618处,协作框架可以提供作为一个或多个性能之间的一个或多个链接的实例的一组链接元素,并使用该组链接元素连接上述一组性能元素。在各实施例中,协作框架可以通过执行如8中所示的且在下文中更详细地描述的处理800来提供一组链接元素,并且连接一组性能元素。

在块620处,协作框架可以通过执行一组性能元素来使协作行为进行参与,以与用户交互并控制机器人执行任务。协作框架可以指示行为管理器执行RC元素并且使用RC元素中的一个或多个来控制机器人的一个或多个功能,以利用附接至机器人的工具来执行用于完成任务的一个或多个任务动作。协作框架还可以指示UI管理器执行一个或多个IC元素以提供用户可以通过其与机器人和/或协作框架进行交互的一个或多个UI。协作框架可以在任何时候将参与进来的协作行为解除出去和/或停止运行的性能元素。例如,响应于来自用户的将参与进来的协作行为解除(disengage)和/或停止任何运行的RC元素的命令、任务或任务动作的完成、错误或安全警报等,所参与的协作行为和/或任何运行的RC元素可以被解除或停止。当添加或减去个体的性能元素和/或链接元素以建立或断开性能元素之间的链接时,协作框架也可以解除协作行为。

在完成任务或任务动作或解除协作行为之后,在决策块630处,协作框架可判断是否执行新的任务或任务动作。如果协作框架确定了执行新的任务,则处理600可以行进到决策块640处,在决策块640处,协作框架可以判断是否重复使用协作行为和/或一组性能元素中的一个或多个性能元素。例如,协作框架可以判断协作行为是否适于与用户协作地执行新的任务。如果协作框架确定了重新使用协作行为和/或一组性能元素中的一些或所有性能元素,则协作框架可以在处理600跳转到块620之前准备用于转换到新任务的协作行为和/或一组性能元素。例如,基于新任务的需求,协作框架可以通过泛化或重新专门化任何RC元素、重新映射任何性能元素之间的链接来准备用于转换的一组性能元素和/或终止和卸载任何性能和链接元素。

如果在决策块640协作框架确定不重新使用协作行为,则处理600可以行进到块642处。在块642处,协作框架可以在处理600跳转到决策块610使另一协作行为参与或组合另一协作行为以执行新的任务之前,解除和卸载协作行为和/或终止和卸载性能和链接元素中的一些或全部。协作框架可以通过终止和卸载针对协作行为等而实例化的性能和链接元素来卸载协作行为。然而,在新任务的后续协作行为可以利用性能和/或链接元素中的一个或多个的情况下,协作框架可以将性能和/或链接元素中的一些或所有保留在工作存储器中,并且可以重新专门化RC元素中的一些或所有。另一方面,如果协作框架没有识别到后续协作行为可以重复使用的任何性能或链接元素,则协作框架可以卸载协作行为,并且在跳转至决策块610以使另一协作行为参与或组合另一协作行为之前终止和卸载与协作行为相关联的所有性能和链接元素。

作为替代,如果在决策块630处协作框架确定了不执行另一任务,则在块652处,协作框架可以解除和卸载协作行为,终止和卸载与协作行为相关联的所有性能和链接元素,终止和卸载行为管理器和UI管理器,和/或终止和卸载协作框架。最后,在块652之后,处理600结束。

图7和图8是根据本公开的实施例的由可泛化框架执行的用以基于人机协作行为提供和动态适配可重复使用的性能表示的处理700和处理800的流程图。

现在参考图7,在块614(如图6所示)处,协作框架可以在获得和解析当前协作行为的性能组合的同时或之后执行处理700。在处理700中,协作框架可以调用行为管理器以基于由性能组合指定的一个或多个机器人性能来提供RC元素。协作框架还可以调用UI管理器的至少一个实例,以基于由性能组合指定的和/或由性能组合中的个体机器人性能请求的一个或多个用户交互性能来加载和运行IC元素。协作框架可以将每个RC元素和每个IC元素提供为单独的实例或处理。

在块702处,协作框架可以解析性能组合并选择性能组合中指定的性能。协作框架还可以识别出具有不被性能组合中指定的用户接口性能满足的至少一个抽象接口需求的任何欠缺的机器人性能,并且行为管理器可以在共享的存储器空间上广播附加的UI需求。作为响应,UI管理器可以选择至少一个用户交互性能以满足附加的UI需求。UI管理器可以通过对欠缺的机器人性能执行兼容性函数来选择适当的用户交互性能。然后,在块704处,协作框架可以确定所选择的性能的类型(例如,机器人性能或用户交互性能)。

在决策块710处,如果所选择的性能被确定为机器人性能,则处理700可以行进至块712处,在此期间协作框架可以将机器人性能的实例提供为RC元素。协作框架可以基于适合于在与将使用协作行而被执行的任务动作相关联的一个或多个任务动作类型的基础上执行任务动作的一个或多个一般机器人性能来提供RC元素。例如,协作框架可以通过指示行为管理器调用与机器人性能相关联的启动文件并创建RC元素来提供RC元素。一般机器人性能的示例包括运动约束、运动即时回放、轨迹生成等。如果机器人性能的实例是可用的,并且为了例如用以执行先前的任务和/或如先前加载的协作行为所需要的那样而已经被加载在存储器中,则协作框架可以简单地适配已加载的RC元素而不是创建一个新的RC元素。

接下来,在块714处,协作框架可以提供用于实例化或专门化RC元素的至少一个信息核。信息核封装了RC元素所需的一个或多个任务相关参数的集合,并且可以被封装在信息核中的参数的类型包括例如工具行为约束、TMP、感知模板等。协作框架可以基于性能组合和/或RC元素所需的参数集合来识别信息核。然后,在块716处,协作框架可以利用信息核来专门化RC元素。如果已经利用了不同的信息核专门化了RC元素,则协作框架可以例如通过泛化RC元素(例如,将RC元素与不同的信息核解耦)并随后利用信息核专门化RC元素来重新专门化RC元素。在块716之后,处理700可以行进到决策块720处。

作为替代,如果在决策块710处确定了所选择的性能是用户交互性能,则处理700可以行进至块718处,在此期间协作框架可以将用户交互性能的实例提供为IC元素。例如,协作框架可以通过指示UI管理器调用与用户交互性能相关联的启动文件并创建IC元素来提供IC元素。UI管理器还可以确定IC元素将通过其与用户交互的用户接口(例如,显示器、用户输入装置等)的特性,然后基于这些特性来自定义IC元素。如果用户交互性能的实例是可用的,并且由于例如用以执行先前的任务和/或如先前加载的协作行为的所需要的那样而已经被加载到存储器中,则协作框架可以简单地适配已经加载的IC元素而不是创建新的IC元素。在块718之后,处理700可以行进到决策块720处。

在决策块720,协作框架可以基于任何欠缺的机器人性能的性能组合和/或抽象接口需求来确定是否提供更多的性能实例。如果是,则处理700可以跳转到块702处。作为替代,如果否,则协作框架可以终止处理700并且跳转到块618(如图6所示)处。

现参照图8,协作框架可以在提供与性能组合中指定的机器人性能相关联的RC元素之后执行处理800。在处理800中,协作框架可以调用行为管理器以基于由协作行为的性能组合指定的链接和映射来提供链接元素,并且可以将每个链接元素提供为单独的实例或处理。

在块802处,协作框架可以解析用于性能之间的一个或多个链接或连接(比如,机器人性能之间的链接和机器人性能和用户交互性能之间的映射)的性能组合。接下来,在块804处,协作框架可以将链接或映射的实例提供为链接元素。然后,在块806处,协作框架可以使用链接元素来连接相关的性能元素。例如,可以基于性能组合中指定的链接或映射在一对性能元素之间形成链接。性能元素的链接对包括发布者性能元素和订阅者性能元素。协作框架可以以主题(其中发布性能元素向主题发布和订阅性能元素订阅主题)的形式形成链接对之间的链接。

最后,在决策块810处,协作框架可以基于性能组合中的任何剩余链接和映射来确定是否提供更多链接元素。如果是,则处理800可以跳转到块802处。作为替代,如果否,则协作框架可以终止处理800并且跳转到块620(如图6所示)处。

图9是示出根据本公开的实施例的用于组合人机协作行为的示例方法的流程图。协作框架可以在块610(如图6所示)处接收到用以组合协作行为的输入之后执行处理900。在块902处,协作框架可以例如通过指示行为管理器和/或UI管理器提供组合器来提供组合器。

在块904处,协作框架可以指示组合器提供用于协作行为的性能组合。如果协作行为是新的或不包括性能组合,则组合器可以创建性能组合。作为替代,如果协作行为包括性能组合,则组合器可以加载性能组合。接下来,在块906处,组合器可以提供包括可用的机器人性能、用户交互性能、信息核、组合算子等的行为部件的列表。组合器可以通过解析本地文件系统用以获得具有与协作框架相关联的前缀的任何启动文件来构建可用行为部件的列表。

在块908处,组合器可以例如经由一个或多个UI元素或命令窗、以编程方式等从用户接收用以添加、修改或移除性能组合中的行为部件的输入。然后,在决策块920处,组合器可以判断是添加还是修改/移除一个或多个行为部件。

如果在决策块920处组合器确定了用户想要将一个或多个行为部件添加到性能组合,则处理900可以行进到块922,在块922处组合器可以选择性能。组合器可以响应于用户的选择来从性能列表、命令行等中选择性能。接下来,在块924处,组合器可以判断所选择的性能是否是机器人性能。如果是,则组合器可以提示用户选择用于实例化或专门化机器人性能的信息核。然后,在块926处,组合器可以选择与所选择的性能相关联的组合算子和/或用于合成所选择的性能的运算对象(例如,另一性能)。组合器可以将所选择的性能添加到性能组合中,可选地,将所选择的算子和/或运算对象添加到性能组合中。在块926之后,处理900可以行进到决策块940处。

作为替代,如果在决策块920处,组合器确定了用户想要修改一个或多个行为部件或从性能组合中移除一个或多个行为部件,则处理900可以行进到块932处,在该块处,组合器可以向用户提供性能组合,并且接收用以选择性能组合中的至少一个行为部件的用户输入。然后,在块934处,组合器可以修改所选择的行为部件或从性能组合中移除所选择的行为部件。在块934之后,处理900可以行进到决策块940处。

在决策块940处,组合器可以判断是否继续组合性能组合。组合器可以基于用户输入做出判断。组合器还可以根据兼容性函数来判断性能组合中的用户交互性能是否满足性能组合中的机器人性能的所有用户交互需求。如果组合器确定了继续,则处理900可以跳转到块906处。作为替代,如果组合器确定了不继续,则处理900可以行进到块942处。

在块942处,组合器可以提供性能组合中的性能之间的一个或多个链接和映射。组合器可以解析性能组合,并且基于性能组合中的一个或多个组合算子、机器性能的抽象接口需求、用户输入等来提供或导出链接和映射。最后,在块944处,组合器可以将性能组合存储在与协作行为相关联的行为清单中。行为清单(其示例示出在图4中)可以将用于协作行为的一个或多个机器人性能、用户交互性能和链接/映射封装到标签中,在该标签下列出了协作行为所需的性能和链接/映射。最后,在块944之后,协作框架可以终止处理900并且跳转到块610(如图6所示)处。

示例处理

协作框架可以创建或加载协作行为以与用户协作地执行磨砂任务。在创建或加载协作行为并加载协作行为中指定的至少一个一般机器人性能之后,协作框架可以识别到磨砂机附接到机器人,并且利用封装了与磨砂机相关联的参数的至少一个信息核来实例化一般机器人性能。然后,协作框架可以基于实例化的机器人性能的UI需求加载工具行为交互性能,并且如果工具行为交互性能尚未被加载完成则提供允许用户选择和/或应用与磨砂机相关联的工具行为约束的工具行为UI元素。例如,工具行为交互性能可以不是协作行为所需的性能。然后,协作框架可以运行工具行为交互性能以提供允许用户选择并实施工具行为约束中指定的一个或多个行为约束的工具行为UI元素510(如图5所示),然后基于所实施的行为约束来限制机器人的运动。例如,协作框架可以实施或应用行为约束,以将附接的磨砂机的运动仅限制在其磨砂垫板的平面内。

如果必要的话,协作框架可以类似地识别和加载允许用户选择和/或应用感知模板的工件交互性能,然后运行工件交互性能以提供可以包括工件的被检测平面的3D渲染和用于用户选择工件上的一个或多个目标位置的输入点云的至少一个或多个工件UI元素520。工件UI元素520还可以允许用户开关用于远程操作的“对齐到所选表面”感知模板,该“对齐到所选表面”感知模板可以将附接的磨砂机的定向限制到所选平面或表面的法线。协作框架可以将允许用户选择工具行为和感知模板的工件UI元素520合并到协作框架可在用户通道引导机器人的同时实施的更大的工具约束远程操作行为中。

协作框架可以提供记录或学习与协作行为执行磨砂任务所需的TMP相关联的一个或多个用户演示的运动的TMP记录元素530。协作框架还可以创建用于选择工件的平面或表面上的点以在所选择的点处实例化所保存的TMP的TMP实现UI元素(未示出)。在接收到用户在用于指定平面感知模板的3D视图中选择的期望工件平面之后,协作框架可以弯曲当前2D彩色图像以示出平面区域的正交自顶向下的视图。然后,用户可以选择图像中的一组点,并且机器人可以参与协作行为以在经由UI元素540指定的多个时间点中的每个时间点处自主地执行封装在TMP中的运动。这可以用于被称为TMP实现的较大行为中。

图10示出了符合本公开实施例的计算机系统1000。总体而言,人机协作系统(例如,协作框架320和分布式协作框架350)的实施例可以在各计算机系统(比如,一个或多个个人计算机、服务器、工作站、嵌入式系统、多功能装置或它们的组合)中实现。在本文中,协作系统或其中的模块的某些实施例可以被嵌入为计算机程序。计算机程序可以以有源和无源的各种形式而存在。例如,计算机程序可以作为由源代码、目标代码、可执行代码或其它格式的代码中的程序指令组成的软件程序;固件程序;或硬件描述语言(“HDL”)文件而存在。上述中的任一个可以以压缩或未压缩形式体现在包括存储装置和信号的计算机可读介质上。然而,出于说明的目的,系统1000示出为本领域技术人员所公知的通用计算机。现在将描述可以包括在系统1000中的部件和外围设备的示例。

如图所示,系统1000可以包括至少一个处理器1002、键盘1017、定点装置1018(例如,鼠标、3D定点装置、触摸板等)、显示器1016、主存储器1010、输入/输出控制器1015、以及存储装置1014。存储装置1014可以包括例如RAM、ROM、闪速存储器、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储装置、或可以用于以可以被计算机访问的指令或数据结构的形式来携带或存储期望的程序代码的任何其它介质。打印机驱动程序的计算机程序实施例的副本可以存储在例如存储装置1014上。系统1000还可以设置有附加的输入/输出装置(例如,打印机(未示出))。系统1000的各部件通过系统总线1012或类似架构进行通信。另外,系统1000可以包括在操作期间驻留在存储器1010中的操作系统(“OS”)1020。本领域技术人员将认识到,系统1000可以包括多个处理器1002。例如,系统1000可以包括相同的多个处理器。作为替代,系统1000可以包括各类型的处理器的异构混合。例如,系统1000可以使用一个处理器作为主处理器,而使用其它处理器作为协处理器。又例如,系统1000可以包括一个或多个多核处理器和一个或多个单核处理器。因此,系统1000可以包括一组处理器(例如,处理器1002)上的任意数量的执行核。关于键盘1017、定点装置1018和显示器1016,可以使用本领域技术人员公知的部件来实现这些部件。本领域技术人员还将认识到,其它部件和外围设备可以包括在系统1000中。

主存储器1010用作系统1000的主存储区域,并且保存由在处理器1002上运行的应用(比如,条形码打印系统中的打印机驱动程序)主动使用的数据。本领域技术人员将认识到,应用是每个包含用于指示系统1000在运行时间期间执行一组特定任务的一组计算机指令的软件程序,并且术语“应用”可以与应用软件、应用程序、装置驱动程序和/或根据本教导的实施例的程序互换地使用。存储器1010可以被实现为随机存取存储器或如下所述的其它形式的存储器,这是本领域技术人员公知的。

OS 1020是负责系统1000中的硬件的直接控制和管理以及系统操作的例程和指令的集成集合。此外,OS 1020提供运行应用软件和设备驱动程序的基础。例如,OS 1020可以执行各服务,诸如资源分配、调度、输入/输出控制和存储器管理。OS 1020可以主要是软件,但是也可以包含部分或全部硬件实现和固件。与本教导的原理一致的操作系统的公知示例包括机器人操作系统(ROBOT OPERATING SYSTEM)、LINUX、UNIX、ORACLE SOLARIS、微软WINDOWS、MAC OS、OPEN VMS和IBM AIX。

前述描述是说明性的,并且本领域技术人员可以想到配置和实现方式的变化。例如,结合本文所公开的实施例所描述的各种说明性逻辑、逻辑块、模块和电路可以利用通用处理器(例如,处理器1002)、专用集成电路、现场可编程门阵列或其它可编程逻辑装置、分立门或晶体管逻辑、分立硬件部件或它们的任意组合来实现或执行。通用处理器可以是微处理器,但是替代地,处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器还可以被实现为计算装置(例如,微处理器)的组合(例如,多个微处理器)或任何其它这样的配置。

在一个或多个示例性实施例中,所描述的功能可以以硬件、软件、固件或它们的任意组合实现。对于软件实现方式,本文所述的技术可以利用执行本文所述的功能的模块(例如,进程、函数、子程序、程序、例程、子例程、模块、软件包、类等)来实现。模块可以通过传递和/或接收信息、数据、自变量、参数或存储器内容而耦接到另一模块或硬件电路。可以使用包括存储器共享、消息传递、令牌传递、网络传输等的任何合适的手段来传递、转发或传输信息、自变量、参数、数据等。软件代码可以存储在存储器单元中并由处理器执行。存储器单元可以在处理器内部实现或在处理器外部实现,在处理器外部实现的情况下,存储器单元可以经由本领域中已知的各种手段通信地耦合到处理器。

如果功能在软件中实现,则功能可以作为一个或多个指令或代码存储在计算机可读介质上或在计算机可读介质上传输。计算机可读介质包括有形的非暂时性计算机存储介质和包括有助于将计算机程序从一个地方传送到另一个地方的任何介质的通信介质。存储介质可以是可由计算机访问的任何可用的有形的非暂时性介质。作为示例而非限制,这种有形的非暂时性计算机可读介质可以包括RAM、ROM、闪速存储器、EEPROM、CD-ROM或其它光盘存储、磁盘存储或其它磁存储装置、或可以用于以可以被计算机访问的指令或数据结构的形式来携带或存储期望的程序代码的任何其它介质。如本文中所使用的磁盘和光盘包括CD、激光光盘、光学光盘、DVD、软盘和蓝光光盘,其中磁盘通常磁性地复制数据,而光盘使用激光光学地复制数据。此外,任何连接被适当地称为计算机可读介质。例如,如果使用同轴电缆、光纤电缆、双绞线、数字用户线(DSL)或诸如红外线、无线电和微波的无线技术从网站、服务器或其它远程源传输软件,则同轴电缆、光纤电缆、双绞线、DSL或诸如红外线、无线电和微波的无线技术包括在介质的定义中。上述的组合应当也包括在计算机可读介质的范围内。

在一个实施例中所描述的单个或集成的资源可以是复数或分布式的,并且在实施例中被描述为多个或分布式的资源可以被组合。因此,本教导的范围旨在仅由所附权利要求限定。尽管已经关于特定实施例描述了本发明,但是本领域技术人员将认识到,许多修改是可能的。例如,代理服务器可以具有本文未提及的附加功能。另外,本公开的实施例可以使用专用部件和/或可编程处理器和/或其它可编程装置的任何组合来实现。尽管上述实施例可以参考特定的硬件和软件部件,但是本领域技术人员应当理解,也可以使用硬件和/或软件部件的不同组合,并且被描述为在硬件中实现的特定操作也可以在软件中实现,反之亦然。

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