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

用于在训练和运行时环境中控制机器人物体拾取和放置的基于机器学习的系统和方法

文献发布时间:2023-06-19 13:48:08


用于在训练和运行时环境中控制机器人物体拾取和放置的基于机器学习的系统和方法

本专利申请要求于2019年4月16日提交的美国专利申请第16/385,470号的权益,其出于所有目的通过引用并入本文。

技术领域

本公开涉及物体的机器人抓取,并且更具体地涉及用于由机械臂对物体的基于机器学习的抓取的系统和方法。

背景技术

在至少一些已知方法中,二维(2D)或三维(3D)模型适合要由机器人抓取的物体。备选地,在这样的已知系统和方法中,使用分析推理来计算物体上的抓取位置。这种已知系统和方法的缺点包括对3D建模的时间和计算资源密集型要求、以及模型应用在实际运行时环境中的有效性取决于机器人系统效率的这一事实。此外,这种基于几何的方法忽略预测抓取位置的物体的密度和质量分布。此外,基于物体模型的虚拟模拟训练系统和方法容易出现过度拟合,这会增加抓取失败率。此外,在已知系统和方法中,使用人工标记的物体图像数据集既具有挑战性又不切实际地耗时,并且难以针对工业相关单元操作进行放大。

发明内容

本文中公开的用于控制由机器人系统进行的物体拾取和放置的基于机器学习的系统、方法和软件呈现用于解决机器人拾取问题的新的和改进的处理流水线。该流水线中有四个组件。首先,使用面向机器学习的数据库来保存用于映射(多个)物体图像以掌握(多个)位置的函数。这种映射是物体位置和物体取向不变的。因此,无需估计工作空间中的物体姿势。其次,使用混合机器学习引擎来训练机器人获知模拟和真实环境中的抓取位置。第三,利用融合多个传感器信号的传感器反馈系统来评估抓取质量。最后,所公开的系统和方法能够通过在线学习在运行时期间对抓取进行运行时/在线自我校正和微调。

在一个方面,本公开描述了一种用于控制由机器人系统进行的物体拾取和放置的方法。该机器人系统包括:与存储器设备通信的处理器、与处理器通信的机械臂、以及可操作地耦合到机械臂并且与处理器通信的物体夹具设备。该方法包括由处理器为物体分配并且在存储器设备中存储机器学习模型的机器学习训练数据。机器学习训练数据包括分配给以多个不同物体姿势定位的物体的多个已知抓取位置标签。该方法包括在机器人系统的工作空间中提供物体。对于工作空间中处于多个不同物体姿势中的第一姿势的物体,该方法包括:由处理器在物体上映射第一候选抓取位置;由机械臂和物体夹具设备针对物体上的第一候选抓取位置执行机器人运动;以及由处理器根据至少一个预定性能标准评估针对第一候选抓取位置的执行的结果。

在另一方面,本公开描述了一种用于控制由机器人进行的物体拾取和放置的系统。该系统包括至少一个物体夹具设备和可操作地耦合到该至少一个物体夹具设备的至少一个机械臂。该系统包括至少一个存储器设备和与该至少一个存储器设备通信的至少一个处理器。至少一个处理器被编程为为物体分配机器学习模型的机器学习训练数据。机器学习训练数据包括分配给以多个不同物体姿势定位的物体的多个已知抓取位置标签。对于以多个不同物体姿势中的第一姿势定位在机器人的工作空间中的物体,至少一个处理器被编程为:在物体上映射第一候选抓取位置;由至少一个机械臂和至少一个物体夹具设备针对物体上的第一候选抓取位置执行机器人运动;以及根据存储在至少一个存储器设备中的至少一个预定性能标准评估针对第一候选抓取位置的执行的结果。

在又一方面,本公开描述了一种非暂态计算机可读介质。该非暂态计算机可读介质将用于控制由机器人系统进行的物体拾取和放置的处理器可执行指令存储为软件。在由与一个或多个存储器设备通信的一个或多个处理器执行时,该处理器可执行指令引起一个或多个处理器为物体分配机器学习模型的机器学习训练数据。机器学习训练数据包括分配给以多个不同物体姿势定位的物体的多个已知抓取位置标签。在由一个或多个处理器执行时,对于以多个不同物体姿势中的第一姿势定位在机器人系统的工作空间中的物体,该处理器可执行指令引起一个或多个处理器:在物体上映射候选抓取位置;由机器人系统的至少一个机械臂和至少一个物体夹具设备针对物体上的候选抓取位置执行机器人运动;以及根据至少一个预定性能标准评估针对候选抓取位置的执行的结果。

与已知系统和方法相比,本文中公开的用于控制由机器人系统进行的物体拾取和放置的基于机器学习的系统、方法和软件为用户提供了很多有益的技术效果并且实现了各种优点。这样的好处包括但不限于能够在没有姿势估计的情况下拾取和放置(多个)物体,并且与已知过程相比具有相同或更好的准确性、速度、效率和错误率。与已知系统和方法相比,利用所公开的用于控制由机器人系统进行的物体拾取和放置的系统和方法可以减少(多个)处理器所需要的每个物体CPU时钟周期的所需要的数目。因此,与已知过程相比,所公开的用于控制由机器人系统进行的物体拾取和放置的系统和方法能够以提高的计算、存储器、网络、电力和/或人力资源的利用率来拾取和放置(多个)物体。与涉及大容量和快节奏工业操作的应用中的已知系统和方法相比,本领域普通技术人员可理解的这些和其他实质性和众多技术益处和有利效果尤其明显。

对于包括控制由机器人系统进行的物体拾取和放置的实际应用,对已知系统和方法的这些改进不是仅通过利用传统和常规处理系统和方法来实现的。即使在这种改进可以与已知系统和方法相比在相关时间段内(例如,从几小时到几年)根据每个物体的时间减少(例如,以秒或其分数来衡量)进行量化的情况下,所公开的用于控制由机器人系统进行的物体拾取和放置的基于机器学习的系统、方法和软件以显著更高的效率利用计算、网络、存储器、电力、人员等资源以提供涉及物体的机器人拾取和放置的各种工业单元操作的改进的吞吐量和其总体成本降低。

从以下详细描述和附图将能够理解所公开的原理的其他和替代方面和特征。如将理解的,与所公开的用于由机械臂进行基于机器学习的物体抓取的系统和方法相关的原理能够在其他和不同的实施例中执行,并且能够在各个方面进行修改。因此,应当理解,前述概述和以下详细描述仅是示例性和说明性的,并不限制所附权利要求的范围。

附图说明

图1是根据本公开的实施例的用于控制由机器人系统进行的物体拾取和放置的系统的示意图。

图2是根据本公开的实施例的图1所示的用于控制由机器人系统进行的物体拾取和放置的方法的流程图。

图3是根据本公开的实施例的缩略表示的图2所示的方法的示意图。

图4是根据本公开的实施例的图1的系统中所示的存储器的数据结构的框图。

图5是根据本公开的实施例的用于图2所示的方法的软件架构的框图。

图6-图9是根据本公开的实施例的图2所示的方法的各方面的流程图。

图10是使用已知机器人系统的用于物体拾取和放置的已知过程的示意图。

图11是缩略表示的图2所示的方法的示意图。

具体实施方式

现在将详细参考特定实施例或特征,其示例在附图中示出。在可能的情况下,将在整个附图中使用对应或相似的附图标记来指代相同或对应的部分。此外,当可能存在一个以上的相同类型的元素时,对本文中描述的各种元素的引用是共同地或个体地进行的。然而,这样的引用在本质上仅仅是示例性的。可以注意到,除非在所附权利要求中明确规定,否则任何对单数元素的引用也可以被解释为涉及复数,反之亦然,而不会将本公开的范围限制为这些元素的确切数目或类型。

图1是根据本公开的实施例的用于控制由机器人系统(2)进行的物体拾取和放置的系统(1)的示意图。图2是根据本公开的实施例的图1所示的用于控制由机器人系统(2)进行的物体拾取和放置的方法(200)的流程图。在所示示例中,图2所示的方法(200)至少部分使用图1的系统(1)来实现。

参考图1,系统(1)包括一个或多个存储器设备(10)(本文中也统称为存储器(10))。在一个示例中,存储器(10)包括存储在其中的数据库(12)。系统(1)包括与存储器(10)通信的一个或多个处理器(8)。系统(1)包括机器人系统(2)。机器人系统(2)包括与(多个)处理器(8)通信的至少一个机械臂(16)。系统(1)包括耦合到(多个)处理器(8)和/或存储器(10)的至少一个收发器(14)。(多个)收发器(14)与机器人系统(2)的一个或多个收发器(22)通信耦合。在一个示例中,存储器(10)还与机器人系统(2)通信。机器人系统(2)包括可操作地耦合到(多个)机械臂(16)的至少一个物体夹具设备(20)。(多个)物体夹具设备(20)(在本文中也简称为“夹具(20)”)与(多个)处理器(8)通信。

系统(1)包括与(多个)处理器(8)通信的一个或多个传感器(24)。在一个示例中,(多个)传感器(24)定位在(多个)机械臂(16)和/或(多个)夹具(20)上和/或中并且可操作地耦合到(多个)机械臂(16)和/或(多个)夹具(20)。(多个)传感器(24)包括以下中的一项或多项:(多个)多自由度(DOF)力扭矩传感器、用于在机器人物体(36)操纵任务(诸如抓取)期间监测和收集视觉数据的(多个)相机、用于测量机器人物体(36)处理的动态方面的(多个)多DOF惯性测量传感器、以及用于监测和/或检测物体(36)与机器人夹具(例如,(多个)夹具(20))之间的相对运动的(多个)方向和/或旋转运动传感器(例如,(多个)电机编码器、(多个)相机和/或(多个)触觉传感器)。在一个示例中,(多个)多DOF力扭矩传感器和/或(多个)多DOF惯性测量传感器安装和/或以其他方式可操作地耦合到(多个)机械臂(16)和(多个)夹具(20)和/或在其之间以用于测量(多个)物体(36)相对于(多个)夹具(20)的静态和/或动态状态以及(多个)物体(36)上的抓取位置。

系统(1)包括用于机器人系统(2)的训练工作空间(48)和运行时工作空间(134)。训练工作空间(48)和运行时工作空间(134)包括至少一个拾取位置(18)和至少一个放置位置(26)。一个或多个物体(36)被传送到和/或以其他方式到达(多个)拾取位置(18),以便由包括机器人系统(2)的系统(1)操纵。在图1所示的实施例中,多个物体(36)(例如,第一物体(82)和第二物体(102))存在于训练工作空间(48)和运行时工作空间(150)中,其中第一物体(82)和至少第二物体(102)中的每个具有多个物理特性(32),例如形状、重量、密度、质心、质量分布、高度、宽度和/或长度。多个物体(36)的物理特性包括描绘各种姿势的(多个)物体(36)的(多个)外观的物体标识(40)和已知图像(37)。

(多个)处理器(8)可以位于(多个)训练工作空间(48)和/或(多个)运行时工作空间(148)中。(多个)处理器(8)可以远离(多个)训练工作空间(48)和/或(多个)运行时工作空间(148)。(多个)处理器(8)可以与机器人系统(2)并置。(多个)处理器(8)被编程为至少部分实现和/或以其他方式执行方法(200)(图2所示)的公开步骤中的一个或多个,包括但不限于使用系统(1)。(多个)处理器(8)能够执行系统(1)中的多个功能。(多个)处理器(8)包括机械臂(16)控制功能和夹具(20)控制功能。(多个)处理器(8)包括机器学习功能。在一个示例中,(多个)处理器(8)的机器学习功能至少部分在系统(1)中使用(多个)人工智能和/或深度学习方案来实现和/或以其他方式执行。

在一个示例中,(多个)存储器设备(10)存储至少一个非暂态计算机可读介质(600)。非暂态计算机可读介质(600)将用于控制由机器人系统(2)进行的物体(36)拾取和放置的处理器(8)可执行指令存储为软件(604)。在一个示例中,存储为软件(604)的处理器(8)可执行指令包括一个或多个软件模块(608)。当由与存储器(10)、(多个)机械臂(16)、(多个)夹具(20)和传感器(24)通信的(多个)处理器(8)执行时,处理器(8)可执行指令引起(多个)处理器(8)至少部分实现和/或以其他方式执行方法(200)的公开步骤中的一个或多个,包括但不限于使用系统(1)。

在系统(1)中,(多个)处理器(8)、存储器(10)、(多个)机械臂(16)、(多个)夹具(20)和(多个)传感器(24)经由网络(50)彼此通信,并且使用通过网络(50)发送和/或接收的信号(例如,编码数据信号)彼此通信。(多个)处理器(8)、存储器(10)、(多个)机械臂(16)、(多个)夹具(20)和(多个)传感器(24)之间的通信由收发器(14,22)促进。在一个示例中,使用网络(50)的系统(1)通信包括无线通信设备和协议。在另一示例中,使用网络(50)的系统(1)通信包括有线通信设备和协议。在又一示例中,使用网络(50)的系统(1)通信包括无线和有线通信设备和协议的组合。在一个示例中,系统(1)通信包括用于利用基于云的处理、存储和/或通信资源的无线和/或有线通信设备和协议。在一个示例中,系统(1)通信利用互联网,包括但不限于物联网(IoT)协议、实践和/或标准。

图3是根据本公开的实施例的缩略表示的图2所示的方法的各方面的示意图。图4是根据本公开的实施例的图1的系统(1)中所示的存储器(10)的数据结构(502)的框图。图5是根据本公开的实施例的用于图2所示的方法的方法(200)的软件架构的框图。参考图1-5,方法(200)包括分别由(多个)处理器(8)为物体(36)第一分配(201)并且在存储器(10)中存储(202)机器学习模型(88)的机器学习训练数据(21),其中机器学习训练数据(21)包括分配给以多个不同物体姿势定位的物体(36)的多个已知抓取位置标签(23)。

机器学习训练数据(21)包括分配给以多个不同物体姿势定位的物体(36)的多个已知抓取位置标签(23)。在一个示例中,物体(36)的已知抓取位置标签(23)由系统(1)的至少一个用户(28)或奉其之命进行第一分配(201)和/或存储(202)。在另一示例中,物体(36)的已知抓取位置标签(23)由系统(1)的至少一个管理员(30)或奉其之命进行第一分配(201)和/或存储(202)。在又一示例中,物体(36)的已知抓取位置标签(23)由(多个)处理器(8)或奉其之命进行第一分配(201)和/或存储(202)。在(多个)第一分配(201)和/或存储(202)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第一分配(601)和/或存储(602)模块中的处理器(8)可执行指令。在一个示例中,多个已知抓取位置标签(23)由(多个)处理器(8)或奉其之命存储(202)在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

方法(200)包括在机器人系统(2)的工作空间(48)中第一提供(203)物体(36)。对于工作空间(48)中处于多个不同物体姿势中的第一姿势的物体(36),方法(200)包括由(多个)处理器(8)在物体(36)上第一映射(207)第一候选抓取位置(29)。在第一映射(207)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第一映射模块(607)中的处理器(8)可执行指令。在一个示例中,物体(36)上的第一映射(207)候选抓取位置(29)由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。对于工作空间(48)中处于多个不同物体姿势中的第一姿势的物体(36),方法(200)包括由机械臂(16)和夹具(20)针对物体(36)上的第一候选抓取位置(29)第一执行(211)机器人运动。在第一执行(211)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第一执行模块(611)中的处理器(8)可执行指令。

对于工作空间(48)中处于多个不同物体姿势中的第一姿势的物体(36),方法(200)包括由(多个)处理器(8)第一评估(213)针对第一候选抓取位置(29)的第一执行(211)的结果(33)。在该实施例中,根据至少一个预定性能标准(35)第一评估(213)第一执行(211)步骤的结果(33)。在第一评估(213)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第一评估模块(613)中的处理器(8)可执行指令。在一个示例中,至少一个预定性能标准(35)和/或结果(33)由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。在一个示例中,至少一个预定性能标准(35)由(多个)用户(28)预定。在另一示例中,至少一个预定性能标准(35)由(多个)管理员(30)预定。在又一示例中,至少一个预定性能标准(35)由(多个)处理器(8)预定。

在一个实施例中,可以将多个已知抓取位置标签(23)第一分配(201)给存储在存储器(10)中的物体(36)的多个已知图像(37)中的每个。在该实施例中,机器学习训练数据(21)可以作为一组数据对(39)存储在存储器(10)中。该组数据对(39)中的每个数据对(39)可以对应于第一分配(201)给物体(36)的多个已知图像(37)中的一个已知图像的多个已知抓取位置标签(23)中的一个。在该实施例中,第一映射(207)可以包括基于以下各项在物体(36)上第一映射第一候选抓取位置(29):由(多个)处理器(8)获取(214)的以第一姿势定位在工作空间(48)中的物体(36)的一个或多个图像(49),以及该组数据对(39)中的第一数据对(67)。在获取(214)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在获取模块(614)中的处理器(8)可执行指令。在一个示例中,物体(36)的多个已知图像(37)和/或数据对(39)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

图6-图9是根据本公开的实施例的用于控制由机器人系统(2)进行的物体(36)拾取和放置的方法(200)的各方面的流程图。参考图1-图6,在一个实施例中,方法(200)的第一映射(207)步骤可以在不由(多个)处理器(8)估计(231)工作空间(48)中的物体(36)的第一姿势的情况下执行。在这种情况下,这种映射是物体(36)位置和物体(36)取向不变的。因此,无需估计工作空间(48)中的物体(36)姿势,与用于控制由机器人系统进行的物体拾取和放置的已知系统、方法和软件相比,这在计算、数据通信和处理、功率和整体操作效率方面提供了显著改进。

在一个实施例中,方法(200)的第一映射(207)步骤可以包括由(多个)处理器(8)将机器学习模型(88)的映射函数(27)应用(218)于工作空间(48)中处于第一姿势的物体(36),如图3所示。物体姿势估计可以被认为是用于机器人系统第一定位物体并且然后基于物体上的相对位置找到抓取点的中间步骤。本文中公开的用于控制由机器人系统进行的物体拾取和放置的系统、方法和软件跳过该中间步骤。在所公开的实施例中,机器人系统(例如,系统(1))可以在不知道物体(36)位置以及抓取点与物体(36)的相对位置的情况下找到物体(36)上的抓取点。这种映射可以使用机器学习/深度学习模型来完成,如本文所述,其中输入只是图像,输出是(多个)抓取位置。

在该实施例中,方法(200)可以包括由(多个)处理器(8)将映射函数(27)第二分配(215)给机器学习模型(88)以用于机器人系统(2)的工作空间(48)中处于第一姿势的物体(36)上的第一候选抓取位置(29)。第二分配(215)步骤可以响应于(例如,由(多个)处理器(8)实现的第一逻辑测试(269)确定)第一执行(211)步骤的结果(33)满足至少一个预定性能标准(35)而在方法(200)中执行。在(多个)应用(218)和/或第二分配(215)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在应用(618)和/或第二分配(615)模块中的处理器(8)可执行指令。在一个示例中,映射函数(27)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,方法(200)可以由(多个)处理器(8)在工作空间(48)中处于第一姿势的物体(36)上第二映射(217)至少第二候选抓取位置(43)。至少第二候选抓取位置(43)不同于第一候选抓取位置(29)。在该实施例中,方法(200)可以包括由处理器(8)针对物体(36)上的至少第二候选抓取位置(43)将第一映射(207)、第一执行(211)和第一评估(213)步骤第一迭代(221)至少一次迭代。第二映射(217)和第一迭代(221)步骤可以响应于(例如,由第一逻辑测试(269)确定)第一执行(211)步骤的结果(33)不满足至少一个预定性能标准(35)而在方法(200)中执行。在(多个)第二映射(217)和/或第一迭代(221)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第二映射(617)和/或第一迭代(621)模块中的处理器(8)可执行指令。在一个示例中,物体(36)上的至少第二候选抓取位置(43)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在该实施例中,对于第一迭代(221)步骤,方法(200)可以包括由(多个)处理器(8)将至少第二映射函数(29)第三分配(223)给机器学习模型(88)以用于机器人系统(2)的工作空间(48)中处于第一姿势的物体(36)上的至少第二候选抓取位置(43)。如果第一执行(211)步骤的结果(33)(例如,由(多个)处理器(8)实现的第二逻辑测试(271)确定)满足至少一个预定性能标准(35),则在方法(200)中执行第三分配(223)步骤。在第三分配(223)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第三分配模块(623)中的处理器(8)可执行指令。在一个示例中,至少第二映射函数(29)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在该实施例中,对于第一迭代(221)步骤,如果第一执行(211)步骤的结果(33)(例如,由第二逻辑测试(271)确定)不满足至少一个预定性能标准(35),则方法(200)包括由(多个)处理器(8)针对物体(36)上的至少一个后续候选抓取位置(63)(例如,不同于第一候选抓取位置和至少第二候选抓取位置)将第一映射(207)、第一执行(211)和第一评估(213)步骤后续迭代(273)至少一次后续迭代。在这种情况下,对于第一迭代(221),在方法(200)中执行后续迭代(273)步骤而不是第三分配(223)步骤。在后续迭代(273)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在后续迭代模块(673)中的处理器(8)可执行指令。

在一个实施例中,该组数据对(39)可以包括第一数据对(67)和至少第二数据对(65)。在该实施例中,方法(200)的第二映射(217)步骤可以包括在物体(36)上第二映射至少第二候选抓取位置(43)。至少第二候选抓取位置(43)可以基于以下各项在物体上被第二映射(217):由(多个)处理器(8)获取(275)的以第一姿势定位在工作空间(48)中的物体(36)的一个或多个图像(49)、以及至少第二数据对(65)。在获取(275)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在获取模块(675)中的处理器(8)可执行指令。在一个示例中,由(多个)处理器(8)获取(275)的一个或多个图像(49)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,方法(200)可以包括由(多个)处理器(8)第一确定(225)自主运动控制方案(45)。在该实施例中,自主运动控制方案(45)可以基于第一候选抓取位置(29)在工作空间(48)中在物体(36)上的位置来第一确定(225)。在第一确定(225)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第一确定模块(626)中的处理器(8)可执行指令。在一个示例中,第一确定(225)的自主运动控制方案(45)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,方法(200)的第一执行(211)步骤可以包括由机械臂(16)和夹具(20)第一抓取(227)物体(36)。在该实施例中,第一执行(211)步骤可以包括由(多个)处理器(8)从一个或多个传感器(24)第一获取(229)第一抓取(227)步骤的抓取质量数据(47)。在一个示例中,方法(200)的第一评估(213)可以包括第一评估机械臂(16)和/或夹具(20)的第一抓取质量。在该实施例中,物体(36)的第一抓取质量可以基于第一获取(229)的抓取质量数据(47)来第一评估(213)。在(多个)第一抓取(227)和/或第一获取(229)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第一抓取(627)和/或第一获取(629)模块中的处理器(8)可执行指令。在一个示例中,第一获取(229)的抓取质量数据(47)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

参考图1-图7,在一个实施例中,方法(200)可以包括在运行时工作空间(134)中第二提供(233)物体(36)。在该实施例中,方法(200)可以包括由(多个)处理器(8)在运行时工作空间(134)中处于第一姿势的物体(36)上第三映射(235)第一候选抓取位置(29)。第三映射(235)步骤可以包括由(多个)处理器(8)将机器学习模型(88)的映射函数(27)应用(238)于运行时工作空间(134)中处于第一姿势的物体(36)。在该实施例中,方法(200)的第三映射(235)步骤可以在不由(多个)处理器(8)估计(241)运行时工作空间(134)中的物体(36)的第一姿势的情况下执行。在这种情况下,这种映射是物体(36)位置和物体(36)取向不变的。因此,无需估计运行时工作空间(134)中的物体(36)姿势,与用于控制由机器人系统进行的物体拾取和放置的已知系统、方法和软件相比,这提供了效率的显著改进。在(多个)第三映射(235)和/或应用(238)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第三映射(635)和/或应用(638)模块中的处理器(8)可执行指令。在一个示例中,所应用(238)的映射函数(27)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在该实施例中,方法(200)的第三映射(235)步骤可以包括基于以下各项在物体(36)上第三映射(235)第一候选抓取位置(29):由处理器(8)获取(277)的以第一姿势定位在运行时工作空间(134)中的物体(36)的一个或多个图像(49)、以及该组数据对(39)中的第一数据对(67)。在获取(277)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在获取模块(677)中的处理器(8)可执行指令。在一个示例中,由(多个)处理器(8)获取(277)的一个或多个图像(49)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在该实施例中,方法(200)可以包括由(多个)处理器(8)第二确定(239)自主运动控制方案(45)。自主运动控制方案(45)可以基于第一候选抓取位置(29)在运行时工作空间(134)中在物体(36)上的位置来第二确定(239)。在第二确定(239)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第二确定模块(639)中的处理器(8)可执行指令。在一个示例中,第二确定(239)的自主运动控制方案(45)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

方法(200)可以包括由机械臂(16)和夹具(20)针对运行时工作空间(134)中的物体(36)上的第一候选抓取位置(29)第二执行(243)第二确定(239)的自主运动控制方案(45)。在第二执行(243)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第二执行模块(643)中的处理器(8)可执行指令。方法(200)可以包括由(多个)处理器(8)针对第一候选抓取位置(29)第二评估(245)第二执行(243)的结果(51)。在该实施例中,根据至少一个预定性能标准(35)第二评估(245)第二执行(243)步骤的结果(51)。在第二评估(245)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)执行存储在第二评估模块(645)中的处理器(8)可执行指令。在一个示例中,结果(51)由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,方法(200)的第二执行(243)步骤可以包括由机械臂(16)和夹具(20)第二抓取(247)物体(36)。在该实施例中,第二执行(243)步骤可以包括由(多个)处理器(8)从一个或多个传感器(24)第二获取(249)第二抓取(247)步骤的抓取质量数据(53)。在一个示例中,方法(200)的第二评估(245)步骤可以包括第二评估机械臂(16)和/或夹具(20)的第二抓取质量。在该实施例中,物体(36)的第二抓取质量可以基于第二获取(249)的抓取质量数据(53)来第二评估(245)。在(多个)第二抓取(247)和/或第二获取(249)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第二抓取(647)和/或第二获取(649)模块中的处理器(8)可执行指令。在一个示例中,第二获取(249)的抓取质量数据(53)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,方法(200)可以包括由(多个)处理器(8)将第一映射(207)、第一执行(211)和第一评估(213)步骤第二迭代(251)至少一次迭代。在一个示例中,第二迭代(251)步骤可以响应于(例如,由(多个)处理器(8)实现的第三逻辑测试(279)确定)第二执行(243)步骤的结果(51)不满足至少一个预定性能标准(35)而在方法(200)中执行。在第二迭代(251)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第二迭代模块(651)中的处理器(8)可执行指令。

如果第二执行(243)步骤的结果(51)满足至少一个预定性能标准(35)(例如,由第三逻辑测试(279)确定),则方法(200)可以进行到第三迭代(250)步骤而不是执行第二迭代(251)步骤。在这种情况下,方法(200)将第三映射(235)、第二执行(243)和第二评估(245)步骤第三迭代(250)至少一次迭代。在一个示例中,第三迭代(250)步骤响应于(例如,由第四逻辑测试(280)确定)用于由机械臂(16)和夹具(20)在运行时工作空间(134)中拾取和放置的至少一个附加物体(36)的存在而在方法(200)中执行。在第三迭代(250)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第三迭代模块(650)中的处理器(8)可执行指令。

对于结果(51)不满足至少一个预定性能标准(35)的情况,第二迭代(251)步骤可以包括由(多个)处理器(8)修正(253)映射函数(27)。在一个示例中,方法(200)的第一映射(207)步骤可以包括使用修正(253)后的映射函数(55)(例如,由修正(253)步骤产生)在物体(36)上第一映射第一候选抓取位置(29)。在修正(253)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在修正模块(653)中的处理器(8)可执行指令。在一个示例中,修正(253)后的映射函数(55)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

在一个实施例中,如果对于第二迭代(251),第一执行(211)的结果(33)满足至少一个预定性能标准(35)(例如,由(多个)处理器(8)实现的第五逻辑测试(282)确定),则方法(200)执行第四分配(255)步骤。在一个示例中,修正(253)后的映射函数(55)由(多个)处理器(8)第四分配(255)给机器学习模型(88)以用于机器人系统(2)的工作空间(48)中处于第一姿势的物体(36)上的第一候选抓取位置(29)。在第四分配(255)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在第四分配模块(655)中的处理器(8)可执行指令。

如果对于第二迭代(251),第一执行(211)的结果(33)不满足至少一个预定性能标准(35)(例如,由第五逻辑测试(282)确定),则方法(200)可以进行到后续迭代(284)步骤而不是执行第四分配(255)步骤。在这种情况下,方法(200)包括由(多个)处理器(8)针对物体(36)上的至少一个后续候选抓取位置(63)(例如,不同于第一候选抓取位置(29)和至少第二候选抓取位置(43))将第一映射(207)、第一执行(211)和第一评估(213)步骤后续迭代(284)至少一次迭代。在后续迭代(284)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在后续迭代模块(684)中的处理器(8)可执行指令。在一个示例中,物体(36)上的(多个)后续候选抓取位置(63)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

参考图1-图8,在一个实施例中,映射函数(27)可以包括多个映射函数(57)。在该实施例中,方法(200)可以包括由(多个)处理器(8)在存储器(10)中存储(257)多个映射函数(57)。在一个示例中,多个映射函数(57)包括针对工作空间(48)中处于第一姿势的物体(36)上的第一候选抓取位置(29)的用于(例如,由(多个)处理器(8))第一映射(207)、第一执行(211)和第一评估(213)步骤的第一执行(259)的第一映射函数(59)。

在该实施例中,第二迭代(251)步骤可以包括由(多个)处理器(8)选择(261)多个映射函数(57)中的至少第二映射函数(61)。(多个)第二映射函数(61)不同于第一映射函数(59)。对于第二迭代(251),方法(200)的第一映射(207)步骤包括使用至少第二映射函数(61)在物体(36)上第一映射第一候选抓取位置(29)。在(多个)存储(257)和/或选择(261)步骤由软件(604)实现和/或以其他方式促进的实施例中,(多个)处理器(8)可以执行存储在存储(657)和/或选择(661)模块中的处理器(8)可执行指令。在一个示例中,包括第一映射函数(59)和至少第二映射函数(61)的多个映射位置(57)可以由(多个)处理器(8)或奉其之命存储在数据结构(502)和/或存储器(10)中的其他地方以及从其中读取。

参考图1-图9,在一个实施例中,机器人系统(2)的工作空间(48)中可以存在多个物体(36)(例如,第一物体(82)和至少第二物体(102))。第二物体(102)不同于第一物体(82)。在一个示例中,第一物体(82)用于方法(200)的第一执行(263)。在该实施例中,对于(多个)第二物体(102),方法(200)可以包括由(多个)处理器(8)将方法(200)的至少第二执行(267)第四迭代(265)至少一次迭代。

应当理解,本文中公开的系统和方法是可扩展的、灵活的,并且适用于任何数目的相似和/或不同的物体(36)。类似地,上述系统和方法同样适用于工作空间(48)中以第一姿势和不同于第一姿势的任何数目的附加物体姿势存在的物体。

参考图10和图11,与已知系统和方法相比,所公开的用于由(多个)机器人系统进行的基于机器学习物体抓取的系统和方法提供了很多技术优点和有益效果。图10是使用已知机器人系统拾取和放置物体(例如,部分(801))的已知过程(800)的示意图。在已知过程(800)中,(多个)传感器(诸如一个或多个相机)获取(多个)部分(801)的(多个)图像以用于物体识别(804)目的。在已知过程(800)中,将在物体识别(804)期间获取的(多个)图像与存储在数据库(806)中的(多个)部分(801)的(多个)图像进行比较,并且执行附加处理以确定(多个)部分(801)的物体ID和抓取位置。接下来,在已知过程(800)中,基于为物体识别(804)目的而获取的(多个)图像来对(多个)部分(801)执行姿势估计(808)。已知过程(800)确定用于具有物体夹具设备的机械臂拾取(多个)部分(801)的抓取位置(810)。已知过程(800)然后利用具有物体夹具设备的机械臂基于所确定的抓取位置(810)拾取和放置(多个)部分(801)。

图11是缩略表示的图2所示方法(200)的示意图。在方法(200)中,诸如一个或多个相机等(多个)传感器(例如,(多个)传感器(24))根据上面参考图1-图9和图11示出和描述的系统和方法来为物体识别(850)目的而获取(多个)部分(例如,(多个)物体(36))的(多个)图像。在方法(200)中,为物体识别(850)而获取的(多个)图像(例如,图像(49))由(多个)处理器(8)与存储在数据库(12)和/或存储器(10)中的其他地方的(多个)物体(36)的(多个)图像(例如,已知图像(37))进行比较和以其他方式进行分析。由(多个)处理器(8)执行附加处理以确定(多个)物体(36)的物体ID(40)和(多个)物体(36)的抓取位置(例如,(多个)候选抓取位置(56),包括基于在数据库(12)和/或存储器(10)中的其他地方存储、编译和/或更新的机器学习(ML)模型(88)。所公开的方法(200)然后确定用于具有(多个)夹具(20)的(多个)机械臂(16)拾取(多个)物体(36)的(多个)候选抓取位置(56)。在方法(200)中,(多个)处理器(8)然后命令和/或以其他方式促进用于具有(多个)夹具(20)的(多个)机械臂(16)基于所确定的(多个)候选抓取位置(56)来拾取和放置(多个)物体(36)的所确定的自主运动控制方案(例如,控制方案(64))的执行。

比较图10所示的已知过程(800)与缩略形式的图11所示的公开方法(200),使用用于由(多个)机器人系统进行基于机器学习的物体抓取的所公开的系统和方法能够在没有姿势估计(808)的情况下拾取和放置(多个)物体,并且与已知过程(例如,过程(800))相比具有相同或更好的准确度、速度、效率和错误率。与已知系统和方法相比,将所公开的系统和方法用于由(多个)机器人系统进行基于机器学习的物体抓取方法可以减少(多个)处理器(8)所需要的每个物体CPU时钟周期的所需要的数目。因此,与已知过程(例如,过程(800))相比,所公开的用于控制由(多个)机器人系统进行的物体拾取和放置的系统和方法能够以提高的计算、存储器、网络、电力和/或人力资源的利用率来拾取和放置(多个)物体。

与已知系统和方法相比,上述用于控制由机器人系统进行的物体拾取和放置的基于机器学习的系统、方法和软件为用户提供了很多有益的技术效果并且实现了各种优点。这样的好处包括但不限于能够在没有姿势估计的情况下拾取和放置(多个)物体,并且与已知过程相比具有相同或更好的准确性、速度、效率和错误率。与已知系统和方法相比,利用所公开的用于控制由机器人系统进行的物体拾取和放置的系统和方法可以减少(多个)处理器所需要的每个物体CPU时钟周期的所需要的数目。因此,与已知过程相比,所公开的用于控制由机器人系统进行的(多个)物体拾取和放置的系统和方法能够以提高的计算、存储器、网络、电力和/或人力资源的利用率来拾取和放置(多个)物体。与涉及大容量和快节奏工业操作的应用中的已知系统和方法相比,本领域普通技术人员可理解的这些和其他实质性和众多技术益处和有利效果尤其明显。

对于包括控制由机器人系统进行的物体拾取和放置的实际应用,对已知系统和方法的这些改进不是仅通过利用传统和常规处理系统和方法来实现的。即使在这种改进可以与已知系统和方法相比在相关时间段内(例如,从几小时到几年)根据每个物体的时间减少(例如,以秒或其分数来衡量)进行量化的情况下,所公开的用于控制由机器人系统进行的物体拾取和放置的基于机器学习的系统、方法和软件以显著更高的效率利用计算、网络、存储器、电力、人员等资源以提供涉及物体的机器人拾取和放置的各种工业单元操作的改进的吞吐量和其总体成本降低。

本文中公开的各种实施例应当被视为说明性和解释性的,而决不应当被解释为对本公开的限制。

虽然已经参考以上实施例具体地示出和描述了本公开的各方面,但是本领域技术人员将理解,可以通过对公开的设备、系统和系统的修改来设想各种附加实施例。在不背离所公开内容的精神和范围的情况下的方法。应当理解,这样的实施例落入基于权利要求及其任何等价物确定的本公开的范围内。

相关技术
  • 用于在训练和运行时环境中控制机器人物体拾取和放置的基于机器学习的系统和方法
  • 与基于捕获物体的图像并且基于用于环境中的未来机器人运动的参数来预测机器人环境中的物体运动有关的机器学习方法和装置
技术分类

06120113817993