掌桥专利:专业的专利平台
掌桥专利
首页

根据双手人类演示的双臂机器人教导

文献发布时间:2023-06-19 19:28:50


根据双手人类演示的双臂机器人教导

相关申请的交叉引用

本申请是2020年9月11日提交的、标题为“在根据演示的教导中的双手检测”、序列号为17/018,674的美国发明专利申请的部分继续。

技术领域

本公开涉及工业机器人编程领域,并且更具体地涉及一种用于根据相机图像的序列确定人类演示者的左和右手的身份和姿态的方法,从而产生手运动轨迹,所述手运动轨迹然后针对动作点精度和路径平滑度被改进,并且改进的运动轨迹用于通过人类演示对双臂机器人系统进行教导或编程以执行操作。

背景技术

使用工业机器人重复地执行大范围的制造、装配和材料移动操作是众所周知的。然而,使用传统方法教导机器人执行甚至相当简单的操作-诸如在传送机上以随机位置和定向拾取工件并且将工件移动到容器-已经是有困难的。

一种传统的机器人教导方法包括操作者使用教导器来指示机器人进行增量移动-例如“在X方向上慢进”或“围绕本地Z轴旋转夹具”-直到机器人及其夹具处于正确的位置和定向以执行操作,然后存储操作数据,并将其重复多次。另一种已知的教导机器人执行操作的技术是结合人类演示使用运动捕捉系统。因为已经发现使用教导器和运动捕捉系统的机器人编程是非直观的、耗时的和/或昂贵的,所以已经开发了使用相机图像根据人类演示来进行机器人教导的技术。

在一些类型的操作,例如装配包括许多部件的设备中,人自然地使用两只手来执行操作任务。为了在这些情况下使机器人教导准确,需要可靠地检测人类演示者的左和右手。一种用于确定人类演示者的左和右手的身份的已知方法涉及提供人的整个身体的相机图像,执行图像的拟人分析以识别左和右臂,并且然后基于臂身份来识别左和右手。然而,这种技术需要与手姿态检测所需的图像分开的相机图像来识别臂/手,并且还需要用于身体骨架分析的附加计算步骤。

可以用于识别人类演示者的左和右手的其他技术涉及要求每只手保持相对于另一只手的相对位置,或者要求每只手保持在用于所有教导操作的位置边界内。然而,这些技术对人类演示者的自然手移动施加了无法维持的约束,并且如果违反约束则存在手的错误识别的风险。

此外,一些机器人零件移动或产品装配操作使用两个机器人臂,其中两个机器人臂同时执行两个不同的操作,或者两个机器人臂在诸如部件的拾取、放置和安装的任务上协作。双臂机器人教导遭受上述问题的困扰-使用传统方法是困难的和耗时的。当教导两个机器人臂的运动时,这些问题实际上被加剧。

鉴于上述情况,需要一种用于在人类演示中使用双手检测的双臂机器人教导的有效且可靠的技术。

发明内容

根据本公开的教导,描述和示出了一种用于根据人类演示中的双手检测进行双臂机器人教导的方法。将演示者的手和工件的相机图像提供给第一神经网络,所述第一神经网络根据图像确定左和右手的身份,并且还提供识别的手的裁剪的子图像。将裁剪的子图像提供给第二神经网络,所述第二神经网络根据图像检测左和右手的姿态。整个操作的双手姿态数据被转换为机器人夹具姿态数据,并用于教导两个机器人臂在工件上执行操作,其中,每个手的运动被分配给一个机器人臂。根据相机图像的边缘检测可以用于改进机器人运动,以便针对需要精度的诸如将零件插入到孔中的任务改善零件定位。

结合附图,根据以下描述和所附权利要求,当前公开的装置和方法的附加特征将变得显而易见。

附图说明

图1是根据本公开的实施例的如何分析人手的图像以确定指型机器人夹具的对应位置和定向的图示;

图2是根据本公开的实施例的如何分析人手的图像以确定磁性或吸盘型机器人夹具的对应位置和定向的图示;

图3是根据本公开的实施例的用于根据人类演示者的双手的相机图像来识别手位置和姿态的系统和步骤的图示;

图4是根据本公开的实施例的用于训练在图3的系统中使用的手检测和识别神经网络的步骤的图示;

图5是根据本公开的实施例的用于根据人类演示者的双手的相机图像来识别手位置和姿态的方法的流程图;

图6是根据本公开的实施例的用于使用人类演示者的双手和对应工件的相机图像来教导机器人执行操作的方法的流程图;

图7是根据本公开的实施例的用于基于使用双手通过人类演示进行的教导的机器人操作的系统的图示;

图8是根据本公开的实施例的用于根据人类演示者的双手的相机图像识别手位置和姿态、改进双手运动并将双手运动用于双机器人臂教导的系统和步骤的框图图示;

图9是如图8的各个步骤中的一个所指示的用于使用基于视觉的边缘检测的精确对象定位,以提供双手运动的改进的开始和目标位置的多步骤技术的图示;

图10是3D曲线图集,其示出了如图8的多个步骤中的一个所示的用于平滑或简化手运动轨迹的两种不同技术;

图11是根据本公开的实施例的用于基于使用双手通过人类演示进行的教导的双臂机器人操作的系统的图示;以及

图12是根据本公开的实施例的用于根据人类演示中的双手检测进行双臂机器人教导的方法的流程图。

具体实施例

以下针对通过双手人类演示的双臂机器人教导的本公开的实施例的讨论本质上仅仅是示例性的,并且决不旨在限制所公开的设备和技术或者它们的应用或使用。

使用工业机器人进行各种制造、装配和材料移动操作是众所周知的。一种已知类型的机器人操作有时被称为“拾取、移动和放置”,其中机器人从第一位置拾取零件或工件,移动零件并将其放置在第二位置。第一位置通常是传送带,在其中随机定向的零件是流动的,例如刚刚从模具取出的零件。第二位置可以是导致不同操作的另一传送带,或者可以是装运容器,但是在任一情况下,零件需要放置在特定位置处并且在第二位置处以特定姿态定向。其它机器人操作-例如将多个部件装配到诸如计算机机箱之类的设备中-类似地需要从一个或多个源拾取零件并将其放置处于精确的位置和定向。

为了执行上述类型的操作,通常使用相机来确定到来的零件的位置和定向,并且必须教导机器人使用指型夹具或磁性或吸盘夹具以特定方式抓取零件。传统上,教导机器人如何根据零件的定向来抓取零件是由人类操作者使用教导器来完成的。教导器由操作者使用,以指示机器人进行增量移动-例如“在X方向慢进”或“绕本地Z轴旋转夹具”-直到机器人及其夹具处于正确的位置和定向以抓取工件。然后,机器人控制器记录机器人配置以及工件位置和姿态,以用于“拾取”操作。然后,类似的教导器命令被用于定义“移动”和“放置”操作。然而,经常发现使用教导器对机器人进行编程是非直观的、容易出错的和耗时的,尤其是对于非专业操作者。

另一种已知的教导机器人执行拾取、移动和放置操作的技术是使用运动捕捉系统。运动捕捉系统由排列在工作单元周围的多个相机组成,以在操作者操纵工件时记录人类操作者和工件的位置和定向。操作者和/或工件可以具有附加的可唯一识别的标记点,以便在执行操作时更精确地检测相机图像中操作者和工件上的关键位置。然而,这种类型的运动捕捉系统是昂贵的,并且难以且耗时地精确设置和配置以使得所记录的位置是准确的。

已经开发了克服上述现有机器人教导方法的限制的技术,包括使用单个相机来捕获执行自然零件抓取和移动动作的人的图像的方法,其中分析人的手的图像及其相对于零件的位置以生成机器人编程命令。

图1是根据本公开的实施例的如何分析人手的图像以确定指型机器人夹具的对应位置和定向的图示。手110具有被限定为附接到其上的手坐标框架120。手110包括具有拇指尖114的拇指112和具有食指尖118的食指116。拇指112和食指116上的其他点也可以在相机图像中被识别,诸如拇指112和食指116的根部的位置以及拇指112和食指116的第一指关节的位置等。

点122位于拇指112的根部和食指116的根部之间的中间,其中点122被定义为手坐标框架120的原点。手坐标框架120的定向可以使用适于与机器人夹具定向相关的任何惯例来定义。例如,手坐标框架120的Y轴可以被定义为与拇指112和食指116的平面(该平面由点114、118和122定义)正交。因此,X和Z轴位于拇指112和食指116的平面内。此外,Z轴可以被定义为平分拇指112和食指116所成的角度(角度114-122-118)。然后,X轴定向可以由右手规则根据已知的Y和Z轴找到。如上所述,这里定义的惯例仅仅是示例性的,并且可以替代地使用其他坐标框架定向。要点在于,可以基于手上的关键可识别点来定义坐标框架位置和定向,并且该坐标框架位置和定向能够与机器人夹具位置和定向相关。

相机(图1中未示出,稍后讨论)可以用于提供手110的图像,其中图像然后能够被分析以确定拇指112和食指116(诸如在工作单元坐标框架中)的空间位置,包括拇指尖114和食指尖118以及指关节,并且因此确定原点位置122和手参考框架120的定向。在图1中,手参考框架120的位置和定向与附接到机器人160的夹具150的夹具坐标框架140相关。夹具坐标框架140具有与手参考框架120的原点122对应的原点142,以及分别对应于食指尖118和拇指尖114的点144和146。因此,指型夹具150的两个指处于夹具坐标框架140的X-Z平面中,其中Z轴平分角度146-142-144。

夹具坐标框架140的原点142也被定义为机器人160的工具中心点。工具中心点是其位置和定向对于机器人控制器已知的点,其中控制器能够向机器人160提供命令信号以将工具中心点及其相关联的坐标框架(夹具坐标框架140)移动到限定的位置和定向。

图2是根据本公开的实施例的如何分析人手的图像以确定磁性或吸盘型机器人夹具的对应位置和定向的图示。而图1示出了手姿态如何能够与具有可移动的手指的机械夹具的定向相关联,图2示出了手姿态如何能够与扁平夹具(例如圆形)相关联,所述扁平夹具利用吸力或磁力通过零件的扁平表面拾取零件。

手210也包括拇指212和食指216。点214位于拇指212与零件220接触的地方。点218位于食指216与零件220接触的地方。点230被定义为存在于点214和218之间的中间,其中点230对应于机器人260上的表面夹具250的工具中心点(TCP)240。在图2所示的表面夹具250的情况下,基于指关节和指尖的检测,夹具250的平面可被定义为包含线214-218并与拇指212和食指216的平面垂直的平面。如上所述,夹具250的工具中心点240对应于点230。这完全限定了与手210的位置和姿态相对应的表面夹具250的位置和方向。

用于基于人类演示(特别是基于对相机的人手和工件的图像的分析)来教导机器人执行操作的技术在共同转让给本申请的、2020年4月8日提交的、标题为“通过人类演示的机器人教导”、序列号为16/843,185的美国专利申请中有所描述,所述16/843,185申请(下文中称为“所述'185申请”)通过引用整体结合于此。其中,所述'185申请公开了用于根据手的相机图像确定单个手的关键点(指关节等)的3D坐标的技术。

在一些类型的操作,例如装配包括若干部件的设备中,人类演示者自然地使用两只手来执行操作任务。为了在这些情况下使机器人教导准确,在图像中可靠地识别人类演示者的左和右手是必要的。一种用于确定人类演示者的左和右手的身份的已知方法涉及提供人的整个身体的相机图像,执行身体的图像的拟人分析以识别左和右臂,然后基于臂身份来识别左和右手。然而,这种技术需要与手姿态检测所需的图像分开的相机图像来识别臂/手,并且还需要用于身体骨架分析的附加计算步骤。其它双手教导方法禁止人类演示者将手彼此交叉到它们的“相对侧”。

通过使用所述'185申请的关键点检测方法,本公开描述了用于在相机图像中可靠地确定人类演示者的双手的身份、位置和姿态的技术,而不对演示者的使用或他/她的手的移动施加人工限制,并且不需要如现有方法中所需的全身图像和分析。

图3是根据本公开的实施例的用于根据人类演示者的双手的相机图像来识别手位置和姿态的系统和步骤的图示。相机310提供训练工作空间的图像,即,相机310提供操作者的手在执行教导演示时将占据的区域的图像。训练工作空间可以是例如设备在其上正被装配的桌面。相机310优选地是提供训练工作空间的彩色图像但不像3D相机那样提供深度信息的二维(2D)相机。

相机310提供如图3所示的图像312。图像312的处理在图3中详细描述。相机310提供连续的图像流,其中每个图像如在图3中所示的被处理以提供被机器人使用的完整的运动序列,例如拾取零件、将其移动到新的位置、以及以期望的姿态将其放置。人类演示者在图像312的顶部,因此右手出现在图像312的左侧,而左手出现在图像312的右侧。

通过第1神经网络320分析图像312以确定左和右手的身份以及它们在图像312中的相应位置。第1神经网络320-能够在仅手(而不是整个身体)的图像中识别左和右手-提供了现有手图像分析系统中不可用的能力。第1神经网络320基于诸如手指曲率(人手的手指仅能在一个方向上弯曲的事实)以及手指和拇指的相对位置等线索来识别左和右手,而不管手在图像312中的相对位置。通过适当的训练(下面参考图4讨论),第1神经网络320已经被证明快速且可靠地确定左和右手的在图像312中的身份和位置。

基于在框330处第1神经网络320的输出,创建右手的裁剪的图像332和左手的裁剪的图像334。同样,基于手的实际身份,通过由第1神经网络320进行的图像分析,而不是简单地基于手在图像310/312中的位置,来确定右手的图像332和左手的图像334。即,在一些图像中,手可以被交叉,使得左和右手出现在预期的“正常”位置的对面。

如图所示,右手的图像332和左手的图像334在手周围被紧密地裁剪,以便提供最大量的图像分辨率和最小量的多余数据用于后续分析。右手的图像332在线342上被提供给第2神经网络350。第2神经网络350分析图像332以确定右手上的多个关键点的三维(3D)坐标。关键点包括手指指尖、手指指关节、拇指指尖和拇指指关节。使用特定手(出于本讨论的目的,假设为右手)的许多图像来训练第2神经网络350。在上述16/843,185号申请中公开了用于根据已知身份(左或右)的手的图像确定手上的关键点的3D坐标的技术。

左手的图像334在线344上被提供。在训练第2神经网络350以识别右手的图像中的关键点的情况下,在被提供给第2神经网络350之前,在框346处左手的图像334必须水平翻转。第2神经网络350分析图像334的翻转版本以确定左手上的许多关键点(手指指尖、指关节等)的三维(3D)坐标。因为图像334已经被水平翻转,所以第2神经网络350能够准确地分析翻转的图像334,就好像它是右手的图像一样。

为了清楚起见,可以使用左手或右手的图像来训练第2神经网络350。如果右手图像被用于训练第2神经网络350,则左手的图像必须被翻转以由第2神经网络350处理,反之亦然。

在线362上,右手的3D“线框”结构被提供给框372。如在上面引用的16/843,185申请中详细讨论的,由第2神经网络350输出的手的3D线框结构包括如可以基于原始图像中的可见性确定的手的结构的尽可能多的关键点和连接性(例如,将坐标X1/Y1/Z1处的手指指尖连接到坐标X2/Y2/Z2处的第一指关节的食指骨段等)。也就是说,不能分辨在图像中的视野下方卷曲且被遮挡的手指或手指的部分的位置。

在线364上,从第2神经网络350输出左手的3D线框结构。左手关键点的水平坐标(通常是X坐标)在被提供给框374之前必须在框366处翻转。框366处的水平翻转必须是与框346处的原始图像翻转大约相同的镜面(例如,Y-Z平面)。

作为上述图像分析的结果,框372包含右手的3D线框结构(手指和拇指上的指尖和指关节点的3D坐标),并且框374同样包含左手的3D线框结构。使用来自手的3D坐标数据,可以如图1和2所示以及如上所述地计算夹具坐标。这样,夹具位置和姿态被计算,然后在线380上输出。

图4是根据本公开的实施例的用于训练在图3的系统中使用的手检测和识别神经网络320的步骤的图示。第1神经网络320在图4的中心示出。如图3所示和以上讨论的,第1神经网络320负责确定左和右手的在图像中的身份和位置。通过向第1神经网络320提供许多训练图像来完成第1神经网络320的训练以识别左手和右手,其中左和右手在训练图像中处于预定的相对位置。

图像410是用于训练第1神经网络320的训练图像的示例。图像410包括人类演示者的左和右手,并且左和右手处于已知的相对位置,诸如在分界线的指定侧上,或在边界框中被标识。预先确定在图像410中左和右手的位置的一种方法是使手处于它们的“正常”相对位置(在手腕处不交叉)。预先确定在图像410中左和右手的位置的另一种方法是将手定位在分界线412的相应侧。在图像410中,分界线412位于图像中心处或图像中心附近,但是不必是这种情况。对于手在手腕处交叉的情况,左和右手的位置被手动地标注在边界框中。

如本领域技术人员所知的,第1神经网络320是多层神经网络,其包括输入层、输出层和通常两个或更多个内部隐藏层。训练第1神经网络320以识别手的图像,并识别区分左手和右手的手的结构特性。几个因素的组合-例如手指的曲率(其仅能朝一个方向-朝向手掌-弯曲)、拇指和手指的相对位置等-能够用于区分特定手的顶部与底部以及左部与右部。因为第1神经网络320在分析每个图像之前知道左和右手的身份,所以神经网络320能够自动地构建其层和节点的结构,以可靠地将结构特征与手的身份相关联。在通过分析多个图像进行训练的过程中,第1神经网络320学习识别作为右手特性的结构特征与作为左手特性的特征。

输出图像420示出了根据图像410的训练结果。在框422中检测并定位手,并且第1神经网络320基于其相对于分界线412的位置而知道其是右手。(因为人体位于图像410/420的顶部,所以人的右手在图像410/420的左侧。)类似地,在框424中检测并定位手,并且第1神经网络320基于其位置知道它是左手。采用如框422和424所示的用于围绕手裁剪子图像的技术,其中子图像被裁剪到仅包括所有可见的手指指尖和拇指指尖的区域,以及例如标识为腕关节的位置。

图像430是用于训练第1神经网络320的训练图像的另一示例。图像430再次包括人类演示者的左和右手,并且在边界框中标识左和右手。在图像430中,提供边界框432作为标识右手的注释或索引属性。演示者的手在图像430中交叉,因此右手位于预期左手所在的位置;然而,由于边界框标识,第1神经网络320知道边界框432中的手是演示者的右手。类似地,提供边界框434作为标识左手的注释或索引属性。

输出图像440示出了根据图像430的训练结果。在与边界框432基本相同的框442中检测并定位手,并且第1神经网络320基于边界框信息知道它是右手,即使手被交叉。类似地,在框444中检测并定位手,并且第1神经网络320基于边界框信息知道它是左手。在分析图像430/440中的框442和444中的手的过程中,在手身份检测中递增地训练第1神经网络320。

图像430与图像410非常不同。输入图像包括不同的人类演示者、不同的部件、操作和背景、手套对无手套、以及甚至稍微不同的相机角度(视点)。输入训练图像中的这些差异有助于训练第1神经网络320鲁棒地识别它将在机器人教导的实际执行阶段中处理的图像中的手结构和身份。

许多其它输入图像450被提供给第1神经网络320以用于训练。多个输入图像450中的每个产生输出图像460,在输出图像460中左和右手已经被定位和识别,如图4所示。在训练之后,第1神经网络320准备好被使用,如图3所示,以识别图像312中的左和右手(即使手被交叉),并且提供包含正确识别的手的裁剪的子图像。已经开发了一种测试系统,其演示了诸如第1神经网络320之类的神经网络的能力,以便即使当左和右手在连续的图像序列中重复地重叠、交叉和不交叉时,也如上所述地快速和准确地识别图像中的右和左手。

图5是根据本公开的实施例的用于根据人类演示者的双手的相机图像来识别手位置和姿态的方法的流程图500。流程图500描绘了与图3的系统框图相对应的方法步骤。

在框502处,提供包含人类演示者的双手的图像。诸如图3的图像312之类的图像优选地不包括人的整个身体。图像也不需要使左和右手处于它们的“正常”或“预期”相对位置。该图像描绘了人类演示者在一个或多个工件上执行操作,诸如装配包括多个部件的设备,其中双手用于拾取和放置各个部件。在实际实践中,将快速连续地提供图像(每秒多个图像),使得能够教导空间抓取和放置操作的序列。除了手身份、位置和姿态之外,工件位置和姿态也将根据图像确定并且与手(“夹具”)数据结合用于机器人教导。

在框504处,使用第1神经网络320确定左和右手的在所提供的图像中的身份和位置。在上面详细讨论了在框504中执行的操作。在框506处,原始图像被裁剪为两个子图像,一个包含左手,一个包含右手。用子图像提供手的身份。

在框508处,使用第2神经网络350分析右手子图像以检测手指结构和手姿态。在框508中执行的操作如上所述,并且在较早引用的16/843,185专利申请中详细描述。因为第2神经网络350已经被训练以使用右手或左手的图像来检测手结构,所以需要在第2神经网络350中的分析之前正确地识别子图像。在流程图500中,假设第2神经网络350已经使用右手图像训练;因此,来自框506的右手子图像被直接传递到框508。

在框510处,左手子图像在被提供给框508以供分析之前被水平翻转。再次,假设第2神经网络350已经使用右手图像训练;因此,来自框506的左手子图像在其被传递到框508之前必须被水平翻转。相反的过程同样适用,其中使用左手的图像训练第2神经网络350,并且在分析之前翻转右手子图像。

在框512处,右手的手指结构和手姿态数据(手骨架关键点的3D坐标)被用于计算相应的夹具姿态,并且夹具姿态(与工件姿态数据一起)被输出作为机器人教导步骤。下面讨论用于根据人类演示(手和工件)的图像进行机器人教导的完整方法。

在框514处,来自框508的左手的手指结构和手姿态数据的水平坐标(例如,X坐标)在在框512处被用于计算相应的夹具姿态并且夹具姿态被输出作为机器人教导步骤之前被翻转。水平坐标数据必须相对于镜面翻转或镜像,以将3D手坐标数据从原始输入图像放回其适当位置。

如本领域技术人员将理解的,在手姿态的3D坐标的计算的整个过程中,必须知道在原始输入图像内左和右手子图像的位置。此外,原始提供的图像的像素坐标必须被映射到在其内演示正在发生的物理工作空间,使得3D夹具和工件位置和姿态能够根据图像像素坐标计算。

从框512,输出并记录机器人教导步骤以用于机器人编程。教导步骤包括根据左和右手姿态坐标数据计算的夹具位置和姿态,以及对应的工件位置和姿态。然后,该过程循环回到框502以接收另一输入图像。

图6是根据本公开的实施例的用于使用人类演示者的双手和对应工件的相机图像来教导机器人执行操作的方法的流程图600。流程图600以三个垂直列布置,对应于拾取步骤(在右侧)、移动步骤(中央)和放置步骤(在左侧)。三个单独的步骤示出了如何分析手和工件的图像以创建机器人运动程序,其中图像中的双手检测是一个整体部分。

拾取步骤在开始框602处开始。在框604处,在来自相机310的图像中检测工件和手。在框604中使用上面详细描述的双手检测方法。工件坐标框架的位置和定向根据对图像中的工件的分析来确定,并且对应的手坐标框架的位置和定向根据对图像中的手的分析来确定。

在判断菱形606处,对于每只手,确定手指指尖(图1的拇指指尖114和食指指尖118)是否已经接触工件。这是根据相机图像确定的。当手指指尖已经接触工件时,在框608处记录工件和手的抓取姿态和位置。重要的是,识别手相对于工件的姿态和位置;即,必须相对于诸如工作单元坐标框架之类的某一全局固定参考框架来定义手坐标框架和工件坐标框架的位置和定向。这允许控制器确定如何安置夹具以在稍后的重放阶段中抓取工件。对右和左手中的每一个进行工件接触的分析。

在框608处记录了工件和手的抓取姿态和位置之后,拾取步骤在结束框610处结束。然后,该过程进行到移动步骤,其在框622处开始。移动步骤能够对每只手单独地执行。在框624处,在相机图像中检测工件。在判断菱形626处,如果在相机图像中没有检测到工件,则过程循环回到框624以拍摄另一图像。当在相机图像中检测到工件时,在框628处记录工件位置(以及可选地姿态)。

在框634处,在相机图像中检测手(任一只手-正在执行当前移动操作的那只手)。在判断菱形636处,如果在相机图像中没有检测到手,则过程循环回到框634以拍摄另一图像。当在相机图像中检测到手时,在框638处记录手位置(以及可选地姿态)。当从相同的相机图像检测和记录工件位置(来自框628)和手位置(来自框638)两者时,在框640处组合和记录手位置和工件位置。组合手位置和工件位置可以通过简单地取两者的平均值来实现;例如,如果拇指指尖114和食指指尖118之间的中点应当与工件的中心/原点重合,则可以计算中点和工件中心之间的平均位置。

优选地,通过重复从开始移动框622到组合手和工件位置框640的活动,记录沿移动步骤的多个位置,以定义平滑移动路径。在框640处组合并记录手位置和工件位置,并且不再需要移动步骤位置之后,移动步骤在结束框642处结束。然后,该过程进行到放置步骤,其在框662处开始。

在框664处,在来自相机310的图像中检测工件的位置。在判断菱形666处,确定是否在相机图像中发现工件以及工件是否静止。或者,可以确定手指指尖是否已经断开与工件的接触。当工件被确定为静止和/或手指指尖已经断开与工件的接触时,在框668处记录工件的目的地姿态和位置。放置步骤和教导阶段的整个过程在结束框670处结束。

图6的流程图600中描述的机器人教导过程依赖于图像中的人手姿态的鲁棒检测。当人类演示包括使用双手时,图3-5的双手检测方法和系统是必不可少的部分。

图7是根据本公开的实施例的用于基于通过使用双手的人类演示进行的教导的机器人操作的系统700的图示。人类演示者710处于相机720能够捕获演示者的手和在其上正在执行操作的工件的图像的位置。相机720与图3的相机310相对应。如上文详细描述的,相机720将图像提供给计算机730,其分析图像以识别手的3D线框坐标以及对应的工件位置。计算机730的分析包括图3-5所示的双手检测方法。

人类演示者710演示完整的操作,诸如将多个组件装配成为成品设备。相机720提供连续的图像流,并且计算机730分析图像并且记录如所识别的机器人教导命令。每个教导步骤包括根据手姿态计算的夹具姿态和对应的工件位置/姿态。这种对教导步骤的记录包括由人类演示者710的一只手或两只手执行的抓取和放置操作。

当根据人类演示完全定义机器人操作时,将机器人程序从计算机730传送到机器人控制器740。控制器740与机器人750通信。控制器740计算机器人运动命令以使机器人750将其夹具760移动到根据图像识别的夹具坐标框架的位置和定向。机器人750根据来自控制器740的命令的序列相对于工件770移动夹具760,从而完成由人类演示者710演示的操作。

图7的场景是,夹具760抓取工件770并对工件770执行某个操作,例如将工件770移动到不同的位置和/或姿态。夹具760被示为指型夹具,但代替地也可以是如前所述的吸盘或磁性表面夹具。

图7的系统700可以在两种不同的模式下使用。在一种模式中,人类演示者预先一次教导诸如设备装配之类的操作的所有步骤,然后机器人基于由人类演示所教导的部件移动指令重复地执行装配操作。在另一种被称为远程操作的模式中,人类演示者与机器人实时协作工作,其中手抓取和移动零件的每个动作被分析并立即被机器人执行,同时机器人的运动被视觉反馈给人类操作者。这两种操作模式都能够受益于所公开的用于人类演示中的双手检测的技术。

前面的讨论描述了一种技术,其用于可靠地检测人类演示者的左和右手的运动,并使用双手运动来定义用于教导机器人抓取和移动工件的夹具运动。该方法能够扩展到使用根据人类演示者的双手检测来教导两个机器人臂的协作运动。下面讨论这种技术。

图8是根据本公开的实施例的用于根据人类演示者的双手的相机图像识别手位置和姿态、改进双手运动并将双手运动用于双机器人臂教导的系统和步骤的框图图示。图8的上部如上面参照图3所述的那样操作。

相机810提供人类演示场景的连续图像序列,包括演示者的双手以及正在由演示者处理的工件。相机810将图像提供给第一神经网络820,该神经网络被训练以在框830处识别并分割每个图像中的左和右手。如前所述,第一神经网络820能够正确地识别左和右手,即使它们是交叉的。将左和右手的裁剪的图像提供给第二神经网络840用于分析。(用右手或左手图像)训练第二神经网络840以检测手关键点。示出了通过第二神经网络840的两条路径-一条用于左手裁剪的图像,一条用于右手裁剪的图像。相同的神经网络840能够用于分析左和右手,其中,如前所述,在神经网络840的分析之前和之后,必须翻转未用于训练的手。在框850处,提供用于双手的手关键点(例如,指关节和手指指尖)。从相机810到框850的所有内容都在前面描述过了。对于由人类演示者执行的整个操作,对(例如,以0.1秒的图像间隔的)序列中的每个图像执行双手检测,这导致每只手的连续位置/姿态数据。

在框860处,来自相机810的像素深度数据与手关键点合并,以提供演示者的左手的3D手运动轨迹862和演示者的右手的轨迹872。使用来自3D相机810的像素深度数据是用于获得运动轨迹862和872中的各个点的3D坐标的优选技术。用于获得手关键点的3D坐标的其它技术也是可能的,包括使用多于一个相机810,并且预先提供手尺寸数据(每个手指的每个段的长度)。

在稍后将再次使用(且更详细地论述)的场景中,左手轨迹862描绘手正被降低以拾取存储卡(在点864处),接着将存储卡升高且降低存储卡以将卡放置在适当位置以供安装(在点866处)。此时,右手轨迹872降低并推动存储卡的一端进入到其插槽中(在点874处),然后右手轨迹872升高并离开。左手轨迹862接着升高并移动到存储卡的尚未安装的相对端,且推动存储卡的那端进入到插槽中(在点868处)。再次,框860中所示的3D轨迹是来自人演示的左和右手运动轨迹,并且这些手运动能够被变换成用于双臂机器人系统的机器人夹具运动(参见图1和2)。

在框880处,对来自框860的运动轨迹执行两个不同的改进过程。第一个改进是对象定位,其中使用视觉边缘检测技术来最小化对象(例如,存储卡)相对于对象正被安装到其中的设备(例如,计算机机箱)的放置误差。对象定位是可选的,通常仅在需要精确放置时(例如对于装配任务)使用,并且通常在对象例如被简单地放置在容器中或传送带上时不使用。第二个改进是路径平滑或简化,也是可选的,其中以消除小的颤抖手移动的方式重新定义手运动轨迹,使得替换轨迹更适合于机器人编程。下面参考图9和10进一步讨论框880的改进过程。

在框890处,将来自人类演示者的左和右手的改进的运动轨迹提供给双臂机器人系统,其中“左”机器人臂执行人的左手的运动和任务,而“右”机器人臂执行人的右手的运动和任务。由于图示的相对视点,左手和左机器人臂出现在图8中的图示的右侧。重申,如前所述,由第二神经网络840进行的手的分析提供了拇指和手指位置,其能够用于确定手运动和夹具位置两者。因此,在框890处提供的机器人命令足以使机器人控制器移动每个机器人臂、控制夹具定向、以及控制夹具操作(夹持和松开),以便执行由人类演示的任务。

图9是如图8的框880所指示的用于使用基于视觉的边缘检测进行精确对象定位,以提供双手运动的改进开始和目标位置的多步骤技术的图示。在框910处,从相机810提供在存储卡安装之前的人类演示场景的RGB(彩色)图像。在框910中的图像的图示中,示出了计算机机箱912和存储卡914。存储卡914位于保持器中,该保持器将卡914保持在可由机器人夹具抓取的位置中,然后该机器人夹具将卡914安装到计算机机箱912中的插槽中。在框920处,提供来自框910的RGB图像的边缘图像。框920处的边缘图像是通过以本领域已知的方式执行框910处的视觉(RBG)图像的边缘检测分析来提供的。边缘检测分析能够在与上述手姿态分析相同的计算机上执行。

在框930处,从相机810提供在存储卡安装之后的人类演示场景的RGB图像。在框930中的图像的图示中,计算机机箱912和存储卡914仍然可见,然而,存储卡914现在处于在计算机机箱912中的插槽中的其安装位置。在框940处,通过执行边缘分析来提供来自框930的RGB图像的边缘图像,如上所述。

在框950处,从来自框940的边缘图像减去来自框920的边缘图像。来自框920的边缘图像和来自框940的边缘图像之间的唯一显著差异是存储卡914的位置,存储卡已经从在保持器中的其位置(在侧面)移动到在机箱912中的其安装位置。差异边缘图像(放大到由框922和框942限定的区域)在框960处示出,其中存储卡914的顶部边缘以线962的方式在其安装位置以及任何边缘分析图像所固有的一些噪声像素是可见的。在框970处,来自框960的主要特征(表示存储卡914的顶部边缘的线962)被(放大)示出为变换在来自框930的图像上。

图9中所描述和示出的过程提供足够的信息以使手运动轨迹862和872能够得到补偿,从而将存储卡914的顶部边缘的开始位置和结束位置调整到其精确位置。即,点864的3D坐标能够从框910处的安装前图像调整到存储卡914的顶部边缘的中心(或者如果需要,稍微偏离中心),其中左机器人臂将从保持器抓取卡914。同样地,点866基于来自于框970的卡914的精确安装位置(使用边缘线962)被调整。以相同方式,点874能够被调整为在线962上靠近卡914的一端,并且点868能够被调整为在线962上靠近卡914的另一端。

可以理解,图9中描述的图像边缘分析是使用固定坐标框架执行的,该固定坐标框架与图8的框860中示出的手运动轨迹的坐标框架相同。因此,在(图8的框880处的)图9的边缘检测对象定位过程之后,手运动轨迹已经被补偿以提供在运动轨迹的关键动作点处的精确对象定位。即,动作的位置-例如拾取零件(存储卡)、将存储卡放置在精确位置、以及按压存储卡的顶部边缘以将其安装在其插槽中-从图9的边缘分析/对象定位中获得。卡的角度定向也从边缘分析/对象定位中获得,而不是从手姿态数据中获得。

图10是3D曲线图集,其示出了如图8的框880所指示的用于平滑或简化手运动轨迹的两种不同技术。当人演示用于机器人教导的拾取、移动和放置操作时,人的手经常进行非故意的无关运动,这些运动通常幅度很小。这里公开的技术使用手的大范围运动(起点和终点,以及一般运动形状),并且提供具有更适合于机器人运动编程的特性的更平滑的运动轮廓。

曲线图1010包括原始手运动轨迹,如图8的框860所示。3D手运动轨迹862描绘演示者的左手的运动,轨迹872描绘演示者的右手的运动。在之前描述的场景中,左手轨迹862描绘了手被降低(路径箭头①)以拾取存储卡(在点864处),然后将存储卡升高并降低存储卡(路径箭头②)以将卡放置在用于安装的位置(在点866处)。此时,右手轨迹872降低(路径箭头③)和推动存储卡的一端进入到其插槽中(在点874处),然后右手轨迹872升高并离开。左手轨迹862接着升高并移动到存储卡的尚未安装的相对端(路径箭头④),且推动存储卡的那端进入到插槽中(在点868处)。

如结合图9所讨论的,动作点864、866、868和874的位置和定向已经使用基于边缘检测的对象定位进行了更新(用于诸如装配的精确放置任务)。存储卡914也在曲线图1010上示出以供参考。图10的3D曲线图都表示与上面针对图8和9讨论的相同的固定坐标框架。

曲线图1020是包括运动轨迹1022和1032的3D曲线图,这些运动轨迹分别与它们的原始对应轨迹862和872相比是平滑的。可以理解,轨迹862和872各自跟随多个路径点,其中每个路径点是根据图8所示的一个图像的手姿态分析确定的。平滑的运动轨迹1022是使用来自轨迹862的原始路径点作为基础利用最小二乘内插和样条内插来计算的,最小二乘内插用来创建从原始点去除不必要或无关偏移的新的点集,样条内插用来计算通过新的点集的轨迹1022。对于平滑的运动轨迹1032同样如此。不允许最小二乘内插来移动动作点864、866、868和874。因此,平滑的运动轨迹1022和1032包括在如使用图9中的边缘检测对象定位来补偿的位置处的动作点864、866、868和874。平滑的运动轨迹1022和1032不包括原始手运动轨迹的小幅度“抽动”运动,并且因此更适合于机器人运动编程。

曲线图1040是包括运动轨迹1042和1052的3D曲线图,运动轨迹1042和1052用简化的基于线段的轨迹代替了原始的对应轨迹862和872。使用原始手运动轨迹862作为示例,定义包括简化轨迹1042的多个线段,其中使用来自轨迹862上的原始点中的点864、点866和最高点(最大z坐标)来构造第一个三条线段集。通过将点864直接向上(相同的x和y坐标)投影到具有与最高点相同的z坐标的点1044来创建第一线段。从点1044到直接在点866上方的点1046创建第二线段。第二线段是水平的,穿过从点1044到点1046的路径上的最高点。第三和最后的线段从点1046垂直向下延伸到点866。这样定义的三条线段表示原始轨迹862的第一主移动(从点864至点866)。使用相同的技术来定义表示原始轨迹862的第二移动的简化的基于线段的轨迹。这些线段一起构成简化的轨迹1042。

原始的手运动轨迹872(右手,其简单地执行按压就位任务)可以用单个线段来代替。再次强调,简化的运动轨迹1042和1052包括在如使用图9中的边缘检测对象定位补偿的位置处的动作点864、866、868和874。简化的运动轨迹1042和1052显然非常适合于机器人运动编程。简化的运动轨迹1042和1052可以例如通过修圆直角被制成甚至更适合于机器人运动编程。

图11是根据本公开的实施例的用于基于使用双手通过人类演示进行的教导的双臂机器人操作的系统1100的图示。人类演示者在桌面形式的工作空间1110中演示操作(在这种情况下是装配或安装任务)。在工作空间1110中,相机1120捕获演示者的手(1112/1114)和正在其上执行操作的工件(计算机机箱1116和存储卡1118)的图像。相机1120对应于图8的相机810。如上文详细描述的,相机1120将图像提供给计算机1130,该计算机使用两个先前训练的神经网络来分析图像以识别手的关键点坐标,以及对应的工件位置。如本领域技术人员所理解的,如先前在图7中那样,图11中的设备(例如,相机-计算机、控制器-机器人等)之间的连接可以是硬连线的、无线的或其组合。计算机1130的分析包括图3-5和8所示的双手检测方法,从而产生包括诸如抓取、按压和松开之类的动作的左和右手运动轨迹。

计算机1130将来自相机1120的深度数据应用于来自人类演示的左和右手运动轨迹中的路径点,如图8的框860所示。计算机1130还可选地对手运动轨迹应用两个不同的改进过程。第一改进过程是使用边缘检测的对象定位,当在一个部件插入到另一部件中的孔中的装配过程中需要精确对象放置时有利地使用边缘检测。这种对象定位技术补偿诸如拾起存储卡并将卡插入其插槽中之类的动作点的位置,同时使手运动轨迹的其余部分与人类演示不变。第二改进过程涉及(在经由对象定位进行补偿之后)平滑或简化手运动轨迹以提供更适合于机器人编程的运动轨迹。最终的左和右运动轨迹是计算机1130进行的图像分析和路径改进的结果。

计算机1130向机器人控制器1140提供最终的左和右运动轨迹。控制器1140与相机1150通信,该相机被安置成拍摄机器人工作空间1160的图像。机器人工作空间1160包括左机器人1162和右机器人1164,以及将由机器人1162/1164在上面操作的工件。工件对应于在工作空间1110中在其上执行演示的计算机机箱1116和存储卡1118。相机1150向控制器1140提供工件的图像,并且控制器1140向机器人1162/1164提供控制命令,以使机器人1162/1164执行如人类所演示的操作。控制器1140总是知道每个机器人的夹具在工作空间坐标框架中的位置和定向。工件图像数据使控制器1140能够移动夹具,以使用来自计算机1130的最终的左和右运动轨迹执行所演示的精确的零件安装操作。左机器人1162执行来自演示的左手运动轨迹的运动和动作,右机器人1164执行来自演示的右手运动轨迹的运动和动作。

图11的双臂机器人教导系统也适用于在其中针对每个任务零件正在移动或者被随机安置的任务-诸如传送带上到达的零件或者将从料箱中一次选择一个的零件堆。在这种情况下,如参考图6详细描述的,教导步骤包括手关键点检测和工件姿态检测两者,确定手如何摆姿态以便以某个定向抓取零件。

图12是根据本公开的实施例的用于根据人类演示中的双手检测进行双臂机器人教导的方法的流程图1200。在框1210处,由3D数码相机提供人类演示者的双手的图像。如上文详细讨论的,以连续流的方式提供图像,以使得能够捕获双手的运动和动作。在框1220处,使用第一训练的神经网络来确定图像中的左和右手的身份,即使手“交叉”并且在工作空间演示场景中的正常位置之外。从框1220提供所识别的左和右手的裁剪的子图像。

在框1230处,通过第二训练的神经网络分析裁剪的子图像以检测左和右手的手指结构(包括指尖和指关节的关键点的坐标)。在框1240处,添加来自相机的深度数据以获得手姿态数据,以提供要包括在工作空间坐标框架中的左和右手运动轨迹中的3D路径点(夹具配置也根据手指/拇指位置确定)。在判断菱形1250处,确定任务演示是否完成。如果任务未完成,则过程返回到提供手和工件的图像,并且手运动数据继续在路径点的序列中被捕获。

当在判断菱形1250处任务完成时,因此左和右手运动轨迹也完成,并且过程移至框1260,在那里可选地使用对象定位来改进手运动轨迹。框1260处的对象定位保留左和右手的整体运动轨迹,并且基于如前所述的图像边缘分析来补偿动作点(例如,拾取、放置、按压)的位置。在框1270处,可选地使用图10的技术之一来平滑或简化改进的手运动轨迹。框1270处的改进的结果是最终的左和右运动轨迹。

在框1280处,将最终的左和右运动轨迹提供给操作双机器人臂的机器人控制器。机器人控制器接收正在上面操作的工件的图像,并且命令左机器人臂和右机器人臂使用最终的左运动轨迹和右运动轨迹在工件上执行操作。运动轨迹还包括根据手姿态数据(例如拇指和食指的相对位置)确定的夹具动作。

在整个前述讨论中,描述并暗示了各种计算机和控制器。应当理解,这些计算机和控制器的软件应用和模块在具有处理器和存储器模块的一个或多个计算设备上执行。特别地,这包括上面讨论的计算机730和1130中的处理器以及机器人控制器740和1140。具体地,计算机1130中的处理器被配置成以上述方式执行经由人类演示的双臂机器人教导—包括经由第一和第二神经网络的双手检测以及运动轨迹改进。

如上所述,所公开的用于通过人类演示进行双臂机器人教导中的双手检测的技术使得机器人运动编程比先前的技术更快、更容易和更直观,从而在仅需要单个相机的同时提供对人类演示者的双手的可靠检测,并且使得即使对于需要精确部件放置的装配任务也能够实现双臂机器人系统的无缝编程。

尽管以上已经讨论了在人类演示中使用双手检测的双臂机器人教导的多个示例性方面和实施例,但是本领域技术人员将认识到其修改、置换、添加和子组合。因此,所附权利要求和此后引入的权利要求旨在被解释为包括在它们的真实精神和范围内的所有这些修改、置换、添加和子组合。

技术分类

06120115927799