CN115916477A - 机器人演示学习的技能模板分发 - Google Patents
机器人演示学习的技能模板分发 Download PDFInfo
- Publication number
- CN115916477A CN115916477A CN202180044473.XA CN202180044473A CN115916477A CN 115916477 A CN115916477 A CN 115916477A CN 202180044473 A CN202180044473 A CN 202180044473A CN 115916477 A CN115916477 A CN 115916477A
- Authority
- CN
- China
- Prior art keywords
- skill
- template
- robot
- subtask
- demonstration
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1602—Programme controls characterised by the control system, structure, architecture
- B25J9/161—Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/0081—Programme-controlled manipulators with master teach-in means
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1628—Programme controls characterised by the control loop
- B25J9/163—Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1661—Programme controls characterised by programming, planning systems for manipulators characterised by task planning, object-oriented languages
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
- B25J9/1697—Vision controlled systems
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/42—Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
- G05B19/423—Teaching successive positions by walk-through, i.e. the tool head or end effector being grasped and guided directly, with or without servo-assistance, to follow a path
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/36—Nc in input of data, input key till input tape
- G05B2219/36442—Automatically teaching, teach by showing
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/39—Robotics, robotics to robotics hand
- G05B2219/39546—Map human grasps to manipulator grasps
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40116—Learn by operator observation, symbiosis, show, watch
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40391—Human to robot skill transfer
Abstract
用于分发用于机器人演示学习技能模板的方法、系统和装置,包括编码在计算机存储介质上的计算机程序。其中的一种方法包括通过技能模板分发系统从用户设备接收对可用技能模板的选择。所述技能模板分发系统提供技能模板,其中所述技能模板包括表示一个或多个任务的状态机的信息,并且其中所述技能模板指定所述一个或多个任务中哪些是需要本地演示数据的演示子任务。技能模板分发系统使用本地演示数据训练演示子任务的机器学习模型,以生成学习参数值。
Description
背景技术
本说明书涉及机器人,并且特别地涉及规划机器人运动。
机器人控制指控制机器人的物理运动以执行任务。例如,制造汽车的工业机器人可被编程以首先拾起汽车部件,然后将该汽车部件焊接到汽车的框架上。这些动作中的每一个本身可能包括机器人电机和执行器的几十或数百种单独的运动。
机器人规划通常需要大量的手动编程,以细致地规定机器人部件应如何移动,以完成特定的任务。手动编程乏味、耗时,且容易出错。此外,为一个工作单元手动生成的调度通常不能用于其他工作单元。在本说明书中,工作单元是机器将在其中运行的物理环境。工作单元具有特定的物理属性,例如,物理维度,其限制了机器人在工作单元内的移动方式。因此,用于一个工作单元的手动编程的调度可能与具有不同机器人、不同数量的机器人或不同物理维度的工作单元不兼容。
一些研究已经朝向使用机器学习控制算法,例如,强化学习,以控制机器人执行特定的任务。然而,机器人具有一些缺点,使传统的学习方法通常不令人满意。
首先,机器人自然有一个非常复杂的、高维的、连续的动作空间。因此,生成和评估所有可能的候选动作是计算昂贵的。其次,机器人控制是具有极其稀疏奖励的环境,因为大多数可能的动作都不会导致完成特定的任务。一种称为奖励成型的技术被用以缓解稀疏奖励问题,但它通常不可扩展到手工设计的奖励函数。
另外的复杂的问题是,使用机器人学习进行机器人控制的传统技术是极其脆弱的。这意味着,即使成功地训练了可行的模型,即便任务、机器人或环境发生了非常微小的变化,也会导致整个模型完全不可使用。
所有这些问题都意味着,使用诸如用于机器人控制的强化学习等技术的传统方式会导致计算昂贵的处理,根本难以起作用,无法很好地扩展,并且无法推广到其他情况。
发明内容
本说明书描述了有关用于基于演示的机器人学习的分发技能模板的技术。特别地,本说明书描述了技能模板分发系统能够如何分发技能模板,技能模板允许机器人被编程以使用利用演示数据学习的自定义控制策略来执行机器人任务。
在本说明书中,任务指涉及执行一个或多个子任务的特定的机器人的能力。例如,连接器插入任务是使得机器人将有线连接器插入接口的能力。此任务通常包括两个子任务:1)将机器人的工具移到接口的位置,以及2)将该连接器插入特定位置处的接口。
在本说明书中,子任务是由机器人使用工具执行的操作。例如,当机器人仅有一个工具时,子任务可以被描述为将由机器人作为整体来执行的操作。示例子任务包括焊接、点胶、部件定位和表面打磨。子任务通常与指示执行子任务所需的工具类型,以及在工作单元的坐标系统内执行子任务的位置相关联。
在本说明书中,技能模板(或简称为“模板”)是数据和软件的集合,允许机器人被调整为执行特定的任务。技能模板数据表示执行任务所需的一个或多个子任务,以及描述该技能的哪些子任务需要本地演示学习的信息以及将需要哪些感知流以确定成功或失败的信息。因此,技能模板可以定义需要本地演示学习的演示子任务、不需要本地演示学习的非演示子任务,或定义这两者。
这些技术对于传统难以使用机器学习控制的机器人任务尤其有利,例如,强化学习。这些任务包括那些涉及在工作空间中与物体物理接触,例如,打磨、连接和插入任务,以及布线。仅举几个示例。
本说明书中描述的主题的特定实施例可以实施,以实现下述优点中的一个或多个。使用本说明书中描述的演示数据进行学习,解决了传统强化学习方法的稀疏奖励和无法泛化问题。
系统可以使用视觉、本体感觉(关节)数据、触觉数据,以及任何其他特征执行任务,该任务允许系统迅速地适应特定的机器人模型且具有高精度。重点在“传感器丰富的机器人操纵”,与机器人中的最小感知的经典观点相反。一般来说,这意味着可以使用更便宜的机器人使用更短的时间完成同样的任务。
下文描述的技术允许机器学习技术迅速地适应于任何具有适当地安装的硬件抽象的适当的机器人。在典型的场景中,单个非专业人员可以在少于一天的设置时间内训练机器人执行技能模板。这在传统方法上是巨大的改进,传统方法可能需要专家团队在该问题上工作数周以设计奖励函数以及需要在非常巨大的数据中心花费数周的训练时间。这有效地允许了机器学习机器人控制广泛地分发给许多类型的机器人,以及甚至是系统从未见过的机器人。
这些技术可以有效地将机器人学习实现为服务,从而使得人们更好地使用该技术。这反过来使整个机器人工业更安全和更高效。
强化学习、使用机器学习的感知数据处理,和增强的阻抗/导纳控制的组合,尽管任务复杂,但将能够使得机器人技能在如工业应用所要求的非常高成功率下执行。
本说明书中的主题的一个或多个实施例的细节在下文的附图和说明书中列出。该主题的其他特征、方面和优点将从说明书、附图和权利要求中变得明显。
附图的简要说明
图1是示例演示学习系统的示意图。
图2A是使用基于本地演示数据的自定义控制策略执行子任务的示例系统的示意图。
图2B是使用本地演示数据执行子任务的另一个示例系统的示意图。
图2C是使用残余强化学习执行子任务的另一个示例系统的示意图。
图3A是用于结合来自多个不同传感器流的传感器数据的示例过程的流程图。
图3B是相机腕带的示意图。
图3C是相机腕带的另一个示例视图。
图3D是相机腕带的另一个示例视图。
图4示出了示例技能模板。
图5是用于配置机器人以使用技能模板执行技能的示例处理的流程图。
图6A是使用技能模板进行使用力为引导的任务的示例处理的流程图。
图6B是使用基于云的训练系统训练技能模板的示例处理的流程图。
图7是分发技能模板的示例系统的示意图。
图8是通过技能模板分发系统分发技能模板的示例过程的流程图。
在各附图中的相似的附图标记和型号指示相似的元素。
具体实施方式
图1是示例演示学习系统的示意图。系统100是可以实施本说明书中描述的基于演示的学习技术的系统的示例。
系统100包括多个功能组件,包括在线执行系统110,训练系统120,和机器人接口子系统160。这些组件中的每一个都可以作为安装在一个或多个地点的一个或多个计算机上的计算机程序实施,这些组件通过任何适当的通信网络,例如,内联网或互联网,或网络的组合耦合到彼此。
系统100在两个基本模式下操作以控制机器人170a-n:演示模式和执行模式。
在演示模式中,用户可以控制一个或多个机器人170a-n执行特定任务或子任务。在这样做的同时,在线执行系统110收集状态信息135和在线观测145以生成本地演示数据。演示数据收集器150是可以从状态信息135和在线观测145生成本地演示数据115的模块,然后在线执行系统110可以将其提供至训练系统120。然后,训练系统可以生成针对任务和执行任务的机器人二者的特定特征的自定义控制策略125。
在本说明书中,控制策略是为机器人生成一个或多个下一个动作的模块或子系统,以执行给定的观测输入。控制策略的输出可以影响一个或多个机器人组件的移动,例如,电机或执行器,或者由策略直接输出的命令,或通过机器人控制栈的机制由多个机器人组件使用的更高级别命令。因此,控制策略可以包括一个或多个将环境观测翻译至一个或多个动作的机器学习模型。
在本说明书中,本地演示数据是在用户控制机器人时收集的数据,以演示机器人可以如何通过致使机器人执行物理移动以执行特定任务。本地演示数据可以包括运动学数据,例如,关节位置、方向和角度。本地演示数据还可以包括传感器数据,例如,从一个或多个传感器收集的数据。传感器可以包括力传感器;视觉传感器,例如,相机、深度相机,和激光雷达;电子连接传感器;加速度传感器;音频传感器;陀螺仪;接触传感器;雷达传感器;和接近传感器,例如,红外接近传感器,电容接近传感器,或电感接近传感器,仅举几个示例。
典型地,本地演示数据是从一个或多个机器人获得的,这些机器人在演示模式下与控制机器人的用户非常接近。然而,用户与机器人之间的物理距离很近并非获取本地演示数据的必要条件。例如,用户可以通过远程用户接口从特定的机器人远程获取本地演示数据。
训练系统120是可以使用机器学习技术的计算机系统,它从本地演示数据115生成自定义控制策略125。训练系统120通常具有比在线执行系统110更多的计算资源。例如,训练系统120可以是具有数百或数千个计算节点的基于云端的计算系统。
为了生成自定义控制策略125,训练系统120可以首先获取或预生成任务的基本控制策略。基本控制策略是一种对特定任务而言,其预期效果足以使任何足够相似的机器人相对接近于能够执行该任务的控制策略。对于绝大多数任务,仅靠基本控制策略是无法足够精确地完成任务并取得足够可靠的成功。例如,连接和插入任务通常需要亚毫米级的精度,如果没有特定机器人的本地演示数据提供的具体细节,则无法获得这种精度。
针对特定任务的基本控制策略可以以各种方式生成。例如,基本控制策略可以手动编程,使用传统的强化学习技术进行训练,或使用本说明书中描述的基于演示的学习技术。所有这些技术都可以适用于在接收任务的本地演示数据之前预生成基本控制策略,因为在生成基本控制策略时,时间是较少的考虑因素。
在一些实施例中,训练系统从广义训练数据165生成基本控制策略。然而在线执行系统110收集的本地演示数据115通常特定于一个特定的机器人或一个特定的机器人模型,但与此相反,广义训练数据165可以从一个或多个其他机器人生成,这些机器人不需要是相同的模型、位于同一地点,或由同一制造商制造。例如,广义训练数据165可以从数十个或数百个或数千个具有不同特征和不同模型的不同机器人中离线生成。此外,广义训练数据165甚至不需要从物理机器人生成。例如,广义的训练数据可以包括从物理机器人的模拟中生成的数据。
因此,本地演示数据115是本地的,因为它特定于用户可以访问和操纵的特定机器人。因此本地演示数据115表示特定于机器人的数据,但也可以表示本地变量,例如,特定任务的具体特征以及特定工作环境的具体特征。
也可以使用在开发技能模板过程期间收集的系统演示数据定义基本控制策略。例如,与生成技能模板的实体相关联的工程师团队可以在远离系统100和/或与系统100无关联的设施中使用一个或多个机器人执行演示。用于生成系统演示数据的机器人也不需要是与工作单元170中的机器人170a-n相同的机器人或相同的机器人模型。在这种情况下,系统演示数据可用于引导基本控制策略的动作。然后,可以使用更计算昂贵和复杂的学习方法将基本控制策略调整为自定义控制策略。
使用本地演示数据调整基本控制策略具有高度理想的效果,即与生成基本控制策略相比,例如,通过收集系统演示数据或通过使用广义训练数据165进行训练,它相对快速。例如,用于特定任务的广义训练数据165的尺寸往往比本地演示数据115大几个数量级,因此,训练基本控制策略预计要比对特定机器人调整花费更多时间。例如,训练基本控制策略可能需要大量的计算资源,在一些实例下,具有数百或数千台机器的数据中心工作数天或数周从通用的训练数据中训练出基本控制策略。相反,使用本地演示数据115调整基本控制策略可能只需要几个小时。
类似地,收集系统演示数据定义基本控制策略可能需要比本地演示数据所需的更多的迭代。例如,为了定义基本控制策略,工程师团队可以演示1000个成功的任务和1000个不成功的任务。相反,充分调整所产生的基本控制策略可能仅需要50次成功的演示和50次不成功的演示。
因此,训练系统120可以使用本地演示数据115完善基本控制策略,以便为用于生成演示数据的特定机器人生成自定义控制策略125。自定义控制策略125调整基本控制策略,以考虑到特定机器人的特征以及任务的本地变量。使用本地演示数据训练自定义控制策略125的时间远少于训练基本控制策略所需的时间。例如,虽然训练基本控制策略可能需要数天或数周,但用户可以使用机器人只花1-2个小时生成本地演示数据115,然后可以上传到训练系统120。然后,训练系统120可以在比训练基本控制策略的时间短很多的时间(例如,可能仅一或两个小时)内生成自定义控制策略125。
在执行模式中,执行引擎130可以使用自定义控制策略125自动执行任务,无需任何用户干预。在线执行系统110可以使用自定义控制策略125生成将提供给机器人接口子系统160的命令155,该子系统在工作单元170中驱动一个或多个机器人,例如,机器人170a-n。在线执行系统110可以在工作单元170内消耗由机器人170a-n生成的状态信息135和由一个或多个进行观察的传感器171a-n进行的在线观察145。如图1所示,每个传感器171耦合到各自的机器人170。然而,传感器不需要与机器人一一对应,也不需要耦合到机器人。事实上,每个机器人可以具有多个传感器,而传感器可以安装在工作单元170中的固定或可移动表面上。
执行引擎130可以使用状态信息135和在线观察145作为从训练系统120接收的自定义控制策略125的输入。因此,机器人170a-n可以实时做出反应,根据它们的特定特征和任务的特定特征完成任务。
因此,使用本地演示数据调整控制策略会导致截然不同的用户体验。从用户的视角来看,训练机器人使用自定义控制策略非常精确地执行任务,包括生成本地演示数据和等待自定义控制策略的生成,是非常快速的过程,可能需要不到一天的设置时间。这个速度来自于利用预计算的基本控制策略。
这种安排与现有的机器人学习方法相比,引入了巨大的技术改进,现有的机器人学习方法通常需要数周的时间来测试和生成手工设计的奖励函数,以及数周的时间生成合适的训练数据,以及数周的时间来训练、测试和完善模型,使其适合工业生产。
此外,与传统的机器人强化学习不同,使用本地演示数据对机器人、任务和环境的特征中的微小扰动具有高度鲁棒性。如果公司购买了新的机器人模型,用户只需花一天时间为新的自定义控制策略生成新的本地演示数据。这与现有的强化学习方法相反,在现有的强化学习方法中,机器人的物理特性、任务或环境的任何变化都可能需要从头开始整个长达数周的过程。
为启动基于演示的学习过程,在线执行系统可以从培训系统120接收技能模板105。如上所述,技能模板105可以指定执行技能所需的一个或多个子任务的序列,哪些子任务需要本地演示学习,哪些子任务将需要哪些感知流,以及指定何时从执行技能模板的子任务过渡到下一个子任务的过渡条件。
如上所述,技能模板可以定义需要本地演示学习的演示子任务、不需要本地演示学习的非演示子任务,或两者。
演示子任务隐式地或显式地依赖基本控制策略,如上所述,基本控制策略可以从广义训练数据或系统演示数据中预计算出来。因此,技能模板可以包括用于模板中的每一个演示子任务的单独的基本控制策略,或基本控制策略的标识符。
技能模板还可以包括,对于每个演示子任务,需要使用本地演示数据调节演示子任务的软件模块。每个演示子任务可以依靠不同类型的机器学习模型,并可以使用用于调节的不同技术。例如,运动演示子任务可以在很大程度上依赖本地工作单元环境的相机图像,以便找到特定的任务目标。因此,运动演示子任务的调节程序可以更多地调节机器学习模型,以识别在本地演示数据中捕获的相机图像的特征。相反,插入演示子任务可以在很大程度上依赖感知连接接口的边缘的力反馈数据,并使用适当温柔的力量将连接器插入接口。因此,插入演示子任务的调节程序可以更多调节处理力感知和相应反馈的机器学习模型。换言之,即使技能模板中的子任务的底层模型是相同的,每个子任务也可以有其各自的调节程序,以不同的方式纳入本地演示数据。
非演示子任务可以与基本控制策略相关联,也可以不相关联。例如,非演示子任务可以简单地指定移动到特定的坐标位置。替代性地,非演示子任务可以与基本控制策略相关联,例如,从其他机器人计算出来的,指定关节应该如何使用传感器数据移动到特定的坐标位置。
技能模板的目的是为编程机器人提供广义的框架,以具有特定的任务能力。特别地,技能模板可以用于调整机器人,使其以相对较少的努力执行类似的任务。为特定的机器人和特定的环境调整技能模板,因此涉及对技能模板中的每一个演示子任务执行训练过程。为了简洁起见,这个过程可以被称为训练技能模板,即使可能涉及多个、单独训练的模型。
例如,用户可以下载连接器插入技能模板,该技能模板指定执行第一运动子任务,然后是连接器插入子任务。连接器插入技能模板还可以指定,第一子任务依赖于视觉感知流(例如,来自相机),而第二子任务依赖于力感知流(例如,来自力传感器)。连接器插入技能模板还可以指定,只有第二个子任务需要本地演示学习。这可能是因为将机器人移动到特定的位置,通常并不高度依赖于手头的任务情况或工作环境。然而,如果工作环境有紧凑的空间要求,模板也可以指定第一子任务需要本地演示学习,以便机器人能够快速学习以导航通过工作环境的紧凑空间要求。
为了使机器人具备连接器插入的技能,用户只需要指导机器人执行技能模板指示的需要本地演示数据的子任务。机器人将自动捕获本地演示数据,训练系统可以利用这些数据完善与连接器插入子任务相关联的基本控制策略。当自定义控制策略的训练完成后,机器人只需要下载最终训练的自定义控制策略,即可装备以执行该子任务。
值得注意的是,相同的技能模板可以用于许多不同种类的任务。例如,相同的连接器插入技能模板可用于装备机器人,以执行HDMI电缆插入或USB电缆插入,或执行二者。用户所需要的是演示这些不同的插入子任务,以完善正在学习的演示子任务的基本控制策略。如上所述,通常这个过程所需的计算能力和时间远低于从零开始开发或学习完整的控制策略。
此外,技能模板方法可以是跨硬件的(hardware agnostic)。这意味着,即使训练系统从未为特定机器人模型训练控制策略,技能模板也可以用来装备机器人以执行任务。因此,这项技术解决了使用强化学习控制机器人的许多问题。特别是,它解决了脆性问题,即使是非常小的硬件变化也需要从头开始重新学习控制策略,这是昂贵的和重复的工作。
为了支持收集本地演示数据,系统100还可以包括一个或多个UI设备180和一个或多个演示设备190。UI设备180可以帮助指导用户获得对生成自定义控制策略125最有利的本地演示数据。UI设备180可以包括教导用户执行或重复何种动作的用户界面,以及允许用户控制机器人而无需实际靠近机器人的增强现实设备。
演示设备190是对系统100的主要操作有辅助作用的设备。一般来说,演示设备190是允许用户向机器人演示技能而不引入无关的力数据到本地演示数据的设备。换言之,演示设备190可以减少用户的演示动作影响力传感器在执行期间的实际读数的可能性。
在操作中,机器人接口子系统160和在线执行系统110可以根据不同的时间限制来操作。在一些实施方案中,机器人接口子系统160是具有硬实时要求的实时软件控制系统。实时软件控制系统是要求在严格的时间要求内执行以实现正常操作的软件系统。时间要求通常指定,为系统避免进入故障状态,必须在特定的时间窗口内执行某些动作或产生输出。在故障状态下,系统可以中止执行或采取其他一些中断正常操作的动作。
在线执行系统110,另一方面,通常在操作中具有更多的灵活性。换言之,在线执行系统110可以,但不需要,在机器人接口子系统160运行的每个实时时间窗口内提供命令155。然而,为了提供做出基于传感器的反应的能力,在线执行系统110仍然可以在严格的时间要求下运行。在典型的系统中,机器人接口子系统160的实时要求要求机器人每5毫秒提供命令,而在线执行系统110的在线要求指定在线执行系统110应该每20毫秒向机器人接口子系统160提供命令155。然而,即使在在线时间窗口内没有收到这样的命令,机器人接口子系统160也不一定要进入故障状态。
因此,在本说明书中,术语在线是指运行的时间和刚度参数。时间窗口大于实时机器人接口子系统160的时间窗口,并且当时间约束没有得到满足时,通常具有更多的灵活性。在一些实施方案中,机器人接口子系统160提供了跨硬件的接口,以便由现场执行引擎150发出的命令155与多个不同版本的机器人兼容。在执行期间,机器人接口子系统160可以将状态信息135报告返回给在线执行系统110,以便现场执行系统150可以对机器人运动进行在线调整,例如,由于本地故障或其他未预料到的条件。机器人可以是实时机器人,这意味着机器人被编程为根据高度受限的时间表持续执行其命令。例如,每个机器人可以预期从机器人接口子系统160以特定的频率,例如,100Hz或1kHz发出命令。如果机器人没有收到预期的命令,机器人可以进入故障模式并停止运行。
图2A是用于使用基于本地演示数据的自定义控制策略执行子任务的示例系统200的示意图。通常,来自多个传感器260的数据通过多个单独训练的神经网络馈送,并组合成低维任务状态表示205。然后,低维表示205被用作调节控制策略210的输入,该策略被配置为生成将由机器人270执行的机器人命令235。因此,系统200可以通过修改子系统280实现对基本控制策略的修改,从而基于本地演示数据实施自定义控制策略。
传感器260可以包括生成感知数据流的感知传感器,感知数据流表示机器人或机器人工作单元中的目标的视觉特征。例如,为了达到更好的视觉能力,机器人工具可以配备多个相机,例如,可见光相机、红外相机和深度相机,仅举几个示例。
不同的感知数据流202可以由各自的卷积神经网络220a-n独立处理。每个感知数据流202可以对应于不同的感知传感器,例如,不同的相机或不同类型的相机。来自每个相机的数据可以由不同的各自卷积神经网络处理。
传感器260还包括一个或多个机器人状态传感器,其生成表示机器人或机器人部件的物理特性的机器人状态数据流204。例如,机器人状态数据流204可以表示机器人的或机器人各组件的力、扭矩、角度、位置、速度和加速度,仅举几个示例。机器人状态数据流204中的每一个可以由各自的深度神经网络230a-m处理。
修改子系统280可以具有并行处理传感器数据的任何任意数量的神经网络子系统。在一些实施方案中,该系统仅包括一个感知流和一个机器人状态数据流。
神经网络子系统的输出是任务状态表示205的各自部分,该任务状态表示累积地表示由机器人270执行的子任务的状态。在一些实施方案中,任务状态表示205是具有少于100个特征的低维表示,例如,10、30或50个特征。具有低维任务状态表示意味着有较少的模型参数需要学习,这进一步提高了本地演示数据可用于调整特定子任务的速度。
然后,任务状态表示205用作调节控制策略210的输入。在执行期间,调节控制策略210从输入的任务状态表示205生成机器人指令235,然后由机器人270执行。
在训练期间,训练引擎240通过使用本地演示动作275的表示以及由调节控制策略210生成的建议命令245来生成参数校正255。然后,训练引擎可以使用参数校正255来完善调节控制策略210,以便在未来的迭代中由调节控制策略210生成的命令将更接近于本地演示动作275。
在训练过程中,调节控制策略210可以使用与训练的演示子任务相关联的基本控制策略进行初始化。调节控制策略210可以使用本地演示动作275迭代地更新。训练引擎240可以使用任何适当的机器学习技术以调整调节控制策略210,例如,监督学习、回归或强化学习。当调节控制策略210使用神经网络实现时,参数校正235可以通过网络反向传播,以便在未来的迭代中,输出建议命令245更接近于本地演示动作275。
如上所述,技能模板的每个子任务可以具有不同的训练优先级,即使它们的底层模型的架构是相同或相似的。因此,在一些实施方案中,训练引擎240可以选择地以指定如何更新调节控制策略210的子任务超参数275作为输入。例如,子任务超参数可以指示视觉传感非常重要。因此,训练引擎240可以更积极地校正调节控制策略210,以便与用本地演示动作275捕获的相机数据相一致。在一些实施方案中,子任务超参数275标识用于每个不同子任务的单独训练模块。
图2B是使用本地演示数据执行子任务的另一个示例系统的示意图。在本示例中,该系统不是仅具有单一调节控制策略,而是包括多个独立的控制策略210a-n。每个控制策略210a-n可以使用任务状态表示205来生成各自的机器人子指令234a-n。然后,系统可以结合这些子命令,生成由机器人270执行的单一的机器人命令235。
拥有多个单独可调节的控制策略在传感器丰富的环境中是有利的,例如,可以使用来自具有不同更新速率的多个传感器的数据。例如,不同的控制策略210a-210n可以在不同的更新速率下执行,这使得系统可以将简单和更复杂的控制算法纳入相同的系统中。例如,一个控制策略可以专注于使用当前力数据的机器人命令,其以比图像数据更快的更新速率更新。同时,另一个控制策略可以专注于使用当前图像数据的机器人命令,其可能需要更复杂的图像识别算法,而这些算法可能具有非确定性的运行时间。结果是既能快速地调整力的数据,又能适应图像数据而不放慢其对力的数据的调整的系统。在训练期间,子任务超参数可以为每个单独的可调节策略210-an标识单独的训练程序。
图2C是使用残余强化学习执行子任务的另一个示例系统的示意图。在本示例中,该系统不是具有生成机器人命令的单一调节控制策略,而是使用残余强化学习子系统212来生成校正动作225,该动作修改了由基本控制策略250生成的基本动作215。
在这个示例中,基本控制策略250将来自一个或多个传感器260的传感器数据245作为输入,并生成基本动作215。如上所述,基本控制策略250的输出可以是一个或多个命令,这些命令被机器人270的各个组件所消耗。
在执行期间,强化学习子系统212从输入的任务状态表示205中生成校正动作225,以与基本动作215相结合。校正动作225是校正性的,因为它从基本控制策略250中修改基础动作215。然后,生成的机器人命令235可以由机器人270执行。
传统的强化学习过程使用了两个阶段:(1)行动阶段,系统生成新的候选动作和(2)训练阶段,调整模型的权重,使每个候选动作的累积奖励最大化。如上文的背景部分中所述,使用机器人强化学习的传统方法遭受着严重的稀疏奖励问题,这意味着在行动阶段随机生成的动作极其地不可能通过任务的奖励函数获得任何类型的奖励。
但与传统的强化学习不同,使用本地演示数据可以提供所有关于在行动阶段期间选择哪个动作的信息。换言之,本地演示数据可以提供一系列的动作,因此,动作不需要随机生成。这种技术大大限制了问题空间,并使模型的收敛更快。
在训练期间,本地演示数据被用于驱动机器人270。换言之,从校正动作225生成机器人命令235以及基础动作215需要被用于驱动机器人270。在每个时间步长中,强化学习子系统210接收到用于物理移动机器人270的演示动作的表示。强化学习子系统210还接收由基本控制策略250生成的基本动作215。
然后,强化学习子系统210可以通过将演示动作和基本动作215比较来生成重建的校正动作。强化学习子系统210也可以使用奖励函数生成重建校正动作的实际奖励值。
强化学习子系统210还可以生成由强化学习模型的当前状态生成的预测校正动作,以及使用预测校正动作将会生成的预测奖励值。预测校正动作是当前任务状态表示205的强化学习子系统210将会生成的校正动作。
然后,强化学习子系统210可以使用预测校正动作、预测奖励值、重建校正动作和实际奖励值来计算强化模型的权重更新。在训练数据的迭代过程中,权重更新用于将预测校正动作调整为由演示动作反映的重建校正动作。强化学习子系统210可以根据任何适当的奖励最大化程序来计算权重更新。
图2A-C所示出的架构提供的一种能力是能够为具有不同更新率的传感器流结合多个不同的模型。一些实时机器人具有非常严格的控制回路要求,因此,它们可以配备生成高频更新的力传感器和扭矩传感器,例如,以100、1000或10,000Hz。相反,很少有相机或深度摄像机的工作频率超过60Hz。
图2A-C所示出的架构具有多个平行且独立的传感器流,以及,选择地具有多个不同的控制策略,允许组合这些不同的数据速率。
图3A是用于结合来自多个不同传感器流的传感器数据的示例过程的流程图。该过程可由在一个或多个地点具有一个或多个计算机的计算机系统执行,例如,图1的系统100。该过程被描述为由一个或多个计算机的系统执行。
系统选择基本更新速率(302)。基本更新速率将规定学习子系统,例如,调节控制策略210生成驱动机器人的命令的速率。在一些实施方案中,系统基于机器人的最小实时更新速率选择基本更新速率。替代性地,系统可以基于以最快速度生成数据的传感器选择基本更新速率。
系统以各自的更新速率生成任务状态表示的各个部分(304)。由于神经网络子系统可以独立且并行地运行,神经网络子系统可以以其各自传感器的速率所规定的速率重复生成任务状态表示的各个部分。
为了增强系统的独立性和并行性,在一些实施方案中,系统维护多个独立的存储设备或存储分区,任务状态表示的不同部分将被写入这些设备。这可以防止不同的神经网络子系统在以高频率生成其输出时竞争内存访问。
系统以基本更新速率重复地生成任务状态表示(306)。在由基本更新速率定义的每个时间周期期间,系统可以通过读取由多个神经网络子系统输出的最近更新的传感器数据生成新版本的任务状态表示。例如,系统可以从多个独立的存储设备或存储分区中读取,以生成完整的任务状态表示。值得注意的是,这意味着一些神经网络子系统生成的数据是以与它的消耗速率不同生成速率生成。例如,对于具有较慢更新速率的传感器,数据可以以比它的生成速率快得多的速率消耗。
系统重复地使用任务状态表示,以基本更新速率生成机器人命令(308)。通过使用独立且平行的神经网络子系统,系统可以确保以足够快的更新速率生成命令,以便为具有硬实时约束的机器人提供动力。
这种安排也意味着系统可以同时提供(feed)多个具有不同更新频率的独立控制算法。例如,如上文关于图2B的描述,系统可以包括多个独立的控制策略,每个策略生成子命令,而不是系统生成单一的命令。然后,系统可以通过将子命令组合成最终、混合机器人命令来生成最终的命令,该命令表示多个不同控制算法的输出。
例如,视觉控制算法可以使机器人更快地朝着识别的物体移动。同时,力控制算法可以使机器人沿着它所接触的表面进行跟踪。即使视觉控制算法通常以比力控制算法慢得多的速度更新,系统仍然可以使用图2A-C中描绘的架构,以基本更新速率同时为两者提供动力。
图2A-C所示出的架构为扩展系统的能力提供了许多机会,而无需进行重大的重新设计。多个平行且独立的数据流允许实施对本地演示学习有利的机器学习功能。
例如,为了使更彻底地调整机器人在特定环境中的表现,集成考虑到本地环境数据的传感器可能是高度有利的。
使用本地环境数据的一个示例是考虑电连接的函数。电连接可以作为各种挑战性机器人任务的奖励因素,这些任务涉及在两个组件之间建立电流。这些任务包括将电缆插入插孔、将电源插头插入电源插座,以及拧入灯泡等,仅举几个示例。
为了将电连接集成到修改子系统280中,可以在工作单元中配置电传感器,例如可以是传感器260中的一个,以探测电流何时建立。然后,电传感器的输出可以由单独的神经网络子系统处理,其结果可以被添加到任务状态表示205。替代性地,电传感器的输出可以作为输入直接提供给实施调节控制策略的系统或强化学习子系统。
使用本地环境数据的另一个示例是考虑某些类型的音频数据的函数。例如,许多连接器的插入任务在成功完成时有非常独特的声音。因此,系统可以使用麦克风来捕捉音频并且音频处理神经网络的输出可以添加到任务状态表示中。然后,该系统可以使用考虑连接器插入声音的特定声学特征的函数,这迫使学习子系统学习成功的连接器插入的声音是什么样的。
图3B是相机腕带的示意图。相机腕带是丰富的类型仪器的示例,可用于使用上述架构进行高精度演示学习。图3B是机器人手臂末端的工具最接近观看者的透视图。
在这个示例中,相机腕带被安装在机器臂335上,就在位于机器臂335的最末端的工具345之前。相机腕带使用箍345安装在机器臂335上,并且具有四个径向安装的相机310a-310d。
箍345可以具有任何适当的凸起形状,允许箍345可以牢固地安装在机器臂的末端。箍345可以被设计成添加到由第三方制造商制造的机器人上。例如,分发技能模板的系统也可以分发相机腕带,以便帮助非专业用户让模型快速收敛。替代性地或另外,在制造过程期间,箍345可以由制造商集成到机器臂中。
箍345可以具有椭圆的形状,例如圆形或卵形,或者矩形。箍345可以由单一的固体体积形成,在工具345被固定之前被固定在机器臂的末端。或者箍345可以由紧固机构,例如搭扣或闩锁,打开和安全地关闭。箍345可以由任何适当的材料构成,以提供与机器人手臂的安全连接,例如,硬塑料;玻璃纤维;织物;或金属,例如,铝或钢。
每个相机310a-d都具有将传感器、其他电子器件和各自的镜头315a-d固定在箍345上的各自的底座325a-d。箍345还可以包括一个或多个照亮相机310a-d所捕获的体积的灯355a-b。一般来说,摄像机310a-d被安排以捕捉工具345或工具345以外的工作体积的不同的各自视图。
示例的相机腕带具有四个径向安装的摄像头,但可以使用任何适当数量的摄像头,例如,2、5或10个摄像头。如上所述,修改子系统280的架构允许任意数量的传感器流包括在任务状态表示中。例如,与机器人相关联的计算机系统可以实现不同的各自卷积神经网络,以并行地处理由每个相机310a-d生成的传感器数据。然后,可以结合经过处理的相机输出以生成任务状态表示,如上所述可以用来为在不同频率运行的多个控制算法提供动力。如上所述,经过处理的相机输出可以与其他网络的输出相结合,这些网络独立处理力传感器、扭矩传感器、位置传感器、速度传感器或触觉传感器、或这些传感器的任何适当组合的输出。
一般来说,在演示学习过程中使用相机腕带会导致模型更快地收敛,因为系统将能够识别更多位置和方向的奖励条件。因此,使用相机腕带可以有效地进一步减少用本地演示数据来调整基本控制策略所需的训练时间。
图3C是相机腕带的另一个示例视图。图3C示出了可用于实施相机腕带的进一步的仪器设备,包括可用于将相机的输出提供给各自卷积神经网络的电缆385a-d。图3C还示出了额外的深度相机375还可以如何安装在箍345上。如上所述,该系统的结构允许任何其他传感器集成到感知系统中,因此,例如,单独训练的卷积神经网络可以处理深度相机375的输出,以生成任务状态表示的另一部分。
图3D是相机腕带的另一个示例视图。图3D是相机腕带的透视图,该腕带有金属箍和四个径向安装的摄像头317a-d。
有了这些使用本地演示数据来完善控制策略的基本机制,用户可以编排任务以建立跨硬件的技能模板,这些模板可以被下载并用于在许多不同种类的机器人和许多不同种类的环境中快速部署任务。
图4示出了示例技能模板400。一般来说,技能模板定义了需要执行任务的多个子任务的状态机。值得注意的是,技能模板是可分层组合的,意味着每个子任务可以是独立的任务或另一个技能模板。
技能模板的每个子任务都具有子任务ID,并且包括子任务元数据,包括该子任务是演示子任务还是非演示子任务,或者该子任务是否指另一个应该单独训练的技能模板。子任务元数据还可以指示哪些传感器流将被用于执行子任务。作为演示子任务的子任务将额外地包括基本策略id,该id标识将与通过从本地演示数据中学习的校正动作学习相结合的基本策略。每个演示子任务也将显式或隐式地与一个或多个控制子任务的训练过程的软件模块相关联。
技能模板的每个子任务也具有一个或多个过渡条件,指定应该过渡到技能模板中的另一个任务的条件。过渡条件也可以称为子任务的子任务目标。
图4中的示例示出了用于执行任务的技能模板,该任务在传统的机器人学习技术中是众所周知的难以实现。该任务是抓取和连接插入任务,它要求机器人找到在工作单元中的电线,并将电线一端的连接器插入也在工作单元中的插座。这个问题很难用传统的强化学习技术来归纳,因为电线具有许多不同的纹理、直径和颜色。此外,如果该技能的抓取子任务不成功,传统的强化学习技术不能告知机器人下一步该怎么做或可以如何取得进展。
技能模板400包括四个子任务,在图4中被表示为定义状态机的图的节点。在实践中,图4中的所有信息可以以任何适当的格式表示,例如,作为纯文本配置文件或关系数据库中的记录。替代性地或此外,用户界面设备可以生成图形技能模板编辑器,允许用户通过图形用户界面来定义技能模板。
技能模板400中的第一子任务是移动子任务410。移动子任务410设计为定位在工作单元中的电线,这要求将机器人从初始位置移动到电线的预期位置,例如,由装配线中的前一个机器人放置。从一个位置移动到下一个位置通常不非常依赖于机器人的本地特征,因此,移动子任务410的元数据指定该子任务是非演示子任务。运动子任务410的元数据还指定需要相机流以为定位电线。
移动子任务410还指定“获得电线视觉”的过渡条件405,它指示机器人何时应该过渡到技能模板中的下一个子任务。
技能模板400中的下一个子任务是抓取子任务420。抓取子任务420被设计为抓取工作单元中的电线。这个子任务高度依赖于电线的特性和机器人的特性,特别是用于抓取电线的工具。因此,抓取子任务420被指定作为需要用本地演示数据细化的演示子任务。抓取子任务420因此也与基本策略id相关联,该id标识了先前生成的通常用于抓取电线的基本控制策略。
抓取子任务420还指定相机流和力传感器流都需要执行该子任务。
抓取子任务420还包括三个过渡条件。第一个过渡条件,即“失去电线视觉”过渡条件415,是在机器人失去与电线的视觉接触时触发的。这可能发生,例如,当电线在工作单元中被意外地移动时,例如,被人类或另一个机器人移动。在这种情况下,机器人会过渡回到移动子任务410。
抓取子任务420的第二个过渡条件,即“抓取失败”过渡条件425,在机器人试图抓取电线但失败时被触发。在这种场景,机器人可以简单地回退并再次尝试抓取子任务420。
抓取子任务420的第三个过渡条件,即“抓取成功”过渡条件435,是在机器人尝试抓取电线并成功时触发的。
演示子任务还可以指示哪些过渡条件需要本地演示数据。例如,特定的子任务可以指示所有三个过渡条件都需要本地演示数据。因此,用户可以演示如何抓取成功,演示抓取失败,以及演示机器人失去电线的视觉。
技能模板400中的下一个子任务是第二移动子任务430。移动子任务430被设计为将抓取的电线移动到工作单元中靠近插座的位置。在许多用户希望机器人能够执行的连接和插入的情况下,插座在高度受限的空间中,例如,在正在组装的洗碗机、电视或微波炉的内部。因为在那个高度受限的空间中的移动高度依赖于子任务和工作单元,所以第二个移动任务430被指定为演示子任务,尽管它仅涉及从工作单元的一个位置移动到另一个位置。因此,移动子任务可以是演示子任务,也可以是非演示子任务,取决于技能的要求。
尽管第二运动子任务430被指示是示范子任务,但第二运动子任务430未指定任何基本策略id。这是因为一些子任务高度依赖于包括只会妨碍模型的收敛的基本策略的本地工作单元。例如,如果第二移动任务430要求在电器内以非常特殊的方向移动机器人,那么用于移动的广义基本策略将没有帮助。因此,用户可以执行细化处理,以生成本地演示数据,演示机器人应该如何通过工作单元移动,以到达设备内部的特定方向。
第二运动子任务430包括两个过渡条件445和485。当在相机流与插座视觉接触时,第一个“获取插座视觉”过渡条件445被触发。
如果机器人在向插座移动时碰巧掉落电线,第二个“掉落电线”过渡条件485被触发。在这种情况下,技能模板400指定,机器人将需要回到运动子任务1,以便重新开始技能。技能模板中的这些过渡条件为机器人提供了传统强化学习技术无法提供的内置鲁棒性和动态反应水平。
技能模板400中的最后一个子任务是插入子任务440。插入子任务440被设计为将被抓住的电线的连接器插入插座中。插入子任务440高度依赖于电线的类型和插座的类型,因此,技能模板400指示,插入子任务440是通常与插入子任务的有关的基本策略id相关联的演示子任务。插入子任务440还指示,该子任务同时需要相机流和力传感器流。
插入子任务440包括三个过渡条件。第一个“插入失败”过渡条件465在因任何原因插入失败时被触发,并指定再次尝试插入。第二个“丢失插座的视觉”过渡条件455在插座碰巧移出相机的视线时被触发,并再次指定在高度受限的空间内移动电线到插座的位置。最后,“掉落电线”过渡条件475是在执行插入任务时掉落电线时触发的。在这种情况下,技能模板400指定要一直回到第一移动子任务410。
图4所示的技能模板的主要优点之一是其开发者的可组合性。这意味着新的技能模板可以由已经开发的子任务组合。这种功能性还包括分层可组合性,这意味着特定的技能模板内的每个子任务都可以引用另一个技能模板。
例如,在替代性的实施方案中,插入子任务440实际上可以引用定义了多个精细控制运动的状态机插入技能模板。例如,插入技能模板可以包括第一运动子任务,其目标是尽可能精确地将连接器与插座对齐,第二运动子任务的目标是实现连接器和插座的侧面之间的接触,以及第三运动子任务的目标是通过使用插座的侧面作为力引导实现完全连接。
以及进一步的技能模板可以由技能模板400分层组成。例如,技能模板400可以是组装电子电器所需的一组更复杂的子任务中的一小块。整个技能模板可以具有多个连接器插入子任务,每个都引用技能模板来实现该子任务,例如,技能模板400。
图5是用于配置机器人以使用技能模板执行技能的示例处理的流程图。该处理可由在一个或多个地点的具有一个或多个计算机的计算机系统执行,例如,图1的系统100。该处理将被描述为由一个或多个计算机的系统执行。
系统接收技能模板(510)。如上所述,技能模板定义了具有多个子任务的状态机,以及定义了机器人何时应该从执行一个任务过渡到下一个任务的过渡条件。此外,技能模板可以定义哪些任务是需要使用本地演示数据细化的演示子任务。
系统获得技能模板的演示子任务的基本控制策略(520)。该基本控制策略可以是从多个不同的机器人模型生成的广义的控制策略。
系统接收演示子任务的本地演示数据(530)。用户可以使用输入设备或用户接口,使机器人在多次迭代中执行演示子任务。在这个处理期间,系统自动生成执行子任务的本地演示数据。
系统训练演示子任务的机器学习模型(540)。如上所述,机器学习模型可以被配置为为一个或多个输入传感器流生成将由机器人执行的命令,并且机器学习模型可以使用本地演示数据调节。在一些实施方案中,机器学习模型是残余强化学习模型,它生成校正动作,与由基本控制策略生成的基本动作相结合。
系统在机器人上执行技能模板(550)。在训练所有演示子任务后,系统可以使用技能模板使机器人完全执行任务。在这个处理期间,机器人将使用细化的演示子任务,这些子任务是使用本地演示数据特别地为机器人的硬件和工作环境定制的。
图6A是使用技能模板进行使用力为引导的任务的示例处理的流程图。上面描述的技能模板安排提供了相对容易的方式生成由多个高度复杂的子任务组成的非常复杂的任务。连接器插入任务中的一个这样的任务示例,该任务使用考虑力数据作为引导。这允许机器人达到比其他方式所能达到的更高的精度。该处理可由在一个或多个位置具有一个或多个计算机的计算机系统执行,例如,图1的系统100。该处理将被描述为由一个或多个计算机的系统执行。
系统接收具有要求在机器人持有的物体和机器人环境中的表面之间建立物理接触力的过渡条件的技能模板(602)。如上所述,技能模板可以定义具有多个任务的状态机。过渡条件可以定义状态机的第一子任务和第二子任务之间的过渡。
例如,第一子任务可以是移动子任务,第二子任务可以是插入子任务。过渡条件可以指定,由机器人持有并要插入插座的连接器需要与插座的边缘产生物理接触力。
系统接收用于过渡的本地演示数据(604)。换言之,系统可以要求用户演示第一子任务和第二子任务之间的过渡。系统还可以要求用户演示失败场景。一个这样的失败场景可以失去与插座边缘的物理接触力。如果发生这种情况,技能模板可以指定返回到模板的第一运动子任务,以便机器人可以如过渡条件的指定重新建立物理接触力。
系统使用本地演示数据训练机器学习模型(606)。如上所述,通过训练,系统学习避免导致物理接触力损失的动作,并且学习选择可能在整个第二任务中保持物理接触力的动作。
系统在机器人上执行训练的技能模板(608)。这使得机器人自动执行技能模板所定义的子任务和过渡。对于连接和插入任务,例如,本地演示数据可以使机器人高度适应插入一种特定的连接器。
图6B是使用基于云的训练系统训练技能模板的示例处理的流程图。一般来说,系统可以在本地生成所有的演示数据,然后将演示数据上传到基于云的训练系统,以训练技能模板的所有演示子任务。该处理可以由计算机系统执行,该系统在一个或多个地点具有一个或多个计算机,例如,图1的系统100。该处理将被描述为由一个或多个计算机的系统执行。
系统接收技能模板(610)。例如,在线执行系统可以从基于云的训练系统下载技能模板,该系统将训练技能模板的演示子任务,或者从另一个计算机系统下载。
系统标识技能模板定义的一个或多个演示子任务(620)。如上所述,技能模板中定义的每个子任务可以与指示该子任务是演示子任务还是非演示子任务的元数据相关联。
系统为一个或多个演示子任务中的每一个生成各自的本地演示数据集(630)。如上所述,系统可以实例化并部署单独的任务系统,在用户操纵机器人在本地工作单元中执行子任务时,这些任务系统的每个生成本地演示数据。任务状态表示可以以子任务的基本速率生成,无论为任务状态表示贡献数据的传感器的更新速率是多少。这为存储和组织本地演示数据提供了方便的方式,而不是生成许多不同的必须在以后都以某种方式进行协调的传感器数据集。
该系统将本地演示数据集上传到基于云的训练系统(640)。大多数针对现实世界任务的采用机器人的设施都没有适合训练复杂机器学习模型的现场数据中心。因此,虽然本地演示数据可以由与将执行任务的机器人共址的系统现场收集,但实际的模型参数可以由基于云的训练系统生成,该系统仅能通过互联网或其他计算机网络访问。
如上所述,本地演示数据的尺寸预计将比用于训练基本控制策略的数据尺寸小几个数量级。因此,尽管本地演示数据可能很大,但上传负担在合理的时间内是可管理的,例如,几分钟到一个小时的上传时间。
在基于云的训练系统中为每组本地演示数据生成各自的训练模型参数(650)。如上所述,训练系统可以训练学习系统以生成机器人命令,该命令可以是,例如,从校正由基本控制策略生成的基本动作的校正动作组合。作为这个处理的一部分,训练系统可以为每个演示子任务获得各自的基本控制策略,可以是本地的,也可以是来自另一个计算机系统的,该计算机系统可以是发布任务或技能模板的第三方计算机系统。
基于云的训练系统通常会比在线执行系统拥有更多的计算功率。因此,虽然在训练每个演示子任务涉及巨大的计算负担,但这些操作可以在基于云的训练系统上大规模地并行化。因此,在典型的场景中,在基于云的训练系统上,从本地演示数据训技能模板所需的时间不超过几个小时。
系统接收由基于云的训练系统生成的训练的模型参数(660)。训练的模型参数的尺寸通常比特定子任务的本地演示数据的尺寸小得多,因此,在模型训练后,下载训练的参数所需的时间可以忽略不计。
系统使用由基于云的训练系统生成的训练的模型参数来执行技能模板(670)。作为这个处理的一部分,系统还可以下载演示子任务的基本控制策略,例如,从训练系统、从其原始来源,或从另一个来源下载。然后,训练的模型参数可以用来生成机器人执行的命令。在演示子任务的强化学习系统中,参数可用于生成修改由基本控制策略所生成的基本动作的校正动作。然后,在线执行系统可以重复发布产生的机器人命令,以驱动机器人执行特定的任务。
图6B中描述的处理可以由一人团队在一天内完成,让机器人以对其环境定制的方式执行高度精确的技能。这是对传统的手工编程方法或甚至传统的强化学习方法的巨大改进,传统方法需要许多工程师团队工作数周或数月,设计、测试和训练模型,而这些模型不能很好地推广到其他场景。
图7是分发技能模板的示例系统700的示意图。如上所述,技能模板提供了将机器人任务快速调整到广泛的机器人模型的能力。这意味着系统可以使创建技能模板的处理普及化,并且将技能模板分发给由附属的或非附属的(unaffiliated)实体维护的多个潜在机器人安装。
系统包括技能模板分发系统710,其是计算机系统,该系统是维护技能模板集合760中定义的演示子任务的技能模板集合780和基本控制策略集合790。
为了训练技能模板、基本控制策略或两者,技能模板分发系统710与训练系统720通信。技能模板分发系统710也可以选择地与机器人执行系统730通信,该机器人执行系统具有一个或多个机器人,用于开发和测试将被添加到技能模板集合760的新技能模板。
在操作中,在步骤1,一个或多个技能模板开发者740可以将技能模板705提供给技能模板分发系统710。每个技能模板开发者740可以是实体,例如,设计用于完成特定机器人技能的技能模板的个体、团队或组织。每个技能模板开发者740可以附属于或受雇于操作技能模板分发系统的实体710。替代性地或此外,技能模板开发者740可以是仅向技能模板分发系统710提供技能模板定义705的第三方实体。
技能模板开发者740可以或不可以访问物理机器人以生成基本控制策略。因此,技能模板开发者740可以或可以不为技能模板定义705提供相应的基本控制策略。
本说明书中描述的技能模板的一个主要优点是它们是可组合的,这意味着可以从单独子任务中表示任意复杂的行为。例如,可组合技能模板的一个用例是家具组装。预制家具通常是用几乎相同的紧固硬件组装的。因此,技能模板可以由与制造家具的实体相关联的或受雇于该实体的开发者组装。该技能模板可以多次重复使用与操作紧固硬件有关的演示子任务。因此,非常复杂的技能模板可以由技能开发者开发,这些技能模板可以用于使机器人自动组装整件家具。
此外,技能模板的可组合性简化了为特定任务进行修改或推送新更新的处理。例如,与家具制造商相关的技能开发者可以在每次发布新版本的家具时推送一个新的技能模板。然后,各个商店可以下载技能模板,并调节其特定的机器人模型,以便以非常迅速地调整机器人使其自动地组装家具。
在接收技能模板后,在步骤2,技能模板分发系统710可以为需要执行任务的每个演示子任务生成或获得各自的基础控制策略715。如上文参照图1所述,基本控制策略可以从演示数据中获得,也可以从广义的训练数据中学习。因此,技能模板分发系统710可以使用训练系统720,其可以是本地或远程基于云的计算机系统,以生成特定技能的基本控制策略715。然后,技能模板分发系统可以将技能模板705添加到技能模板集合780,并将基本控制策略715添加到基本控制策略集合790。作为处理的一部分,技能模板分发系统710将技能模板中的每一个演示子任务与基本控制策略790的集合中对应的基本控制策略联系起来。
然后,技能模板分发系统710可以使技能模板的收集可供任何适当的机器人安装使用。世界上有许多工业机器人设施缺乏工程人员、资源和计算能力要求尝试实施强化学习。但是,如上所述,通过简单地从技能模板分发系统710下载技能模板并训练技能模板,这种能力就成为可能。在一些实施方案中,机器人设施的团队首先安装低级控制软件,使机器人的硬件与技能模板的动作兼容。低级控制软件可以被组织为具有多个层级的跨硬件的软件栈,在一个方向上增加硬件的专用性,并在另一个方向上增加软件的抽象性。因此,有可能只有软件栈的最低的一个或两个层级与特定的机器人模型具体相关,而技能模板分发系统710也可以使这种层级的实施可用于许多不同种类的机器人。下面将更详细地描述跨硬件的软件控制栈的架构。
在图7所示出的示例中,机器人设施780下载并训练技能模板,以在一个或多个本地机器人上部署技能。所描述的操作应理解为由安装在机器人设施780的一个或多个计算机执行。涉及用户输入的操作应理解为使用适当的用户设备执行,例如,手机、平板电脑,或膝上型电脑或台式电脑。
因此,在步骤3,机器人设施780的用户可以向技能模板分发系统710提供可用技能模板的请求725。作为响应,在步骤4,技能模板分发系统710可以将技能市场界面735提供回给工业机器人设施。在一些实施方案中,技能市场界面735可以根据特定的机器人类型手动地或自动地过滤。例如,用户可以指定在机器人设施780中安装了什么机器人模型,而技能模板分发系统710可以过滤技能模板,以便在界面735中仅提供与特定机器人类型兼容的技能模板。在这种上下文中,技能市场界面735是指由技能模板分发系统710提供的软件机制、应用程序或工具,允许用户选择将训练的技能模板,以便在一个或多个机器人上部署技能。因此,技能市场界面735可以使用任何适当的用户界面前端来实现。例如,技能市场界面735可以是命令行界面或图形用户界面。技能市场不一定意味着金融交易,尽管一些技能市场可以要求通过支付,以便用户下载和/或训练技能模板。
在步骤5,机器人设施780的用户可以提供技能模板选择745,而作为响应,在步骤6,技能模板分发系统710可以提供技能模板755。如上所述,技能模板755定义了任务的状态机,并指示哪些是需要本地演示数据的演示子任务。技能模板755还可以包括软件模块,允许根据机器人设施780的本地特征和机器人来调节基本控制策略。
在步骤7,机器人设施780的用户将从演示任务中收集的本地演示数据765上传到位于机器人设施780的现场机器人。通常情况下,工业机器人设施780的工程师一般不会被期待为机器学习专家,甚至不会被期待为获取本地演示数据的专家。因此,技能模板分发系统710可以提供各种软件和硬件工具,以方便收集最有效地训练技能模板所需的本地演示数据。帮助非专家用户收集本地演示数据的硬件和软件工具的示例将在下面详细描述。
在步骤8,技能模板分发系统710将本地演示数据765提供给训练系统720,训练系统720为每个演示子任务训练各自的模型,该模型可以细化演示子任务的基本控制策略。
在步骤9,训练系统720将训练的模型参数775提供回技能模板分发系统710。
在步骤10,技能模板分发系统710向工业机器人设施780提供用于所选技能模板755的演示子任务的基本控制策略和训练的模型参数785。
此时,机器人设施780可以执行训练的技能模板,以使机器人自动地并根据技能模板所定义的状态机执行技能的任务。因为技能模板已经基于本地演示数据自定义,所以机器人有望在机器人设施780的环境中以高精确度执行技能。而且,如上所述,对于工业机器人设施780的单一非专业人员而言,从步骤3到步骤10的整个过程通常需要不到一天的设置时间。这与使用机器人强化学习的传统方法形成鲜明对比,后者需要由许多高度专业化的专家工程师团队进行数周的设计、培训和测试。
技能模板分发系统的另一个用例是具有多个生产产品的工厂的组织,但其没有完全相同的机器人模型。因此,技能模板分发710系统可以使用一个或多个相应的基本控制策略生成组装产品的技能模板。然后,技能模板分发系统可以将技能模板分发给所有的工厂,每个工厂可以利用在工厂收集到的本地演示数据,快速地为其特定的机器人模型调节技能模板。因此,所有工厂可以在不到一天的设置时间内启动并运行。
技能模板分发系统的另一个用例是具有多个零售点的组织,销售需要消费者组装的产品。组织可以通过向所有零售点分发技能模板,为消费者提供现场机器人自动组装产品的选择。然后,每个零售点可以根据自己的特定机器人模型和可能的零售点的环境调节技能模板。因此,在新产品的技能模板被分发时,每个零售点都可以非常迅速地提供新产品的自动机器人组装。
然而,技能模板分发系统的另一个用例是制造商分发家用机器人的技能模板。产品的消费者,例如,可以访问技能模板分发系统的网站以下载将在具有特定型号的家用机器人上执行的技能模板。然后,消费者可以提供本地演示数据,针对消费者的特定环境调节特定机器人型号的模板,由于消费者家中的照明条件和空间限制不同,这一点可能很重要。在短时间内,消费者的机器人可以被配置由训练系统720在云端生成的训练的技能模板,允许机器人自动地组装产品。
图8是通过技能模板分发系统分发技能模板的示例处理的流程图。该处理可由在一个或多个地点具有一个或多个计算机的计算机系统执行,例如,图7的技能模板分发系统710。该处理将被描述为由一个或多个计算机的系统执行。
系统接收来自用户设备的技能模板的选择(810)。如上所述,该选择可以通过用户界面来实现,该界面呈现出可用的技能模板,并且选择地,仅与该选择相关联的特定机器人类型或机器人模型兼容的技能模板。
系统将选择的技能模板提供给用户设备(820)。技能模板指示哪些子任务是需要本地演示数据的演示子任务。
系统接收用于技能模板的演示子任务的本地演示数据(830)。在典型的场景中,本地演示数据是在具有将执行最终训练的技能模板的机器人的设施内生成的。因此,本地演示数据通常是通过向机器人演示如何在设施中执行演示子任务来收集的。
系统使用本地演示数据训练用于演示子任务的机器学习模型(840)。如上所述,容纳机器人的设施可以不附属于最终将训练机器学习模型的训练系统。换言之,拥有机器人的实体和分发技能模板的实体是不同的实体,他们以公平的交易分发技能模板。此外,这也通常意味着,生成本地演示数据的用户可以受雇于不同的实体,而不是设置和维护训练机器学习模型的训练系统的用户。
系统提供机器学习模型的学习参数值和用于演示子任务的基本控制策略(850)。通过部署基础控制策略并使用学习的参数值自定义该策略,技能模板可以由机器人高度精确地执行,该策略考虑到了机器人本身的特征以及机器人个性化环境的特征。
在本说明书中,机器人是具有基本位置、一个或多个可移动部件和运动学模型的机器,该运动学模型可用于将一个坐标系,例如,笛卡尔坐标中的期待位置、姿势或两者映射到物理移动一个或多个可移动部件到期待位置或姿势的命令。在本说明书中,工具是机器人的一个或多个可移动部件的运动链的一部分并连接在其末端的设备。示例的工具包括抓手、焊接设备和打磨设备。
在本说明书中,任务是由工具执行的操作。为简洁起见,当机器人仅有一个工具时,任务可以被描述为由机器人整体执行的操作。任务的示例包括焊接、点胶、零件定位和表面打磨,仅举几个示例。任务通常与指示执行任务所需的工具,以及在工作单元内的执行任务的位置的类型相关联。
在本说明书中,运动计划是提供执行动作的信息的数据结构,这个动作可以是任务、任务集群或过渡。运动计划可以是完全约束的,意味着机器人的所有可控自由度的所有值都是显式地或隐式地表示的;或欠约束的,意味着一些可控自由度的数值是未指定的。在一些实施方案中,为了实际执行与运动计划相对应的动作,运动计划必须被完全约束以包括机器人的所有可控自由度的所有必要值。因此,在本说明书中所描述的计划过程中的同时,一些运动计划可以是欠约束的,但到运动计划在机器人上实际执行时,运动计划可以是完全约束的。在一些实施方案中,运动计划表示单一机器人的两个配置状态之间的任务图的边。因此,通常每个机器人具有一个任务图。
在本说明书中,运动扫描体积是指在运动计划的整个执行过程中,被机器人或工具的至少一部分所占据的空间的区域。运动扫描体积可以由与机器人-工具系统相关联的碰撞几何产生。
在本说明书中,过渡是描述了在起点和终点之间要执行的运动的运动计划。起点和终点可以由姿势、坐标系中的位置,或要执行的任务表示。过渡可以由于缺少机器人的一个或多个各自的可控自由度(DOF)的一个或多个值而欠约束。一些过渡表示自由运动。在本说明书中,自由运动是过渡,其中没有一个自由度受到约束。例如,简单地从姿势A移动到姿势B的机器人运动,而没有任何限制如何在这两个姿势之间移动,就是自由运动。在嘉华过程期间,自由运动的DOF变量最终被赋值,路径规划者可以使用运动的任何适当的、与工作单元的物理约束不冲突的值。
本说明书中描述的机器人功能可以由与跨硬件的软件栈实施,或者,为了简洁起见,仅是至少部分与跨硬件的软件栈。换言之,软件栈可以接受由上述计划过程生成的命令作为输入,而不要求命令与特定机器人模型或与特定的机器人部件具体相关。例如,该软件栈可以至少部分地由图1的现场执行引擎150和机器人接口子系统160实现。
软件栈可以包括多个层级,在一个方向上增加硬件的专用性,并在另一个方向上增加软件的抽象性。软件栈的最底层是机器人组件,包括执行低级动作的设备和报告低级状态的传感器。例如,机器人可以包括各种低级组件,包括电机、编码器、相机、驱动器、抓手、应用特定的传感器、线性或旋转位置传感器,以及其他外围设备。作为一个示例,电机可以接收指示应施加的扭矩量的命令。作为接收命令的响应,电机可以报告机器人关节的当前位置,例如,使用编码器,向软件栈的更高层报告。
软件栈中的每一个次层级可以实施支持多个不同的底层实施的接口。一般来说,各层之间的每个接口都提供从低层到高层的状态信息,并提供从高层到低层的命令。
通常情况下,命令和状态信息在每个控制周期内循环生成,例如,每个控制周期有一个状态信息和一个命令。软件栈的低层通常比软件栈的高层具有更严格的实时要求。在软件栈的最低层,例如,控制周期可以有实际的实时要求。在本说明书中,实时意味着在特定的控制周期时间内,在软件栈的一个层级收到的命令必须被执行,并且可选择地将状态信息反馈给软件栈的上层。如果该实时要求没有得到满足,机器人可以被配置为进入故障状态,例如,通过冻结所有操作。
在次高层级,软件栈可以包括特定组件的软件抽象,这将被称为电机反馈控制器。电机反馈控制器可以是任何适当的低级组件的软件抽象,而不仅仅是字面上的电机。因此,电机反馈控制器通过接口接收状态,进入下层硬件组件,并基于从栈中的高层收到的上层命令,通过接口向下层硬件组件发送命令。电机反馈控制器可以有任何适当的控制规则,确定上层命令应该如何解释并转化为下层命令。例如,电机反馈控制器可以使用从简单的逻辑规则到更先进的机器学习技术的任何东西来将上层命令转化为下层命令。类似地,电机反馈控制器可以使用任何适当的故障规则来确定何时达到故障状态。例如,如果电机反馈控制器接收了上层命令,但在控制周期的特定部分内没有接收下层状态,电机反馈控制器可以使机器人进入停止所有操作的故障状态。
在次高层级,软件栈可以包括执行器反馈控制器。执行器反馈控制器可以包括用于通过各自的电机反馈控制器控制多个机器人组件的控制逻辑。例如,一些机器人组件,例如,关节臂,实际上可以由多个电机控制。因此,执行器反馈控制器可以通过使用其控制逻辑向多个电机的电机反馈控制器发送命令,提供关节臂的软件抽象。
在次高层级,软件栈可以包括关节反馈控制器。关节反馈控制器可以表示映射到机器人的逻辑自由度上的关节。因此,例如,虽然机器人的手腕可能由复杂的执行器网络控制,但关节反馈控制器可以抽象出这种复杂性,并将该自由度公开为单一的关节。因此,每个关节反馈控制器可以控制任意复杂的执行器反馈控制器网络。例如,六自由度的机器人可以由六个不同的关节反馈控制器控制,每个关节反馈控制器控制独立的实际反馈控制器网络。
软件栈的每一层级也可以执行层级特定的约束。例如,如果执行器反馈控制器接收的特定扭矩值超出了可接受的范围,执行器反馈控制器可以将其修改为在范围内,或者进入故障状态。
为了驱动对关节反馈控制器的输入,软件栈可以使用包括下层中每个组件的命令参数的命令向量,例如,系统中每个电机的位置、扭矩和速度。为公开来自联合反馈控制器的状态,软件栈可以使用包括下层中每个组件的状态信息的状态向量,例如,系统中每个电机的位置、速度和扭矩。在一些实施方案中,命令向量还包括一些关于由下层控制器执行的约束的限制信息。
在次高层级,软件栈可以包括关节收集控制器。关节收集控制器可以处理作为一组部分抽象公开的命令和状态向量的发布。每部分可以包括运动学模型,例如,用于执行逆运动学计算,极限信息,以及关节状态向量和关节命令向量。例如,单一的关节收集控制器可用于将不同的策略集应用于下层的不同子系统。关节收集控制器可以有效地解耦电机的物理表示方式和控制策略与这些部分的关联之间的关系。因此,例如,如果机器人手臂具有可移动的底座,关节收集控制器可以用于对手臂的移动执行一组限制策略,并对可移动的底座的移动执行一组不同的限制策略。
在次高层级,软件栈可以包括关节选择控制器。关节选择控制器可以负责动态地选择来自不同来源发布的命令。换言之,关节选择控制器可以在一个控制周期内接收多个命令,并在控制周期内选择多个命令中的一个来执行。在实时控制周期内从多个命令中动态选择的能力大大增加了传统的机器人控制系统的控制的灵活性。
在次高层级,软件栈可以包括关节位置控制器。关节位置控制器可以接收目标参数,并动态地计算实现目标参数所需的命令。例如,关节位置控制器可以接收位置目标,并可以计算实现目标的设定点。
在次高层级,软件栈可以包括笛卡尔位置控制器和笛卡尔选择控制器。笛卡尔位置控制器可以接收笛卡尔空间的目标作为输入,并使用逆运动学求解器计算关节位置空间的输出。然后,在将关节位置空间中的计算结果传递给栈中次低层级的关节位置控制器之前,笛卡尔选择控制器可以对笛卡尔位置控制器计算的结果执行限制策略。例如,笛卡尔位置控制器可以在笛卡尔坐标x、y和z中被赋予三个独立的目标状态。对于某些程度,目标状态可能是位置,而对于其他程度,目标状态可能是期望的速度。
因此,软件栈提供的这些功能为控制指令提供了广泛的灵活性,使其可以很容易地表达为目标状态,并与上述更高层级的计划技术自然结合。换言之,当计划过程使用过程定义图来生成将要采取的具体动作时,这些动作不需要以低层级的命令来指定各个机器人组件。相反,它们可以被表达为高层级的目标,这些目标被软件栈接受,通过不同层次的翻译,直到最终成为低层级的命令。此外,通过计划过程生成的动作可以在笛卡尔空间中指定,使得它们能为人类操作员理解,这使得调试和分析规划更容易、更快、以及更直观。此外,通过计划过程生成的动作不需要与任何特定的机器人模型或低层级的命令格式紧密耦合。相反,计划过程期间生成的相同动作实际上可以由不同的机器人模型执行,只要它们支持相同的自由度,并且在软件栈中实现了适当的控制层级。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路中、在有形的计算机软件或固件中、在计算机硬件中实施,包括本说明书中公开的结构和它们的结构等价物,或在它们中的一个或多个的组合中。本说明书中描述的主题的实施例可以作为一个或多个计算机程序来实施,即,编码在有形非暂时性存储介质上的计算机程序指令的一个或多个模块,以便由数据处理装置执行或控制数据处理装置的操作。该计算机存储介质可以是机器可读存储设备、机器可读存储衬底、随机或串行访问存储设备,或它们中的一个或多个的组合。替代性地或另外,程序指令可以被编码到人工生成的传播信号上,例如,机器生成的电、光或电磁信号,该信号被生成以编码信息,以便传输到合适的接收机装置,由数据处理装置执行。
术语“数据处理装置”是指数据处理硬件,包括用于处理数据的各种类型的装置、设备和机器,例如包括可编程的处理器、计算机,或多个处理器或计算机。该装置也可以是,或还包括特殊用途的逻辑电路,例如,FPGA(现场可编程门阵列)或ASIC(特定应用集成电路)。除了硬件之外,装置还可以选择地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或他们中的一个或多个的组合的代码。
计算机程序也可以被称为或描述为程序、软件、软件应用、应用程序、模块、软件模块、脚本,或代码)可以用任何形式的编程语言编写,包括编译或解释语言,或声明性或程序性语言,并且它可以以任何形式部署,包括作为独立的程序或作为模块、组件、子例程或其他适合在计算环境中使用的单元。程序可以,但不需要,对应于文件系统中的文件。程序可以存储在持有其他程序或数据的文件的部分,例如,存储在标记语言文件中的一个或多个脚本,存储在专门用于有关程序的单一文件中,或存储在多个协调文件中,例如,存储一个或多个模块、子程序或部分代码的文件。计算机程序可以部署在一台计算机上执行,或在多台计算机上执行,这些计算机位于一个地点,或者分布在多个地点并通过数据通信网络相互连接。
对于配置为执行特定的操作或动作的一个或多个计算机组成的系统,意味着系统已经在其上安装了软件、固件、硬件或它们的组合,在操作中导致该系统执行该操作或动作。对于配置为执行特定的操作或动作的一个或多个计算机程序,意味着该一个或多个程序包括指令,当指令由数据处理装置执行时,导致该装置执行操作或动作。
如在本说明书中使用的,“引擎”或“软件引擎”是指软件实施的输入/输出系统,其提供了不同于输入的输出。引擎可以是编码的功能块,如库、平台、软件开发工具包(“SDK”),或对象。每个引擎可以在任何适当类型的计算设备上实现,例如,服务器、移动电话、平板电脑、笔记本电脑、音乐播放器、电子书阅读器、膝上型电脑或台式电脑、PDA、智能电话或其他固定或便携式设备,其包括一个或多个处理器和计算机可读介质。此外,两个或更多个引擎可以在同一个计算设备上或在不同的计算设备上实施。
本说明书中描述的过程和逻辑流可以由一个或多个可编程计算机执行一个或多个计算机程序,通过操作输入数据并生成输出来执行功能。过程和逻辑流也可以由特殊用途的逻辑电路执行,例如,FPGA或ASIC,或由特殊用途的逻辑电路和一个或多个编程的计算机的组合来执行。
适合执行计算机程序的计算机可以基于通用或特殊用途的微处理器,或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者中接收指令和数据。计算机的基本元素是用于履行或执行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由特殊用途的逻辑电路补充,或纳入其中。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘,或操作地耦合从该设备接收数据或将数据传输到该数据,或二者都包含。然而,计算机不需要有这样的装置。此外,计算机可以嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收机,或便携式存储设备,例如,通用串行总线(USB)闪存驱动器,仅举几例。
适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储设备,例如包括半导体存储设备,如EPROM、EEPROM和闪存设备;磁盘,例如,内置硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有显示设备的计算机上实施,例如,CRT(阴极射线管)或LCD(液晶显示器)显示器,用于向用户显示信息,以及键盘和指向设备,例如,鼠标、轨迹球或存在敏感的显示器或用户可以通过这些设备向计算机提供输入的其他表面。其他种类的设备也可以用来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、语言或触觉输入。此外,计算机可以通过向用户使用的设备发送文件和从该设备接收文件来与用户交互;例如,通过向用户设备上的网络浏览器发送网页以响应于从网络浏览器收到的请求。此外,计算机还可以通过向个人设备,例如,智能手机,发送文本信息或其他形式的信息,运行信息应用程序,并从用户那里接收响应的信息,从而与用户进行交互。
本说明书中描述的主题的实施例可以在包括后端组件,例如,数据服务器的计算系统中实施,或者包括中间件组件,例如,应用服务器的计算系统实施,或者包括前端组件,例如,具有图形用户界面、网络浏览器或应用程序的客户端计算机的计算系统中实施,用户可以通过该客户端计算机与本说明书中描述的主题的实施方案交互,或者与一个或多个此类后端、中间件或前端组件的任何组合交互。系统的组件可以通过任何形式或数字数据通信的媒介相互连接,例如,通信网络。通信网络的示例包括局域网(LAN)和广域网(WAN),例如,互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常是相互远离的,并且通常通过通信网络交互。客户端和服务器的关系是由于计算机程序在各自的计算机上运行而产生的,并且相互之间具有客户端-服务器关系。在一些实施例中,服务器将数据,例如,HTML页面,传输到用户设备,例如,为了向与作为客户端的设备交互的用户显示数据和接收用户输入。在用户设备上生成的数据,例如,用户交互的结果,可以在服务器上从设备上接收。
除了上述的实施例外,以下的实施例也是创新的:
实施例1是一种方法,包括:
通过技能模板分发系统从用户设备上接收对可用技能模板的选择;
由技能模板分发系统提供技能模板,其中技能模板包括表示一个或多个任务的状态机的信息,以及其中技能模板指定一个或多个任务中哪些是需要本地演示数据的演示子任务;
通过技能模板分发系统,为技能模板的演示子任务接收本地演示数据;
使用本地演示数据为演示子任务训练机器学习模型,以生成学习参数值;以及
向用户设备提供学习参数值和演示子任务的基本控制策略。
实施例2是如权利要求1所述的方法,还包括:
通过技能模板分发系统从用户设备接收可用技能模板将训练的请求,以使机器人执行具有多个任务的技能;以及
响应于该请求,向用户设备提供描述一个或多个可用技能模板的信息。
实施例3是如实施例2所述的方法,其中请求指定特定的机器人类型或模型,并且其中提供描述一个或多个可用技能模板的信息包括提供与特定机器人类型或模型兼容的一个或多个技能模板。
实施例4是如实施例1-3中任一项所述的方法,还包括:
从技能模板开发者接收由技能模板开发者生成的新技能模板;以及
将新技能模板添加到可用技能的集合;
其中可用技能模板的选择包括由技能模板开发者生成的新技能模板的选择。
实施例5是如实施例4所述的方法,其中技能模板开发者是非附属于技能模板分发系统或拥有用户设备的组织的实体。
实施例6是如实施例1-5中任一项所述的方法,其中用户设备位于具有机器人的设施中,并且其中本地演示数据是通过向机器人演示如何执行所选技能模板的演示子任务而捕获的数据。
实施例7是如实施例6所述的方法,其中训练技能模板在非附属于具有机器人的设施的训练系统中执行。
实施例8是如实施例7所述的方法,其中基本控制策略由非附属于具有机器人的设施的训练系统生成。
实施例9是一种系统,包括:一个或多个计算机和存储可操作指令的一个或多个存储设备,该指令由一个或多个计算机执行时,使一个或多个计算机执行实施例1至8中任一项所述的方法。
实施例10是一种编码了计算机程序的计算机存储介质,该程序包括可操作指令,该指令由数据处理装置执行时,使数据处理装置执行实施例1至8中任一项所述的方法。
虽然本说明书包含许多具体的实施细节,但这些不应解释为对任何发明的范围或可能要求的范围的限制,而应解释为对可能特定于特定发明的特定实施例的特征的描述。本说明书中在单独的实施例的内容中描述的某些特征也可以在单一实施例中组合实施。相反,在单一实施例的内容中描述的各种特征也可以在多个实施例中单独或以任何合适的子组合实施。此外,尽管上述特征可能被描述为在某些组合中起作用,甚至最初也是这样被要求的,但在一些情况下,可以从所要求的组合中删除一个或多个特征,并且所要求的组合可以指向子组合或子组合的变体。
类似地,虽然附图中的操作是以特定顺序描述的,但这不应理解为要求以所示的特定顺序或按顺序执行这些操作,或执行所有示出的操作,以达到理想的结果。在某些情况下,多任务和并行处理可能有利。此外,上述实施例中各种系统模块和组件的分离不应理解为要求在所有实施例中都进行这样的分离,应该理解的是,描述的程序组件和系统通常可以集成在单一软件产品中或封装为多个软件产品。
主题的特定实施例已经被描述。其他实施例也在以上权利要求的范围内。例如,权利要求中所述的动作可以以不同的顺序执行,并且仍然可以达到理想的结果。作为一个示例,附图中所描绘的过程不一定需要所显示的特定顺序,或连续的顺序以达到理想的结果。在某些一些情况下,多任务和并行处理可能有利。
Claims (20)
1.一种由一个或多个计算机执行的方法,所述方法包括:
通过技能模板分发系统从用户设备上接收对可用技能模板的选择;
通过所述技能模板分发系统提供技能模板,其中所述技能模板包括表示一个或多个任务的状态机的信息,以及其中所述技能模板指定所述一个或多个任务中哪些是需要本地演示数据的演示子任务;
通过所述技能模板分发系统,为所述技能模板的演示子任务接收本地演示数据;
使用所述本地演示数据为所述演示子任务训练机器学习模型,以生成学习参数值;以及
向所述用户设备提供所述学习参数值和所述演示子任务的基本控制策略。
2.如权利要求1所述的方法,还包括:
通过技能模板分发系统从用户设备接收可用技能模板将训练的请求,以使机器人执行具有多个任务的技能;以及
响应于所述请求,向所述用户设备提供描述一个或多个可用技能模板的信息。
3.如权利要求2所述的方法,其中所述请求指定特定的机器人类型或模型,并且其中提供描述所述一个或多个可用技能模板的所述信息包括提供与所述特定的机器人类型或模型兼容的一个或多个技能模板。
4.如权利要求1所述的方法,还包括:
从技能模板开发者接收由所述技能模板开发者生成的新技能模板;以及
将所述新技能模板添加到可用技能的集合,
其中对所述可用技能模板的所述选择包括对由所述技能模板开发者生成的所述新技能模板的选择。
5.如权利要求4所述的方法,其中所述技能模板开发者是非附属于所述技能模板分发系统或拥有所述用户设备的组织的实体。
6.如权利要求1所述的方法,其中所述用户设备位于具有机器人的设施中,并且其中所述本地演示数据是通过向所述机器人演示如何执行所选技能模板的演示子任务而捕获的数据。
7.如权利要求6所述的方法,其中训练所述技能模板在非附属于具有所述机器人的所述设施的训练系统中执行。
8.如权利要求7所述的方法,其中所述基本控制策略由非附属于具有所述机器人的所述设施的所述训练系统生成。
9.一种系统,包括:
一个或多个计算机和存储可操作指令的一个或多个存储设备,所述指令由一个或多个计算机执行时,使所述一个或多个计算机执行操作,所述操作包括:
通过技能模板分发系统从用户设备上接收对可用技能模板的选择;
通过所述技能模板分发系统提供技能模板,其中所述技能模板包括表示一个或多个任务的状态机的信息,以及其中所述技能模板指定所述一个或多个任务中哪些是需要本地演示数据的演示子任务;
通过所述技能模板分发系统,为所述技能模板的演示子任务接收本地演示数据;
使用所述本地演示数据为所述演示子任务训练机器学习模型,以生成学习参数值;以及
向所述用户设备提供所述学习参数值和所述演示子任务的基本控制策略。
10.如权利要求1所述的系统,其中所述操作还包括:
通过技能模板分发系统从用户设备接收可用技能模板将训练的请求,以使机器人执行具有多个任务的技能;以及
响应于所述请求,向所述用户设备提供描述一个或多个可用技能模板的信息。
11.如权利要求10所述的系统,其中所述请求指定特定的机器人类型或模型,并且其中提供描述所述一个或多个可用技能模板的所述信息包括提供与所述特定的机器人类型或模型兼容的一个或多个技能模板。
12.如权利要求9所述的系统,其中所述操作还包括:
从技能模板开发者接收由所述技能模板开发者生成的新技能模板;以及
将所述新技能模板添加到可用技能的集合,
其中对所述可用技能模板的所述选择包括对由所述技能模板开发者生成的所述新技能模板的选择。
13.如权利要求4所述的系统,其中所述技能模板开发者是非附属于所述技能模板分发系统或拥有所述用户设备的组织的实体。
14.如权利要求9所述的系统,其中所述用户设备位于具有机器人的设施中,并且其中所述本地演示数据是通过向所述机器人演示如何执行所选技能模板的演示子任务而捕获的数据。
15.如权利要求14所述的系统,其中训练所述技能模板在非附属于具有所述机器人的所述设施的训练系统中执行。
16.如权利要求15所述的系统,其中所述基本控制策略由非附属于具有所述机器人的所述设施的所述训练系统生成。
17.一个或多个使用计算机程序指令编码的非暂时性计算机存储介质,当所述指令由一个或多个计算机执行时,使得所述一个或多个计算机执行操作,所述操作包括:
通过技能模板分发系统从用户设备上接收对可用技能模板的选择;
通过所述技能模板分发系统提供技能模板,其中所述技能模板包括表示一个或多个任务的状态机的信息,以及其中所述技能模板指定所述一个或多个任务中哪些是需要本地演示数据的演示子任务;
通过所述技能模板分发系统,为所述技能模板的演示子任务接收本地演示数据;
使用所述本地演示数据为所述演示子任务训练机器学习模型,以生成学习参数值;以及
向所述用户设备提供所述学习参数值和所述演示子任务的基本控制策略。
18.如权利要求17所述的一个或多个非暂时性计算机存储介质,其中所述操作还包括:
通过技能模板分发系统从用户设备接收可用技能模板将训练的请求,以使机器人执行具有多个任务的技能;以及
响应于所述请求,向所述用户设备提供描述一个或多个可用技能模板的信息。
19.如权利要求18所述的一个或多个非暂时性计算机存储介质,其中所述请求指定特定的机器人类型或模型,并且其中提供描述所述一个或多个可用技能模板的所述信息包括提供与所述特定的机器人类型或模型兼容的一个或多个技能模板。
20.如权利要求17所述的一个或多个非暂时性计算机存储介质,其中所述操作还包括:
从技能模板开发者接收由所述技能模板开发者生成的新技能模板;以及
将所述新技能模板添加到可用技能的集合,
其中对所述可用技能模板的所述选择包括对由所述技能模板开发者生成的所述新技能模板的选择。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/880,860 | 2020-05-21 | ||
US16/880,860 US11685047B2 (en) | 2020-05-21 | 2020-05-21 | Skill template distribution for robotic demonstration learning |
PCT/US2021/032736 WO2021236504A1 (en) | 2020-05-21 | 2021-05-17 | Skill template distribution for robotic demonstration learning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115916477A true CN115916477A (zh) | 2023-04-04 |
Family
ID=76306046
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180044473.XA Pending CN115916477A (zh) | 2020-05-21 | 2021-05-17 | 机器人演示学习的技能模板分发 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11685047B2 (zh) |
EP (1) | EP4135939A1 (zh) |
JP (1) | JP2023528249A (zh) |
KR (1) | KR20230002942A (zh) |
CN (1) | CN115916477A (zh) |
WO (1) | WO2021236504A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11679497B2 (en) | 2020-05-21 | 2023-06-20 | Intrinsic Innovation Llc | Distributed robotic demonstration learning |
US11685047B2 (en) * | 2020-05-21 | 2023-06-27 | Intrinsic Innovation Llc | Skill template distribution for robotic demonstration learning |
US11654566B2 (en) * | 2020-08-12 | 2023-05-23 | General Electric Company | Robotic activity decomposition |
SE545819C2 (en) * | 2021-12-17 | 2024-02-13 | Rebl Ind Ab | System and method of automating a process |
Family Cites Families (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9008840B1 (en) | 2013-04-19 | 2015-04-14 | Brain Corporation | Apparatus and methods for reinforcement-guided supervised learning |
US9384443B2 (en) | 2013-06-14 | 2016-07-05 | Brain Corporation | Robotic training apparatus and methods |
US9314924B1 (en) | 2013-06-14 | 2016-04-19 | Brain Corporation | Predictive robotic controller apparatus and methods |
DE102015204641B4 (de) | 2014-06-03 | 2021-03-25 | ArtiMinds Robotics GmbH | Verfahren und System zur Programmierung eines Roboters |
US9272418B1 (en) | 2014-09-02 | 2016-03-01 | The Johns Hopkins University | System and method for flexible human-machine collaboration |
JP6240689B2 (ja) | 2015-07-31 | 2017-11-29 | ファナック株式会社 | 人の行動パターンを学習する機械学習装置、ロボット制御装置、ロボットシステム、および機械学習方法 |
US11148288B2 (en) * | 2017-02-25 | 2021-10-19 | Diligent Robotics, Inc. | Systems, apparatus, and methods for robotic learning and execution of skills |
US11833684B2 (en) * | 2017-02-25 | 2023-12-05 | Diligent Robotics, Inc. | Systems, apparatus, and methods for robotic learning and execution of skills |
US10919152B1 (en) * | 2017-05-30 | 2021-02-16 | Nimble Robotics, Inc. | Teleoperating of robots with tasks by mapping to human operator pose |
JP6542839B2 (ja) | 2017-06-07 | 2019-07-10 | ファナック株式会社 | 制御装置及び機械学習装置 |
US10913154B2 (en) | 2018-01-02 | 2021-02-09 | General Electric Company | Systems and method for robotic learning of industrial tasks based on human demonstration |
US11568236B2 (en) | 2018-01-25 | 2023-01-31 | The Research Foundation For The State University Of New York | Framework and methods of diverse exploration for fast and safe policy improvement |
US11847822B2 (en) * | 2018-05-09 | 2023-12-19 | Sony Corporation | Information processing device and information processing method |
EP3843952A1 (en) | 2018-08-28 | 2021-07-07 | Diligent Robotics, Inc. | Systems, apparatus, and methods for robotic learning and execution of skills |
US11052541B1 (en) | 2018-12-05 | 2021-07-06 | Facebook, Inc. | Autonomous robot telerobotic interface |
US20220187847A1 (en) * | 2019-11-05 | 2022-06-16 | Strong Force Vcn Portfolio 2019, Llc | Robot Fleet Management for Value Chain Networks |
US11741336B2 (en) | 2019-12-19 | 2023-08-29 | Google Llc | Generating and/or using training instances that include previously captured robot vision data and drivability labels |
US11893457B2 (en) * | 2020-01-15 | 2024-02-06 | International Business Machines Corporation | Integrating simulated and real-world data to improve machine learning models |
KR20210096523A (ko) | 2020-01-28 | 2021-08-05 | 엘지전자 주식회사 | 로봇의 위치 인식 |
JP6896179B1 (ja) * | 2020-02-10 | 2021-06-30 | 三菱電機株式会社 | 制御装置及び学習装置 |
US11679497B2 (en) * | 2020-05-21 | 2023-06-20 | Intrinsic Innovation Llc | Distributed robotic demonstration learning |
US11685047B2 (en) * | 2020-05-21 | 2023-06-27 | Intrinsic Innovation Llc | Skill template distribution for robotic demonstration learning |
US20210362331A1 (en) * | 2020-05-21 | 2021-11-25 | X Development Llc | Skill templates for robotic demonstration learning |
-
2020
- 2020-05-21 US US16/880,860 patent/US11685047B2/en active Active
-
2021
- 2021-05-17 WO PCT/US2021/032736 patent/WO2021236504A1/en unknown
- 2021-05-17 KR KR1020227040723A patent/KR20230002942A/ko unknown
- 2021-05-17 CN CN202180044473.XA patent/CN115916477A/zh active Pending
- 2021-05-17 JP JP2022570258A patent/JP2023528249A/ja active Pending
- 2021-05-17 EP EP21730765.1A patent/EP4135939A1/en active Pending
-
2023
- 2023-06-26 US US18/340,968 patent/US20230356393A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2021236504A1 (en) | 2021-11-25 |
US11685047B2 (en) | 2023-06-27 |
US20210362330A1 (en) | 2021-11-25 |
EP4135939A1 (en) | 2023-02-22 |
US20230356393A1 (en) | 2023-11-09 |
KR20230002942A (ko) | 2023-01-05 |
JP2023528249A (ja) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xia et al. | A digital twin to train deep reinforcement learning agent for smart manufacturing plants: Environment, interfaces and intelligence | |
JP7427113B2 (ja) | ロボットデモンストレーション学習用スキルテンプレート | |
CN115916477A (zh) | 机器人演示学习的技能模板分发 | |
US11780086B2 (en) | Robotic demonstration learning device | |
US11820014B2 (en) | Simulated local demonstration data for robotic demonstration learning | |
US11654552B2 (en) | Backup control based continuous training of robots | |
WO2018176025A1 (en) | System and method for engineering autonomous systems | |
CN115666871A (zh) | 分布式机器人演示学习 | |
US11534913B2 (en) | Integrating sensor streams for robotic demonstration learning | |
Hu et al. | A robot learning from demonstration framework for skillful small parts assembly | |
WO2021231242A1 (en) | Accelerating robotic planning for operating on deformable objects | |
US11524402B2 (en) | User feedback for robotic demonstration learning | |
US20240157554A1 (en) | Robotic demonstration learning | |
CN116829314A (zh) | 生成机器人控制规划 | |
Solberg et al. | Utilizing Reinforcement Learning and Computer Vision in a Pick-And-Place Operation for Sorting Objects in Motion | |
US20230046520A1 (en) | Machine-learnable robotic control plans | |
US20230050174A1 (en) | Template robotic control plans | |
Danielsen | Vision-based robotic grasping in simulation using deep reinforcement learning | |
Ionescu | Web-based simulation and motion planning for human-robot and multi-robot applications | |
Yun | Immersive and interactive cyber-physical system | |
Xia et al. | manufacturing plants: Environment, interfaces and intelligence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |