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

用于物体检测的系统和方法

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


用于物体检测的系统和方法

对相关申请的交叉引用

本申请要求于2021年8月9日提交的题为“A ROBOTIC SYSTEM FOR FACILITATINGTEMPLATE MATCHING AND DETECTION FOR OBJECT PICKING”的第63/230,931号美国临时申请的权益,该美国临时申请的全部内容通过引用并入本文。

技术领域

本技术总体上针对机器人系统,并且更具体地针对用于标识和检测物体的系统、过程和技术。更特别地,本技术可用于标识和检测容器中的物体。

背景技术

随着它们不断提高的性能和降低的成本,许多机器人(例如,被配置为自动/自主地执行物理动作的机器)现在广泛用于各种不同的领域。例如,机器人可用于在制造和/或组装、填充(packing)和/或打包、运输和/或装运等中执行各种任务(例如,通过空间操纵或转移物体)。在执行任务时,机器人可以复制人类动作,从而替代或减少执行危险或重复性任务另外所需的人类参与。

然而,尽管技术进步,机器人通常缺乏复制执行更大和/或更复杂任务所需的人类交互所需的复杂性。因此,仍然需要用于管理机器人之间的操作和/或交互的改进技术和系统。

发明内容

在实施例中,提供了一种被配置为生成用于标识场景中的物体的物体识别模板集的计算系统。该计算系统包括被配置用于以下操作的至少一个处理电路。获取物体的注册数据,其中该注册数据包括表示该物体的物体模型;确定物体模型在三维空间中的多个视点;估计物体模型在多个视点中的每一个处的多个外观;根据多个外观生成多个物体识别模板,其中多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别模板集传送给机器人控制系统。多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

在另一个实施例中,提供了一种生成用于标识场景中的物体的物体识别模板集的方法。该方法包括获取物体的注册数据,该注册数据包括表示该物体的物体模型;确定物体模型在三维空间中的多个视点;估计物体模型在多个视点中的每一个处的多个外观;根据多个外观生成多个物体识别模板,其中多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别集传送给机器人控制系统。多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

在另一个实施例中,提供了一种非暂时性计算机可读介质,其被配置有可执行指令,所述可执行指令用于实现用于生成用于标识场景中的物体的物体识别模板的方法,所述方法可由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信。该方法包括接收物体的注册数据,该注册数据包括表示该物体的物体模型;执行操作以在三维空间中生成物体模型的多个视点;执行操作以估计物体模型在多个视点中的每一个处的多个外观;执行操作以根据多个外观生成多个物体识别模板,其中多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别模板集输出给机器人系统。多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

在另一个实施例中,提供了一种被配置为生成用于标识场景中的物体的物体识别模板的计算系统。该计算系统包括至少一个处理电路。处理电路被配置用于以下步骤。获取包括数字表示的物体的物体信息;从物体信息中提取二维测量信息;从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息生成物体识别模板。

在另一个实施例中,提供了一种生成用于标识场景中的物体的物体识别模板的方法。该方法包括获取包括数字表示的物体的物体信息;从物体信息中提取二维测量信息;从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息生成物体识别模板。

在另一个实施例中,提供了一种非暂时性计算机可读介质,其被配置有可执行指令,所述可执行指令用于实现用于生成用于标识场景中的物体的物体识别模板的方法,所述方法可由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信。该方法包括接收包括数字表示的物体的物体信息;执行操作以从物体信息中提取二维测量信息;执行操作以从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息向机器人系统输出物体识别模板。

在另一个实施例中,提供了一种计算系统。该计算系统包括与机器人通信的至少一个处理电路,该机器人具有臂和与臂连接的末端执行器,以及具有视场的相机,并且当一个或多个物体处于或已经处于视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令。执行的指令包括获取场景中的物体的物体图像信息;获取包括表示模板物体的对应物体识别模板的检测假设;标识模板物体和物体图像信息之间的差异;标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,生成包括调整后的对应物体识别模板的调整后的检测假设。

在另一个实施例中,提供了一种方法。该方法包括获取场景中的物体的物体图像信息;获取包括表示模板物体的对应物体识别模板的检测假设;标识模板物体和物体图像信息之间的差异;标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,生成包括调整后的对应物体识别模板的调整后的检测假设。

在另一个实施例中,提供了一种非暂时性计算机可读介质,其被配置有可执行指令,所述可执行指令用于实现用于细化检测假设的方法,所述方法可由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信。该方法包括接收场景中的物体的物体图像信息;接收包括表示模板物体的对应物体识别模板的检测假设;执行操作以标识模板物体和物体图像信息之间的差异;执行操作以标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;执行操作以调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,向机器人系统输出包括调整后的对应物体识别模板的调整后的检测假设。

在另一个实施例中,提供了一种计算系统。该计算系统包括与机器人通信的至少一个处理电路,该机器人具有臂和与臂连接的末端执行器,以及具有视场的相机,并且当一个或多个物体处于或已经处于视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令。执行的指令包括获取场景中的物体的物体图像信息;获取检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;以及通过以下操作来验证检测假设集中的每个检测假设:基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;以及根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体。

在另一个实施例中,提供了一种方法。该方法包括获取场景中的物体的物体图像信息;获取检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;以及通过以下操作来验证检测假设集中的每个检测假设:基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;以及根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体。

在另一个实施例中,提供了一种非暂时性计算机可读介质,其被配置有可执行指令,所述可执行指令用于实现用于验证检测假设的方法,所述方法可由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信。该方法包括接收场景中的物体的物体图像信息;接收检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;执行操作以基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;执行操作以基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;执行操作以根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体;以及向机器人系统输出检测到的场景中的物体。

附图说明

图1A图示了根据本文的实施例的用于执行或促进物体的检测、标识和检索的系统。

图1B图示了根据本文的实施例的用于执行或促进物体的检测、标识和检索的系统的实施例。

图1C图示了根据本文的实施例的用于执行或促进物体的检测、标识和检索的系统的另一个实施例。

图1D图示了根据本文的实施例的用于执行或促进物体的检测、标识和检索的系统的又另一个实施例。

图2A是图示与本文的实施例一致的被配置为执行或促进物体的检测、标识和检索的计算系统的框图。

图2B是图示与本文的实施例一致的被配置为执行或促进物体的检测、标识和检索的计算系统的实施例的框图。

图2C是图示与本文的实施例一致的被配置为执行或促进物体的检测、标识和检索的计算系统的另一个实施例的框图。

图2D是图示与本文的实施例一致的被配置为执行或促进物体的检测、标识和检索的计算系统的又另一个实施例的框图。

图2E是由系统处理的图像信息的示例并且与本文的实施例一致。

图2F是由系统处理的图像信息的另一个示例并且与本文的实施例一致。

图3A图示了根据本文的实施例的用于操作机器人系统的示例性环境。

图3B图示了与本文的实施例一致的用于由机器人系统检测、标识和检索物体的示例性环境。

图4提供了图示根据本文的实施例的用于检测、标识和检索物体的方法和操作的总体流程的流程图。

图5图示了与本文的实施例一致的物体注册数据的示例。

图6图示了与本文的实施例一致的生成物体识别模板的方法。

图7A和7B图示了与本文的实施例一致的生成物体识别模板的方法的方面。

图8图示了与本文的实施例一致的生成物体识别模板的方法。

图9A-9D图示了与本文的实施例一致的生成物体识别模板的方法的方面。

图10A-10B图示了与本文的实施例一致的经由模板匹配的物体标识和假设生成的方法;

图11图示了与本文的实施例一致的细化检测假设的方法。

图12A-12C图示了与本文的实施例一致的细化检测假设的方法的方面。

图13图示了与本文的实施例一致的验证检测假设的方法。

图14图示了与本文的实施例一致的细化检测假设的方法的方面。

具体实施方式

本文描述了与物体检测、标识和检索有关的系统和方法。特别地,所公开的系统和方法可以在物体位于容器中的情况下促进物体检测、标识和检索。如本文所讨论的,物体可以是金属或其他材料并且可以位于诸如盒子、柜子、板条箱等的容器中。物体可以以无组织或不规则的方式位于容器中,例如,装满螺丝的盒子。由于物体的不规则布置,在这样的情况下物体检测和标识可能是具有挑战性的,尽管本文讨论的系统和方法可以同等地改进以规则或半规则方式布置的物体的物体检测、标识和检索。因此,本文描述的系统和方法被设计为从多个物体中标识个体物体,其中个体物体可以布置在不同位置、以不同角度等。本文讨论的系统和方法可以包括机器人系统。根据本文的实施例配置的机器人系统可以通过协调多个机器人的操作来自主地执行集成任务。如本文所述,机器人系统可以包括机器人设备、致动器、传感器、相机和计算系统的任何合适组合,这些系统被配置为控制、发布命令、从机器人设备和传感器接收信息、访问、分析和处理由机器人设备、传感器和相机生成的数据,生成可用于控制机器人系统的数据或信息,并为机器人设备、传感器和相机规划行动。如本文所用,机器人系统不需要立即访问或控制机器人致动器、传感器或其他设备。如本文所述,机器人系统可以是被配置为通过接收、分析和处理信息来提高这样的机器人致动器、传感器和其他设备的性能的计算系统。

本文描述的技术向被配置用于物体标识、检测和检索的机器人系统提供了技术改进。本文描述的技术改进提高了这些任务的速度、精度和准确度,并进一步促进了从容器中检测、标识和检索物体。本文描述的机器人系统和计算系统解决了从容器中标识、检测和检索物体的技术问题,其中物体可能被不规则地布置。通过解决此技术问题,物体标识、检测和检索的技术被改进。

本申请涉及系统和机器人系统。如本文所讨论的,机器人系统可以包括机器人致动器组件(例如,机械臂、机械抓手等)、各种传感器(例如,相机等),以及各种计算或控制系统。如本文所讨论的,计算系统或控制系统可以被称为“控制”各种机器人组件,诸如机械臂、机械抓手、相机等。这样的“控制”可以指对各种致动器、传感器和机器人组件的其他功能方面的直接控制和与其的交互。例如,计算系统可以通过发出或提供所有需要的信号来控制机械臂,以使得各种电动机、致动器和传感器引起机器人移动。这样的“控制”还可以指向另一个机器人控制系统发出抽象或间接命令,然后该另一个机器人控制系统将这样的命令转换为用于引起机器人移动的必要信号。例如,计算系统可以通过发出描述机械臂应该移动到的轨迹或目的地位置的命令来控制机械臂,并且与机械臂相关联的另一个机器人控制系统可以接收和解释这样的命令,然后向机械臂的各种致动器和传感器提供必要的直接信号,以引起所需的移动。

特别地,本文描述的本技术帮助机器人系统与容器中多个物体中的目标物体交互。从容器中检测、标识和检索物体需要若干步骤,包括生成合适的物体识别模板、提取可用于标识的特征以及生成、细化和验证检测假设。例如,由于物体的不规则布置的可能性,可能需要识别和标识处于多个不同姿势(例如,角度和位置)以及可能被其他物体的部分遮挡时的物体。

在以下中,具体细节被阐述以提供对当前公开的技术的理解。在实施例中,本文介绍的技术可被实践而不包括本文公开的每个具体细节。在其他情况下,诸如具体功能或例程的众所周知的特征未被详细描述以避免不必要地混淆本公开。本说明书中对“实施例”、“一个实施例”等的引用意味着正在被描述的特定特征、结构、材料或特性包括在本公开的至少一个实施例中。因此,本说明书中的这样的短语的出现不一定都指相同的实施例。另一方面,这样的引用也不一定是相互排斥的。此外,关于任何一个实施例描述的特定特征、结构、材料或特性可以以任何合适的方式与任何其他实施例中的那些组合,除非这样的项目是相互排斥的。应当理解,图中所示的各种实施例仅仅是说明性的表示并且不一定按比例绘制。

为清楚起见,描述众所周知且通常与机器人系统和子系统相关联但可能不必要地混淆所公开技术的一些重要方面的结构或过程的若干细节在以下描述中未被阐述。此外,尽管以下公开阐述了本技术的不同方面的若干实施例,但若干其他实施例可具有与本部分中描述的那些不同的配置或不同的组件。因此,所公开的技术可以具有带有附加元素或没有下面描述的元素中的若干元素的其他实施例。

下面描述的本公开的许多实施例或方面可以采取计算机或控制器可执行指令的形式,包括由可编程计算机或控制器执行的例程。相关领域的技术人员将理解,所公开的技术可以在除了下面所示和描述的那些之外的计算机或控制器系统上或通过其实践。本文描述的技术可以体现在专用计算机或数据处理器中,该专用计算机或数据处理器被具体编程、配置或构造为执行下述计算机可执行指令中的一个或多个。因此,如本文通常使用的术语“计算机”和“控制器”是指任何数据处理器,并且可以包括互联网工具和手持设备(包括掌上型计算机、可穿戴计算机、蜂窝或移动电话、多处理器系统、基于处理器或可编程的消费电子产品、网络计算机、小型计算机等)。这些计算机和控制器处理的信息可以在包括液晶显示器(LCD)的任何合适的显示介质上呈现。用于执行计算机或控制器可执行任务的指令可以存储在包括硬件、固件或硬件和固件的组合的任何合适的计算机可读介质中或上。指令可以包含在包括例如闪存驱动器、USB设备和/或其他合适的介质的任何合适的存储器设备中。

术语“耦合”和“连接”以及它们的派生词在本文中可以用来描述组件之间的结构关系。应该理解,这些术语不旨在作为彼此的同义词。相反,在特定实施例中,“连接”可用于指示两个或更多个元素彼此直接接触。除非上下文中另有明确说明,否则术语“耦合”可用于指示两个或更多个元素直接或间接(通过它们之间的其他插入元素)彼此接触,或者两个或多个元素彼此合作或交互(例如,如在因果关系中,诸如用于信号传输/接收或功能调用),或两者兼而有之。

本文对通过计算系统进行的图像分析的任何参考可以根据或使用空间结构信息来执行,该空间结构信息可以包括描述相对于所选点的各种位置的相应深度值的深度信息。深度信息可用于标识物体或估计物体如何在空间上布置。在某些情况下,空间结构信息可包括或可用于生成描述物体的一个或多个表面的位置的点云。空间结构信息仅仅是可能的图像分析的一种形式,并且本领域技术人员已知的其他形式可以根据本文描述的方法使用。

图1A示出了用于执行物体检测或者更具体的物体识别的系统1000。更特别地,系统1000可以包括计算系统1100和相机1200。在此示例中,相机1200可以被配置为生成图像信息,该图像信息描述或以其他方式表示相机1200所处的环境,或更具体地表示相机1200的视场(也被称为相机视场)中的环境。环境可以是例如仓库、制造工厂、零售空间或其他场所。在这样的情况下,图像信息可以表示位于这样的场所的物体,诸如盒子、柜子、箱子、板条箱、托盘或其他容器。系统1000可以被配置为诸如通过使用图像信息在相机视场中的个体物体之间进行区分来生成、接收和/或处理图像信息以基于图像信息执行物体标识或物体注册,和/或基于图像信息执行机器人交互规划,如下面更详细地讨论的(在本公开中术语“和/或”和“或”可互换使用)。机器人交互规划可以用于例如控制场所处的机器人以促进机器人与容器或其他物体之间的机器人交互。计算系统1100和相机1200可以位于相同的场所,或者可以彼此远离。例如,计算系统1100可以是托管在远离仓库或零售空间的数据中心中的云计算平台的一部分,并且可以经由网络连接与相机1200通信。

在实施例中,相机1200(其也可以被称为图像感测设备)可以是2D相机和/或3D相机。例如,图1B示出了系统1500A(其可以是系统1000的实施例),该系统1500A包括计算系统1100以及相机1200A和相机1200B,相机1200A和相机1200B两者都可以是相机1200的实施例。在此示例中,相机1200A可以是被配置为生成2D图像信息的2D相机,该2D图像信息包括或形成描述相机的视场中的环境的视觉外观的2D图像。相机1200B可以是被配置为生成3D图像信息的3D相机(也被称为空间结构感测相机或空间结构感测设备),该3D图像信息包括或形成关于相机的视场中的环境的空间结构信息。该空间结构信息可以包括深度信息(例如,深度图),该深度信息描述了相对于相机1200B的各种位置的相应深度值,诸如相机1200B的视场中各种物体的表面上的位置。相机的视场中或物体的表面上的这些位置也可被称为物理位置。在此示例中,深度信息可以用于估计物体如何被空间地布置在三维(3D)空间中。在某些情况下,空间结构信息可以包括或可以用于生成点云,该点云描述了相机1200B的视场中物体的一个或多个表面上的位置。更具体地,空间结构信息可以描述物体的结构(也被称为物体结构)上的各种位置。

在实施例中,系统1000可以是用于促进机器人与相机1200的环境中的各种物体之间的机器人交互的机器人操作系统。例如,图1C示出了机器人操作系统1500B,其可以是图1A和图1B的系统1000/1500A的实施例。机器人操作系统1500B可以包括计算系统1100、相机1200和机器人1300。如上所述,机器人1300可以用于与相机1200的环境中的一个或多个物体(诸如与盒子、板条箱、柜子、托盘或其他容器)交互。例如,机器人1300可以被配置为从一个位置拾取容器并将它们移动到另一位置。在某些情况下,机器人1300可以用于执行在其中一组容器或其他物体被卸载并移动到例如传送带的卸垛操作。在某些实现中,如下面讨论的,相机1200可以被附接到机器人1300或机器人3300。这也被称为掌上相机或手持相机解决方案。,相机1200可以被附接到机器人1300的机械臂3320。然后,机械臂3320可以移动到各种挑选范围以生成关于那些范围的图像信息。在某些实现中,相机1200可以与机器人1300分开。例如,相机1200可以被安装到仓库的天花板或其他结构,并且可以相对于该结构保持固定。在某些实现中,可以使用多个相机1200,包括与机器人1300分开的多个相机1200和/或与掌上相机1200一起使用的与机器人1300分开的相机1200。在某些实现中,一个相机1200或多个相机1200可以安装或固定到与用于物体操纵的机器人1300分开的专用机器人系统上,诸如机械臂、门架(gantry)或被配置用于相机移动的其他自动化系统。贯穿说明书,可以讨论“控制”相机1200。对于掌上相机解决方案,对相机1200的控制还包括对相机1200被安装或附接到的机器人1300的控制。

在实施例中,图1A-1C的计算系统1100可以形成或集成到机器人1300,其也被称为机器人控制器。机器人控制系统可以被包括在系统1500B中,并且可以被配置为例如为机器人1300生成命令,诸如用于控制机器人1300与容器或其他物体之间的机器人交互的机器人交互移动命令。在这样的实施例中,计算系统1100可以被配置为基于例如由相机1200生成的图像信息来生成这样的命令。例如,计算系统1100可以被配置为基于图像信息确定运动规划,其中运动规划可以旨在例如抓持或以其他方式拾取物体。计算系统1100可生成一个或多个机器人交互移动命令以执行运动规划。

在实施例中,计算系统1100可以形成视觉系统或是视觉系统的一部分。视觉系统可以是生成例如视觉信息的系统,该视觉信息描述机器人1300所处的环境,或替代地或附加地,描述相机1200所处的环境。视觉信息可以包括上面讨论的3D图像信息和/或2D图像信息,或某些其他图像信息。在某些情况下,如果计算系统1100形成视觉系统,则视觉系统可以是上面讨论的机器人控制系统的一部分,或者可以与机器人控制系统分开。如果视觉系统与机器人控制系统是分开的,则视觉系统可以被配置为输出描述机器人1300所处的环境的信息。信息可以被输出到机器人控制系统,该机器人控制系统可以从视觉系统接收这样的信息并且基于该信息来执行运动规划和/或生成机器人交互移动命令。关于视觉系统的进一步信息在下面详细说明。

在实施例中,计算系统1100可以经由直接连接(诸如,经由专用有线通信接口(诸如,RS-232接口、通用串行总线(USB)接口)和/或经由本地计算机总线(诸如外围组件互连(PCI)总线)提供的连接)与相机1200和/或机器人1300进行通信。在实施例中,计算系统1100可以经由网络与相机1200和/或与机器人1300通信。网络可以是任何类型和/或形式的网络,诸如个人局域网(PAN)、局域网(LAN)(例如,内联网)、城域网(MAN)、广域网(WAN)或互联网。网络可以利用不同的技术和协议层或协议栈,包括例如以太网协议、互联网协议套件(TCP/IP)、ATM(异步传输模式)技术、SONET(同步光网络)协议或SDH(同步数字体系)协议。

在实施例中,计算系统1100可以与相机1200和/或与机器人1300直接通信信息,或者可以经由中间存储设备或更一般地经由中间非暂时性计算机可读介质进行通信。例如,图1D示出了可以是系统1000/1500A/1500B的实施例的系统1500C,该系统1500C包括非暂时性计算机可读介质1400,该非暂时性计算机可读介质1400可以在计算系统1100的外部,并且可以充当外部缓冲器或用于存储例如由相机1200生成的图像信息的存储库。在这样的示例中,计算系统1100可以检索或以其他方式接收来自非暂时性计算机可读介质1400的图像信息。非暂时性计算机可读介质1400的示例包括电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合。非暂时性计算机可读介质可以形成例如计算机软盘、硬盘驱动器(HDD)、固态驱动器(SDD)、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能磁盘(DVD)和/或记忆棒。

如上所述,相机1200可以是3D相机和/或2D相机。2D相机可以被配置为生成2D图像,诸如彩色图像或灰度图像。3D相机可以是例如深度感测相机,诸如飞行时间(TOF)相机或结构化光相机,或任何其他类型的3D相机。在某些情况下,2D相机和/或3D相机可以包括图像传感器,诸如电荷耦合器件(CCD)传感器和/或互补金属氧化物半导体(CMOS)传感器。在实施例中,3D相机可以包括激光器、LIDAR设备、红外设备、明/暗传感器、运动传感器、微波检测器、超声检测器、RADAR检测器或被配置为捕获深度信息或其他空间结构信息的任何其他设备。

如上所述,图像信息可以由计算系统1100处理。在实施例中,计算系统1100可以包括或被配置为服务器(例如,具有一个或多个服务器刀片、处理器等)、个人计算机(例如,台式计算机、膝上型计算机等)、智能电话、平板计算设备和/或其他任何其他计算系统。在实施例中,计算系统1100的任何或所有功能可以作为云计算平台的一部分来执行。计算系统1100可以是单个计算设备(例如,台式计算机),或者可以包括多个计算设备。

图2A提供了图示计算系统1100的实施例的框图。本实施例中的计算系统1100包括至少一个处理电路1110和非暂时性计算机可读介质(或多个介质)1120。在某些情况下,处理电路1110可以包括被配置为执行存储在非暂时性计算机可读介质1120(例如,计算机存储器)上的指令(例如,软件指令)的处理器(例如,中央处理单元(CPU)、专用计算机和/或板载服务器)。在某些实施例中,处理器可以包括在可操作地耦合到其他电子/电气设备的单独/独立控制器中。处理器可以实现程序指令以控制其他设备/与其他设备接口,从而使计算系统1100执行动作、任务和/或操作。在实施例中,处理电路1110包括一个或多个处理器、一个或多个处理核、可编程逻辑控制器(“PLC”)、专用集成电路(“ASIC”)、可编程门阵列(“PGA”)、现场可编程门阵列(“FPGA”)、其任何组合或任何其他处理电路。

在实施例中,作为计算系统1100的一部分的非暂时性计算机可读介质1120可以是上面讨论的中间非暂时性计算机可读介质1400的替代或附加。非暂时性计算机可读介质1120可以是存储设备,诸如电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如,诸如计算机软盘、硬盘驱动器(HDD)、固态驱动器(SDD)、随机存取存储器(RAM)、只读存储器(ROM)、可擦可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式光盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、其任何组合或任何其他存储设备。在某些情况下,非暂时性计算机可读介质1120可以包括多个存储设备。在某些实现中,非暂时性计算机可读介质1120被配置为存储由相机1200生成并由计算系统1100接收的图像信息。在某些情况下,非暂时性计算机可读介质1120可以存储用于执行本文讨论的方法和操作的一个或多个物体识别模板。非暂时性计算机可读介质1120可以替代地或可附加地存储计算机可读程序指令,该计算机可读程序指令在由处理电路1110执行时,使处理电路1110执行这里描述的一种或多种方法。

图2B描绘了计算系统1100A,其是计算系统1100的实施例并且包括通信接口1131。通信接口可以被配置为例如接收由图1A-1D的相机1200生成的图像信息。可以经由以上讨论的中间非暂时性计算机可读介质1400或网络,或者经由相机1200与计算系统1100/1100A之间的更直接的连接来接收图像信息。在实施例中,通信接口可以被配置为与图1C的机器人1300通信。如果计算系统1100在机器人控制系统外部,则计算系统1100的通信接口可以被配置为与机器人控制系统进行通信。通信接口也可以被称为通信组件或通信电路,并且可以包括例如被配置为通过有线或无线协议执行通信的通信电路。作为示例,通信电路可以包括RS-232端口控制器、USB控制器、以太网控制器、

在实施例中,如图2C中所示,非暂时性计算机可读介质1120可以包括被配置为存储本文讨论的一个或多个数据对象(data objects)的存储空间1125。例如,存储空间可以存储物体识别模板、检测假设、图像信息、物体图像信息、机械臂移动命令以及本文讨论的计算系统可能需要访问的任何附加数据对象。

在实施例中,处理电路1110可以由存储在非暂时性计算机可读介质1120上的一个或多个计算机可读程序指令编程。例如,图2D图示了计算系统1100C,其是计算系统1100/1100A/1100B的实施例,其中处理电路1110由包括物体识别模块1121、运动规划模块1129和物体操纵规划模块1126的一个或多个模块编程。处理电路1110还可以被编程有假设生成模块1128、物体注册模块1130、模板生成模块1132、特征提取模块1134、假设细化模块1136和假设验证模块1138。以上模块中的每一个可以表示计算机可读程序指令,该计算机可读程序指令被配置为当在本文描述的处理器、处理电路、计算系统等中的一个或多个上实例化时执行某些任务。以上模块中的每一个可以相互协同操作以实现本文描述的功能。本文描述的功能的各种方面可以由上述软件模块中的一个或多个来执行,并且软件模块及其描述不应被理解为限制本文所公开的系统的计算结构。例如,虽然可以关于具体模块描述具体任务或功能,但该任务或功能也可以根据需要由不同模块执行。此外,本文描述的系统功能可以由配置有不同功能分解或分配的不同软件模块集来执行。

在实施例中,物体识别模块1121可被配置为获取和分析图像信息,如贯穿本公开所讨论的。本文讨论的关于图像信息的方法、系统和技术可以使用物体识别模块1121。物体识别模块还可被配置用于与物体标识相关的物体识别任务,如本文所讨论的。

运动规划模块1129可以被配置为规划和执行机器人的移动。例如,运动规划模块1129可以与本文描述的其他模块交互以规划机器人3300的运动以用于物体检索操作和用于相机放置操作。本文讨论的关于机械臂移动和轨迹的方法、系统和技术可以由运动规划模块1129执行。

物体操纵规划模块1126可以被配置为规划和执行机械臂的物体操纵活动,例如,抓握和释放物体以及执行机械臂命令以帮助和促进这样的抓握和释放。

假设生成模块1128可以被配置为执行模板匹配和识别任务以生成检测假设,如例如关于图10A-10B所描述的。假设生成模块1128可以被配置为与任何其他必要的模块交互或通信。

物体注册模块1130可以被配置为获取、存储、生成和以其他方式处理本文讨论的各种任务可能需要的物体注册信息。物体注册模块1130可以被配置为与任何其他必要的模块交互或通信。

模板生成模块1132可以被配置为完成如本文所讨论的物体识别模板生成任务,例如,如与图6-9D相关的。模板生成模块1132可以被配置为与物体注册模块1130、特征提取模块1134以及任何其他必要的模块交互。

特征提取模块1134可以被配置为完成如本文所讨论的特征提取和生成任务,例如,如与图8-9D相关的。特征提取模块1134可以被配置为与物体注册模块1130、模板生成模块1132、假设生成模块1128以及任何其他必要的模块交互。

假设细化模块1136可以被配置为完成如本文所讨论的假设细化任务,例如,如与图11-12C相关的。假设细化模块1136可以被配置为与物体识别模块1121和假设生成模块1128以及任何其他必要的模块交互。

假设验证模块1138可以被配置为完成如本文所讨论的假设验证任务,例如,如与图13-14相关的。假设验证模块1138可以被配置为与物体注册模块1130、特征提取模块1134、假设生成模块1128、假设细化模块1136以及任何其他必要的模块交互。

参考图2E、2F、3A和3B,解释了与可以被执行用于图像分析的物体识别模块1121相关的方法。图2E和2F图示了与图像分析方法相关联的示例图像信息,而图3A和3B图示了与图像分析方法相关联的示例机器人环境。本文中与由计算系统进行的图像分析相关的参考可以根据或使用空间结构信息来执行,该空间结构信息可以包括描述相对于所选点的各种位置的相应深度值的深度信息。深度信息可用于标识物体或估计物体如何在空间上布置。在某些情况下,空间结构信息可包括或可用于生成描述物体的一个或多个表面的位置的点云。空间结构信息仅仅是可能的图像分析的一种形式,并且本领域技术人员已知的其他形式可以根据本文描述的方法使用。

在实施例中,计算系统1100可以获取表示相机1200的相机视场(例如,3200)中的物体的图像信息。下面描述的用于获得图像信息的步骤和技术可以在下面被称为图像信息捕获操作3001。在某些情况下,物体可以是来自相机1200的视场3200中的场景5013中的多个物体5012中的一个物体5012。当物体5012在(或已经处于)在相机视场3200中时图像信息2600、2700可以由相机(例如,1200)生成并且可以描述个体物体5012或场景5013中的一个或多个。物体外观从相机1200的视点描述物体5012的外观。如果在相机视场中有多个物体5012,则相机可以根据需要生成表示多个物体或单个物体的图像信息(这样的与单个物体相关的图像信息可以被称为物体图像信息)。当该组物体处于(或已经处于)相机视场中时,图像信息可以由相机(例如,1200)生成,并且可以包括例如2D图像信息和/或3D图像信息。

作为示例,图2E描绘了第一组图像信息,或更具体地,2D图像信息2600,如上所述,其由相机1200生成并且表示图3A的物体3410A/3410B/3410C/3410D/3401。更具体地,2D图像信息2600可以是灰度或彩色图像并且可以从相机1200的视点来描述物体3410A/3410B/3410C/3410D/3401的外观。在实施例中,2D图像信息2600可以对应于彩色图像的单个颜色通道(例如,红色、绿色或蓝色通道)。如果相机1200被布置在物体3410A/3410B/3410C/3410D/3401上方,则2D图像信息2600可以表示物体3410A/3410B/3410C/3410D/3401的相应顶表面的外观。在图2E的示例中,2D图像信息2600可以包括表示物体3410A/3410B/341C/3410D/3401的相应表面的相应部分2000A/2000B/2000C/2000D/2550,也被称为图像部分或物体图像信息。在图2E中,2D图像信息2600的每个图像部分2000A/2000B/2000C/2000D/2550可以是图像范围,或更具体地,像素范围(如果图像由像素形成)。2D图像信息2600的像素范围中的每个像素可以被表征为具有由一组坐标[U,V]描述的位置并且可以具有相对于相机坐标系或某个其他坐标系的值,如图2E和2F所示。每个像素还可以具有强度值,诸如介于0和255或0和1023之间的值。在另外的实施例中,每个像素可以包括与各种格式的像素相关联的任何附加信息(例如,色调、饱和度、强度、CMYK、RGB等)。

如上所述,在某些实施例中,图像信息可以是图像的全部或部分,诸如2D图像信息2600。例如,计算系统3100可以被配置为从2D图像信息2600中提取图像部分2000A以获取仅与对应物体3410A相关联的图像信息。在图像部分(诸如图像部分2000A)指向单个物体的情况下,它可以被称为物体图像信息。物体图像信息不需要仅包含关于它所指向的物体的信息。例如,它所指向的物体可能靠近、低于、高于或以其他方式位于一个或多个其他物体附近。在这样的情况下,物体图像信息可以包括关于它所指向的物体以及一个或多个相邻物体的信息。计算系统1100可以通过基于2D图像信息2600和/或图2F所示的3D图像信息2700执行图像分割或其他分析或处理操作来提取图像部分2000A。在一些实现中,图像分割或其他处理操作可以包括检测物体的物理边缘(例如,物体的边缘)在2D图像信息2600中出现的图像位置,并且使用这样的图像位置来标识限于表示相机视场(例如,3200)中的个体物体并且基本上排除其他物体的物体图像信息。通过“基本上排除”,这意味着图像分割或其他处理技术被设计和配置为从物体图像信息中排除非目标物体,但可以理解,错误可能产生,噪声可能存在,并且各种其他因素可能导致包含其他物体的部分。

图2F描绘了其中图像信息是3D图像信息2700的示例。更特别地,3D图像信息2700可以包括例如指示物体3410A/3410B/3410C/3410D/3401的一个或多个表面(例如,顶表面或其他外表面)上的各种位置的相应深度值的深度图或点云。在某些实现中,用于提取图像信息的图像分割操作可以涉及检测物体的物理边缘(例如,盒子的边缘)在3D图像信息2700中出现的图像位置,并且使用这样的图像位置来标识限于表示相机视场中的个体物体(例如,3410A)的图像部分(例如,2730)。

相应深度值可以相对于生成3D图像信息2700的相机1200,或者可以相对于某个其他参考点。在某些实现中,3D图像信息2700可以包括点云,该点云包括相机视场(例如,3200)中的物体的结构上的各种位置上的相应坐标。在图2F的示例中,点云可以包括描述物体3410A/3410B/3410C/3410D/3401的相应表面上的位置的相应坐标组。坐标可以是3D坐标,诸如[X Y Z]坐标,并且可以具有相对于相机坐标系或某个其他坐标系的值。例如,3D图像信息2700可以包括指示物体3410D的表面上也被称为物理位置的一组位置2710

在实施例中,作为获取图像信息的一部分,可以由计算系统1100执行图像归一化操作。图像归一化操作可以涉及变换由相机1200生成的图像或图像部分,以便生成变换后的图像或变换后的图像部分。例如,如果获取的可以包括2D图像信息2600、3D图像信息2700或两者的组合的图像信息可经历图像归一化操作,以试图使图像信息在与视觉描述信息相关联的视点、物体姿势、照明条件中被改变。这样的归一化可被执行以促进图像信息和模型(例如,模板)信息之间的更准确比较。视点可以指物体相对于相机1200的姿势,和/或当相机1200生成表示物体的图像时相机1200正在观察物体的角度。

例如,图像信息可以在物体识别操作期间生成,其中目标物体在相机视场3200中。当目标物体具有相对于相机的具体姿势时,相机1200可以生成表示目标物体的图像信息。例如,目标物体可以具有使其顶表面垂直于相机1200的光轴的姿势。在这样的示例中,相机1200生成的图像信息可以表示具体的视点,诸如目标物体的顶视图。在某些情况下,当相机3200在物体识别操作期间生成图像信息时,图像信息可以在诸如照明强度的特定照明条件下生成。在这样的情况下,图像信息可以表示特定的照明强度、照明颜色或其他照明条件。

在实施例中,图像归一化操作可以涉及调整由相机生成的场景的图像或图像部分,以使图像或图像部分更好地匹配与物体识别模板的信息相关联的视点和/或照明条件。调整可以涉及变换图像或图像部分以生成与和物体识别模板的视觉描述信息相关联的物体姿势或照明条件中的至少一个相匹配的变换后的图像。

视点调整可以涉及场景的图像的处理、卷绕和/或移位,使得图像表示与可包括在物体识别模板内的视觉描述信息相同的视点。例如,处理包括改变图像的颜色、对比度或照明,场景的卷绕可包括更改图像的大小、尺寸或比例,而图像的移位可能包括更改图像的位置、朝向或旋转。在示例实施例中,处理、卷绕和/或移位可用来改变场景的图像中的物体以具有匹配或更好地对应于物体识别模板的视觉描述信息的朝向和/或大小。如果物体识别模板描述了某个物体的正面视图(head-on view)(例如,顶视图),则场景的图像可能被卷绕,以便也表示场景中物体的正面视图。

本文中执行的物体识别方法的其他方面在2020年8月12日提交的第16/991,510号美国申请和2020年8月12日提交的第16/991,466号美国申请中被更详细地描述,这些美国申请中的每一个通过引用并入本文。

在各种实施例中,术语“计算机可读指令”和“计算机可读程序指令”被用于描述被配置为执行各种任务和操作的软件指令或计算机代码。在各种实施例中,术语“模块”广义上是指被配置为使处理电路1110执行一个或多个功能任务的软件指令或代码的集合。当处理电路或其他硬件组件正在执行模块或计算机可读指令时,模块和计算机可读指令可以被描述为执行各种操作或任务。

图3A-3B示出了示例性环境,其中存储在非暂时性计算机可读介质1120上的计算机可读程序指令经由计算系统1100利用来提高物体标识、检测和检索操作和方法的效率。由计算系统1100获取并在图3A中例示的图像信息影响系统的决策过程和对物体环境内存在的机器人3300的命令输出。

图3A-3B示出了其中可以执行本文描述的过程和方法的示例环境。图3A描绘了具有至少包括计算系统1100、机器人3300和相机1200的系统3000(其可以是图1A-1D的系统1000/1500A/1500B/1500C的实施例)的环境。相机1200可以是相机1200的实施例,并且可以被配置为生成图像信息,该图像信息表示相机1200的相机视场3200中的场景5013,或更具体地表示相机视场3200中的物体(诸如盒子),诸如物体3000A、3000B、3000C和3000D。在一个示例中,物体3000A-3000D中的每一个可以是例如诸如盒子或板条箱之类的容器,而物体3550可以是例如其上布置有容器的托盘。此外,物体3000A-3000D中的每一个还可以是包含个体物体5012的容器。例如,每个物体5012可以是杆、棒、齿轮、螺栓、螺母、螺钉、钉子、铆钉、弹簧、连杆、嵌齿轮或任何其他类型的物理物体,以及多个物体的组件。图3A图示了包括物体5012的多个容器的实施例,而图3B图示了包括物体5012的单个容器的实施例。

在实施例中,图3A的系统3000可以包括一个或多个光源。光源可以是例如发光二极管(LED)、卤素灯或任何其他光源,并且可以被配置为朝着物体3000A–3000D的表面发射可见光、红外辐射或任何其他形式的光。在某些实现中,计算系统1100可以被配置为与光源通信以控制光源何时被激活。在其他实现中,光源可以独立于计算系统1100操作。

在实施例中,系统3000可以包括相机1200或多个相机1200,包括被配置为生成2D图像信息2600的2D相机和被配置为生成3D图像信息2700的3D相机。相机1200或多个相机1200可以安装或固定到机器人3300,可以在环境内固定,和/或可以固定到与用于物体操纵的机器人1300分开的专用机器人系统上,诸如机械臂、门架(gantry)或被配置用于相机移动的其他自动化系统。图3A示出了具有固定相机1200和手持相机1200的示例,而图3B示出了仅具有固定相机1200的示例。2D图像信息2600(例如,彩色图像或灰度图像)可以描述诸如相机视场3200中的物体3000A/3000B/3000C/3000D或物体5012之类的一个或多个物体的外观。例如,2D图像信息2600可以捕获或以其他方式表示布置在物体3000A/3000B/3000C/3000D和物体5012的相应外表面(例如,顶表面)上的视觉细节,和/或那些外表面的轮廓。在实施例中,3D图像信息2700可以描述物体3000A/3000B/3000C/3000D/3550和5012中的一个或多个的结构,其中物体的结构也可以被称为物体结构或物体的物理结构。例如,3D图像信息2700可以包括深度图,或更一般地包括深度信息,其可以描述相机视场3200中的各种位置相对于相机1200或相对于某个其他参考点的相应深度值。对应于相应深度值的位置可以是相机视场3200中各种表面上的位置(也被称为物理位置),诸如物体3000A/3000B/3000C/3000D/3550和5012的相应顶表面上的位置。在某些情况下,3D图像信息2700可以包括点云,该点云可以包括多个3D坐标,该3D坐标描述了相机视场3200中的物体3000A/3000B/3000C/3000D/3550和5012或某些其他物体的一个或多个外表面上的各种位置。点云如图2F所示。

在图3A和3B的示例中,机器人3300(其可以是机器人1300的实施例)可以包括机械臂3320,该机械臂3320具有附接到机器人基座3310的一端,并且具有附接到末端执行器装置3330或由末端执行器装置3330形成的另一端,诸如机器人抓手。机器人基座3310可用于安装机械臂3320,而机械臂3320,或更具体地,末端执行器装置3330,可用于与机器人3300的环境中的一个或多个物体交互。交互(也被称为机器人交互)可以包括例如抓持或以其他方式拾取物体3000A–3000D和5012中的至少一个。例如,机器人交互可以是用以从容器标识、检测和检索物体5012的物体挑选操作的一部分。末端执行器装置3330可具有吸盘或其他组件以用于抓握或抓取物体5012。末端执行器装置3330可以被配置为使用吸盘或其他抓握组件,通过与物体的单个面或表面接触(例如经由顶表面)来抓握或抓取物体。

机器人3300还可以包括附加传感器,其被配置为获取用于实现任务(诸如用于操纵结构构件和/或用于运输机器人单元)的信息。传感器可以包括被配置为检测或测量机器人3300和/或周围环境的一种或多种物理特性(例如,测量机器人3300的一个或多个结构构件/关节的状态、条件和/或位置)。传感器的某些示例可以包括加速度计、陀螺仪、力传感器、应变仪、触觉传感器、扭矩传感器、位置编码器等。

图4提供了图示根据本文的实施例的用于检测、标识和检索物体的方法和操作的总体流程的流程图。物体检测、标识和检索方法4000可以包括本文描述的子方法和操作的特征的任何组合。方法4000可以包括物体注册操作5000、物体识别模板生成方法6000、特征生成方法8000、图像信息捕获操作3001、假设生成操作10000、假设细化方法11000、假设验证方法13000和包括障碍物检测、运动规划和运动执行的机器人控制操作15000中的任何一个或全部。在实施例中,物体注册操作5000、物体识别模板生成方法6000和特征生成方法8000可以在机器人操作的上下文之外的预处理或离线环境中执行。因此,这些操作和方法可被提前执行以促进机器人稍后的动作。图像信息捕获操作3001、假设生成操作10000、假设细化方法11000、假设验证方法13000和机器人控制操作15000每个可在用于从容器中检测、标识和检索物体的机器人操作的上下文中执行。

图5图示了与物体类型相关的物体注册数据,其可以在物体注册操作5000期间被生成、获取、接收或以其他方式获得。如上所述,本文描述的方法和系统被配置为获取和使用物体注册数据5001,例如,已知的、与物体5011相关的先前存储的信息,以生成物体识别模板,用于标识和识别物理场景中的相似物体。物体注册数据5001可以包括标识、涉及和/或描述物体模型4200的任何类型的计算机可读信息。物体模型4200的物体注册数据5001可以表示物体5011,其中物体模型4200是以二维或三维格式,其提供所表示的物体5011的测量和维度并且可以是或可以不是交互式的。物体注册数据5001可以包括例如CAD(即,计算机辅助设计)数据或描述物体模型4200并以任何合适格式存储的其他建模数据。注册数据可以是实体CAD模型、线框CAD模型或表面CAD模型。在实施例中,注册数据可以是任何类型的三维文件格式,诸如FBX、OBJ、USD、STL、STEP、COLLADE等。物体模型4200表示一个或多个物理物体。物体模型4200是物理上存在于世界内的一个或多个对应物体5011的建模(即,计算机存储)版本。如图5所示,物体5011是存在于物理世界中的物理物体,而物体模型4200是由物体注册数据5001描述的物体5011的数字表示。所表示的物体5011可以是任何物体,包括,例如,杆、棒、齿轮、螺栓、螺母、螺钉、钉子、铆钉、弹簧、连杆、嵌齿轮或任何其他类型的物理物体,以及多个物体的组件。在实施例中,物体5011可以指可从容器(例如,柜子、盒子、桶等)得到的物体,具有例如若干克到若干公斤范围的质量和例如5毫米到500毫米范围的大小。物体模型4200可以特定于真实世界物体5011的确切版本,例如,具有具体长度、螺纹数、螺纹大小、头部大小等的螺钉。出于举例和说明性目的,此描述是指作为物体5011的螺旋形物体。这仅是出于方便的目的而呈现的,并不旨在以任何方式限制描述的范围。

在一些实施例中,本公开涉及生成用于标识场景5013内的物体5012的物体识别模板集。物体注册数据5001可以基于物理物体5011并且可以用于促进与物理物体5011类似(并且可以是其副本或版本)的其他物理物体5012的识别。标识场景内的物体5012可以包括标识物体5012对应的物体模型4200(例如,标识物体5012是什么),标识物体5012的姿势(例如,标识物体5012的位置、角度和朝向)。

图6描绘了用于生成物体识别模板集的示例物体识别模板生成方法6000的流程图。在实施例中,物体识别模板生成方法6000可以由例如图2A-2D的计算系统1100(或1100A/1100B/1100C)或图3A-3B的计算系统1100,或更具体地由计算系统1100的至少一个处理电路1110执行。在某些场景下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行物体识别模板生成方法6000。例如,指令可以使计算系统1100执行图2D中所示的一个或多个模块,其可以执行物体识别模板生成方法6000。例如,在实施例中,物体识别模板生成方法6000的步骤可以由物体注册模块1130执行并且模板生成模块1132可以协同操作以生成物体识别模板。

物体识别模板生成方法6000的步骤可用于实现物体识别模板生成,其随后可用于结合具体顺序机器人轨迹以用于执行具体任务。作为一般概述,物体识别模板生成方法6000可以操作以使计算系统1100生成物体识别模板集,以供计算系统用于标识场景中的物体以用于与物体挑选相关的操作。物体识别模板生成方法6000将在下面另外参考图图7A和7B进行描述。

至少一个处理电路1110可以执行物体识别模板生成方法6000的具体步骤以用于生成物体识别模板集4301,该物体识别模板集4301可以包括多个物体识别模板4300。物体识别模板生成方法6000可以开始于或以其他方式包括操作6001,包括获取表示物体5011的物体模型4200的物体注册数据5001。

在操作6001中,物体识别模板生成方法6000可以包括获取表示物体5011的物体注册数据5001,其中物体注册数据5001可以包括表示物体5011的物体模型4200。至少一个处理电路1110可以确定物体模型在三维空间4100中的多个视点4120。至少一个处理电路1110还可以估计物体模型4200在多个视点4120的每一个处的多个外观4140。机器人系统还可根据多个外观生成多个物体识别模板4300(例如,4300A/4300B/4300C/4300D),其中多个物体识别模板4300中的每一个对应于多个外观4140中的相应一个。然后,至少一个处理电路1110可以将多个物体识别模板4300作为物识别模板集4301传送到机器人系统或存储系统供以后使用。多个物体识别模板4300中的每一个可以表示物体模型4200相对于虚拟相机4110的光轴4130可能具有的姿势。在物体识别模板4300生成期间,每个物体识别模板4200表示从具有与虚拟相机4110的视角相对应的视角的相机1200的视角来看的对应于物体模型4200的物体5011的视图。

至少一个处理电路1110可以从其自己的硬件存储组件(即HDD、SSD、USB、CD、RAID等)或软件存储组件(即云、VSP等)内获取物体注册数据5001。在实施例中,至少一个处理电路1110可以从外部处理器(即外部膝上型电脑、台式机、蜂窝电话或具有其自己的处理系统的任何其他单独设备)获取注册数据。

物体识别模板生成方法6000还可以包括操作6003,其可以包括确定物体模型4200在三维空间4100中的多个视点4120。这可以被称为空间子采样过程。围绕物体模型4200的三维空间4100可以被表面4101包围。三维空间4100和表面4101是围绕物体模型4200的虚拟实体,该物体模型4200也是虚拟实体。在操作6003处确定的多个视点4120中的每一个可以对应于或表示虚拟相机4110在包围三维空间4100的表面4101上的位置以及表示虚拟相机4112围绕虚拟相机4110的光轴4130的旋转角度。因此,表面4101上的每个位置可以对应于多个视点4120。

在空间子采样过程中使用的虚拟相机4110可以从虚拟相机4110所位于的视点4120捕获物体的外观。例如,如图7A所示,位于个体视点4120A的虚拟相机4110可以捕获物体模型4200的外观4140。外观4140包括基于视图的角度和虚拟相机4110围绕其光轴的旋转来描述物体模型4200对虚拟相机4111的外观的信息。物体模型4200可以固定在此三维空间4100内。在实施例中,三维空间可以是基本上球形的。物体模型4200还可以固定在基本上球形的三维空间的中心,或大致在中心。在另一个实施例中,三维空间可以是任何其他合适的三维形状,诸如椭圆体或平行六面体等。物体模型4200可以固定在三维空间内的任何点,中心或非中心。生成的(例如,经由如下进一步讨论的操作6007)个体物体识别模板4300A/4300B/4300C/4300D等中的每一个可以对应于来自多个视点4120中的一个视点4120的物体模型4200的一个捕获的外观4140。每个物体识别模板4300可以包括来自捕获物体的姿势(即,物体的朝向和(一个或多个)可见表面等)的视点4120的物体模型4200的外观4140。在实施例中,多个视点4120中的每个还可以对应于虚拟相机4110在三维空间4100内的旋转角度;即相机相对于其光轴4130的旋转角度,在1-360°之间。

操作6003可以包括执行以选择视点4120的空间子采样过程,从中对应的物体识别模板4300将被包括在物体识别模板集4301中。物体识别模板生成方法6000的效率可以通过减少或以其他方式优化从其生成物体识别模板4300的空间(例如,视点4120和外观4140的数量)来被提高或最大化。在实施例中,可以在初始在那些视点4120捕获物体外观4140之后消除多余的视点4120。例如,当确定它们包含与其他视点4120基本类似的信息时,多余的视点4120可被消除(例如,由于对称性)。在实施例中,多余的视点4120可以在物体外观4140捕获之前基于关于姿势、间距等的预先确定的决策来消除,如下所述。在实施例中,所选择的视点4120的数量和相邻视点4120之间的间隔距离可以取决于所需的物体识别模板4300的数量,例如基于讨论中的物体模型4200的复杂性和/或对称性。

可以根据若干不同的方法来选择或确定多个视点4120。例如,至少一个处理电路1110可以根据经圆4170和纬圆4180的交点来确定视点4120。视点4120可以位于跨越三维空间4100的表面4101的经圆4170和纬圆4180的交点处。在这样的选择方案中,高密度的视点4120可以聚集在表面4101的极点处或附近,而低密度的视点可以在更远离极点(例如,更靠近表面4101的赤道)的相交经圆和纬圆周围形成。样本位置的这样的不均匀分布可能使多个物体识别模板4300过度表示虚拟相机4110和物体模型4200之间的相对姿势/朝向的一个范围或一组范围,以及不足以表示另一个范围或另一组范围。这样的选择在具有一些物体模型4200的某些场景中可能是有利的,而在其他场景中则不太有利。

在进一步的实施例中,多个视点4120可以根据跨包围三维空间4100的表面4101的均匀分布来选择。均匀分布可以指的是视点4120跨表面4101以彼此相等的距离分布。均匀分布可以相比不均匀分布提供更一致的模板生成,并且对于缺乏对称性的物体可能是更优选的。

在一些实施例中,多个视点4120可被选择以便减少视点4120的总数和/或加权或偏置视点分布以有利于特定视点。

在实施例中,多个视点4120可以基于在物理情况下对于多个物体5011预期被观察到的姿势的可预测范围来确定。例如,在容纳若干锥形瓶的容器中,可以预期瓶子的姿势是这样的,即较宽的或底端面朝下。因此,视点分布可以被偏置或加权以在表面4101的上半部具有更多视点4120。

在另一个实施例中,可以基于物体模型4200的对称性(或对称性的缺乏)来确定多个视点4120。物体模型4200的对称性可以基于物体模型4200的外观4140在物体模型4200围绕物体模型420的轴旋转若干度之后是否变化来确定。例如,在180度旋转之后看起来基本相同的物体模型4200具有双向对称性。在120度旋转之后看起来基本相同的物体模型4200具有三向对称性。90度旋转之后看起来基本相同的物体模型4200具有四向对称性。在60度旋转之后看起来基本相同的物体模型4200具有六向对称性。对于不同的物体,其他对称性可以是可能的。可以根据相似度的阈值确定基本相同的外观。

物体识别模板生成方法6000还可以包括操作6005,包括在多个视点4120的每一个处估计或捕获物体模型4200的多个外观4140。可以在多个视点4120中的每个视点4120处执行对多个外观4140的估计。每个外观4140包括如从相应视点4120看到的物体模型4200的姿势或朝向。每个物体识别模板4300对应于多个视点4120中的相应视点4120,并且包括表示从相应视点4120的物体模型4200的外观4140的信息。例如,物体识别模板4300可以对应于或表示从相应视点4120的物体模型4200的相应外观4140,该相应视点4120对应于虚拟相机4110被直接布置在物体模型的上方(即沿三维平面的Y轴)。在另一示例中,物体识别模板4300可以对应于从相应视点4120的物体模型4200的相应外观4140,该相应视点4120对应于虚拟相机4110被直接布置在物体模型的左方(即沿三维平面的X轴)。在实施例中,物体识别模板集4301的物体识别模板4300中的每一个可以对应于或表示从多个视点4120中的相应视点4120的物体模型4200的多个外观4140中的相应外观4140,这些视点对应于虚拟相机4110被布置在物体模型4200周围的许多不同位置和朝向(即三维平面内的许多位置)。因此,估计多个外观4140可以包括确定或估计物体模型4200在被从特定视点在特定朝向观察时看起来如何。例如,视点可以包括物体模型4200的直接自上而下看、自下而上看、向左看、向右看、或围绕三维空间4100的表面4101的或其上的主轴X、Y和Z之间的任何角度/位置。如上所述,每个视点4120还可以包括虚拟相机4110关于相机的光轴4130的在1-360°之间的旋转角。每个相机位置因此可以对应于一组视点4120,并且该组视点中的每个视点4120还可以对应于虚拟相机4110的不同旋转角度。例如,该组视点4120的两个单独的视点4120可以从表面4101的主轴X、Y和Z之间的相同角度/位置估计或捕获,但第一视点4120的旋转角度关于第二视点4120的旋转角度旋转45°。

物体识别模板生成方法6000还可包括操作6007,其中多个物体识别模板4300基于多个外观4140生成。多个物体识别模板4300中的每一个对应于多个外观4140中的相应一个。因此,生成的物体识别模板4300可以包括表示物体模型4200处于某个姿势的信息以及虚拟相机4110关于物体模型4200在某个角度和/或旋转的信息。因此,多个物体识别模板4300中的每一个可能不同于多个物体识别模板4300中的其他模板(尽管在某些场景中,由于在视点4120选择中未被考虑的物体模型4200的对称性,两个不同的物体识别模板4300可以包括基本上相同的信息)。

每个物体识别模板4300可以包括根据捕获的或估计的相应外观4140生成的2D外观4302和3D外观4303。2D外观4302可以包括渲染的二维图像,例如,其可以根据射线跟踪和不连续性检测技术渲染。3D外观4303包括渲染的3D点云,例如,类似于关于图2F描述的3D图像信息2700。

在一些实现中,2D外观4302和/或3D外观可以经由射线跟踪技术生成。射线跟踪操作可以模拟来自虚拟相机4110视角的各种射线撞击物体模型4200的表面。它还可以确定射线撞击物体模型4200表面的角度、射线行进到物体模型4200表面的距离,和/或漫反射(其中偏转射线以多个角度进行)或镜面反射(其中偏转射线以单个角度进行)的效果。从物体模型4200的表面反射的偏转射线的角度可以指示物体的表面法线的角度的变化。物体的表面法线的角度的这样的变化可能发生在物体的边缘。

为物体模型4200生成的多个物体识别模板4300的总数可以在从大约100个模板到3200个模板的范围内,其中更高数目的模板可能与从其生成多个物体识别模板4300的物体模型4200的复杂度相关。引用的数字对于一些应用和一些物体类型是通用的,但是在不脱离本发明的范围的情况下可以使用更多或更少的模板。例如,呈现基本对称外观的物体模型4200(例如,螺纹螺母)将生成大量冗余模板(即匹配模板)或基本相同的模板。这样的简单物体模型4200因此可以生成少至100个模板,或者在100到3200个模板之间的范围的下半部分(lower half)中的任意数量的模板。相反,缺乏对称性的物体模型4200可能需要更多物体识别模板4300以提供物体模型4200在更多可行角度的适当表示。

物体识别模板生成方法6000还可包括操作6009,包括将多个物体识别模板4300作为物体识别模板集4301传送到机器人控制系统。物体识别模板集4301被传送到诸如计算系统1100、任何其他类型的机器人控制系统和/或可以采用物体识别模板4300的任何其他系统的机器人控制系统。在实施例中,传送物体识别模板集4301可以包括任何时间段的经由任何合适的网络协议和/或存储到存储器或其他存储设备的直接通信,以供机器人控制系统或可以采用物体识别模板的其他系统以后访问。物体识别模板集4301中的多个物体识别模板4300中的每一个表示物体模型4200在位于具体视点4120时相对于虚拟相机4110的光轴4130可以具有的姿势。如前所述,姿势可以包括任何位置角度和旋转角度。

如上所述,本发明的物体识别模板生成方法6000涉及从物体注册数据5001生成物体识别模板集4301。物体识别模板集4301可用于在物理操作期间标识场景中的一个或多个物体5011以抓取、挑选或以其他方式与一个或多个物体5011交互。获取表示物体5011的物体模型4200的物体注册数据5001。确定物体模型4200在三维空间4100中的多个视点4120。估计或捕获多个视点4120中的每一个处的物体模型的外观4140。根据多个外观4140生成多个物体识别模板4300,其中多个物体识别模板4300中的每一个对应于多个外观4140中的相应一个。多个物体识别模板4300被传送到机器人控制系统作为物体识别模板集4301。多个物体识别模板4300中的每一个表示物体模型4200相对于虚拟相机4110的光轴4130可能具有的姿势。多个物体识别模板4300中的每一个因此可以对应于物理场景中的物体5011相对于相机(诸如相机1200)的光轴的潜在姿势,该相机生成物理场景内的物体5011的图像信息(例如,图像信息2600/2700)。

在进一步的实施例中,附加的或替代的方法可用来从物体注册数据5001生成物体识别模板集4301,并且物体识别模板4300可以包括相比2D外观4302和3D外观4303的附加或不同的信息。具体地,物体识别模板4300可以包括二维(2D)测量信息4304和三维(3D)测量信息4305。

2D测量信息4304可以指梯度特征图。梯度特征图可以包括在数字物体表面上的一个或多个梯度提取位置5100处从物体的数字表示捕获或提取的梯度信息9100,如下所述。3D测量信息4305可以指表面法线特征图。表面法线特征图可以包括在数字物体的表面上的一个或多个表面法线位置5101处从物体的数字表示中捕获或提取的表面法线向量9101,如下所述。2D测量信息4304和3D测量信息4305的生成和/或提取将在下文关于图8-9C更详细地描述。

图8图示了示例特征生成方法8000的流程图。在实施例中,特征生成方法8000可以用于生成物体识别模板集和/或多个物体识别模板。在进一步的实施例中,如下文更详细讨论的,特征生成方法8000可用于在假设生成、细化和验证方法中从物体图像信息中提取特征。在实施例中,特征生成方法8000可以由例如图2A-2D的计算系统1100(或1100A/1100B/1100C)或图3A-3B的计算系统1100,或更具体地由计算系统1100的至少一个处理电路1110执行。在某些场景下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行特征生成方法8000。例如,指令可以使计算系统1100执行图2D中所示的一个或多个模块,其可以执行特征生成方法8000。例如,在实施例中,特征生成方法8000的步骤可以由结合操作的物体注册模块1130、物体识别模块1121、特征提取模块1134和模板生成模块1132来执行。

在实施例中,特征生成方法8000的步骤可用于实现物体识别模板生成,例如通过特征生成和/或提取方法,其随后可结合具体顺序机器人轨迹用于执行具体任务。在实施例中,特征生成方法8000的步骤可用于从物体图像信息中提取或生成特征以用于假设生成、细化和验证。作为一般概述,特征生成方法8000可以操作以使计算系统1100(例如,计算系统1100或相似的计算系统)生成物体识别模板集、特征图和/或提取/生成的特征以供计算系统用于标识场景中的物体以用于与物体挑选相关的操作。特征生成方法8000将在下面另外参考图7A和7B和图9A-9C进行描述。

特征生成方法8000可以包括生成2D测量信息4304和3D测量信息4305,其可以用于生成物体识别模板4300和/或用于表征物理场景5013内的物体5012(参见例如图3B)。至少一个处理电路1110可以获取物体信息9121。如图9A所示,物体信息9121可以包括数字表示的物体9200,例如,物体模型4200的物体注册数据5001、物体模型4200的外观4140、物体识别模板4300和/或场景信息9131。场景信息9131可以包括捕获的包含多个物体5012的物理场景5013的2D或3D图像信息,类似于例如2D图像信息2600和/或3D图像信息2700。场景信息9131还可以包括下面关于假设生成、验证和细化方法和操作讨论的图像信息12001。至少一个处理电路1110还可以从物体信息9121中提取或生成2D测量信息4304和/或3D测量信息4305。在实施例中,至少一个处理电路1110仍可以根据2D测量信息4304和3D测量信息4305生成物体识别模板4300。在实施例中,2D测量信息4304和3D测量信息4305可以被用于或采用于替代目的,诸如假设生成、验证和细化。至少一个处理电路1110可以执行特征生成方法8000的具体步骤以生成物体识别模板集4301和/或用于在假设细化和验证中。

在操作8001中,特征生成方法8000可以包括获取物体信息9121。物体信息9121可以包括数字表示的物体9200。物体信息9121和数字表示的物体9200可以表示物理上存在于世界中的物体5015。物体5015可以包括例如物体5011(例如,由物体模型4200表示的物理物体)和/或物体5012(例如,由捕获的物理场景5013的图像信息表示的物理物体)。在实施例中,物体信息9121可以包括物体识别模板4300、物体注册数据5001、物体外观4140和/或场景信息9131中的一个或多个。至少一个处理电路1110可以从计算系统1100的硬件存储组件(即HDD、SSD、USB、CD、RAID等)或软件存储组件(即云、VSP等)内获取物体信息9121。至少一个处理电路1110可以获取物体信息9121作为内部处理的一部分,例如作为物体识别模板4300。至少一个处理电路1110可以从与计算系统1100相关联的相机1200获取物体信息9121。至少一个处理电路1110可以从外部处理器(即外部膝上型电脑、台式机、蜂窝电话或具有其自己的处理系统的任何其他单独设备)或外部存储设备获取物体的物体信息9121。

在操作8003中,特征生成方法8000还可以包括选择特征位置,包括梯度提取位置5100(如图9B中所示)和表面法线位置5101(如图9C中所示)。梯度提取位置5100是为提取或生成2D测量信息4304而选择的位置。表面法线位置5101是为提取或生成3D测量信息4305而选择的位置。梯度提取位置5100和表面法线位置5101中的每一个是数字表示的物体9200的表面9122上的位置。

在实施例中,梯度提取位置5100和表面法线位置5101可以彼此对应。在实施例中,一些梯度提取位置5100可以对应于一些表面法线位置5101,而其他梯度提取位置5100不对应于表面法线位置5101。在进一步的实施例中,梯度提取位置5100和表面法线位置5101可被选择以便彼此不重叠。因此,梯度提取位置5100和表面法线位置5101可以具有任何量的重叠,包括完全重叠和不重叠。

在实施例中,数字表示的物体9200的表面9122上的梯度提取位置5100和表面法线位置5101位置可以被选择为有限集,以限制存储提取或生成的2D测量信息4304和3D测量信息4305所需的存储器的量。此存储器节省实践可以被称为线性模态,其可指提取和/或分析的固定数量的总特征(诸如梯度信息9100和/或表面法线向量9101,如下所述),而不管数字表示的物体9200的物体信息9121的大小(以字节为单位)。针对2D测量信息4304捕获的特征的数量可以与针对3D测量信息4305捕获的特征的数量相同或不同。

在实施例中,有限数目的梯度提取位置5100和表面法线位置5101可被定位以便生成有效的结果。例如,梯度提取位置5100可以沿着数字表示的物体9200的标识的边缘来定位,如图9B中所示,而表面法线位置5101可以远离数字表示的物体9200的边缘来定位。在实施例中,数字表示的物体9200的边缘可以例如根据射线跟踪、像素强度不连续性或其他分析技术来标识。如下所述,这可以证明是有效的,因为当被在物体边缘附近被捕获时,梯度信息9100在假设生成、验证和细化中可能更重要,而当远离边缘被捕获时,表面法线向量9101可能更重要。所选择的梯度提取位置5100和表面法线位置5101的组合数目可以在100-1000、50-5000和/或10-1000的范围内,尽管更多或更少也可能是合适的。在具体实施例中,梯度提取位置5100和表面法线位置5101的数目可以每个为256个或可以总计256个。

在操作8005中,特征生成方法8000还可以包括从物体信息9121中提取2D测量信息4304。2D测量信息4304可以表示更小的信息集(例如,与2D外观4302相比)以表示物体5015,以便节省存储器或其他资源,和/或提高生成物体识别模板集4301或执行假设验证和细化的速度。如上所述,来自物体识别模板集4301的物体识别模板4300可以包括描述物体5015的2D测量信息4304(和/或3D测量信息4305)。

2D测量信息4304可以包括从物体信息9121提取或生成的二维特征。在实施例中,提取或生成2D测量信息4304可以包括从物体信息9121提取梯度信息9100。因此,2D测量信息4304可以包括梯度特征图,该梯度特征图包括如本文所述的梯度信息9100。梯度信息9100指示数字表示的物体9200的边缘5110的方向或朝向。可以在数字表示的物体9200的多个梯度提取位置5100处提取梯度信息9100。梯度提取位置5100可以代表数字表示的物体9200内标识的任何或所有内部和外部边缘。

提取梯度信息9100可以包括分析物体信息9121的二维图像信息的像素强度以测量方向(例如,如箭头9150所表示),在该方向上,每个梯度提取位置处的二维图像的像素强度在称为梯度提取的过程中变化。像素强度的变化可以表示数字表示的物体9200的表面和边缘的轮廓和朝向,从而提供有助于比较两个数字表示的物体9200的信息。沿边缘5110彼此靠近的位置可能具有相似的梯度信息9100,例如,这样的相邻位置附近的像素强度随着与边缘5110的距离增加而以类似方式变化。在一些示例中,呈现高于平均像素强度的数字表示物体9200的部分可以指示边缘5110或其他可标识的特征。如上所述,在一些示例中,梯度提取位置5100可以沿着数字表示的物体9200的边缘5110布置。

在实施例中,提取的梯度信息9100可以用于改进模板匹配操作、假设生成或假设验证操作,这可以确定来自物体识别模板集4301的物体识别模板4300是否匹配场景中的物体5012。例如,如果2D外观4302具有与来自场景的数字表示的物体9200重叠或相交的某些部分,则至少一个处理电路1110可以确定匹配的部分是否也呈现匹配或类似梯度(例如,2D测量信息4304的部分是否匹配)。如果梯度不相似或不匹配,则至少一个处理电路1110可以确定不相似的某些部分是匹配不良的结果,或者是巧合的。不良匹配可能是2D外观4302与场景的一部分重叠了某些轻微量的结果。

例如,现在参考图9D,物体识别模板4300A的2D外观4302A由矩形表示并且物体识别模板4300A的2D测量信息4304A(例如,梯度信息9100)由箭头表示。场景中的物体5012(物理物体未示出)的2D图像信息2600B由L形固体表示。物体5012进一步由由箭头表示的2D测量信息4304B表示。2D外观4302A的一部分可以与表示场景中的物体5012(物理物体未示出)的2D图像信息2600B的图案化部分9309进行比较和重叠。然而,2D测量信息4304A和4304B所表示的梯度不匹配,并且可能由至少一个处理电路1110确定,因此,物体识别模板4300A与场景5013中的物体5012匹配不良。

在操作8007中,特征生成方法8000还可以包括从物体信息9121中提取或生成3D测量信息4305。现在参考图9C,操作8007可以包括在表面法线位置5101处确定表面法线向量9101。3D测量信息4305可以包括包括有提取或生成的表面法线向量9101的表面法线特征图。

提取的3D测量信息4305可以包括表面法线向量信息,例如描述表面法线向量9101的测量,其可以是在数字表示的物体9200的表面9122上找到的表面法线位置5101处得到的法线向量(垂直于表面的向量)。在实施例中,提取或生成3D测量信息4305包括从物体信息9121中提取或生成表面法线向量9101和/或表面法线向量信息。表面法线向量9101描述了垂直于数字表示的物体9200的表面(或多个表面)9122的多个向量。表面法线向量9101可以在数字表示的物体9200的多个表面法线位置5101处提取或生成。提取表面法线向量9101可以包括在表面法线向量位置5101中的相应位置处标识数字表示的物体9200的多个表面法线向量9101。

在操作8009中,特征生成方法8000可以包括生成物体识别模板集4301或多个物体识别模板4300。至少一个处理电路1110可以生成包括上面讨论的2D测量信息4304和3D测量信息4305的一个或多个物体识别模板4300。一个或多个物体识别模板4300可以形成物体识别模板集4301。如上所述,物体识别模板4300可以包括2D测量信息4304、3D测量信息4305、2D外观4302和3D外观4303中的一个或多个。因此,在一些实施例中,特征生成方法8000可以增加或进一步开发先前建立的物体识别模板4300和物体识别模板集4301。提取或生成的3D测量信息4305和2D测量信息4304可用于在实时或接近实时挑选操作期间标识场景中的物体5012,如下所述。特征生成方法8000可以与上述物体识别模板生成方法6000协同或在其之后随后工作或操作,以生成物体识别模板集4301,用于稍后针对场景(或场景内的物体)执行匹配(假设细化和验证)操作。特征生成方法8000可以用作朝向创建物体识别模板集4301的最后步骤,以在稍后的假设操作中使用(诸如下面进一步详细描述的方法11000和方法13000)。

图10A和10B示出了与本文的实施例一致的模板匹配和假设生成方法10000的方面。本文讨论的假设生成技术通常与lineMod技术一致。

在操作10001中,模板匹配和假设生成方法10000可以包括获取图像信息。在实施例中,获取图像信息12001可以包括捕获场景5013和场景内的一个或多个物体5012的图像。在这样的情况下,图像信息12001可以表示位于盒子、柜子、箱子、板条箱、托盘或其他容器中的物体5012。如本文所讨论的,图像信息12001可以由相机1200获取。

至少一个处理电路1110可以被配置为生成、接收和/或处理图像信息12001,诸如通过使用图像信息12001来在相机1200视场中的个体物体之间区分,以基于图像信息12001执行物体识别。在实施例中,图像信息12001可以包括二维图像信息(例如,类似于2D图像信息2600),其描述相机1200的视场中的环境或场景5013的视觉外观。在实施例中,图像信息12001可以包括提供点云的三维图像信息(例如,类似于3D图像信息2700)、空间结构信息、深度图或相机1200的视场中场景5013中的其他三维图像。此示例中的三维图像信息可用于估计物体5012在三维空间(例如场景5013)中如何被空间地布置。获取图像信息12001根据需要可以包括生成或获取表示场景5013的图像信息12001,并且可以包括生成或获取表示场景5013中的个体物体5012或多个物体5012的物体图像信息12002。在(一个或多个)物体5012处于(或已经处于)相机1200的视场中时,图像信息12001可以由相机1200生成,并且可以包括例如二维图像信息和/或三维图像信息。

在实施例中,图像信息12001可以包括二维灰度或彩色图像,并且可以描述从相机1200的视点的场景5013(和/或场景内的(一个或多个)物体5012)的外观。在实施例中,图像信息12001可以对应于彩色图像的单个颜色通道(例如,红色、绿色或蓝色通道)。如果相机1200被布置在物体5012上方,则二维图像信息可以表示物体5012的相应顶表面的外观。此外,图像信息12001可以包括三维图像信息,其可以包括例如,深度图或点云,其指示一个或多个表面(例如,顶表面或其他外表面)上或沿物体5012的一个或多个边缘的各种物体位置6220的相应深度值。物体图像信息12002的二维图像信息和三维图像信息可以分别被称为2D图像信息12600和3D图像信息12700。在一些实现中,表示物体5012的物理边缘的物体位置6220可用于标识限于表示个体物体5012的物体图像信息12002。

物体图像信息12002可以包括与场景5013内的具体物理物体5012相关的图像信息。物体图像信息12002可以包括表示物体5012的2D图像信息12600,类似于图像信息2600。物体图像信息12002可以包括表示物体5012的3D图像信息12700,类似于图像信息2700。物体图像信息12002可以包括物体位置6220,其可以进一步包括梯度提取位置8100和表面法线位置8101,表示相应梯度信息8102和表面法线向量8103在其处例如经由特征生成方法8000获取的位置。梯度提取位置8100、表面法线位置8101、梯度信息8102和表面法线向量8103可以类似于上述梯度提取位置5100、表面法线位置5101、梯度信息9100和表面法线向量9101,除了梯度提取位置8100、表面法线向量8101、梯度信息8102和表面法线向量8103从获取的物理物体的图像信息中获取。

下面讨论的模板匹配和假设生成操作可以通过将物体识别模板与图像信息12001和/或物体图像信息12002进行比较来执行。在实施例中,物体图像信息12002可以例如从图像信息12001生成,例如基于图像分割或其他技术以及特征生成方法8000,如上所述。

在操作10003中,模板匹配和假设生成方法10000可以包括将模板与物体图像信息匹配。可以知道场景5013中存在的物体5012的类型(无论是单个类型还是多个类型)。因此,对应于已知物体类型的物体识别模板集4301可以例如经由本文所述的任何方法来获取。物体识别模板集4301的每个物体识别模板4300的信息(其表示关于物体5012在各种姿势中应该看起来如何的信息)可以与表示物体5012的物体图像信息12002进行比较,以确定每个物体识别模板4300是否是匹配的候选。然后,匹配的良好候选可以被选择用于检测假设的生成。

物体识别模板4300的任何相关信息可以与物体图像信息12002的对应信息进行比较。例如,物体图像信息12002的梯度信息8102和梯度提取位置8100可以与物体识别模板4300的梯度信息9100和梯度提取位置5100进行比较。物体图像信息12002的表面法线向量8103和表面法线位置8101可以与物体识别模板4300的表面法线向量9101和表面法线位置5101进行比较。2D信息12600和3D信息12700可以分别与2D外观4302和3D外观4303进行比较。

来自物体识别模板4300和来自物体图像信息12002的上述信息可以被理解为图,因为该信息可以归因于一系列二维位置。模板图(表示任何物体识别模板4300信息)可以针对物体图(表示任何物体图像信息12002)横向滑动,直到超过阈值的匹配被找到。模板匹配可以涉及比较相应梯度信息、相应2D图像信息、相应3D信息和/或相应表面法线向量信息。

可以使用阈值并且可以允许公差来考虑物体识别模板4300和物体图像信息12002之间的姿势中的潜在变化。上述空间子采样过程不可能捕获物体识别模板4300中的每个可能的姿势,因此可以理解并考虑到一些变化是可以接受的。这样的公差技术可以包括例如延伸(spreading),由此梯度信息9100在物体识别模板4300中的相邻梯度提取位置5100之间延伸以增加匹配的机会。另一种公差技术可以包括基于匹配的阈值水平来寻找匹配,例如,当梯度信息或表面法线向量彼此接近但不完美匹配时。模板匹配可以生成模板匹配分数以指示匹配的质量。

在操作10005中,模板匹配和假设生成方法10000可以包括对匹配模板进行聚类和分组以减少匹配的总数。模板匹配操作可以找到与由物体图像信息12002表示的物体相匹配的多个物体识别模板4300。在一些实现中,模板匹配操作可能受到时间或计算资源的限制,就多少匹配可被标识而言。在这样的情况下,操作10005可以避免将匹配集中在场景5013中的单个部分或一组部分上。因此,具有良好质量匹配(例如,超过阈值)的相匹配的模板可以被聚类、分组和过滤以保持良好的场景覆盖。被标识为对应于相同物体图像信息12002的物体识别模板4300可以被聚类或分组。在每个聚类或组中,可以选择最佳匹配并消除剩余匹配。因此,剩余的匹配可以贯穿场景5013表示物体5012,而不是在单个区域中聚类。在示例中,如果场景5013中的物体5012在容器顶部附近并且很容易可识别,则它可能比被部分遮挡的物体生成更多匹配。通过只为每个物体图像信息12002选择最佳匹配,更多物体可被标识。

在操作10007中,模板匹配和假设生成方法10000可以包括生成一个或多个检测假设集。聚类和分组之后剩余的物体识别模板4300可以被选择作为检测假设。这些物体识别模板4300可以与姿势信息6301一起存储,该姿势信息6301指示关于场景5013中每个物体识别模板4300应该位于何处以匹配对应物体图像信息的信息。姿势信息6301还可以包括将每个物体识别模板4300与对应物体图像信息12002相关联的信息。检测假设6300可以组合成组和/或集合。例如,检测假设集8309可以包括与表示单个物体5012的物体图像信息12002有关的多个检测假设8300,而一组检测假设8300可以包括与表示场景5013内的多个不同物体5012的物体图像信息12002有关的多个检测假设8300。

图11描绘了用于细化检测假设的示例假设细化方法11000的流程图。在实施例中,假设细化方法11000可以由例如图2A-2D的计算系统1100(或1100A/1100B/1100C)或图3A-3B的计算系统1100,或更具体地由计算系统1100的至少一个处理电路1110执行。在某些场景下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行假设细化方法11000。例如,指令可以使计算系统1100执行图2D中所示的模块中的一个或多个,其可以执行方法11000。例如,在实施例中,方法11000的步骤可以由结合操作的假设生成模块1128和假设细化模块1136执行。

假设细化方法11000可用于细化所生成的一个或多个检测假设6300(例如,如上文所讨论的),以标识物理上位于场景5013内的物体5012。假设细化方法11000可对获取的场景5013的图像信息12001进行操作。图像信息12001可以类似于2D图像信息2600和3D图像信息2700。在图像信息12001内可以是表示场景5013内的物体5012的一个或多个物体图像信息12002。标识物体5012可以包括从对应的物体图像信息12002标识物体类型或标识物体维度,和/或可以包括将物体图像信息12002与物体识别模板4300匹配。因此,检测假设6300可以是关于一个或多个物体识别模板4300中的哪一个可以匹配表示场景5013的图像信息12001中的物体图像信息12002的假设。物体图像信息12002可以包括表示物体5012的2D图像信息12600。2D图像信息12600可以类似于图像信息2600,和/或可以包括根据诸如射线跟踪和不连续性检测之类的渲染技术生成的渲染的2D图像信息。物体图像信息12002可以包括与图像信息2700类似的表示物体5012的3D图像信息12700。检测假设6300可以根据模板匹配过程生成,如上所述。例如,在实施例中,检测假设6300可以经由lineMod算法和/或如上所述的过程来生成。假设细化方法11000可以操作以细化物体识别模板4300与物体图像信息12002的匹配,即使在物体识别模板4300与物体图像信息12002不确切匹配的情况下。

在假设细化方法11000中,至少一个处理电路1110可以与机器人3300通信,该机器人具有机械臂3320和与该机械臂连接的末端执行器3330,以及具有视场的相机1200,并且当一个或多个物体5012处于或已经处于视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令。在实施例中,至少一个处理电路1110可以不与机器人3300直接通信,但可以经由网络和/或经由存储设备接收信息并向机器人3300发送信息。在实施例中,至少一个处理电路1110可以与机器人3300直接通信。至少一个处理电路1110可以获取场景5013中的一个或多个物体5012的图像信息12001。至少一个处理电路1110还可以获取检测假设6300。检测假设6300可以包括将物体图像信息12002与物体识别模板4300(例如,从多个物体识别模板4300中选择的对应物体识别模板4300B)相关联的信息,并且可以包括由物体图像信息12002表示的物体5012的姿势信息6301。物体5012的姿势信息6301可以指物体5012的位置和朝向。在实施例中,检测假设6300可以包括或可以包括对对应物体识别模板4300B的参考。至少一个处理电路1110可以操作以标识对应物体识别模板4300B和其与之对应的物体图像信息12002之间的差异。至少一个处理电路1110可以操作以标识对应物体识别模板4300B中的模板位置集6210,该模板位置集6210对应于物体图像信息12002中的物体位置集6220。至少一个处理电路1110可以进一步操作以调整模板位置集6210以收敛到物体位置集6220。至少一个处理电路1110可以操作以根据调整之后的模板位置集6210来生成包括调整后的物体识别模板的调整后的检测假设6300'或多个迭代调整后的检测假设6300'。

至少一个处理电路1110可以执行假设细化方法11000的具体步骤以细化检测假设6300。在操作11001中,假设细化方法11000可以包括获取场景5013中一个或多个物体5012的图像信息12001。在实施例中,获取图像信息12001可以包括捕获场景5013的图像。在这样的情况下,图像信息12001可以表示位于盒子、柜子、箱子、板条箱、托盘或其他容器中的物体5012。如本文所讨论的,图像信息12001可以由相机1200获取。

至少一个处理电路1110可以被配置为生成、接收和/或处理图像信息12001,诸如通过使用图像信息12001来在相机1200视场中的个体物体之间区分,以基于图像信息12001执行物体识别或物体注册。在实施例中,图像信息12001可以包括二维图像信息(例如,类似于2D图像信息2600),其描述相机1200的视场中的环境或场景5013的视觉外观。在实施例中,图像信息12001可以包括提供点云的三维图像信息(例如,类似于3D图像信息2700)、空间结构信息、深度图或相机1200的视场中的场景5013的其他三维图像。此示例中的三维图像信息可用于估计物体5012在三维空间(例如场景5013)中如何被空间地布置。关于操作11001,获取图像信息12001根据需要可以包括生成或获取表示场景5013的图像信息12001,并且可以包括生成或获取表示场景5013中的个体物体5012或多个物体5012的一个或多个物体图像信息12002。在(一个或多个)物体5012处于(或已经处于)相机1200的视场中时,图像信息12001可以由相机1200生成,并且可以包括例如二维图像信息和/或三维图像信息。

在实施例中,图像信息12001可以包括二维灰度或彩色图像,并且可以描述从相机1200的视点的场景5013(和/或场景内的(一个或多个)物体5012)的外观。在实施例中,图像信息12001可以对应于彩色图像的单个颜色通道(例如,红色、绿色或蓝色通道)。如果相机1200被布置在物体5012上方,则二维图像信息可以表示物体5012的相应顶表面的外观。

物体图像信息12002可以包括与场景5013内的具体物理物体5012相关的图像信息。物体图像信息12002可以包括表示物体5012的2D图像信息12600,类似于图像信息2600。物体图像信息12002可以包括表示物体5012的3D图像信息12700,类似于图像信息2700。物体图像信息12002可以包括物体位置6220,其可以进一步包括梯度提取位置8100和表面法线位置8101,表示梯度信息8102和表面法线向量8103在其处例如经由特征生成方法8000获取的位置。梯度提取位置8100、表面法线位置8101、梯度信息8102和表面法线向量8103可以类似于上述梯度提取位置5100、表面法线位置5101、梯度信息9100和表面法线向量9101,除了梯度提取位置8100、表面法线位置8101、梯度信息8102和表面法线向量8103从获取的物理物体的图像信息中获取。

在操作11003中,假设细化方法11000还可以包括获取检测假设6300。检测假设6300可以包括多条信息。例如,检测假设6300可以包括对应物体识别模板4300B和物体姿势信息6301,该物体姿势信息6301指示覆盖图像信息12001内的对应物体图像信息12002所必需的对应物体识别模板4300B的位置和朝向。对应物体识别模板4300B可以包括2D外观4302B、3D外观4303B、2D测量信息4304B和3D测量信息4305B中的一个或多个。如上所述,2D测量信息4304B可以包括梯度信息9100B和梯度提取位置5100B,而3D测量信息4305B可以包括表面法线向量9101B和表面法线位置5101B。对应物体识别模板4300B还可以包括模板位置6210,该模板位置6210可以包括梯度提取位置5100B和表面法线位置5101B或其子集。

在操作11005中,假设细化方法11000还可以包括标识对应物体识别模板4300B和根据检测假设6300已与之模板匹配的物体图像信息12002之间的差异。对应物体识别模板4300B的二维信息(例如,2D外观4302B)可以与物体图像信息12002进行比较以标识差异。差异可以根据2D外观4302B和物体图像信息12002之间的非对齐或其他不匹配的区域来标识或量化。

在标识出对应物体识别模板4300B之间的差异或不匹配时,可以将对应物体识别模板4300B的二维信息(例如,2D外观4302B)从二维空间变换到三维空间以进行比较并且与物体图像信息12002对齐。在某些情况下,3D外观4303B或2D外观4302B的3D变换可用于与物体图像信息12002进行比较以标识差异。在一些实施例中,差异可以根据物体位置6220和模板位置6210之间的不匹配来标识或量化。物体位置6220表示物体5012的数字表示(例如,物体图像信息12002)上的点,而模板位置6210表示模板物体6290上的点(如下所述)。

从二维空间到三维空间的变换可以基于相机1200或其他图像传感器的校准参数或其他参数,这些参数可能已经在相机校准操作期间确定,或者可能已经被预定义。如上所述,对应物体识别模板4300B是从物体注册数据5001导出的并且可以具有与其相关联的坐标系。在到三维空间的变换中,对应物体识别模板4300B的坐标系可以映射到场景5013的坐标系,如在图像信息12001中捕获的。因此,捕获了图像信息12001的相机1200的校准参数或其他参数可用于变换。检测假设6300的信息可以定义物体的数字表示,其在本文中被称为模板物体6290。三维变换可以被称为模板物体6290并且可以表示图像信息12001的坐标系中的三维空间中的检测假设6300的信息,以与物体图像信息12002进行比较。

在操作11007中,假设细化方法11000还可以包括标识与对应物体上的物体位置集相对应的对应物体模板中的模板位置集。物体位置6220表示物体5012的数字表示(例如,物体图像信息12002)上的点,而模板位置6210表示模板物体6290上的点。因此,将物体位置6220与模板位置6210对齐可以用于细化检测假设6300。

如上所述,模板位置6210可以对应于梯度提取位置5100B和表面法线位置5101B或其子集。在进一步的实施例中,模板位置6210可以包括附加的或不同的位置,以用于与物体图像信息12002的物体位置6220对齐。

可以根据对假设细化具有高影响的位置(例如,物体图像信息12002和模板物体6290之间的对齐)来选择模板位置6210(和对应物体位置6220)。在某些情况下,模板位置6210和物体位置6220可以被选择为围绕相应模板物体6290和物体图像信息12002的边缘的位置。这样的位置对于执行假设细化可能更有价值,因为它们可能更少易受噪声影响,并且可以提供物体形状的轮廓。

在操作11009中,假设细化方法11000可以进一步包括调整模板位置集6210以收敛到物体位置集6220。至少一个处理电路1110可以进一步被配置为调整模板位置集6210。如果差异被标识出,则至少一个处理电路1110可以做出调整以改进模板物体6290的模板位置6210与物体图像信息12002的对应物体位置6220之间的对齐值。

对齐过程可以使用迭代最近点(ICP)技术来执行,如图12B和12C所示。ICP技术可以包括调整模板位置6210以收敛到物体位置集6220。可以确定模板位置6210和它们对应的物体位置6220之间的向量集6215。每个向量6215可以表示方向和量值。在实施例中,向量的方向和量值可以用于调整模板位置6210以收敛到物体位置6220。从模板位置6210延伸到物体位置6220的向量6215具有方向和量值。如果向量6215的集合在数学上被理解为具有向量的方向和量值并且在模板位置6210处对模板物体6290进行操作的力,则模板物体6290可以根据在其相应的模板位置6210处应用或作用的向量6215的方向和量值来调整或移动。因此,具有更大量值表示更远(例如,具有更大的增量或偏移)的模板位置6210和物体位置6220的向量6215,可被理解为将更大的“力”应用到模板调整中。例如,参考图12B,模板物体6290可以覆盖物体图像信息12002。向量6215在模板位置6210和物体位置6220之间延伸。如果基于向量6215的方向和量值将向量6215作为“力”共同应用到模板物体6290,则模板物体6290(如图12B所示)将倾向于顺时针旋转,使其与物体图像信息12002更接近对齐。在应用向量6215之后,新的向量集6215可以以迭代的方式生成和应用。在另一个示例中,如图12C所示,应用向量6215可以导致模板物体6290的平移,以使其与物体图像信息12002对齐。在一些实施例中,通过向量6215的迭代生成和应用,模板物体6290将移动到与物体图像信息12002更好的对齐,直到剩余的向量6215相互抵消并且没有进一步的移动可以生成。当没有进一步的移动可以生成时,对齐质量可被评估。在一些实施例中,可以执行迭代调整直到对齐质量超过阈值。

对齐的质量(或未对齐的水平)可以以多种不同的方式来评估或确定。例如,对齐的质量可以根据由向量6215的方向和量值定义的未对齐的水平来评估或确定。对齐的质量也可以根据新的、更新的或调整后的模板位置集6210和物体位置集6220之间的距离测量来评估或确定。对齐的质量也可以根据收敛的速度来评估或确定。在实施例中,可以使用这些对齐测量的质量的任何组合。

对齐的质量可以基于由新的或更新的相应向量6215的方向和量值定义的未对齐的水平来确定。如上所述,向量6215可以在数学上被解释为根据它们的方向和量值作用在模板物体6290上的力。当静止并受力时,物体将经受应力。在实施例中,未对齐的水平可以根据在数学上将向量6215视为在模板物体6290中生成内应力的力来计算。因此,例如,相等和相反的向量6215将不相互抵消(如向量6215被简单地相加在一起那样),而是将在模板物体6290中生成“应力”。在对齐质量的水平良好(并且未对齐的水平低)的情况下,向量6215在量值上将相对小,从而对应于低内应力。在对齐质量不良(并且未对齐的水平高)的情况下,向量6215将大,从而对应于更显著的内应力。此内应力的计算可以被认为是对齐质量的指示。

在实施例中,对齐的质量可以基于新的或更新的模板位置集6210和物体位置集6220之间的距离测量来确定。距离测量可以是欧几里得距离测量,或者是欧几里得空间中的两个点之间的线段的长度。欧几里得距离(或毕达哥拉斯距离)可以经由以下公式表示:

其中:

d=距离;

p=第一点,具有3D坐标p

q=第二点,具有3D坐标q

经由上述等式生成的距离测量将输出距离值(通常大于或等于零),其中更接近于零的输出值表示点p、q之间更近的距离(零表示没有距离,或相等/重叠的点)。新的或更新的模板位置集6210和物体位置集6220中的每个之间的距离测量可以组合,例如,通过取算术平均或几何平均。然后可以将组合距离值与预定阈值进行比较,其中等于或低于预定阈值(即在零和预定阈值之间)的距离值指示良好匹配(即在模板物体6290和物体图像信息12002之间)以及大于预定阈值的距离输出值指示不良匹配。

在实施例中,距离测量可以是与新的模板位置集6210相关联的表面法线向量(即模板向量6260)和与物体位置集6220相关联的表面法线向量(即物体向量6270)之间的余弦距离。模板向量6260可以包括与对应的物体识别模板4300B相关联的一些或所有先前确定的表面法线向量9101。物体向量6270可以包括与物体图像信息12002相关联的表面法线向量8101。测量的余弦距离可以指示表面法线向量(例如模板向量6260和物体向量6270)之间的角度,其中指示的角的度数与表面法线向量(例如模板向量6260和物体向量6270)之间的对齐的程度或质量直接相关。余弦距离可以由以下公式表示:

余弦距离=1–余弦相似度;

其中余弦相似度经由以下公式表示:

其中x

或者在替代方案中:

由上述等式生成的距离测量输出指示两个表面法线向量之间的距离的值(即作为余弦距离)。此输出值还可以指示模板向量6260和物体向量6270之间的角度,或者更具体地,模板物体6290的平面部分和物体图像信息12002的平面部分之间的角度。平面部分是指表面法线向量从其延伸并与之平行的表面。提供小角度的输出可以指示模板物体6290的平面部分和物体部分12002的平面部分之间的良好匹配(即良好的收敛或对齐)。模板向量6260和物体向量6270的每个对应对之间的余弦距离可以被组合以产生距离测量,例如通过取算术或几何平均。

在另一个实施例中,距离测量可以是平面距离测量,从模板位置6210之一到包含来自物体位置6220的对应点的平面测量的,反之亦然。模板向量6260和物体向量6270的每个对应对之间的平面距离可被组合以产生距离测量,例如通过取算术或几何平均。

模板物体6290和物体图像信息12002之间的对齐的质量可以进一步根据指示在ICP技术的连续迭代中距离减小的曲线图(profile)来确定。如上所述,ICP技术可用于通过使模板位置6210与物体位置6210收敛来对齐模板物体6290和物体图像信息12002。在连续迭代期间,可以得到模板物体6290和物体图像信息12002之间的距离测量(例如,余弦距离、欧几里得距离、平面距离等)。曲线图可以指示这样的距离在连续迭代中的变化。

例如,指示在ICP的连续迭代中距离持续减小的曲线图可以指示就模板物体6290和物体图像信息12002之间的收敛而言的高质量对齐。相反,如果曲线图显示存在ICP的连续迭代,其中距离增加,或者以其他方式指示距离在连续迭代中没有非常快地减小,则曲线图可以指示模板物体6290和物体图像信息12002没有展现出高质量收敛并且模板物体6290和物体图像信息12002之间的最终对齐可能是低质量的。

在操作11011中,假设细化方法11000可以包括生成调整后的检测假设。调整后的检测假设6300'可以根据对模板位置6210所做的调整来生成,如上所述。调整可以表示存储在检测假设6300中的各种信息的调整后的版本。例如,调整后的检测假设6300'可以包括将物体图像信息12002与调整后的对应物体识别模板4300B'相关联的信息,并且可以包括调整后的姿势信息6301'。调整后的对应物体识别模板4300B'可以包括调整后的2D外观4302B'、调整后的3D外观4303B'、调整后的2D测量信息4304B'和调整后的3D测量信息4305B'中的一个或多个。调整后的2D测量信息4304B'可以包括调整后的梯度信息9100B'和调整后的梯度提取位置5100B',而调整后的3D测量信息4305B'可以包括调整后的表面法线向量9101B'和调整后的表面法线位置5101B'。调整后的物体识别模板4300B'还可以包括调整后的模板位置6210',其可以包括调整后的梯度提取位置5100B'和调整后的表面法线位置5101B'或其子集。不要求调整后的检测假设6300'中包含的信息的所有“调整后”版本都不同于检测假设6300中的对应信息。例如,在实施例中,位置可被调整,而与位置相关联的信息(梯度和表面法线)可保持不变。在实施例中,调整后的信息可以通过存储关于调整的信息连同存储原始检测假设6300来捕获。

本公开进一步涉及检测假设验证。图13描绘了用于验证检测假设的示例检测假设验证方法13000的流程图。以下对检测假设验证的描述参考图14。检测假设验证方法13000可以对一个或多个先前获取的检测假设进行操作,以将具体检测假设验证为对应于场景中具体检测到的物理物体。如上所述,通过模板匹配和检测假设生成和细化,多个检测假设可被提出为关于或描述场景内的具体物理物体。检测假设验证方法13000可以接收具体物理物体的物体图像信息以及与其相关的检测假设集并且验证多个检测假设以确定最优或最佳拟合检测假设。该检测假设集可以是初始检测假设(诸如检测假设6300)和/或可以是调整后的检测假设(诸如调整后的检测假设6300')或者可以是其组合。至少一个处理电路1110可以执行检测假设验证方法13000的具体步骤以验证检测假设8300,如下所述。

在实施例中,检测假设验证方法13000可以由例如图2A-2D的计算系统1100(或1100A/1100B/1100C)或图3A-3B的计算系统1100,或更具体地由计算系统1100的至少一个处理电路1110执行。在某些场景下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行检测假设验证方法13000。例如,指令可以使计算系统1100执行图2D中所示的模块中的一个或多个,其可以执行检测假设验证方法13000。例如,在实施例中,方法13000的步骤可以由结合操作的假设生成模块1128、假设细化模块1136和假设验证模块1138执行。

检测假设验证方法13000可以用于验证检测假设集8309的一个或多个检测假设8300,该检测假设集8309被生成以标识物理上位于场景5013内的一个或多个物体5012。检测假设验证方法13000可对获取的场景5013的图像信息12001进行操作。图像信息12001可以类似于2D图像信息2600和3D图像信息2700。在图像信息12001内可以是表示场景5013内的物体5012的一个或多个物体图像信息12002。

在以下讨论中,根据对关于要被标识的单个物体5012的检测假设集8309的使用,来讨论检测假设验证方法13000。如下所述,检测假设验证方法13000操作以标识对应于单个物体5012的最佳检测假设8300。在其他实施例中,检测假设集8309可以包括关于场景5013中多于单个物体5012的检测假设8300。每个个体物体5012可以具有来自检测假设集8309的对应组检测假设8300,其可以根据关于对应个体物体5012描述的方法来验证。这样,检测假设验证方法13000可以用于验证和标识单个物体5012的最佳检测假设8300,或标识多个最佳检测假设8300,每个对应于不同的个体物体5012。通过验证多个检测假设8300,涉及连续挑选多个物体5012的复杂挑选操作可被规划和执行。

在检测假设验证方法13000中,至少一个处理电路1110可以与机器人3300通信,该机器人具有机械臂3320和与该机械臂连接的末端执行器3330,以及具有视场的相机1200,并且当一个或多个物体5012处于或已经处于视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令。在实施例中,至少一个处理电路1110可以不与(from with)机器人3300直接通信,但可以经由网络和/或经由存储设备接收信息并向机器人3300发送信息。在实施例中,至少一个处理电路1110可以与机器人3300直接通信。至少一个处理电路1110可以获取场景5013中的一个或多个物体5012的图像信息12001。至少一个处理电路1110还可以获取一个或多个检测假设8300和/或检测假设集8309。

每个检测假设8300可以包括将物体图像信息12002与物体识别模板4300(例如,从多个物体识别模板4300中选择的对应物体识别模板4300C)相关联的信息,并且可以包括由物体图像信息12002表示的物体5012的姿势信息6301。物体5012的姿势信息6301可以指物体5012的位置和朝向。在实施例中,检测假设8300可以包括或可以包括对对应物体识别模板4300C的参考。

在操作13001中,检测假设验证方法13000包括获取场景中的一个或多个物体的图像信息。操作13001可以类似于上面讨论的操作11001。获取图像信息12001可以包括捕获场景5013的图像。在这样的情况下,图像信息12001可以表示位于盒子、柜子、箱子、板条箱、托盘或其他容器中的物体5012。如本文所讨论的,图像信息12001可以由相机1200获取。至少一个处理电路1110可以被配置为生成、接收和/或处理图像信息12001,诸如通过使用图像信息12001来在相机1200视场中的个体物体之间区分,以基于图像信息12001执行物体识别或物体注册。在实施例中,图像信息12001可以包括二维图像信息(例如,类似于2D图像信息2600),其描述相机1200的视场中的环境或场景5013的视觉外观。在实施例中,图像信息12001可以包括提供点云的三维图像信息(例如,类似于3D图像信息2700)、空间结构信息、深度图或相机1200的视场中的场景5013的其他三维图像。此示例中的三维图像信息可用于估计物体5012在三维空间(例如场景5013)中如何被空间地布置。获取图像信息12001根据需要可以包括生成或获取表示场景5013的图像信息12001,并且可以包括生成或获取表示场景5013中的个体物体5012或多个物体5012的一个或多个物体图像信息12002。物体图像信息12002可以包括表示物体5012的2D图像信息12600。2D图像信息12600可以类似于图像信息2600和/或可以包括根据诸如射线跟踪和不连续性检测之类的渲染技术生成的渲染后的2D图像信息。物体图像信息12002可以包括与图像信息2700类似的表示物体5012的3D图像信息12700。在(一个或多个)物体5012处于(或已经处于)相机1200的视场中时,图像信息12001可以由相机1200生成,并且可以包括例如二维图像信息和/或三维图像信息。

物体图像信息12002可以包括与场景5013内的具体物理物体5012相关的图像信息。物体图像信息12002可以包括表示物体5012的2D图像信息12600,类似于图像信息2600。物体图像信息12002可以包括表示物体5012的3D图像信息12700,类似于图像信息2700。物体图像信息12002可以包括物体位置6220,其可以进一步包括梯度提取位置8100和表面法线位置8101,表示相应梯度信息8102和表面法线向量8103在其处例如经由特征生成方法8000获取的位置。梯度提取位置8100、表面法线位置8101、梯度信息8102和表面法线向量8103可以类似于上述梯度提取位置5100、表面法线位置5101、梯度信息9100和表面法线向量9101,除了梯度提取位置8100、表面法线位置8101、梯度信息8102和表面法线向量8103从获取的物理物体的图像信息中获取。

图像信息12001可以是在假设细化方法11000的执行期间获取的相同图像信息12001。因此,计算系统1100可以获取用于执行假设细化方法11000的图像信息12001,存储图像信息12001,并访问用于执行检测假设验证方法13000的图像信息12001。在实施例中,可以新获取具体用于执行检测假设验证方法13000的图像信息12001。

如上所述,图像信息12001可以包括二维灰度或彩色图像,并且可以描述从相机1200的视点的场景5013(和/或场景内的(一个或多个)物体5012)的外观。在实施例中,图像信息12001可以对应于彩色图像的单个颜色通道(例如,红色、绿色或蓝色通道)。如果相机1200被布置在物体5012上方,则二维图像信息可以表示物体5012的相应顶表面的外观。此外,图像信息12001可以包括三维图像信息,其可以包括例如,深度图或点云,其指示一个或多个表面(例如,顶表面或其他外表面)上或沿物体5012的一个或多个边缘的各种物体位置6220的相应深度值。物体图像信息12002的二维图像信息和三维图像信息可以分别被称为2D图像信息12600和3D图像信息12700。在一些实现中,表示物体5012的物理边缘的物体位置6220可用于标识限于表示个体物体5012的物体图像信息12002。

在操作13003中,检测假设验证方法13000可以进一步包括获取一个或多个检测假设8300和/或检测假设集8309。为了便于解释,具体检测假设8300的所描述的属性和质量可以被理解为适用于检测假设集8309的检测假设8300中的每一个,除非另有说明。检测假设8300可以在假设细化方法11000的执行之后作为调整后的检测假设6300'而被获取。检测假设8300可以被从模板匹配操作中作为初始检测假设8300获取,如上所述。

检测假设8300可以包括对应物体识别模板4300C和物体姿势信息8301,该物体姿势信息8301指示覆盖图像信息12001内的对应物体图像信息12002所必需的对应物体识别模板4300C的位置和朝向。对应物体识别模板4300C可以包括2D外观4302C、3D外观4303C、2D测量信息4304C和3D测量信息4305C中的一个或多个。如上所述,2D测量信息4304C可以包括梯度信息9100C和梯度提取位置5100C,而3D测量信息4305C可以包括表面法线向量9101C和表面法线位置5101C。对应的物体识别模板4300C还可以包括模板位置8210,该模板位置8210可以包括梯度提取位置5100B和表面法线位置5101B或其子集。检测假设8300的信息可以定义物体的数字表示,其在本文中被称为模板物体8290。模板物体8290表示图像信息12001的坐标系中的三维空间中的检测假设6300的信息,用于与物体图像信息12002进行比较。

可以选择或确定检测假设集8309,特别是集合的大小,以平衡速度和彻底性(thoroughness)。更大数量的检测假设8300的选择可能导致更高的机会来实现良好匹配,但也可能需要更长时间来处理。如上面关于假设细化方法11000所讨论的,对齐的质量可以在与细化相关的步骤期间被测量或确定。超过质量阈值可以是导致假设细化方法11000被确定为完成的标记。类似地,超过质量阈值可以被认为是允许在检测假设集8309内包含调整后的检测假设6300'的标记。未能超过质量阈值可能导致排除调整后的检测假设6300'。因此,检测假设集8309的大小可以由质量阈值的严格程度来驱动。在一些实施例中,检测假设集8309的大小可能有限,并且仅最高质量对齐调整后的检测假设6300'被包括。在实施例中,可以使用质量阈值和经排序的顺序两者。在实施例中,使用生成大的假设检测集8309(例如,超过500、1000或10,000个总检测假设)的模板匹配和假设细化技术可能是有益的,并且理解将生成许多误报(false positives)。这样的实施例可以依赖检测假设验证方法13000来过滤误报,如下所述。

在操作13005中,检测假设验证方法13000包括验证检测假设集中的每个检测假设。获取多个检测假设8300并将其与图像信息12001的物体图像信息12002进行比较以标识哪个检测假设8300是最佳估计或最适合描述由物体图像信息12002表示的物理物体5012。从检测假设集8309选择最佳检测假设涉及根据操作13007-13011验证检测假设中的每一个,如下所述。假设验证可以包括生成三维和二维验证分数并根据这些来过滤检测假设集8309。

在操作13007中,操作13005包括生成多个三维验证分数。每个三维验证分数可以基于比较检测假设8300的三维信息和对应于来自场景的物体的图像信息(例如,物体图像信息12002)的对应三维信息。多个三维验证分数可以遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个。检测假设8300的三维信息可以包括3D外观4303C和包括表面法线向量9101C和表面法线位置5101C的3D测量信息4305C。物体图像信息12002的三维信息可以包括3D图像信息12700、表面法线位置8101和表面法线向量8103。

如本文所讨论的,验证器分数可以是标识特定检测假设与物体图像信息12002有多对应或对齐的分数或数字。验证器分数可以是应用于假设置信度分数的惩罚分数,其中较低的值表示更好的拟合,如本文所述。替代地,验证器分数可以是奖励分数,其中较高的值表示更好的拟合。为了便于解释,本文讨论的验证器分数可以是惩罚分数,但可以理解,所有相同的概念和技术都可以使用奖励分数来应用。

遮挡验证器分数和点云验证器分数每个可以通过将物体图像信息12002的物体位置6220与由检测假设8300表示的模板物体8290的表面进行比较并标识物体位置6220和模板物体8290的表面之间的不一致以获得遮挡验证器分数和点云验证器分数来获取。检测假设的三维信息可以指示模板物体8290的表面的位置。如果检测假设8300中的三维信息确实表示场景5013中的物体5012,则与3D图像信息12700相关联的物体位置6220应该落在表面上或靠近表面。如果它们不落在靠近表面,则由模板匹配操作确定的匹配可能是误报。将物体位置6220与模板物体8290的表面进行比较可以标识有效点和两种类型的不一致:遮挡和无效点。将物体位置6220放置在模板物体8290的表面之上或以其他方式之外的不一致,可以被称为遮挡,并且被用于计算遮挡验证器分数。将物体位置6220放置在模板物体8290的表面之下的不一致,可以被称为无效点,并且被用于计算点云验证器分数。落在模板物体8290的表面上或附近(在阈值距离内,也被称为趋肤深度参数)的物体位置6220可以被称为有效点。物体位置6220和模板物体8290的表面之间的一定量的偏差是可以预期的。这样的偏差可以通过趋肤深度参数来考虑,该参数的大小决定了容许的偏差的量。

通过标识将物体位置6220放置在模板物体8290的表面之上或之外的不一致,来获取遮挡验证器分数。这些不一致被称为遮挡。遮挡验证器分数导致对假设置信度分数的加权惩罚,其中权重取决于物体位置6220与模板物体6290表面的距离。遮挡验证器分数可以作为与模板物体6290的表面的距离的函数来计算。函数可以是,例如,对数正态函数,其中对数正态函数的曲线的峰表示与模板物体8290的表面附近的但不太可能是模板物体8290的一部分的3D点重合的表面的距离。在实施例中,可以在刚好超过捕获图像信息12001的传感器或相机在其处失去准确度的点的距离处选择具有峰的函数。例如,具有超过模板物体6290的表面的非常大距离的物体位置6220可能具有对其应用的较低惩罚,因为这样的物体位置6220可能从来自场景5013的匹配部分和相机1200之间的另一个物体5012的遮挡或图像信息12001中的噪声、而不是由物体图像信息12002所表示的物体5012上的实际点导致。因此,对于特定物体位置6220的遮挡验证器分数的惩罚可能最初随着距离增加,降低了检测假设的置信度。在距离增加超过峰值之后,特定物体位置6220不是通过由物体图像信息12002表示的物体5012来生成变得越来越可能,并且惩罚降低。

在实施例中,可以为遮挡验证器分数确定遮挡置信度分数。遮挡置信度分数表示遮挡验证器分数提供可以关于其做出决策的良好信息的置信度水平。物体位置6220可以表示关于其存在它们属于物体的置信度的点或位置。然而,物体图像信息12002可以包含未被确信地标识为属于物体5012的附加点。遮挡置信度分数可以基于物体位置6220与物体图像信息12002中可见点的总数的比率。因此,在关于其存在它们属于物体的置信度的物体位置6220是总可见点的较低百分比的情况下,基于物体位置6220的遮挡验证器分数提供准确信息的置信度降低并且相关联的遮挡置信度分数同样降低。在一些实施例中,最终遮挡验证器分数可以由根据遮挡置信度分数修改的初始遮挡验证器分数来表示。

通过识别将物体位置6220放置在模板物体8290表面内部或下方的不一致,来获取点云验证器分数。这些不一致被称为无效点。点云验证器分数导致对假设置信度分数的惩罚。被标识为无效点的物体位置6220,例如在模板物体8290的表面之下,可以是检测假设8300不正确的强烈指示并且可以导致对应的高惩罚分数。在实施例中,点云验证器分数可以基于无效点的数量或基于无效点与无效点截止值的比率。

点云验证器分数可以具有以与上面关于遮挡置信度分数讨论的相同的方式确定的点云置信度分数,例如,根据物体位置6220与物体图像信息12002中可见点的总数的比率。在实施例中,最终点云验证器分数可以由根据点云置信度分数修改的点云验证器分数来表示。

在实施例中,点云验证器分数和遮挡验证器分数可以组合成单个表面验证器分数。表面验证器分数可以被确定为点云验证器分数和遮挡验证器分数的组合,例如,通过相加、平均或执行另一个数学运算来组合两者。

法线向量验证器分数可以通过确定根据模板物体6290的表面上或表面附近的物体位置6220而标识的有效点是否具有与模板物体6290的表面的朝向相匹配的表面法线向量8103来获取。这样的确定可以通过将与物体位置6220相关联的表面法线向量8103和与对应物体识别模板4300C的对应表面法线位置5101C相关联的对应表面法线向量9101C进行比较来做出。在表面法线向量8103不与对应的表面法线向量9101C对齐或匹配朝向的情况下,法线向量验证器分数可以被作为对检测假设置信度分数的惩罚来应用。在实施例中,不匹配或未对齐的量可以影响所应用的惩罚的大小。

在实施例中,对于即使当检测假设是准确的,也不期望表面法线向量8103与对应的表面法线向量9101C对齐或匹配朝向的情况,可以提供对情况的一些容差。例如,诸如具有许多齿的齿轮之类的物体可能具有展现出边缘和表面法线向量中的突然变化的部分。即使在物体图像信息12002和覆盖在场景上的模板物体8290之间仅存在轻微的未对齐时,这样的物体结构也可能导致表面法线向量8103和对应的表面法线向量9101C中的大偏差。为了考虑这样的情况,至少一个处理电路1110可以检查对应物体识别模板4300C或图像信息12001是否具有带有表面法线向量9101C/8103中的高度变化的区域。如果结果是肯定的,则至少一个处理电路1110可以通过降低在对应物体识别模板4300C中的对应表面法线向量9101C和物体图像信息12002中的表面法线向量8103之间的高方差区域中的差异的法线向量验证分数来应用更高量的容差。

在实施例中,表面法线验证器分数可以具有与其相关联的表面法线置信度水平。表面法线置信度水平可以表示由表面法线验证器分数提供的信息中的置信度水平。在实施例中,表面法线置信度水平可以根据所提取的边缘的质量来确定。在实施例中,表面法线验证器分数可以根据表面法线置信度水平来调整。

通过将从物体图像信息12002获取的物体位置6220与如由对应的物体识别模板4300C表示的模板物体8290的结构进行比较,并标识物体位置6220与结构之间的不一致,以根据与模板物体的结构中的空体积或该结构不存在的位置相对应的物体位置6220标识无效空洞或空坐标(被称为空洞无效),来获取空洞匹配验证器分数。因为物体图像信息12002的物体位置6220表示物体5012的物理结构的表面上的位置,所以场景中的物体5012在对应物体识别模板4300C指示为空的空间中应该没有结构。对应物体识别模板4300C指示为空的部分中的物体位置6220的存在可能是由于噪声,但也可能指示不正确的检测假设。因此,对于标识的每个空洞无效,空洞匹配验证器分数可以被确定为检测假设置信度水平的惩罚分数。

在实施例中,空洞匹配验证器分数可以具有与其相关联的空洞匹配置信度水平。空洞匹配置信度水平可以表示由空洞匹配验证器分数提供的信息中的置信度水平。在实施例中,空洞匹配置信度水平可以根据所提取边缘的质量来确定。在实施例中,空洞匹配验证器分数可以根据空洞匹配置信度水平调整。

在实施例中,可以提供容差以考虑即使具有正确检测假设也可能生成空洞无效的噪声或其他情况。例如,如果物体图像信息12002包括对应于模板物体8290的空的空间(例如物体中的空洞或开口)的物体位置6220,则该物体位置6220可以对应于恰好位于开口空间中的另一物体的一部分。这样的情况可能与场景5013中的物体5012的准确检测假设8300一致,因为假定空的空间中的物体位置6220不属于由对应物体识别模板4300C表示的物体5012,而是相反属于另一个物体。在实施例中,当模板物体8290中的空洞、开口或空坐标的大小相对大时,空洞匹配验证器分数可以提供更大的容差,因为这增加了不规则性(例如,物体与空洞或开口相交或从其突出)影响该空间的测量的机会,以及另一物体延伸到该空间的机会。

在实施例中,点云验证器分数、遮挡验证器分数、空洞匹配验证器分数和表面法线验证器分数可以组合成单个3D验证器分数。3D验证器分数可以被确定为点云验证器分数、遮挡验证器分数(或组合的表面验证器分数)、空洞匹配验证器分数和表面法线验证器分数中的任何一个的组合,例如,通过添加、平均或执行另一个数学运算来结合两者。

在操作13009中,操作13005包括生成多个二维验证分数,其可以包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个。

通过将图像信息12001的渲染的2D图像信息12600与对应的2D外观4302C进行比较来获取渲染的匹配验证器分数。渲染的匹配验证器分数可以进一步操作以从渲染的2D图像信息12600和对应的2D外观4302C两者中提取边缘信息。渲染的匹配验证器分数可以基于对从2D图像信息12600提取的边缘是否与从对应的2D外观4302C提取的边缘对齐的确定。渲染的匹配验证器分数可以基于由提取的边缘定义的区域之间的重叠量、提取的边缘之间的平均距离、或任何其他合适的度量。渲染的匹配验证器分数可以用作应用于检测假设置信度分数的惩罚分数。在某些情况下,使用渲染(例如,射线跟踪)来生成和提取边缘信息可以补偿可能导致伪影的噪声和其他条件,诸如从金属物体反射的眩光、或阴影。在某些情况下,操作13009还可以操作以重新渲染来自对应物体识别模板4300C的信息,以从对应物体识别模板4300C中提取边缘。

在实施例中,渲染的匹配验证器分数可以具有与其相关联的渲染的匹配置信度水平。渲染的匹配置信度水平可以表示由渲染的匹配验证器分数提供的信息中的置信度水平。在实施例中,渲染的匹配置信度水平可以根据提取的边缘的质量来确定。在实施例中,渲染的匹配验证器分数可以根据渲染的匹配置信度水平调整。

通过比较从物体图像信息12002提取的边缘和从对应物体识别模板4300C(例如,诸如模板物体8290或2D外观4302C)导出的物体图像来获取模板匹配验证器分数。边缘检测算法,例如Canny边缘检测器,可用于直接从物体图像信息12002标识物体边缘,并从存储在对应物体识别模板4300C中的图像信息标识模板边缘。模板匹配验证器分数可以通过相对于物体边缘滑动模板边缘以确定多少滑动(如果有的话)将产生峰响应或重叠,来根据物体边缘和模板边缘之间存在偏移来确定。模板匹配验证器分数可以基于实现峰响应或重叠所需的滑动量、移动量、偏移量或调整量。所需的移动或滑动量越大,模板匹配验证器分数越高,应用的惩罚也越大。换句话说,更多需要的移动指示更差的匹配。

在实施例中,模板匹配验证器分数可以具有与其相关联的模板匹配置信度水平。模板匹配置信度水平可以表示模板匹配验证器分数所提供的信息中的置信度水平。在实施例中,模板匹配置信度水平可以根据所提取的边缘的质量来确定。在实施例中,模板匹配验证器分数可以根据模板匹配置信度水平调整。

三维验证器分数和二维验证器分数可被组合以确定总体验证分数,该总体验证分数可以在进一步的操作中用于确定检测假设中的总体置信度水平。总体验证分数可以基于三维和二维验证器分数中的每一个以及与每个验证器分数相关联的置信度值的组合。例如,具有较高置信度值和/或较高分数权重的验证器分数可能对总体验证分数具有较大影响,而具有较低置信度值和/或较低分数权重的验证器分数可能对总体验证分数具有较小影响。

在实施例中,操作13005可以进一步包括确定对应物体识别模板4300C是否与对应于场景5013的图像信息12001中的其他结构或物体具有全局一致性的附加验证步骤。例如,这样的其他结构和物体可以包括工件或其他物体所位于其中的容器。例如,操作13005可以进一步确定模板物体8290是否完全适合于这样的容器内(例如,基于由姿势信息6301确定的模板物体8290的位置),或者模板物体8290是否延伸或突出在容器的表面外部。如果模板物体8290或其一部分在容器之外,则这样的情况可能指示不正确的检测假设。在这样的情况下,总体验证分数可以通过根据模板物体8290在容器外部多远来加权的惩罚来相应地调整。在实施例中,在模板物体8290或其一部分在容器外部超过阈值量的情况下,总体验证分数可被调整以指示不正确的检测假设。可以提供一些容差以考虑其中准确检测假设可能仍然与延伸到容器外部或延伸超出定义容器的内表面的平面的模板物体8290一致的情况。当例如容器是网状容器时,或者当物体是足够硬以使容器的内表面凹进或以其他方式变形的金属物体时,这样的情况可能发生。

在操作13011中,操作13005还包括根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设。

在实施例中,多个验证器分数可被组合以产生可用于确定检测假设置信度水平的总体验证器分数。总体验证器分数和检测假设置信度水平可以指示对应物体识别模板4300C与获取的场景5013的物体图像信息12002有多匹配。假设检测置信度水平可以用于确定是否过滤掉检测假设,或者是否使用检测假设来规划机器人运动以拾取场景5013中的物体5012。在实施例中。

在实施例中,过滤检测假设可以根据顺序过滤技术执行,其中将验证器分数中的每一个与对应阈值进行比较以确定是保留还是过滤来自检测假设集8309的给定检测假设8300。可以将每个连续的验证器分数与阈值进行比较,并且如果验证器分数超过阈值,则检测假设8300可被过滤掉。在示例中,从检测假设集8309中过滤检测假设8300可以包括将遮挡验证器分数、点云验证器分数、空洞匹配验证器分数、法线向量验证器分数、渲染的匹配验证器分数、以及模板匹配验证器分数与对应阈值匹配进行比较,并移除具有超过对应阈值的验证器分数的任何检测假设8300。上述比较可以按顺序方式进行。上述排序仅作为示例,并且任何排序可被使用。当采用顺序过滤时,可以通过不计算已被过滤掉的检测假设的附加验证器分数来提高过程的效率。

在实施例中,将验证器分数与对应阈值进行比较可以考虑与验证器分数相关联的置信度水平。例如,相关阈值可以根据验证器分数置信度水平调整,和/或验证器分数可以根据置信度水平调整。因此,指示不良匹配的低置信度验证器分数可以作为检测假设被过滤掉,而高置信度验证器分数可能具有更大的影响。

因此,如果三维验证分数或二维验证分数中的一个或多个超过对应阈值(必要时考虑置信度水平),则检测假设8300可以从检测假设集8309中被移除或过滤。如果所有的三维验证分数和二维验证分数都没有超过所有对应阈值(必要时考虑置信度水平),则检测假设8300可以保留在检测假设集8309内。

过滤过程可以继续,直到针对对应于物体图像信息12002的每个具体物体5012保留单个检测假设8300。这可以通过选择具有最高检测假设置信度水平(和最低总体验证分数)的检测假设和/或通过用逐渐降低的过滤阈值来迭代过滤过程直到对于每个物体5012仅单个检测假设8300成功来发生。单个检测假设8300可以是未过滤的检测假设8300。在实施例中,可以为检测假设8300设置最小置信度水平。在这样的实施例中,如果物体5012的最佳拟合检测假设8300未能超过置信度阈值,则系统可以不返回该物体的检测假设8300。

在操作13013中,假设验证方法13000包括根据验证之后剩余在检测假设集中的未过滤的检测假设来检测场景中的一个或多个物体。在过滤之后,对应于与物体图像信息12002相关联的物体5012的最佳检测假设8300被标识以检测场景内的物体5012。如上所述,假设验证方法13000还可用于根据多个不同的相关联的检测假设8300来标识多个不同的物体5012。

在一些实施例中,假设验证方法13000还可包括重叠检测操作,由此将一个或多个检测假设8300相互比较以确定它们对应的模板物体8290是否具有重叠。这样的重叠可以指示具有重叠的检测假设8300之一或两者是不正确的。可以在过滤操作13011之后针对重叠来比较检测假设8300。在过滤操作13011之前,可以针对每个物体保留多个检测假设8300,因此重叠是将被期望的。在过滤操作13011之后,剩余的检测假设8300表示个体物体5012的最佳拟合并且重叠不被期望。响应于检测到重叠,系统可以被配置为丢弃重叠检测假设8300中的一个或两个,例如,基于它们的置信度分数,或者可以配置为执行关于重叠检测假设8300的附加分析或处理。丢弃、保持或重新分析重叠检测假设8300的确定可以进一步考虑重叠的程度。

在场景5013中检测到一个或多个物体5012之后,至少一个处理电路1110可以操作以执行机器人控制操作15000以检索一个或多个物体5012并输出命令以引起机器人3300的移动以检索一个或多个物体5012。机器人控制操作15000可以包括障碍物检测、运动规划、运动执行。

障碍物检测可以包括检测和考虑在要检索的物体5012附近的障碍物。如本文所讨论的,物体5012可以在具有其他项目和物体的容器中。因此,其他项目和物体以及容器本身可以表示机器人3300的机器人操作的障碍。这样的障碍可以在图像信息12001和/或物体图像信息12002中捕获,这些信息可以被处理以确定物体附近的障碍物的位置。

运动规划可以包括规划机器人运动,例如,绘制轨迹,以供机器人3300执行以检索物体5012。轨迹可被绘制以便考虑和避开所标识的障碍物。运动执行可以包括向机器人3300或机器人控制系统发送与运动规划有关的命令以使机器人执行规划的运动。

本文讨论的方法,例如方法6000、8000、10000、11000和13000可以协同操作以创建物体识别模板并采用物体识别模板来生成、细化和验证场景中的物体的检测假设。方法6000、8000、10000、11000和13000因此可以用于促进从容器内检测、标识和检索多个物体的机器人过程。

对于相关领域的普通技术人员将明显的是,在不脱离任何实施例的范围的情况下,可以对本文所述的方法和应用进行其他适当的修改和改编。上述实施例是说明性示例,并且不应解释为将本公开限于这些特定实施例。应当理解,本文所公开的各种实施例可以以与说明书和附图中具体呈现的组合不同的组合来进行组合。还应当理解,取决于示例,本文描述的任何过程或方法的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,所有描述的动作或事件对于执行方法或过程可能不是必需的)。此外,尽管为了清楚起见,本文实施例的某些特征被描述为由单个组件、模块或单元来执行,但是应当理解,本文描述的特征和功能可以由组件、单元或模块的任何组合来执行。因此,在不脱离所附权利要求书所限定的本发明的精神或范围的情况下,本领域技术人员可以影响各种变化和修改。

进一步的实施例包括:

实施例1是一种计算系统,被配置为生成用于标识场景中的物体的物体识别模板集,包括被配置用于以下操作的至少一个处理电路:获取物体的注册数据,该注册数据包括表示该物体的物体模型;确定物体模型在三维空间中的多个视点;估计物体模型在多个视点中的每一个处的多个外观;根据多个外观生成多个物体识别模板,该多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别模板集传送给机器人控制系统,其中多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

实施例2是实施例1的计算系统,其中:三维空间被表面包围,多个视点中的每一个对应于表面上的相机位置,并且物体识别模板中的每一个对应于多个视点中的一个视点并且包括来自该一个视点的物体的外观。

实施例3是实施例1的计算系统,其中多个视点中的每一个还对应于相机旋转角度。

实施例4是实施例2的计算系统,其中物体模型固定在三维空间内。

实施例5是实施例2的计算系统,其中三维空间是基本上球形的,并且物体模型固定在三维空间的中心。

实施例6是实施例2的计算系统,其中多个视点是根据跨表面的均匀分布来选择的。

实施例7是实施例3的计算系统,其中每个相机位置对应于一组视点,该组视点中的每个视点对应于不同的相机旋转角度。

实施例8是实施例3的计算系统,其中物体识别模板集的子集包括与对应于不同位置和不同相机旋转角度的视点相对应的物体识别模板。

实施例9是实施例2的计算系统,还包括:基于针对多个物体识别模板观察到的姿势的预测范围,确定所述多个视点。

实施例10是实施例2的计算系统,还包括:基于物体的对称性确定多个视点。

实施例11是实施例10的计算系统,还包括根据确定物体的物体外观在旋转后变化和标识物体的轴线中的至少一个来确定物体的对称性。

实施例12是一种生成用于标识场景中的物体的物体识别模板集的方法,包括:获取物体的注册数据,该注册数据包括表示该物体的物体模型;确定物体模型在三维空间中的多个视点;估计物体模型在多个视点中的每一个处的多个外观;根据多个外观生成多个物体识别模板,该多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别集传送给机器人控制系统,其中多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

实施例13是实施例12的方法,其中三维空间被表面包围,并且该方法还包括:将多个视点对应于表面上的相机位置,并且将物体识别模板中的每一个对应于多个视点中的一个视点。

实施例14是实施例13的方法,还包括:将多个视点中的每一个对应于相机旋转角度。

实施例15是实施例13的方法,还包括:将物体模型固定在三维空间内。

实施例16是实施例13的方法,还包括:根据跨表面的均匀分布来选择多个视点。

实施例17是实施例13的方法,还包括:基于针对多个物体识别模板观察到的姿势的预测范围,确定多个视点。

实施例18是实施例13的方法,还包括:基于物体的对称性确定多个视点。

实施例19是实施例18的方法,还包括:根据确定物体的物体外观在旋转后变化和标识物体的轴线中的至少一个来确定物体的对称性。

实施例20是一种非暂时性计算机可读介质,被配置有可执行指令,所述可执行指令用于实现用于生成用于标识场景中的物体的物体识别模板的方法,所述方法能够由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信,该方法包括:接收物体的注册数据,该注册数据包括表示该物体的物体模型;执行操作以在三维空间中生成物体模型的多个视点;执行操作以估计物体模型在多个视点中的每一个处的多个外观;执行操作以根据多个外观生成多个物体识别模板,该多个物体识别模板中的每一个对应于多个外观中的相应一个;以及将多个物体识别模板作为物体识别模板集输出给机器人系统;其中多个物体识别模板中的每一个表示物体能具有的相对于相机的光轴的姿势,该相机生成场景内物体的图像信息。

实施例21是一种计算系统,被配置为生成用于标识场景中的物体的物体识别模板,包括:至少一个处理电路,被配置用于:获取包括数字表示的物体的物体信息;从物体信息中提取二维测量信息;从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息生成物体识别模板。

实施例22是实施例21的计算系统,其中数字表示的物体是物体模型,并且提取二维测量信息和三维测量被执行以生成该物体模型在选择的视点处的特征图。

实施例23是实施例21的计算系统,其中至少一个处理电路还被配置用于:获取场景的图像信息;访问物体识别模板;以及将二维测量信息和三维测量信息与图像信息进行比较,以将物体标识为对应于数字表示的物体。

实施例24是实施例21的计算系统,其中提取二维测量信息包括从物体信息中提取梯度信息,该梯度信息指示数字表示的物体的候选边缘的方向或朝向,并且其中提取三维测量信息包括从物体信息中提取表面法线向量信息,该表面法线向量信息描述垂直于数字表示的物体的表面的多个向量。

实施例25是实施例21的计算系统,其中物体信息包括物体的注册数据,并且数字表示的物体包括物体模型。

实施例26是实施例21的计算系统,其中物体信息包括二维图像信息和三维图像信息中的至少一个。

实施例27是实施例24的计算系统,其中梯度信息在数字表示的物体的多个梯度提取位置处提取,并且提取梯度信息包括分析物体信息的二维图像信息的像素强度以测量每个梯度提取位置处的二维图像信息的像素强度变化的方向。

实施例28是实施例24的计算系统,其中表面法线向量信息在数字表示的物体的多个表面法线位置处提取,并且提取表面法线向量信息包括在每个表面法线位置处标识垂直于数字表示的物体的表面的多个向量。

实施例29是实施例24的计算系统,其中梯度信息在数字表示的物体的多个梯度提取位置处提取,表面法线向量信息在数字表示的物体的多个表面法线位置处提取,以及多个梯度提取位置不同于多个表面法线位置。

实施例30是实施例29的计算系统,其中多个梯度提取位置与多个表面法线位置不重叠。

实施例31是实施例29的计算系统,其中多个梯度提取位置被布置在数字表示的物体的边缘,并且多个表面法线位置被布置为远离数字表示的物体的边缘。

实施例32是一种生成用于标识场景中的物体的物体识别模板的方法,包括:获取包括数字表示的物体的物体信息;从物体信息中提取二维测量信息;从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息生成物体识别模板。

实施例33是实施例32的方法,还包括:生成物体模型在选择的视点处的特征图。

实施例34是实施例32的方法,还包括:获取场景的图像信息;访问物体识别模板;以及将二维测量信息和三维测量信息与图像信息进行比较,以将物体标识为对应于数字表示的物体。

实施例35是实施例32的方法,其中提取二维测量信息还包括:从物体信息中提取梯度信息,该梯度信息指示数字表示的物体的候选边缘的方向或朝向。

实施例36是实施例32的方法,其中提取三维测量信息还包括:从物体信息中提取表面法线向量信息,该表面法线向量信息描述垂直于数字表示的物体的表面的多个向量。

实施例37是实施例35的方法,还包括:在数字表示的物体的多个梯度提取位置提取梯度信息;以及分析物体信息的二维图像信息的像素强度以测量每个梯度提取位置处的二维图像信息的像素强度变化的方向。

实施例38是实施例36的方法,还包括:在数字表示的物体的多个表面法线位置处提取表面法线向量信息;以及在每个表面法线位置处标识垂直于数字表示的物体的表面的多个向量。

实施例39是一种非暂时性计算机可读介质,被配置有可执行指令,所述可执行指令用于实现用于生成用于标识场景中的物体的物体识别模板的方法,所述方法能够由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信,该方法包括:接收包括数字表示的物体的物体信息;执行操作以从物体信息中提取二维测量信息;执行操作以从物体信息中提取三维测量信息;以及根据二维测量信息和三维测量信息向机器人系统输出物体识别模板。

实施例40是权利要求39的实施例,还包括:接收场景的图像信息;访问物体识别模板;以及将二维测量信息和三维测量信息与图像信息之间的比较向机器人系统输出,以将物体标识为对应于数字表示的物体。

实施例41是一种计算系统,包括:与机器人通信的至少一个处理电路,该机器人具有臂和与所述臂连接的末端执行器,以及具有视场的相机,并且当一个或多个物体处于或已经处于所述视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令,以用于:获取场景中物体的物体图像信息;获取包括表示模板物体的对应物体识别模板的检测假设;标识模板物体和物体图像信息之间的差异;标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,生成包括调整后的对应物体识别模板的调整后的检测假设。

实施例42是实施例41的计算系统,还包括通过以下操作调整模板位置集:标识在模板位置集和物体位置集中的对应物(corresponding ones)之间延伸的相应向量;以及根据所述相应向量迭代地调整模板位置集。

实施例43是实施例42的计算系统,其中迭代地调整模板位置集包括:根据作用于模板物体的相应向量的量值和方向,迭代地生成调整后的模板位置集,根据调整后的模板位置集调整相应向量,以及根据调整后的模板位置集标识新的相应向量,直到对齐的质量超过阈值。

实施例44是实施例43的计算系统,其中对齐的质量是基于由新的相应向量定义的未对齐的水平来确定的。

实施例45是实施例43的计算系统,其中对齐的质量是基于调整后的模板位置集和物体位置集之间的距离测量来确定的。

实施例46是实施例45的计算系统,其中距离测量包括欧几里得距离测量。

实施例47是实施例45的计算系统,其中距离测量包括与调整后的模板位置集和物体位置集相关联的表面法线向量之间的余弦距离。

实施例48是实施例47的计算系统,其中余弦距离指示表面法线向量之间的角度,并且其中角度的大小与对齐的质量相关。

实施例49是实施例45的计算系统,其中距离测量是从调整后的模板位置集的第一位置到物体位置集的第二位置的平面的测量。

实施例50是实施例43的计算系统,其中对齐的质量由调整后的模板位置集和物体位置集之间的收敛的速度来确定。

实施例51是实施例41的系统,还包括:通过将物体识别模板与场景的图像信息重叠,以基于物体识别模板的模板梯度信息和模板表面法线向量信息与从图像信息中提取的物体梯度信息和物体表面法线向量信息之间的比较来标识物体图像信息,来获取检测假设。

实施例52是一种方法,包括:获取场景中物体的物体图像信息;获取包括表示模板物体的对应物体识别模板的检测假设;标识模板物体和物体图像信息之间的差异;标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,生成包括调整后的对应物体识别模板的调整后的检测假设。

实施例53是实施例52的方法,其中调整模板位置集还包括:标识在模板位置集和物体位置集中的对应物之间延伸的相应向量;以及根据相应向量以迭代的方式调整模板位置集。

实施例54是实施例53的方法,还包括:根据作用于模板物体的相应向量的量值和方向,以迭代的方式生成调整后的模板位置集,根据调整后的模板位置集调整相应向量,以及根据调整后的模板位置集标识新的相应向量,直到对齐的质量超过阈值。

实施例55是实施例54的方法,还包括:基于由新的相应向量定义的未对齐的水平来确定对齐的质量。

实施例56是实施例54的方法,还包括:基于调整后的模板位置集和物体位置集之间的距离测量来确定对齐的质量。

实施例57是实施例54的方法,还包括:由调整后的模板位置集和物体位置集之间的收敛的速度来确定对齐的质量。

实施例58是实施例52的方法,其中获取检测假设还包括:将物体识别模板与场景的图像信息重叠,以基于物体识别模板的模板梯度信息和模板表面法线向量信息与从图像信息中提取的物体梯度信息和物体表面法线向量信息之间的比较来标识物体图像信息。

实施例59是一种非暂时性计算机可读介质,被配置有可执行指令,所述可执行指令用于实现用于细化检测假设的方法,所述方法能够由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信,该方法包括:接收场景中物体的物体图像信息;接收包括表示模板物体的对应物体识别模板的检测假设;执行操作以标识模板物体和物体图像信息之间的差异;执行操作以标识与物体图像信息的物体位置集对应的模板物体中的模板位置集;执行操作以调整模板位置集以收敛到物体位置集;以及根据调整后的模板位置集,向机器人系统输出包括调整后的对应物体识别模板的调整后的检测假设。

实施例60是实施例59的方法,其中调整模板位置集的操作包括:执行操作以标识在模板位置集和物体位置集中的对应物之间延伸的相应向量;以及执行操作以在根据相应向量迭代地调整模板位置集后调整模板位置集。

实施例61是一种计算系统,包括:与机器人通信的至少一个处理电路,该机器人具有臂和与所述臂连接的末端执行器,以及具有视场的相机,并且当一个或多个物体处于或已经处于视场中时,该至少一个处理电路被配置为执行存储在非暂时性计算机可读介质上的指令,以用于:获取场景中物体的物体图像信息;获取检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;以及通过以下操作来验证检测假设集中的每个检测假设:基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;以及根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体。

实施例62是实施例61的计算系统,其中指令还被配置用于:执行机器人运动规划过程以从场景中检索物体;以及输出命令以移动机器人以检索物体。

实施例63是实施例61的计算系统,其中多个三维验证分数包括点云验证器分数,该点云验证器分数通过以下操作获取:将从物体图像信息获取的物体位置与模板物体的表面进行比较;标识物体位置和表面之间的不一致以获取点云验证器分数。

实施例64是实施例63的计算系统,其中根据将物体位置放置在模板物体的表面之下的不一致来标识无效物体位置,并且点云验证器分数基于无效物体位置。

实施例65是实施例61的计算系统,其中多个三维验证分数包括遮挡验证器分数,该遮挡验证器分数通过以下操作获取:将从物体图像信息获取的物体位置与模板物体的表面进行比较;标识物体位置和表面之间的不一致以获取遮挡验证器分数。

实施例66是实施例65的计算系统,其中根据将对应物体位置放置在模板物体的表面上方或外部的不一致来标识遮挡,并且遮挡验证器分数基于遮挡。

实施例67是实施例61的计算系统,其中多个三维验证分数包括法线向量验证器分数,该法线向量验证器分数通过以下操作获取:将从物体图像信息获取的表面法线向量与模板物体的对应表面法线向量进行比较;标识表面法线向量和对应表面法线向量之间的不一致以获取法线向量验证器分数。

实施例68是实施例61的计算系统,其中多个三维验证分数包括空洞匹配验证器分数,该空洞匹配验证器分数通过以下操作获取:将从物体图像信息获取的物体位置与模板物体的结构进行比较;标识物体位置和结构之间的不一致以根据与模板物体的结构中的空体积对应的位置处的物体位置来标识空洞无效。

实施例69是实施例61的计算系统,其中渲染的匹配验证器分数通过以下操作获取:生成场景中物体的二维渲染,以及将物体的二维渲染的渲染后的边缘与模板物体的提取的边缘进行比较以标识无效边缘。

实施例70是实施例61的计算系统,其中验证检测假设集中的每个检测假设还包括,将对应物体识别模板与除了对应于模板物体的物体之外的场景元素进行比较。

实施例71是实施例70的计算系统,其中将表示估计物体的对应物体识别模板与场景元素进行比较包括,确定对应于模板物体的物体是否在容器内。

实施例72是实施例71的计算系统,其中从检测假设集中过滤检测假设包括将遮挡验证器分数、点云验证器分数、空洞匹配验证器分数、法线向量验证器分数、渲染匹配验证器分数以及模板匹配验证器分数与对应的阈值进行比较,其中如果三维验证分数或二维验证分数中的任何一个未能超过对应的阈值,则从检测假设集中移除该检测假设,以及其中如果三维验证分数和二维验证分数超过所有对应的阈值,则该检测假设保留在检测假设集内。

实施例73是一种方法,包括:获取场景中的物体的物体图像信息;获取检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;以及通过以下操作来验证检测假设集中的每个检测假设:基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;以及根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体。

实施例74是实施例73的方法,还包括:执行机器人运动规划过程以从场景中检索物体;以及输出命令以移动机器人以检索物体。

实施例75是实施例73的方法,其中生成多个三维验证分数还包括:获取法线向量验证器分数,该法线向量验证器分数通过以下操作获取:将从物体图像信息获取的表面法线向量与模板物体的对应表面法线向量进行比较;以及标识表面法线向量和对应表面法线向量之间的不一致以获取法线向量验证器分数。

实施例76是实施例73的方法,其中获取空洞匹配验证器分数包括:将从物体图像信息获取的物体位置与模板物体的结构进行比较;以及标识物体位置和结构之间的不一致以根据与模板物体的结构中的空体积对应的位置处的物体位置来标识空洞无效。

实施例77是实施例73的方法,其中获取渲染的匹配验证器分数包括:生成场景中的物体的二维渲染,以及将物体的二维渲染的渲染后的边缘与模板物体的提取的边缘进行比较以标识无效边缘。

实施例78是实施例73的方法,其中验证检测假设集中的每个检测假设还包括,将对应物体识别模板与除了对应于模板物体的物体之外的场景元素进行比较。

实施例79是实施例73的方法,其中从检测假设集中过滤检测假设包括:将遮挡验证器分数、点云验证器分数、空洞匹配验证器分数、法线向量验证器分数、渲染匹配验证器分数以及模板匹配验证器分数与对应的阈值进行比较,如果三维验证分数或二维验证分数中的任何一个未能超过对应的阈值,则从检测假设集中移除该检测假设;以及如果三维验证分数和二维验证分数超过所有对应的阈值,则将检测假设保持在检测假设集内。

实施例80是一种非暂时性计算机可读介质,被配置有可执行指令,所述可执行指令用于实现用于验证检测假设的方法,所述方法能够由至少一个处理电路经由通信接口操作,该通信接口被配置为与机器人系统通信,该方法包括:接收场景中的物体的物体图像信息;接收检测假设集,每个检测假设包括表示模板物体的对应物体识别模板;执行操作以基于比较检测假设的物体识别模板的三维信息和对应于该物体的物体图像信息的三维信息,生成多个三维验证分数,该多个三维验证分数包括遮挡验证器分数、点云验证器分数、空洞匹配验证器分数和法线向量验证器分数中的至少一个;执行操作以基于比较检测假设的对应物体识别模板的二维信息与物体图像信息的三维信息,生成多个二维验证分数,该多个二维验证分数包括渲染的匹配验证器分数和模板匹配验证器分数中的至少一个;执行操作以根据多个三维验证分数和多个二维验证分数从检测假设集中过滤检测假设;根据验证后的检测假设集中剩余的未过滤检测假设来检测场景中的物体;以及向机器人系统输出检测到的场景中的物体。

实施例81是实施例13的方法,其中三维空间是基本上球形的,并且物体模型固定在三维空间的中心。

实施例82是实施例14的方法,其中每个相机位置对应于一组视点,该组视点中的每个视点对应于不同的相机旋转角度。

实施例83是实施例14的方法,其中物体识别模板集的子集包括与对应于不同位置和不同相机旋转角度的视点相对应的物体识别模板。

实施例84是实施例32的方法,其中数字表示的物体是物体模型,并且提取二维测量信息和三维测量被执行以生成该物体模型在选择的视点处的特征图。

实施例85是实施例32的方法,其中物体信息包括物体的注册数据,并且数字表示的物体包括物体模型。

实施例86是实施例32的方法,其中物体信息包括二维图像信息和三维图像信息中的至少一个。

实施例87是实施例36的方法,其中梯度信息在数字表示的物体的多个梯度提取位置处提取,表面法线向量信息在数字表示的物体的多个表面法线位置处提取,以及多个梯度提取位置不同于多个表面法线位置。

实施例88是实施例87的方法,其中多个梯度提取位置与多个表面法线位置不重叠。

实施例89是实施例87的方法,其中多个梯度提取位置被布置在数字表示的物体的边缘,并且多个表面法线位置被布置为远离数字表示的物体的边缘。

实施例90是实施例56的方法,其中距离测量包括欧几里得距离测量。

实施例91是实施例56的方法,其中距离测量包括与调整后的模板位置集和物体位置集相关联的表面法线向量之间的余弦距离。

实施例92是实施例91的方法,其中余弦距离指示表面法线向量之间的角度,并且其中角度的大小与对齐的质量相关。

实施例93是实施例56的方法,其中距离测量是从调整后的模板位置集的第一位置到物体位置集的第二位置的平面的测量。

实施例94是实施例73的方法,其中多个三维验证分数包括点云验证器分数,该点云验证器分数通过以下操作获取:将从物体图像信息获取的物体位置与模板物体的表面进行比较;标识物体位置和表面之间的不一致以获取点云验证器分数。

实施例95是实施例94的方法,其中根据将物体位置放置在模板物体的表面之下的不一致来标识无效物体位置,并且点云验证器分数基于无效物体位置。

实施例96是实施例73的方法,其中多个三维验证分数包括遮挡验证器分数,该遮挡验证器分数通过以下操作获取:将从物体图像信息获取的物体位置与模板物体的表面进行比较;标识物体位置和表面之间的不一致以获取遮挡验证器分数。

实施例97是实施例96的方法,其中根据将对应物体位置放置在模板物体的表面上方或外部的不一致来标识遮挡,并且遮挡验证器分数基于遮挡。

实施例98是实施例78的方法,其中将表示估计物体的对应物体识别模板与场景元素进行比较包括,确定对应于模板物体的物体是否在容器内。

技术分类

06120115927850