CN115666871A - 分布式机器人演示学习 - Google Patents
分布式机器人演示学习 Download PDFInfo
- Publication number
- CN115666871A CN115666871A CN202180036594.XA CN202180036594A CN115666871A CN 115666871 A CN115666871 A CN 115666871A CN 202180036594 A CN202180036594 A CN 202180036594A CN 115666871 A CN115666871 A CN 115666871A
- Authority
- CN
- China
- Prior art keywords
- robot
- cloud
- presentation
- based training
- local
- 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/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
-
- 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/1679—Programme controls characterised by the tasks executed
- B25J9/1689—Teleoperation
-
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Automation & Control Theory (AREA)
- Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Evolutionary Computation (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- General Physics & Mathematics (AREA)
- Manipulator (AREA)
Abstract
用于分布式机器人演示学习的方法、系统和装置,包括在计算机存储介质上编码的计算机程序。方法之一包括接收待训练的技能模板以使机器人执行具有多个子任务的特定技能。识别由技能模板定义的一个或多个演示子任务,其中每个演示子任务是要使用本地演示数据进行精炼的动作。在线执行系统将本地演示数据集合上传到基于云的训练系统。基于云的训练系统为每个本地演示数据集合生成相应的经训练的模型参数。使用由基于云的训练系统生成的经训练的模型参数在机器人上执行技能模板。
Description
技术领域
本说明书涉及机器人,并且更具体地涉及规划机器人移动。
背景技术
机器人控制是指控制机器人的物理移动以便执行任务。例如,可以对制造汽车的工业机器人进行编程,使其首先拾取汽车零件,然后将汽车零件焊接到汽车的框架上。这些动作中的每一个本身可以包括机器人马达和致动器的数十或数百个单独的移动。
机器人规划传统上要求大量的手动编程,以便精心规定机器人组件应当如何移动以完成特定任务。手动编程是繁琐的、耗时的且容易出错。此外,为一个工作区(workcell)手动生成的计划表一般不能用于其它工作区。在本说明书中,工作区是机器人将在其中操作的物理环境。工作区具有对机器人如何在工作区内移动施加约束的特定物理特性(例如,物理维度)。因此,用于一个工作区的手动编程的计划表可能与具有不同机器人、不同数量的机器人或不同物理维度的工作区不兼容。
已经进行了一些研究,以使用机器学习控制算法(例如,强化学习)来控制机器人执行特定任务。但是,机器人有多个缺点,这使得传统的学习方法一般不能令人满意。
首先,机器人自然具有非常复杂、高维且连续的动作空间。因此,生成和评估所有可能的候选动作在计算上是昂贵的。其次,机器人控制是奖励极其稀少的环境,因为大多数可能的动作不会导致完成特定任务。一种称为奖励整形的技术已被用于缓解稀疏奖励问题,但其对于手工设计的奖励函数来说一般不可扩展。
另一个复杂因素是,使用机器人学习进行机器人控制的传统技术非常脆弱。这意味着即使成功训练了可行的模型,即使是对任务、机器人或环境进行了非常微小的改变,也会使得整个模型变得完全不可用。
所有这些问题都意味着,使用诸如强化学习之类的技术进行机器人控制的传统方式导致计算量大的过程,该过程根本难以工作,不能很好地扩展,也不能推广到其它情况。
发明内容
本说明书描述了与基于演示的机器人学习相关的技术。特别地,本说明书描述了如何使用通过技能模板和演示数据学习到的定制控制策略对机器人进行编程以执行机器人任务。
在本说明书中,任务是指特定机器人涉及执行一个或多个子任务的能力。例如,连接器插入任务是使机器人能够将电线连接器插入插座的能力。这个任务通常包括两个子任务:1)将机器人的工具移动到插座的位置,以及2)将连接器在特定位置处插入到插座中。
在本说明书中,子任务是由机器人使用工具执行的操作。为简洁起见,当机器人只有一个工具时,可以将子任务描述为机器人作为一个整体要执行的操作。示例子任务包括焊接、点胶、零件定位和表面打磨,仅举几个示例。子任务通常与指示执行子任务所需工具的类型以及将在其中执行子任务的工作区的坐标系内的位置相关联。
在本说明书中,技能模板(或为简洁起见,模板)是数据和软件的集合,其允许调节机器人以执行特定任务。技能模板数据表示执行任务所需的一个或多个子任务,以及描述了技能的哪些子任务要求本地演示学习以及需要哪些感知流来确定成功或失败的信息。因此,技能模板可以定义要求本地演示学习的演示子任务、不要求本地演示学习的非演示子任务,或两者。
这些技术对于传统上难以使用机器学习(例如,强化学习)控制的机器人任务特别有利。这些任务包括涉及与工作空间中的对象物理接触的任务,例如,打磨、连接和插入任务以及布线,仅举几个示例。
可以实现本说明书中描述的主题的特定实施例以实现以下优点中的一个或多个。使用本说明书中描述的演示数据进行学习解决了传统强化学习方法的稀疏奖励和无法推广问题。
该系统可以使用视觉、本体感受(关节)数据、触觉数据和任何其它特征来执行任务,这允许系统以高精度快速适应特定的机器人模型。重点在于“传感器丰富的机器人操纵”,这与机器人中的最小感测的经典观点形成对比。这一般意味着可以使用更便宜的机器人以更少的设置时间完成相同的任务。
下面描述的技术允许机器学习技术快速适应具有适当安装的硬件抽象的任何适当的机器人。在典型场景中,单个非专家的人就可以在不到一天的设置时间内训练机器人以执行技能模板。这是对传统方法的巨大改进,传统方法可能要求专家团队在设计奖励函数方面花费数周时间来解决问题,并且要求在非常大的数据中心上的数周的训练时间。这有效地允许机器学习的机器人控制广泛分布到多种类型的机器人,甚至是系统从未见过的机器人。
这些技术可以有效地将机器人学习作为一种服务来实现,这导致能够更多地使用该技术。这进而使整个机器人行业整体上更安全和更高效。
虽然任务复杂,但强化学习、利用机器学习的感知数据处理以及先进的阻抗/准入控制的结合将使机器人技能仍能按照工业应用的要求以非常高的成功率执行。
本说明书的主题的一个或多个实施例的细节在附图和以下描述中阐述。本主题的其它特征、方面和优点将从描述、附图和权利要求中变得显而易见。
附图说明
图1是示例演示学习系统的图。
图2A是用于使用基于本地演示数据的定制控制策略来执行子任务的示例系统的图。
图2B是用于使用本地演示数据执行子任务的另一个示例系统的图。
图2C是用于使用残差强化学习执行子任务的另一个示例系统的图。
图3A是用于组合来自多个不同传感器流的传感器数据的示例过程的流程图。
图3B是相机腕带的图。
图3C是相机腕带的另一个示例视图。
图3D是相机腕带的另一个示例视图。
图4图示了示例技能模板。
图5是用于配置机器人以使用技能模板执行技能的示例过程的流程图。
图6A是用于将技能模板用于使用力作为指导的任务的示例过程的流程图。
图6B是用于使用基于云的训练系统训练技能模板的示例过程的流程图。
各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
图1是示例演示学习系统的图。系统100是可以实现本说明书中描述的基于演示的学习技术的系统的示例。
系统100包括多个功能组件,包括在线执行系统110、训练系统120和机器人接口子系统160。这些组件中的每一个可以被实现为安装在一个或多个位置的通过任何适当的通信网络(例如,内联网或互联网,或网络的组合)彼此耦合的一个或多个计算机上的计算机程序。
系统100按照以下两种基本模式操作以控制机器人170a-n:演示模式和执行模式。
在演示模式中,用户可以控制一个或多个机器人170a-n来执行特定任务或子任务。在这样做的同时,在线执行系统110收集状态消息135和在线观察145以生成本地演示数据。演示数据收集器150是可以从状态消息135和在线观察145生成本地演示数据115的模块,然后在线执行系统110可以将该本地演示数据115提供给训练系统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,然后可以将该本地演示数据115上传到训练系统120。训练系统120然后可以在比训练基本控制策略所花费的时间少得多的时间内生成定制控制策略125,例如,可能只是一个或两个小时。
在执行模式中,执行引擎130可以使用定制控制策略125来自动执行任务而无需任何用户干预。在线执行系统110可以使用定制控制策略125来生成要提供给机器人接口子系统160的命令155,该机器人接口子系统160驱动工作区170中的一个或多个机器人(例如,机器人170a-n)。在线执行系统110可以消耗由机器人170a-n生成的状态消息135和由在工作区170内进行观察的一个或多个传感器171a-n进行的在线观察145。如图1中所示,每个传感器171耦合到相应的机器人170。但是,传感器不需要与机器人一一对应,也不需要耦合到机器人。事实上,每个机器人可以具有多个传感器,并且传感器可以安装在工作区170中的固定或可移动表面上。
执行引擎130可以使用状态消息135和在线观察145作为从训练系统120接收的定制控制策略125的输入。因此,机器人170a-n可以根据它们的特定特点和任务的特定特点实时反应以完成任务。
因此,使用本地演示数据来调整控制策略导致截然不同的用户体验。从用户的角度来看,训练机器人用定制控制策略来非常精确地执行任务(包括生成本地演示数据和等待要生成的定制控制策略)是非常快速的过程,其可能花费不到一天的设置时间。速度来自充分利用预先计算的基本控制策略。
这种布置引入了对现有机器人学习方法的巨大技术改进,现有的机器人学习方法通常要求数周的测试和生成手工设计的奖励函数、花费数周生成合适的训练数据,以及花费更多周进行训练、测试和精炼模型,以便它们适合工业生产。
此外,与传统的机器人强化学习不同,使用本地演示数据对机器人、任务和环境的特点的小扰动而言是高度稳健的。如果公司购买新的机器人模型,那么用户只需花费一天的时间为新的定制控制策略生成新的本地演示数据。这与现有的强化学习方法形成对比,在现有的强化学习方法中,对机器人、任务或环境的物理特点的任何改变都可能要求从头开始整个长达数周的过程。
为了发起基于演示的学习过程,在线执行系统可以从训练系统120接收技能模板105。如上所述,技能模板105可以指定执行技能所需的一个或多个子任务的序列,哪些子任务要求本地演示学习,以及哪些子任务需要哪些感知流,以及指定何时从执行技能模板的一个子任务转换到下一个子任务的转换条件。
如上所述,技能模板可以定义要求本地演示学习的演示子任务、不要求本地演示学习的非演示子任务,或两者。
演示子任务隐式或显式地绑定到基本控制策略,如上所述,可以从推广的训练数据或系统演示数据预先计算该基本控制策略。因此,对于模板中的每个演示子任务,技能模板可以包括分离的基本控制策略或基本控制策略的标识符。
对于每个演示子任务,技能模板还可以包括使用本地演示数据调节演示子任务所需的软件模块。每个演示子任务可以依赖于不同类型的机器学习模型并且可以使用不同的技术进行调节。例如,移动演示子任务可以严重依赖本地工作区环境的相机图像,以便找到特定的任务目标。因此,用于移动演示子任务的调节过程可以更严重地调节机器学习模型,以识别在本地演示数据中捕获的相机图像中的特征。相比之下,插入演示子任务可以严重依赖力反馈数据来感测连接插座的边缘并使用适当温和的力将连接器插入插座。因此,用于插入演示子任务的调节过程可以更严格地调节处理力感知和对应反馈的机器学习模型。换句话说,即使技能模板中用于子任务的底层模型相同,每个子任务也可以有其自己相应的调节过程,以便以不同的方式结合本地演示数据。
非演示子任务可以或可以不与基本控制策略相关联。例如,非演示子任务可以简单地指定移动到特定坐标位置。可替代地,非演示子任务可以与基本控制策略相关联,例如,如根据其它机器人计算的,该基本控制策略指定关节应当如何使用传感器数据移动到特定坐标位置。
技能模板的目的是为机器人编程提供推广的框架,以使其具有特定的任务能力。特别地,技能模板可以被用于调整机器人以便以相对较少的努力执行相似的任务。因此,为特定机器人和特定环境调整技能模板涉及对技能模板中的每个演示子任务执行训练过程。为简洁起见,这个过程可以被称为训练技能模板,即使可能涉及多个单独训练的模型。
例如,用户可以下载连接器插入技能模板,该模板指定执行第一移动子任务,然后执行连接器插入子任务。连接器插入技能模板还可以指定第一子任务依赖于视觉感知流(例如,来自相机),但第二子任务依赖于力感知流(例如,来自力传感器)。连接器插入技能模板还可以指定只有第二子任务要求本地演示学习。这可能是因为将机器人移动到特定位置通常不会高度依赖手头任务的情形或依赖工作环境。但是,如果工作环境有严格的空间要求,那么模板也可以指定第一子任务要求本地演示学习,以便机器人可以快速学习在工作环境的严格空间要求中导航。
为了为机器人配备连接器插入技能,用户只需要引导机器人执行由技能模板指示的要求本地演示数据的子任务。机器人将自动捕获本地演示数据,训练系统可以使用这些数据来精炼与连接器插入子任务相关的基本控制策略。当定制控制策略的训练完成时,为了被配备为执行子任务,机器人只需要下载最终经训练的定制控制策略。
值得注意的是,相同的技能模板可以被用于许多不同种类的任务。例如,相同的连接器插入技能模板可以被用于装备机器人执行HDMI电缆插入或USB电缆插入或两者。用户所需的只是演示这些不同的插入子任务,以便为正在学习的演示子任务精炼基本控制策略。如上所述,与从头开始开发或学习完整的控制策略相比,这个过程通常花费更少的计算能力和更少的时间。
此外,技能模板方法可以与硬件无关。这意味着即使训练系统从未为那个特定机器人模型训练过控制策略,也可以使用技能模板来装备机器人以执行任务。因此,这种技术解决了使用强化学习来控制机器人的许多问题。特别地,它解决了脆弱性问题,在脆弱性问题中即使是非常小的硬件改变也要求从头开始重新学习控制策略,这是昂贵且重复的工作。
为了支持收集本地演示数据,系统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,使得在线执行系统110可以例如由于本地故障或其它意外状况而对机器人移动进行在线调整。机器人可以是实时机器人,这意味着机器人被编程为根据高度受限的时间线连续执行它们的命令。例如,每个机器人可以预期在特定频率(例如,100Hz或1kHz)下的来自机器人接口子系统160的命令。如果机器人没有接收到预期的命令,因此机器人可以进入故障模式并停止操作。
图2A是用于使用基于本地演示数据的定制控制策略来执行子任务的示例系统200的图。一般而言,来自多个传感器260的数据通过多个分开训练的神经网络被馈送并组合成单个低维任务状态表示205。低维表示205然后被用作经调节的控制策略210的输入,该经调节的控制策略210被配置为生成将由机器人270执行的机器人命令235。因此,系统200可以通过修改子系统280实现对基本控制策略的修改,来基于本地演示数据实现定制控制策略。
传感器260可以包括生成感知数据流的感知传感器,感知数据流表示机器人或机器人的工作区中的目标的视觉特点。例如,为了实现更好的视觉能力,机器人工具可以配备多个相机,例如,可见光相机、红外相机和深度相机,仅举几个示例。
不同的感知数据流202可以由相应的卷积神经网络220a-n独立地处理。每个感知数据流202可以与不同的感知传感器(例如,不同的相机或不同类型的相机)对应。来自每个相机的数据可以由不同的相应卷积神经网络处理。
传感器260还包括生成机器人状态数据流204的一个或多个机器人状态传感器,机器人状态数据流204表示机器人或机器人的组件的物理特点。例如,机器人状态数据流204可以表示机器人或机器人的相应组件的力、转矩、角度、位置、速度和加速度,仅举几个示例。每个机器人状态数据流204可以由相应的深度神经网络230a-m处理。
修改子系统280可以具有任意数量的对传感器数据进行并行处理的神经网络子系统。在一些实施方式中,系统仅包括一个感知流和一个机器人状态数据流。
神经网络子系统的输出是任务状态表示205的相应部分,该任务状态表示205累积地表示机器人270正在执行的子任务的状态。在一些实施方式中,任务状态表示205是具有小于100个特征(例如,10、30或50个特征)的低维表示。具有低维任务状态表示意味着要学习的模型参数更少,这进一步提高了本地演示数据可以用于适应特定子任务的速度。
然后将任务状态表示205用作经调节的控制策略210的输入。在执行期间,经调节的控制策略210从输入任务状态表示205生成机器人命令235,该机器人命令235然后由机器人270执行。
在训练期间,训练引擎240通过使用本地演示的动作275的表示以及由经调节的控制策略210生成的提出的命令245来生成参数校正255。然后,训练引擎可以使用参数校正255来精炼经调节的控制策略210,以便在未来的迭代中由经调节的控制策略210生成的命令将更接近地匹配本地演示的动作275。
在训练过程期间,可以用与正在训练的演示子任务相关联的基本控制策略来初始化经调节的控制策略210。可以使用本地演示的动作275迭代地更新经调节的控制策略210。训练引擎240可以使用任何适当的机器学习技术来调整经调节的控制策略210,例如,受监督的学习、回归或强化学习。当使用神经网络实现经调节的控制策略210时,参数校正235可以通过网络反向传播,使得输出的提出的命令245在未来的迭代中更接近本地演示的动作275。
如上面所提到的,技能模板的每个子任务可以具有不同的训练优先级,即使它们的底层模型的体系架构相同或相似。因此,在一些实施方式中,训练引擎240可以可选地将指定如何更新经调节的控制策略210的子任务超参数275作为输入。例如,子任务超参数可以指示视觉感测非常重要。因此,训练引擎240可以更积极地校正经调节的控制策略210以与用本地演示的动作275捕获的相机数据对准。在一些实施方式中,子任务超参数275识别要用于每个不同子任务的单独训练模块。
图2B是用于使用本地演示数据执行子任务的另一个示例系统的图。在这个示例中,系统包括多个独立的控制策略210a-n,而不是仅具有单个经调节的控制策略。每个控制策略210a-n可以使用任务状态表示205来生成相应的机器人子命令234a-n。系统然后可以组合子命令以生成将由机器人270执行的单个机器人命令235。
在例如可以使用来自具有不同更新速率的多个传感器的数据的传感器丰富的环境中,拥有多个单独可调节的控制策略可以是有利的。例如,不同的控制策略210a-n可以以不同的更新速率执行,这允许系统将简单和更精密的控制算法结合到同一个系统中。例如,一种控制策略可以专注于使用当前力数据的机器人命令,其更新速度比图像数据快得多。同时,另一种控制策略可以专注于使用当前图像数据的机器人命令,这可以要求更精密的图像识别算法,这些算法可以具有不确定的运行时间。结果是既可以快速适应力数据又可以适应图像数据而不会减慢其对力数据的适应的系统。在训练期间,子任务超参数可以为每个单独可调节的控制策略210-an识别单独的训练过程。
图2C是用于使用残差强化学习执行子任务的另一个示例系统的示意图。在这个示例中,系统使用残差强化学习子系统212来生成对由基本控制策略250生成的基本动作215进行修改的校正性动作225,而不是具有生成机器人命令的单个调节控制策略。
在这个示例中,基本控制策略250将来自一个或多个传感器260的传感器数据245作为输入并生成基本动作215。如上所述,基本控制策略250的输出可以是由机器人270的相应组件消耗的一个或多个命令。
在执行期间,强化学习子系统212从输入任务状态表示205生成要与基本动作215组合的校正性动作225。校正性动作225在它修改来自基本控制策略250的基本动作215的意义上是校正性的。结果所得的机器人命令235然后可以由机器人270执行。
传统的强化学习过程已使用两个阶段:(1)其中系统生成新的候选动作的动作阶段和(2)调整模型的权重以最大化每个候选动作的累积奖励的训练阶段。如上文背景部分中所述,将强化学习用于机器人的传统方法存在严重的稀疏奖励问题,这意味着在动作阶段随机生成的动作极不可能通过用于任务的奖励函数获得任何类型的奖励。
但与传统的强化学习不同,使用本地演示数据可以提供关于在动作阶段期间选择哪个动作的所有信息。换句话说,本地演示数据可以提供一系列动作,因此这些动作不需要随机生成。这种技术大大地限制了问题空间并使模型的收敛速度快得多。
在训练期间,使用本地演示数据来驱动机器人270。换句话说,需要使用由校正性动作225和基本动作215生成的机器人命令235来驱动机器人270。在每个时间步长,强化学习子系统210接收用于物理移动机器人270的演示的动作的表示。强化学习子系统210还接收由基本控制策略250生成的基本动作215。
强化学习子系统210然后可以通过将演示的动作与基本动作215进行比较来生成重构的校正性动作。强化学习子系统210还可以使用奖励函数来为重构的校正性动作生成实际奖励值。
强化学习子系统210还可以生成由强化学习模型的当前状态生成的预测的校正性动作以及已经通过使用预测的校正性动作生成的预测的奖励值。预测的校正性动作是强化学习子系统210已经为当前任务状态表示205生成的校正性动作。
强化学习子系统210然后可以使用预测的校正性动作、预测的奖励值、重构的校正性动作和实际奖励值来计算用于强化模型的权重更新。在训练数据的迭代过程中,权重更新用于将预测的校正性动作调整为由演示的动作反映的重构的校正性动作。强化学习子系统210可以根据任何适当的奖励最大化过程来计算权重更新。
图2A-C中所示的体系架构提供的一种能力是为具有不同更新速率的传感器流组合多个不同模型的能力。一些实时机器人具有非常严格的控制回路要求,因此,它们可以配备有生成高频更新的力和转矩传感器,例如,以100、1000或10,000Hz。相比之下,很少有相机或深度相机以超过60Hz的频率操作。
图2A-C中所示的具有多个并行且独立的传感器流以及可选地多个不同的控制策略的体系架构允许组合这些不同的数据速率。
图3A是用于组合来自多个不同传感器流的传感器数据的示例过程的流程图。该过程可以由在一个或多个位置具有一个或多个计算机的计算机系统(例如,图1的系统100)执行。该过程将被描述为由一个或多个计算机的系统执行。
系统选择基本更新速率(302)。基本更新速率将规定学习子系统(例如,经调节的控制策略210)将生成用以驱动机器人的命令的速率。在一些实施方式中,系统基于机器人的最小实时更新速率来选择基本更新速率。可替代地,系统可以基于以最快速率生成数据的传感器来选择基本更新速率。
系统以相应的更新速率生成任务状态表示的相应部分(304)。因为神经网络子系统可以独立且并行操作,所以神经网络子系统可以以由它们的相应传感器的速率指示的速率重复地生成任务状态表示的相应部分。
为了增强系统的独立和并行性质,在一些实施方式中,系统维护多个分离的存储器设备或存储器分区,任务状态表示的不同部分将被写入其中。这可以防止不同的神经网络子系统在高频下生成输出时竞争存储器访问。
系统以基本更新速率重复地生成任务状态表示(306)。在由基本更新速率定义的每个时间段期间,系统可以通过从多个神经网络子系统输出的最近更新的传感器数据中读取来生成任务状态表示的新版本。例如,系统可以从多个分离的存储器设备或存储器分区中读取,以生成完整的任务状态表示。值得注意的是,这意味着由一些神经网络子系统生成的数据的生成速率与其被消耗的速率不同。例如,对于具有较慢更新速率的传感器,数据的消耗速率可以比其被生成的速率快得多。
系统以基本更新速率重复地使用任务状态表示来为机器人生成命令(308)。通过使用独立且并行的神经网络子系统,系统可以确保以足够快的更新速率生成命令,以便为具有硬实时约束的机器人供电。
这种布置还意味着系统可以同时馈送具有不同更新频率的多个独立控制算法。例如,如上面关于图2B所描述的,系统可以包括多个独立的各自生成子命令的控制策略,而不是系统生成单个命令。然后,系统可以通过将子命令组合成最终的混合机器人命令来生成最终命令,该命令表示多种不同控制算法的输出。
例如,视觉控制算法可以使机器人更快地朝着识别出的物体移动。同时,力控制算法可以使机器人沿着它接触过的表面进行跟踪。即使视觉控制算法通常以比力控制算法慢得多的速率被更新,系统仍然可以使用图2A-C中描绘的体系架构以基本更新速率同时为两者供电。
图2A-C中所示的体系架构为扩展系统的能力提供了许多机会,而无需进行重大的重新工程设计。多个并行且独立的数据流允许实现有利于本地演示学习的机器学习功能。
例如,为了更彻底地使机器人适应特定环境,集成考虑本地环境数据的传感器可以是高度有利的。
使用本地环境数据的一个示例是考虑电气连接性的函数。电气连接性对于作为用于各种具有挑战性的机器人任务的奖励因素可以是有用的,这些任务包括在两个组件之间建立电流。这些任务包括将电缆插入插孔、将电源插头插入电源插座以及拧入灯泡,仅举几个示例。
为了将电气连接性集成到修改子系统280中,例如可以是传感器260之一的电传感器可以被配置在工作区中以检测何时已经建立了电流。电传感器的输出然后可以由分离的神经网络子系统处理,并且结果可以被添加到任务状态表示205。可替代地,电传感器的输出可以直接作为输入提供给实现经调节的控制策略的系统或强化学习子系统。
使用本地环境数据的另一个示例是考虑某些类型的音频数据的函数。例如,许多连接器插入任务在任务成功完成时会发出非常独特的声音。因此,系统可以使用捕获音频的麦克风来和其输出可以被添加到任务状态表示的音频处理神经网络。然后,系统可以使用考虑到连接器插入的声音的特定声学特点的功能,这迫使学习子系统了解成功的连接器插入听起来是什么样的。
图3B是相机腕带的示意图。相机腕带是丰富仪器类型的示例,其可以被用于通过上述体系架构执行高精度演示学习。图3B是透视图,其中机器臂末端的工具最靠近观察者。
在这个示例中,相机腕带安装在机器臂335上,就在位于机器臂335最末端的工具345之前。相机腕带用套环345安装到机器臂335上并具有四个径向安装的相机310a-d。
套环345可以具有允许套环345牢固地安装到机器臂的端部的任何适当的凸形。套环345可以被设计为添加到由第三方制造商制造的机器人。例如,分发技能模板的系统还可以分发相机腕带,以便帮助非专业用户快速收敛模型。可替代地或附加地,套环345可以在制造过程期间由制造商集成到机器臂中。
套环345可以具有椭圆形状,诸如圆形或卵形,或矩形形状。套环345可以由在工具345被紧固之前紧固到机器臂的端部的单个固体体积形成。或者,套环345可以通过紧固机构(例如,扣环或闩锁)打开和牢固地闭合。套环345可以由提供与机器臂的牢固连接的任何适当材料制成,例如,硬塑料;玻璃纤维;织物;或金属,例如,铝或钢。
每个相机310a-d具有将传感器、其它电子器件和相应透镜315a-d固定到套环345的相应底座325a-d。套环345还可以包括一个或多个灯355a-b,用于照亮由相机310a-d捕获的体积。一般而言,相机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实际上可以引用定义多个精细控制的移动的状态机的插入技能模板。例如,插入技能模板可以包括以尽可能精确地将连接器与插座对准为目标的第一移动子任务、以亚实现(subachieving)连接器与插座的侧面之间的接触为目标的第二移动子任务,以及以通过使用插座的侧面作为力引导来实现完全连接为目标的第三移动子任务。
并且进一步的技能模板可以从技能模板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中描述的过程可以由单人团队在一天内执行,以使机器人以适合其环境的方式执行高度精确的技能。这是对传统手动编程方法或甚至传统强化学习方法的巨大改进,传统方法要求许多工程师组成的团队花费数周或数月的时间来设计、测试和训练不能很好地推广到其它场景的模型。
在本说明书中,机器人是具有基本位置、一个或多个可移动组件和运动学模型的机器,该运动学模型可以被用于将一个坐标系(例如,笛卡尔坐标)中的期望位置、姿态或两者映射到用于将一个或多个可移动组件物理地移动到期望位置或姿态的命令。在本说明书中,工具是这样的设备:它是机器人的一个或多个可移动组件的运动链的一部分并附接在其末端。示例工具包括夹具、焊接设备和打磨设备。
在本说明书中,任务是由工具执行的操作。为简洁起见,当机器人只有一个工具时,任务可以被描述为要由机器人整体执行的操作。示例任务包括焊接、点胶、零件定位和表面打磨,仅举几个示例。任务一般与指示执行任务所需的工具的类型以及将执行任务的工作区内的位置相关联。
在本说明书中,运动规划是为执行动作提供信息的数据结构,该动作可以是任务、任务的集群,或转换。运动规划可以:被完全约束,这意味着机器人的所有可控自由度的所有值都被显式或隐式表示;或欠约束,这意味着可控自由度的一些值未被指定。在一些实施方式中,为了实际执行与运动规划对应的动作,运动规划必须被完全约束以包括机器人的所有可控自由度的所有必要值。因此,在本说明书中描述的规划过程中的一些点处,一些运动规划可以欠约束,但是当在机器人上实际执行运动规划时,运动规划可以被完全约束。在一些实施方式中,运动规划表示任务图中的用于单个机器人的两个配置状态之间的边缘。因此,一般每个机器人有一个任务图。
在本说明书中,运动扫掠(swept)体积是在运动规划的整个执行期间由机器人或工具的至少一部分占据的空间区域。运动扫掠体积可以通过与机器人工具系统相关联的碰撞几何来生成。
在本说明书中,转换是描述要在起点和终点之间执行的移动的运动规划。起点和终点可以由姿态、坐标系中的位置或要执行的任务来表示。转换可能通过缺少机器人的一个或多个相应的可控自由度(DOF)的一个或多个值而欠约束。一些转换表示自由运动。在本说明书中,自由运动是没有任何自由度受到约束的转换。例如,简单地从姿态A移动到姿态B而对如何在这两个姿态之间移动没有任何限制的机器人运动是自由运动。在规划过程期间,最终为用于自由运动的DOF变量指派值,并且路径规划器可以为运动使用不与工作区的物理约束冲突的任何适当值。
本说明书中描述的机器人功能可以通过至少部分与硬件无关的与硬件无关的软件堆栈,或者,为简洁起见,仅软件堆栈,来实现。换句话说,软件堆栈可以接受由上述规划过程生成的输入命令,而不要求与特定机器人模型或特定机器人组件特别相关的命令。例如,软件堆栈可以至少部分地由图1的现场执行引擎150和机器人接口子系统160实现。
软件堆栈可以包括在一个方向上增加硬件专用性和在另一方向上增加软件抽象的多个级别。在软件堆栈的最低级别是机器人组件,其中包括执行低级别动作的设备和报告低级别状态的传感器。例如,机器人可以包括各种低级组件,包括马达、编码器、相机、驱动器、夹具、专用传感器、线性或旋转位置传感器以及其它外围设备。作为一个示例,马达可以接收指示应当施加的转矩量的命令。响应于接收到命令,马达可以例如使用编码器将机器人关节的当前位置报告给软件堆栈的更高级别。
软件堆栈中的每个下一个最高级别都可以实现支持多个不同的底层实施方式的接口。一般而言,级别之间的每个接口都从下级到上级提供状态消息,并从上级到下级提供命令。
通常,在每个控制周期期间循环生成命令和状态消息,例如,每个控制周期一个状态消息和一个命令。较低级别的软件堆栈通常比较高级别的软件堆栈具有更严格的实时要求。例如,在软件堆栈的最低级别,控制周期可以具有实际的实时要求。在本说明书中,实时意味着必须执行在软件堆栈的一层接收到的命令,并且可选地,在特定的控制周期时间内将状态消息提供回软件堆栈的上层。如果不满足这个实时要求,那么可以将机器人配置为进入故障状态,例如,通过冻结所有操作。
在下一个最高级别,软件堆栈可以包括特定组件的软件抽象,这些软件抽象将被称为马达反馈控制器。马达反馈控制器可以是任何适当的低级组件的软件抽象,而不仅仅是字面上的马达。因此,马达反馈控制器通过接口将状态接收到较低级别的硬件组件中,并基于从堆栈中的较高级别接收到的较高级别的命令通过接口将命令向下发送回较低级别的硬件组件。马达反馈控制器可以具有任何适当的控制规则,这些规则确定应当如何解释上层命令并将其变换成下级命令。例如,马达反馈控制器可以使用从简单的逻辑规则到更高级的机器学习技术的任何东西将上级命令变换成下级命令。类似地,马达反馈控制器可以使用任何适当的故障规则来确定何时达到故障状态。例如,如果马达反馈控制器接收到上级命令但在控制周期的特定部分内没有接收到下级状态,那么马达反馈控制器可以使机器人进入停止所有操作的故障状态。
在下一个最高级别,软件堆栈可以包括致动器反馈控制器。致动器反馈控制器可以包括用于通过它们相应的马达反馈控制器控制多个机器人组件的控制逻辑。例如,一些机器人组件(例如,关节臂)实际上可以由多个马达控制。因此,致动器反馈控制器可以通过使用其控制逻辑向多个马达的马达反馈控制器发送命令来提供关节臂的软件抽象。
在下一个最高级别,软件堆栈可以包括关节反馈控制器。关节反馈控制器可以表示映射到机器人中的逻辑自由度的关节。因此,例如,虽然机器人的手腕可能由复杂的致动器网络控制,但关节反馈控制器可以抽象出这种复杂性并将这种自由度暴露为单个关节。因此,每个关节反馈控制器可以控制致动器反馈控制器的任意复杂网络。作为示例,六自由度机器人可以由六个不同的关节反馈控制器控制,每个控制器控制实际反馈控制器的单独网络。
软件堆栈的每个级别也可以执行特定于级别的约束的强制执行。例如,如果由致动器反馈控制器接收到的特定转矩值在可接受范围之外,那么致动器反馈控制器可以或者将其修改为在范围内或者进入故障状态。
为了驱动到关节反馈控制器的输入,软件堆栈可以使用命令向量,该向量包括用于系统中每个马达的较低级别的每个组件的命令参数,例如,位置、转矩和速度。为了从关节反馈控制器暴露状态,软件堆栈可以使用包括用于较低级别的每个组件的状态信息的状态向量,例如,系统中每个马达的位置、速度和转矩。在一些实施方式中,命令向量还包括关于将由较低级别的控制器强制执行的约束的一些限制信息。
在下一个最高级别,软件堆栈可以包括关节收集控制器。关节收集控制器可以处置作为部分抽象的集合暴露的命令和状态向量的发布。每个部分可以包括运动学模型,例如,用于执行逆运动学计算、限制信息,以及关节状态向量和关节命令向量。例如,单个关节收集控制器可以被用于将不同的策略集合应用于较低级别的不同子系统。关节收集控制器可以有效地解耦马达如何被物理表示与控制策略如何与那些部分相关联之间的关系。因此,例如,如果机器臂具有可移动底座,那么关节收集控制器可以被用于对臂如何移动强制执行限制策略的集合,并对可移动底座可以如何移动强制执行限制策略的不同集合。
在下一个最高级别,软件堆栈可以包括关节选择控制器。关节选择控制器可以负责在从不同来源发出的命令之间进行动态选择。换句话说,关节选择控制器可以在控制周期期间接收多个命令,并选择要在控制周期期间执行的多个命令之一。在实时控制周期期间从多个命令中动态选择的能力允许大大增加对常规机器人控制系统的控制灵活性。
在下一个最高级别,软件堆栈可以包括关节位置控制器。关节位置控制器可以接收目标参数并动态计算实现目标参数所需的命令。例如,关节位置控制器可以接收位置目标并且可以计算用于实现目标的设定点。
在下一个最高级别,软件堆栈可以包括笛卡尔(Cartesian)位置控制器和笛卡尔选择控制器。笛卡尔位置控制器可以接收笛卡尔空间中的输入目标并使用逆运动学求解器计算关节位置空间中的输出。然后,笛卡尔选择控制器可以对笛卡尔位置控制器计算的结果强制执行限制策略,然后将关节位置空间中的计算出的结果传递给堆栈的下一个最低级别的关节位置控制器。例如,笛卡尔位置控制器可以在笛卡尔坐标x、y和z中给出三个单独的目标状态。对于一些度而言,目标状态可以是位置,而对于其它度而言,目标状态可以是期望的速度。
因此,由软件堆栈提供的这些功能为控制指令提供了广泛的灵活性,以便以与上述更高级别规划技术自然结合的方式轻松表达为目标状态。换句话说,当规划过程使用过程定义图生成要采取的具体动作时,不需要在单个机器人组件的低级命令中指定这些动作。更确切地说,它们可以被表达为软件堆栈接受的高级目标,这些目标通过各个级别进行翻译,直到最终成为低级命令。而且,通过规划过程生成的动作可以以使人类操作者可以理解它们的方式在笛卡尔空间中指定,这使得调试和分析计划表更容易、更快并且更直观。此外,通过规划过程生成的动作不需要与任何特定的机器人模型或低级命令格式紧密耦合。代替地,在规划过程期间生成的相同动作实际上可以由不同的机器人模型执行,只要它们支持相同的自由度并且在软件堆栈中已经实现了适当的控制级别即可。
本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件(包括本说明书中公开的结构及其结构等同物)、或者在它们中的一个或多个的组合中实施。本说明书中描述的主题的实施例可以被实现为一个或多个计算机程序,即,在有形的非暂时性存储介质上编码的计算机程序指令的一个或多个模块,以由数据处理装置执行或控制其操作。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行访问存储设备或它们中的一个或多个的组合。可替代地或此外,程序指令可以被编码在人工生成的传播信号(例如,机器生成的电、光或电磁信号)上,生成这些信号以便对信息进行编码以传输到合适的接收器装置以由数据处理装置执行。
术语“数据处理装置”是指数据处理硬件,并且囊括了用于处理数据的所有类型的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或还包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,装置可以可选地包括为计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
计算机程序(也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不需要对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的一部分(例如标记语言文档中存储的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署为在位于一个站点或分布在多个站点并通过数据通信网络互连的一个或多个计算机上执行。
被配置为执行特定操作或动作的一个或多个计算机的系统意味着该系统已在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使得系统执行操作或行动。被配置为执行特定操作或动作的一个或多个计算机程序意味着该一个或多个程序包括指令,指令在由数据处理装置执行时使该装置执行操作或动作。
如在本说明书中使用的,“引擎”或“软件引擎”是指提供与输入不同的输出的软件实现的输入/输出系统。引擎可以是编码的功能块,诸如库、平台、软件开发工具包(“SDK”)或对象。每个引擎都可以在任何适当类型的包括一个或多个处理器和计算机可读介质的计算设备上实现,例如服务器、移动电话、平板计算机、笔记本计算机、音乐播放器、电子书阅读器、膝上型或台式计算机、PDA、智能电话或其它固定或便携式设备。此外,引擎中的两个或更多个可以在相同的计算设备上或在不同的计算设备上实现。
本说明书中描述的处理和逻辑流程可以由一个或多个可编程计算机执行,该可编程计算机执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行功能。处理和逻辑流程还可以由专用逻辑电路系统(例如,FPGA或ASIC)执行,或者由专用逻辑电路系统和一个或多个编程的计算机的组合来执行。
适于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或者任何其它类型的中央处理单元。一般而言,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路系统补充或结合在其中。一般而言,计算机还将包括一个或多个用于存储数据的大容量存储设备(例如,磁盘、磁光盘或光盘),或者被可操作地耦合到一个或多个大容量存储设备以从其接收数据或向其传送数据或两者兼有。但是,计算机不需要这样的设备。而且,计算机可以嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏机、全球定位系统(GPS)接收器或便携式存储设备(例如通用串行总线(USB)闪存驱动器),仅举几个示例。
适于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,例如包括:半导体存储器设备,例如,EPROM、EEPROM和闪存设备;磁盘,例如,内部硬盘或可移动磁盘;磁光盘;和CD ROM和DVD-ROM盘。
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于向用户显示信息的显示设备(例如,CRT(阴极射线管)或LCD(液晶显示器))以及用户可以通过其向计算机提供输入的键盘和定点设备(例如,鼠标、轨迹球或呈现敏感显示器或其它表面)。也可以使用其它类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求而向用户的设备上的web浏览器发送网页。而且,计算机可以通过将文本消息或其它形式的消息发送到个人设备(例如,运行消息收发应用的智能电话)并从用户接收响应消息来与用户交互。
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有图形用户界面或web浏览器或app的客户端计算机,用户可以通过该图形用户界面或web浏览器或app与本说明书中描述的主题的实施方式进行交互),或者一个或多个这样的后端、中间件或前端组件的任意组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)相互连接。通信网络的示例包括局域网(LAN)和广域网(WAN),例如互联网。
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户机和服务器的关系是通过在各自的计算机上运行并且彼此之间具有客户机-服务器关系的计算机程序产生。在一些实施例中,服务器例如向用户设备传输数据,例如,HTML页面,以用于向与充当客户端的与该设备交互的用户显示数据并从该用户接收用户输入。可以在服务器上从设备接收在用户设备处生成的数据,例如,用户交互的结果。
除上述实施例外,以下实施例也具有创新性:
实施例1是一种方法,包括:
由被配置为控制机器人的在线执行系统接收待训练的技能模板以使机器人执行具有多个子任务的特定技能;
识别由技能模板定义的一个或多个演示子任务,其中每个演示子任务是要使用本地演示数据进行精炼的动作;
由在线执行系统为所述一个或多个演示子任务中的每个演示子任务生成相应的本地演示数据集合;
由在线执行系统将本地演示数据集合上传到基于云的训练系统;
由基于云的训练系统为每个本地演示数据集合生成相应的经训练的模型参数;
由在线执行系统接收由基于云的训练系统生成的经训练的模型参数;以及
使用由基于云的训练系统生成的经训练的模型参数执行技能模板。
实施例2是实施例1的方法,其中生成相应的本地演示数据集合包括为多个时间点中的每个时间点生成任务状态表示。
实施例3是实施例2的方法,其中任务状态表示各自表示由观察机器人的相应传感器生成的输出。
实施例4是实施例1-3中的任一项的方法,其中在线执行系统和机器人位于同一设施中,并且其中基于云的训练系统只能通过互联网访问。
实施例5是实施例1-4中的任一项的方法,还包括:
由在线执行系统从基于云的训练系统接收用于所述一个或多个演示子任务中的每个演示子任务的基本控制策略。
实施例6是实施例5的方法,其中执行技能模板包括由在线执行系统使用由基于云的训练系统生成的经训练的模型参数来生成校正性动作。
实施例7是实施例6的方法,还包括将校正性动作添加到由从基于云的训练系统接收到的基本控制策略生成的基本动作。
实施例8是一种系统,包括:一个或多个计算机和一个或多个存储指令的存储设备,指令在由一个或多个计算机执行时使一个或多个计算机执行实施例1至7中的任一项的方法。
实施例9是一种用计算机程序编码的计算机存储介质,该程序包括指令,指令在由数据处理装置执行时可操作以使数据处理装置执行实施例1至7中的任一项的方法。
虽然本说明书包含许多具体的实施细节,但这些不应当被解释为对任何发明的范围或所要求保护的范围的限制,而是对特定发明的特定实施例的特定特征的描述。本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以在多个实施例中单独地实现或以任何合适的子组合来实现。而且,尽管上述特征可以被描述为以某些组合起作用,甚至最初被要求这样保护,但是在某些情况下,可以从所要求保护的组合中删除该组合中的一个或多个特征,并且所要求保护的组合可以指向子组合或子组合的变化。
类似地,尽管在附图中以特定次序描绘了操作,但这不应当被理解为要求以所示的特定次序或以顺序的次序执行这些操作,或者要求执行所有所示的操作,以获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。而且,上述实施例中各种系统模块和组件的分离不应当被理解为在所有实施例中都需要这种分离,并且应当理解的是,所描述的程序组件和系统一般可以集成在单个软件产品中或者封装到多个软件产品中。
已经描述了本主题的特定实施例。其它实施例在以下权利要求的范围内。例如,权利要求中记载的动作可以以不同的次序执行,并且仍然获得期望的结果。作为一个示例,附图中描述的过程不一定需要所示的特定次序或顺序的次序来获得期望的结果。在某些情况下,多任务处理和并行处理可能是有利的。
Claims (20)
1.一种由一个或多个计算机执行的方法,所述方法包括:
由被配置为控制机器人的在线执行系统接收待训练的技能模板以使所述机器人执行具有多个子任务的特定技能;
识别由所述技能模板定义的一个或多个演示子任务,其中每个演示子任务是要使用本地演示数据进行精炼的动作;
由所述在线执行系统为所述一个或多个演示子任务中的每个演示子任务生成相应的本地演示数据集合;
由所述在线执行系统将所述本地演示数据集合上传到基于云的训练系统;
由所述基于云的训练系统为每个本地演示数据集合生成相应的经训练的模型参数;
由所述在线执行系统接收由所述基于云的训练系统生成的所述经训练的模型参数;以及
使用由所述基于云的训练系统生成的所述经训练的模型参数执行所述技能模板。
2.如权利要求1所述的方法,其中生成所述相应的本地演示数据集合包括为多个时间点中的每个时间点生成任务状态表示。
3.如权利要求2所述的方法,其中所述任务状态表示各自表示由观察所述机器人的相应传感器生成的输出。
4.如权利要求1所述的方法,其中所述在线执行系统和所述机器人位于同一设施中,并且其中所述基于云的训练系统只能通过互联网访问。
5.如权利要求1所述的方法,还包括:
由所述在线执行系统从所述基于云的训练系统接收用于所述一个或多个演示子任务中的每个演示子任务的基本控制策略。
6.如权利要求5所述的方法,其中执行所述技能模板包括由所述在线执行系统使用由所述基于云的训练系统生成的所述经训练的模型参数生成校正性动作。
7.如权利要求6所述的方法,还包括将所述校正性动作添加到由从所述基于云的训练系统接收到的所述基本控制策略生成的基本动作。
8.一种系统,包括:
一个或多个计算机和一个或多个存储指令的存储设备,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机执行包括以下的操作:
由被配置为控制机器人的在线执行系统接收待训练的技能模板以使所述机器人执行具有多个子任务的特定技能;
识别由所述技能模板定义的一个或多个演示子任务,其中每个演示子任务是要使用本地演示数据进行精炼的动作;
由所述在线执行系统为所述一个或多个演示子任务中的每个演示子任务生成相应的本地演示数据集合;
由所述在线执行系统将所述本地演示数据集合上传到基于云的训练系统;
由所述基于云的训练系统为每个本地演示数据集合生成相应的经训练的模型参数;
由所述在线执行系统接收由所述基于云的训练系统生成的经训练的模型参数;以及
使用由所述基于云的训练系统生成的所述经训练的模型参数执行所述技能模板。
9.如权利要求8所述的系统,其中生成所述相应的本地演示数据集合包括为多个时间点中的每个时间点生成任务状态表示。
10.如权利要求9所述的系统,其中所述任务状态表示各自表示由观察所述机器人的相应传感器生成的输出。
11.如权利要求8所述的系统,其中所述在线执行系统和所述机器人位于同一设施中,并且其中所述基于云的训练系统只能通过互联网访问。
12.如权利要求8所述的系统,其中所述操作还包括:
由所述在线执行系统从所述基于云的训练系统接收用于所述一个或多个演示子任务中的每个演示子任务的基本控制策略。
13.如权利要求12所述的系统,其中执行所述技能模板包括由所述在线执行系统使用由所述基于云的训练系统生成的所述经训练的模型参数生成校正性动作。
14.如权利要求13所述的系统,还包括将所述校正性动作添加到由从所述基于云的训练系统接收到的所述基本控制策略生成的基本动作。
15.一种或多种非暂时性计算机存储介质,其用计算机程序指令被编码,所述指令在由一个或多个计算机执行时使所述一个或多个计算机执行包括以下的操作:
由被配置为控制机器人的在线执行系统接收待训练的技能模板以使所述机器人执行具有多个子任务的特定技能;
识别由所述技能模板定义的一个或多个演示子任务,其中每个演示子任务是要使用本地演示数据进行精炼的动作;
由所述在线执行系统为所述一个或多个演示子任务中的每个演示子任务生成相应的本地演示数据集合;
由所述在线执行系统将所述本地演示数据集合上传到基于云的训练系统;
由所述基于云的训练系统为每个本地演示数据集合生成相应的经训练的模型参数;
由所述在线执行系统接收由所述基于云的训练系统生成的所述经训练的模型参数;以及
使用由所述基于云的训练系统生成的所述经训练的模型参数执行所述技能模板。
16.如权利要求15所述的非暂时性计算机存储介质,其中生成所述相应的本地演示数据集合包括为多个时间点中的每个时间点生成任务状态表示。
17.如权利要求16所述的非暂时性计算机存储介质,其中所述任务状态表示各自表示由观察所述机器人的相应传感器生成的输出。
18.如权利要求15所述的非暂时性计算机存储介质,其中所述在线执行系统和所述机器人位于同一设施中,并且其中所述基于云的训练系统只能通过互联网访问。
19.如权利要求15所述的非暂时性计算机存储介质,还包括:
由所述在线执行系统从所述基于云的训练系统接收用于所述一个或多个演示子任务中的每个演示子任务的基本控制策略。
20.如权利要求19所述的非暂时性计算机存储介质,其中执行所述技能模板包括由所述在线执行系统使用由所述基于云的训练系统生成的所述经训练的模型参数生成校正性动作。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/880,724 | 2020-05-21 | ||
US16/880,724 US11679497B2 (en) | 2020-05-21 | 2020-05-21 | Distributed robotic demonstration learning |
PCT/US2021/032741 WO2021236506A1 (en) | 2020-05-21 | 2021-05-17 | Distributed robotic demonstration learning |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115666871A true CN115666871A (zh) | 2023-01-31 |
Family
ID=76284245
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180036594.XA Pending CN115666871A (zh) | 2020-05-21 | 2021-05-17 | 分布式机器人演示学习 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11679497B2 (zh) |
EP (1) | EP4135938A1 (zh) |
JP (1) | JP7487338B2 (zh) |
KR (1) | KR20230002940A (zh) |
CN (1) | CN115666871A (zh) |
WO (1) | WO2021236506A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11685047B2 (en) * | 2020-05-21 | 2023-06-27 | Intrinsic Innovation Llc | Skill template distribution for robotic demonstration learning |
US11958529B2 (en) * | 2020-08-20 | 2024-04-16 | Nvidia Corporation | Controlling position of robot by determining goal proposals by using neural networks |
US20210319367A1 (en) * | 2021-06-25 | 2021-10-14 | Rita H. Wouhaybi | Diversified imitation learning for automated machines |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7383100B2 (en) | 2005-09-29 | 2008-06-03 | Honda Motor Co., Ltd. | Extensible task engine framework for humanoid robots |
US9070083B2 (en) | 2011-12-13 | 2015-06-30 | Iucf-Hyu Industry-University Cooperation Foundation Hanyang University | Method for learning task skill and robot using thereof |
US9008840B1 (en) | 2013-04-19 | 2015-04-14 | Brain Corporation | Apparatus and methods for reinforcement-guided supervised learning |
US9314924B1 (en) | 2013-06-14 | 2016-04-19 | Brain Corporation | Predictive robotic controller apparatus and methods |
US9384443B2 (en) | 2013-06-14 | 2016-07-05 | Brain Corporation | Robotic training 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 |
JP6494331B2 (ja) | 2015-03-03 | 2019-04-03 | キヤノン株式会社 | ロボット制御装置およびロボット制御方法 |
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 |
WO2020047120A1 (en) | 2018-08-28 | 2020-03-05 | 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 |
JP6542839B2 (ja) | 2017-06-07 | 2019-07-10 | ファナック株式会社 | 制御装置及び機械学習装置 |
JP7085788B2 (ja) * | 2017-09-12 | 2022-06-17 | 達闥機器人股▲分▼有限公司 | ロボットの動的学習方法、システム、ロボット及びクラウドサーバ |
JP2019079227A (ja) | 2017-10-24 | 2019-05-23 | 日本電信電話株式会社 | 状態遷移規則獲得装置、行動選択学習装置、行動選択装置、状態遷移規則獲得方法、行動選択方法、およびプログラム |
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 |
US20190262990A1 (en) | 2018-02-28 | 2019-08-29 | Misty Robotics, Inc. | Robot skill management |
US11052541B1 (en) * | 2018-12-05 | 2021-07-06 | Facebook, Inc. | Autonomous robot telerobotic interface |
CN109890573B (zh) * | 2019-01-04 | 2022-05-03 | 上海阿科伯特机器人有限公司 | 移动机器人的控制方法、装置、移动机器人及存储介质 |
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 |
KR20210096523A (ko) * | 2020-01-28 | 2021-08-05 | 엘지전자 주식회사 | 로봇의 위치 인식 |
US11685047B2 (en) | 2020-05-21 | 2023-06-27 | Intrinsic Innovation Llc | Skill template distribution for robotic demonstration learning |
US11986958B2 (en) | 2020-05-21 | 2024-05-21 | Intrinsic Innovation Llc | Skill templates for robotic demonstration learning |
US20220048186A1 (en) * | 2020-08-15 | 2022-02-17 | Rapyuta Robotics Co., Ltd. | Dynamically generating solutions for updating plans and task allocation strategies |
-
2020
- 2020-05-21 US US16/880,724 patent/US11679497B2/en active Active
-
2021
- 2021-05-17 KR KR1020227040720A patent/KR20230002940A/ko unknown
- 2021-05-17 EP EP21730433.6A patent/EP4135938A1/en active Pending
- 2021-05-17 CN CN202180036594.XA patent/CN115666871A/zh active Pending
- 2021-05-17 WO PCT/US2021/032741 patent/WO2021236506A1/en unknown
- 2021-05-17 JP JP2022568556A patent/JP7487338B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
EP4135938A1 (en) | 2023-02-22 |
JP2023526211A (ja) | 2023-06-21 |
KR20230002940A (ko) | 2023-01-05 |
JP7487338B2 (ja) | 2024-05-20 |
WO2021236506A1 (en) | 2021-11-25 |
US11679497B2 (en) | 2023-06-20 |
US20210362327A1 (en) | 2021-11-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11986958B2 (en) | Skill templates for robotic demonstration learning | |
Xia et al. | A digital twin to train deep reinforcement learning agent for smart manufacturing plants: Environment, interfaces and intelligence | |
JP7487341B2 (ja) | ロボット実証学習のためのスキルテンプレート配布 | |
US11780086B2 (en) | Robotic demonstration learning device | |
US11534913B2 (en) | Integrating sensor streams for robotic demonstration learning | |
JP7487338B2 (ja) | 分散型ロボット実証学習 | |
US11820014B2 (en) | Simulated local demonstration data for robotic demonstration learning | |
US11654552B2 (en) | Backup control based continuous training of robots | |
US20210349444A1 (en) | Accelerating robotic planning for operating on deformable objects | |
CN114516060A (zh) | 用于控制机器人装置的设备和方法 | |
Hu et al. | A robot learning from demonstration framework for skillful small parts assembly | |
US11524402B2 (en) | User feedback for robotic demonstration learning | |
Nandikolla et al. | Teleoperation Robot Control of a Hybrid EEG‐Based BCI Arm Manipulator Using ROS | |
WO2022103573A1 (en) | Decentralized robotic operating environment optimization | |
US20230046520A1 (en) | Machine-learnable robotic control plans | |
US20230050174A1 (en) | Template robotic control plans | |
Solberg et al. | Utilizing Reinforcement Learning and Computer Vision in a Pick-And-Place Operation for Sorting Objects in Motion | |
Cheng | Safe and Efficient Human-Robot Collaboration | |
Marvel | Autonomous learning for robotic assembly applications |
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 |