基于图像分类的物体识别或物体注册的方法及计算系统与流程

文档序号:25859994发布日期:2021-07-13 16:15阅读:73来源:国知局
基于图像分类的物体识别或物体注册的方法及计算系统与流程

对相关申请的交叉引用

本申请要求2020年1月10日提交的题为“aroboticsystemwithobjectdetection”的美国临时申请no.62/959,182的权益,该美国临时申请的全部内容通过引用并入本文中。

本公开涉及用于基于图像或其一部分如何已被分类(并且更具体地基于图像或其一部分已被分类为有纹理的还是无纹理的)来执行物体识别或物体注册的计算系统和方法。



背景技术:

随着自动化变得更加普遍,表示物体的图像可以被用于自动提取关于物体(诸如仓库、工厂或零售空间中的盒子或其他包裹)的信息。这些图像可以促进诸如自动包裹跟踪、库存管理或机器人与物体的交互之类的任务。



技术实现要素:

在实施例中,提供了一种包括非暂时性计算机可读介质和至少一个处理电路的计算系统。通信接口可以被配置为与机器人以及与图像捕获设备通信。该至少一个处理电路被配置为当一个或多个物体在或已经在图像捕获设备的视野中时执行以下方法:获得用于表示该一个或多个物体的图像,其中图像是由图像捕获设备生成的;从图像生成目标图像部分,其中目标图像部分是该图像的与该一个或多个物体中的物体相关联的一部分;并且确定将目标图像部分分类为有纹理的还是无纹理的。该方法还包括基于目标图像部分被分类为有纹理的还是无纹理的,从第一模板存储空间和第二模板存储空间中选择模板存储空间,其中相对于第二模板存储空间,第一模板存储空间被更频繁地清理,其中响应于将目标图像部分分类为无纹理的确定,第一模板存储空间被选择为模板存储空间,并且响应于将目标图像部分分类为有纹理的确定,第二模板存储空间被选择为模板存储空间;基于目标图像部分和所选择的模板存储空间来执行物体识别。该方法还包括生成用于引起机器人至少与该物体交互的移动命令,其中移动命令是基于来自物体识别的结果而生成的。在一些情况下,该方法可以在至少一个处理电路执行非暂时性计算机可读介质上的多个指令时被执行。

附图说明

图1a至图1h示出了根据本文的实施例的用于基于图像分类来执行物体识别或物体注册的系统。

图2a至图2f提供了示出根据本文的实施例的被配置为基于图像分类来执行物体识别或物体注册的计算系统的框图。

图3提供了示出了根据本文的实施例的基于图像分类来执行物体识别的方法的流程图。

图4a至图4c示出了根据本文的实施例的其中可以执行物体识别或物体注册的示例环境和系统。

图5a至图5e示出了根据本文的实施例的基于对图像的一部分的分类来执行物体识别或物体注册的各方面。

图6a至图6i示出了根据本文的实施例的执行物体识别或物体注册的各方面。

图7a至图7c示出了根据本文的实施例的执行物体识别的各方面。

图8a至图8e示出了根据本文的实施例的执行物体识别的各方面。

图9a至图9d示出了根据本发明的实施例的对无纹理的模板的清理。

具体实施方式

本公开的一个方面提供了用于基于图像分类(诸如,图像或其一部分是有纹理的还是无纹理的分类)来自动执行物体识别或物体注册的系统和方法。图像可以捕获或以其他方式表示一个或多个物体(例如托盘上的盒子),并且物体注册(如果其被执行的话)可以被用于确定一个或多个物体的视觉特性或其他特性,并生成描述这些特性的一个或多个模板。在一些情况下,该一个或多个模板可以被用于执行物体识别。物体识别的结果可以被用于例如执行库存管理、促进机器人与该一个或多个物体的交互或实现某个其他目的。在一些情况下,生成的模板可以被分类为有纹理或无纹理的。有纹理的模板可以是基于被分类为有纹理的图像或图像的一部分(也被称为图像部分)生成的模板,而无纹理的模板可以是基于被分类为无纹理的图像或图像部分生成的模板。在一些情况下,有纹理的或无纹理的分类可以指图像或图像部分中的视觉纹理,或更具体地,是指图像或图像部分是否具有一定水平的视觉纹理。在一些情况下,基于将物体的视觉特性与模板中描述的一个或多个视觉特征进行匹配,视觉纹理可能影响是否能够以健壮的方式执行物体识别。

在实施例中,可以以临时方式使用(一个或多个)无纹理的模板,同时可以以更长期的方式使用(一个或多个)有纹理的模板。例如,(一个或多个)无纹理的模板可以被用于促进具体的机器人任务,诸如涉及机器人将盒子的堆叠卸垛的任务。在这样的情况下,无纹理的模板可以基于该堆叠中特定盒子的外观和/或物理结构来生成。在一些情况下,该盒子在其表面上有很少或没有视觉标记。无纹理的模板可以描述与盒子相关联的盒子设计,或更一般地,物体设计。例如,无纹理的模板可以描述形成盒子设计的视觉设计和/或物理设计。无纹理的模板可以被用于促进将堆叠中的其他盒子卸垛,特别是具有相同盒子设计并且因此可与无纹理的模板匹配的其他盒子。在此实施例中,无纹理的模板可以在卸垛任务完成之后被删除或被以其他方式清理。例如,无纹理的模板可以被存储在高速缓存或其他短期模板存储空间中,并且高速缓存可以在卸垛任务完成时被清理。在一些情况下,无纹理的模板可以包括无纹理标志。当卸垛任务完成时,无纹理标志可能会引起无纹理的模板被清理。因此,本文的实施例的一个方面涉及针对涉及一组物体(例如,托盘上的盒子)的特定机器人任务使用(一个或多个)无纹理的模板,其中(一个或多个)无纹理的模板可以基于该组内的物体生成,但不将这些无纹理的模板重用于另一个涉及另一组物体的后续任务。无纹理的模板对于例如对先前组中的物体执行物体识别可能是有用的,但是对于随后组中的物体可能具有较小的相关性。

在实施例中,(一个或多个)有纹理的模板也可以被用于促进机器人任务或任何其他任务,并且还可以重用于其他后续的任务。因此,(一个或多个)有纹理的模板可以比(一个或多个)无纹理的模板更永久。在一些情况下,(一个或多个)有纹理的模板可以被存储在长期数据库或其他长期模板存储空间中。如下面更详细地讨论的,以临时方式使用(一个或多个)无纹理的模板并且以更长期方式使用(一个或多个)有纹理的模板可以提供技术优势,诸如减少存储模板所需的存储资源,和/或提高执行物体识别的速度。

图1a示出了用于执行或促进自动物体识别或物体注册的系统100(术语“或”在本文中用于指“和/或”)。系统100可以包括计算系统101和图像捕获设备141(也被称为图像感测设备)。图像捕获设备141(例如2d相机)可以被配置为捕获或以其他方式生成表示图像捕获设备141的视野中的环境的图像。在一些情况下,环境可以是例如仓库或工厂。在这样的情况下,图像可以表示仓库或工厂中的一个或多个物体,诸如要接收机器人交互的一个或多个盒子或其他容器。计算系统101可以直接或间接地从图像捕获设备141接收图像,并且处理图像以例如执行物体识别。如下面更详细地讨论的,物体识别可以涉及标识图像捕获设备141已经遇到的物体,或者更具体地,已经存在于设备的视野中的物体。物体识别还可以涉及确定物体的外观是否与存储在模板存储空间中的任何现有模板匹配,和/或物体的结构是否与模板存储空间中的任何现有模板匹配。在一些情况下,物体识别操作可能无法识别物体,诸如当物体的外观与模板存储空间中的任何现有模板不匹配,和/或当物体的结构与模板存储空间中的任何现有模板不匹配时。在一些实现方式中,如果物体识别操作无法识别物体,则计算系统101可以被配置为执行物体注册。物体注册可以涉及例如存储关于物体的外观(也被称为其视觉外观)、关于物体的物理结构(也被称为物体结构或物体的结构)和/或关于物体的任何其他特性的信息,并将该信息作为新模板存储在模板存储空间中。新模板可以被用于后续的物体识别操作。在一些情况下,计算系统101和图像捕获设备141可以位于相同的场所,诸如仓库或工厂。在一些情况下,计算系统101和图像捕获设备141可以彼此远离。例如,计算系统101可以位于提供云计算平台的数据中心。

在实施例中,系统100可以包括空间结构感测设备,诸如3d相机。更具体地,图1b示出了包括计算系统101、图像捕获设备141,并且还包括空间结构感测设备142的系统100a(其可以是系统100的实施例)。空间结构感测设备142可以被配置为感测其视野中的物体的物理结构和/或感测物体如何在3d空间中排列。例如,空间结构感测设备142可以包括深度感测相机(例如,飞行时间(tof)相机或结构光相机)或任何其他3d相机。在实施例中,空间结构感测设备142可以被配置为生成感测的结构信息(也被称为空间结构信息),诸如点云。更具体地,所感测的结构信息可以包括深度信息,诸如深度图中的一组深度值,其描述物体的表面上的各个位置的深度。深度可以是相对于空间结构感测设备142或某个其他参考框架的。在一些情况下,所感测的结构信息(例如,点云)可以包括3d坐标,诸如[xyz]t坐标,其标识或以其他方式描述了物体的一个或多个表面上的相应位置。在一些情况下,所感测的结构信息可以描述物体的物理结构。例如,点云中的深度信息(或其他形式的感测的结构信息)可以描述物体的大小或物体的形状。物体的大小(也被称为物体大小)可以描述例如物体的尺寸,诸如容器或其他物体的长度和宽度的组合,或者容器的长度、宽度和高度的组合。物体的形状(也被称为物体形状)可以描述例如物体的物理轮廓,这将在下面更详细地讨论。

如上所述,可以执行物体识别操作以确定物体是否与存储在模板存储空间中的现有模板(如果有的话)匹配。如果物体与模板存储空间中的任何现有模板都不匹配(或者如果模板存储空间中没有模板),则可以基于物体的外观和/或其他特性执行物体注册操作以生成新模板。例如,图1c示出了具有第一模板存储空间181和第二模板存储空间182的系统100b(其可以是系统100/100a的实施例)。在实施例中,模板存储空间181、182中的每一个可以是存储设备或其他非暂时性计算机可读介质中的空间,其中空间被分配或以其他方式用于存储用于物体识别的一个或多个模板。在一些情况下,第一模板存储空间181和/或第二模板存储空间182可以包括用于存储模板或其他模板信息的计算机文件。在一些情况下,模板存储空间181/182可以包括被分配给或以其他方式用于存储模板或其他模板信息的一个或多个存储器地址范围。在上述情况下,模板存储空间181/182可以指虚拟空间,因为计算机文件或存储器地址的(一个或多个)范围可以是存储器中的虚拟位置,其可以被映射到存储设备中的不同物理位置。在一些情况下,第一模板存储空间181和/或第二模板存储空间182可以指存储设备上的物理空间。

如下面更详细地讨论的,模板存储空间181/182中的模板可以描述与物体或一组物体相关联的特定物体设计。例如,如果该组物体是盒子或其他容器,则物体设计可以指与容器相关联的盒子设计或其他容器设计。在一些情况下,物体设计可以指例如定义或以其他方式形成物体的一个或多个表面的外观的一部分或定义物体的某个其他视觉特征的视觉设计或视觉标记。在一些情况下,物体设计可以指例如定义或以其他方式描述与物体相关联的物理结构或其他物理特性的物理设计。在实施例中,模板可以包括视觉特征描述,其可以包括描述视觉设计的信息。例如,视觉特征描述可以包括表示或以其他方式与物体的外观相关联的图像或图像部分,或者包括概括或以其他方式描述图像或图像部分中的视觉特征的信息(例如,描述子列表)。在实施例中,模板可以包括物体结构描述,其可以包括描述物理设计的信息。例如,物体结构描述可以包括描述与物体设计相关联的物体大小的(一个或多个)值,和/或可以包括描述与物体相关联的物体形状的点云或计算机辅助设计(cad)模型。

在实施例中,第一模板存储空间181和/或第二模板存储空间可以被托管在或以其他方式位于计算系统101上。例如,图1c的实施例描绘了其中计算系统101托管或以其他方式包括第一模板存储空间181和第二模板存储空间182两者的实现方式。更具体地,两个模板存储空间181、182可以被托管在或以其他方式位于计算系统101的存储设备或其他非暂时性计算机可读介质上,如下面关于图2e更详细地讨论的。此外,图1d示出了系统100c(其可以是系统100/100a的实施例),其中第一模板存储空间181或第二模板存储空间182中的一个被托管在计算系统101上,并且第一模板存储空间181或第二模板存储空间182中的另一个被托管在与计算系统101分离的非暂时性计算机可读介质198上。在实施例中,第一模板存储空间181和第二模板存储空间182两者都被托管在或以其他方式位于非暂时性计算机可读介质198上,而不是计算系统101上,如图1e所示。

在实施例中,非暂时性计算机可读介质198可以包括单个存储设备,或者可以包括一组存储设备。计算系统101和非暂时性计算机可读介质198可以位于相同的场所,或者可以彼此远离。非暂时性计算机可读介质198可以包括但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如,诸如计算机软盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦可编程只读存储器(eprom或闪存)、固态驱动器、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能磁盘(dvd)和/或记忆棒。在一些情况下,图1c至图1e的非暂时性计算机可读介质198和/或计算系统101可以提供用于访问第一模板存储空间181和/或第二模板存储空间182中的模板(如果有的话)的数据库或数据库管理系统。

在实施例中,第一模板存储空间181可以相对于第二模板存储空间182被更频繁地清理。例如,第一模板存储空间181可以充当用于临时地存储具体模板或具体类型的模板的高速缓存或其他短期模板存储空间。如下面更详细地讨论的,该高速缓存或其他短期模板存储空间可以被用于存储已经被分类为无纹理的模板(也称为被无纹理的模板)。在一些实施例中,第一模板存储空间181在充当用于临时存储无纹理的模板的高速缓存或其他短期模板存储空间时也可以被称为无纹理的模板存储空间181。在一些情况下,第一模板存储空间181可以在执行特定任务(诸如涉及将盒子或其他容器的堆叠卸垛的机器人任务)时保持其存储的模板(如果有的话),并且第一模板存储空间181中的目标可以在任务完成之后被清理。在这样的示例中,针对特定任务生成的无纹理的模板不会被重用于后续任务。

在实施例中,第二模板存储空间182可以充当长期模板存储空间(例如,长期模板数据库)。在一些情况下,第二模板存储空间182可以被保留用于具体模板或具体类型的模板,诸如已经被分类为有纹理的模板(也被称为有纹理的模板),如下面更详细地讨论的。在一些实施例中,第二模板存储空间182在充当用于存储有纹理的模板的长期模板存储空间时也可以被称为有纹理的模板存储空间182。第二模板存储空间182中的模板或其他内容可以比第一模板存储空间182中的模板或其他内容更永久。例如,第二模板存储空间182可以跨许多个任务的跨度来保持其存储的模板(如果有的话),包括上面讨论的机器人任务。换句话说,针对特定任务生成的有纹理的模板可以被重用于后续任务,以便促进针对该后续任务的物体识别。在实施例中,使用第一模板存储空间181作为短期模板存储空间并且使用第二模板存储空间182作为长期模板存储空间可以提供减少存储用于物体识别的模板所需的存储资源的技术优势,和/或提高执行物体识别的速度的技术优势,如下面更详细地讨论的。

在实施例中,图1d和1e的非暂时性计算机可读介质198还可以存储由图像捕获设备141生成的图像和/或由空间结构感测设备142生成的感测的结构信息。在这样的实施例中,计算系统101可以从非暂时性计算机可读介质198接收图像和/或感测的结构信息。在一些情况下,图1a至图1e的系统100/100a/100b/100c/100d的各种部件可以经由网络进行通信。例如,图1f描绘了包括网络199的系统100e,其可以是系统100/100a/100b/100c/100d中的任何一个的实施例。更具体地,计算系统101可以经由网络199接收由图像捕获设备141生成的图像。网络199可以提供单独的网络连接或一系列网络连接以允许计算系统101接收与本文的实施例一致的图像数据。在实施例中,网络199可以经由有线或无线链路连接。有线链路可以包括数字用户线(dsl)、同轴电缆线或光纤线。无线链路可以包括低功耗蓝牙(ble)、ant/ant+、zigbee、z-wave、thread、全球微波接入互操作性移动nfc、sigfox、lora、随机相位多址(rpma)、失重n/p/w、红外信道或卫星频段。无线链路还可以包括在移动设备之间进行通信的任何蜂窝网络标准,包括符合2g、3g、4g或5g的标准。无线标准可以使用各种信道访问方法,例如,fdma、tdma、cdma或sdma。网络通信可以经由任何适当的协议来进行,包括例如http、tcp/ip、udp、以太网、atm等。

在实施例中,计算系统101和图像捕获设备141和/或空间结构感测设备142可以经由直接连接而不是网络连接进行通信。例如,在这样的实施例中,计算系统101可以被配置为经由专用通信接口(诸如rs-232接口、通用串行总线(usb)接口)和/或经由本地计算机总线(诸如外围部件互连(pci)总线)从图像捕获设备141接收图像和/或从空间结构设备142接收感测的结构信息。

在实施例中,由图像捕获设备141生成的图像可以被用于促进对机器人的控制。例如,图1g示出了机器人操作系统100f(其是系统100/100a/100b/100c/100d/100e的实施例),其包括计算系统101、图像捕获设备141和机器人161。图像捕获设备141可以被配置为生成表示例如仓库或其他环境中的物体的图像,并且机器人161可以被控制为基于该图像与物体交互。例如,计算系统101可以被配置为接收图像并且基于图像执行物体识别和/或物体注册。物体识别可以涉及确定例如物体的大小或形状,以及物体的大小或形状是否与现有模板匹配。在此示例中,可以基于所确定的物体的大小或形状和/或基于匹配的模板(如果有的话)来控制机器人161与物体的交互。

在实施例中,计算系统101可以形成或可以是被配置为控制机器人161的移动或其他操作的机器人控制系统(也被称为机器人控制器)的一部分。例如,在这样的实施例中,计算系统101可以被配置为基于由图像捕获设备141生成的图像来执行机器人161的运动计划,并且基于该运动计划来生成一个或多个移动命令(例如,电动机命令)。在这样的示例中,计算系统101可以将一个或多个移动命令输出到机器人161以控制其移动。

在实施例中,计算系统101可以与机器人控制系统分离,并且可以被配置为将信息传达给机器人控制系统以便允许机器人控制系统控制机器人。例如,图1h描绘了机器人操作系统100g(其是系统100至100f中的任何一个的实施例),其包括计算系统101和与计算系统101分离的机器人控制系统162。在此示例中,计算系统101和图像捕获设备141可以形成视觉系统150,该视觉系统150被配置为向机器人控制系统162提供关于机器人161的环境的信息,并且更具体地,关于该环境中的物体的信息。计算系统101可以用作视觉控制器,该视觉控制器被配置为处理由图像捕获设备141生成的图像以确定关于机器人161的环境的信息。计算系统101可以被配置为将所确定的信息传达给机器人162,该机器人控制系统162可以被配置为基于从计算系统101接收的信息来执行机器人161的运动计划。

如上所述,图1a至图1h的图像捕获设备141可以被配置为生成图像数据,该图像数据捕获或形成表示图像捕获设备141的环境中的一个或多个物体的图像。更具体地,图像捕获设备141可以具有设备视野,并且可以被配置为生成表示该设备视野中的一个或多个物体的图像。如本文所使用的,图像数据是指描述该一个或多个物体(也被称为一个或多个物理物体)的外观的任何类型的数据(也被称为信息)。在实施例中,图像捕获设备141可以是或可以包括相机,诸如被配置为生成二维(2d)图像的相机。2d图像可以是例如灰度图像或彩色图像。

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

图2a提供了示出计算系统101的实施例的框图。计算系统101包括至少一个处理电路110和(一个或多个)非暂时性计算机可读介质120。在实施例中,处理电路110包括一个或多个处理器、一个或多个处理核、可编程逻辑控制器(“plc”)、专用集成电路(“asic”)、可编程门阵列(“pga”)、现场可编程门阵列(“fpga”)、其任何组合或任何其他处理电路。

在实施例中,非暂时性计算机可读介质120可以是存储设备,诸如电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或其任何合适的组合,例如,诸如计算机磁盘、硬盘、固态驱动器(ssd)、随机存取存储器(ram)、只读存储器(rom)、可擦可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式光盘只读存储器(cd-rom)、数字多功能磁盘(dvd)、记忆棒、其任意组合或任何其他存储设备。在一些情况下,非暂时性计算机可读介质120可以包括多个存储设备。在某些情况下,非暂时性计算机可读介质120被配置为存储从图像捕获设备141接收的图像数据和/或从空间结构感测设备142接收的感测的结构信息。在某些情况下,非暂时性计算机可读介质120还存储计算机可读程序指令,该计算机可读程序指令在由处理电路110执行时使处理电路110执行本文描述的一种或多种方法,诸如关于图3描述的方法。

图2b描绘了计算系统101a,其是计算系统101的实施例并且包括通信接口130。通信接口130可以被配置为例如从图像捕获设备141接收图像或更一般地图像数据,诸如经由图1d或1e的非暂时性计算机可读介质198、图1f的网络199或经由更直接的连接。在实施例中,通信接口130可以被配置为与图1g的机器人161或图1h的机器人控制系统162通信。通信接口130可以包括例如配置为通过有线或无线协议执行通信的通信电路。作为示例,通信电路可以包括rs-232端口控制器、usb控制器、以太网控制器、控制器、pci总线控制器、任何其他通信电路或其组合。

在实施例中,如果上面讨论的第一模板存储空间181和/或第二模板存储空间182被托管或以其他方式位于图1e和1d的非暂时性计算机可读介质198上,则通信接口130可以被配置为与非暂时性计算机可读介质198通信(例如,直接地或经由网络)。可以执行通信以从模板存储空间181/182接收模板,或者将模板发送到模板存储空间181/182以在其中存储。在一些情况下,如上所述,计算系统101可以托管或以其他方式包括第一模板存储空间181和/或第二模板存储空间182。例如,图2c、2d和2e描绘了其中第一模板存储空间181和/或第二模板存储空间182位于计算系统101的非暂时性计算机可读介质120上的实施例。

在实施例中,可以通过存储在非暂时性计算机可读介质120上的一个或多个计算机可读程序指令来对处理电路110进行编程。例如,图2f示出了计算系统101b,其可以是计算系统101/101a的实施例,其中可以通过图像访问模块202、图像分类模块204、物体注册模块206、物体识别模块207和运动计划模块208来对处理电路110进行编程或处理电路110被配置为执行图像访问模块202、图像分类模块204、物体注册模块206、物体识别模块207和运动计划模块208。将理解的是,本文讨论的各个模块的功能是代表性的而非限制性的。

在实施例中,图像访问模块202可以是在计算系统101b上运行的软件协议,并且可以被配置为获得(例如,接收)图像或更一般地图像数据。例如,图像访问模块202可以被配置为访问存储在非暂时性计算机可读介质120或198中的图像数据,或者经由网络199和/或图2b的通信接口130访问图像数据。在一些情况下,图像访问模块202可以被配置为直接或间接地从图像捕获设备141接收图像数据。图像数据可以被用于表示图像捕获设备141的视野中的一个或多个物体。在实施例中,图像分类模块204可以被配置为将图像或图像部分分类为有纹理的或无纹理的,如下面更详细地讨论的,其中,图像可以由图像访问模块202获得的图像数据表示。

在实施例中,物体注册模块206可以被配置为确定物体的视觉特性、物理特性和/或任何其他特性,并且生成描述该物体的(一个或多个)特性的模板。在一些情况下,物体识别模块207可以被配置为基于例如物体的外观或物体的其他视觉特性来执行物体识别,以确定与该物体相对应的模板是否已经存在。更具体地,物体识别可以基于一个或多个模板,诸如图2c至图2e的第一模板存储空间181或第二模板存储空间182中的模板。物体识别可以涉及例如确定物体的外观是否与该一个或多个模板中的任何模板匹配。在一些情况下,如果物体识别模块207确定不存在这样的匹配,则作为物体注册过程的一部分,物体注册模块206可以使用该物体的外观来创建新模板。在实施例中,运动计划模块208可以被配置为基于图像分类模块204执行的分类和/或基于物体识别模块207的结果来执行运动计划,以用于例如来控制机器人与物体的交互,如下面更详细地讨论的。

在各种实施例中,术语“软件协议”、“软件指令”、“计算机指令”、“计算机可读指令”和“计算机可读程序指令”用于描述被配置为执行各种任务和操作的软件指令或计算机代码。如本文所使用的,术语“模块”广泛地是指被配置为使处理电路110执行一个或多个功能任务的软件指令或代码的集合。为了方便起见,当实际上模块、计算机指令和软件协议对硬件处理器进行编程以执行操作和任务时,各种模块、管理器、计算机指令和软件协议将被描述为执行各种操作或任务。尽管在各种地方被描述为“软件”,但是应当理解,由“模块”、“软件协议”、和“计算机指令”执行的功能可以更一般地被实现为固件、软件、硬件或其任何组合。此外,本文的实施例根据方法步骤、功能步骤和其他类型的事件来描述。在实施例中,这些动作根据由计算系统101的处理电路110执行的计算机指令或软件协议发生。

图3是示出了用于执行物体识别和/或物体注册的方法300的示例操作的流程图。在示例中,方法300可以促进卸垛任务或者可以是卸垛任务的一部分,在该任务中物体(例如,托盘上的盒子或其他包裹)的堆叠被卸载。在一些情况下,物体识别可以促进确定该堆叠中物体的结构(也被称为物体结构),这可以帮助卸垛任务。在一些情况下,物体识别和/或物体注册可以促进跟踪机器人操作系统(例如,图1g的100f)已卸载或以其他方式处理了哪个物体或哪些物体类型,这可以帮助库存管理任务或某个其他任务。在实施例中,方法300可以由图1a至2f的计算系统101执行,诸如由处理电路110执行。例如,计算系统101的非暂时性计算机可读介质120可以存储多个指令(例如,计算机程序指令),并且处理电路100可以通过执行这些指令来执行方法300。

图4a至图4c示出了方法300可以在其中执行的示例环境。更具体地,图4a描绘了系统400(其可以是系统100至100g中的任何一个的实施例),其包括计算系统101、图像捕获设备441(其可以是图像捕获设备141的实施例)以及机器人461(可以是图1g或1h的机器人161的实施例)。图4b描绘了系统400a,其包括系统400的部件,并且还包括空间结构感测设备442(其可以是空间结构感测设备142的实施例)。另外,图4c描绘了系统400b,其包括系统400a的部件,并且还包括一个或多个附加的图像捕获设备或空间结构感测设备,诸如空间结构感测设备446、448。

如图4a至图4c所示,系统400/400a/400b可以被用于对一个或多个物体(诸如物体411-414和421-424)执行物体识别和/或物体注册,和/或用于控制机器人461与该一个或多个物体交互。在一些情况下,该一个或多个物体(例如,盒子或其他容器)可以形成布置在诸如托盘430的平台上的堆叠。机器人交互可以涉及例如拾取该一个或多个物体并将它们移动到期望的目的地,诸如从托盘430到传送带。该堆叠可以具有多个层,诸如图4a至图4c所示的第一层410和第二层420。第一层410可以由物体411-414形成,而第二层420可以由物体421-424形成。在一些情况下,视觉标记可能会出现在物体的一个或多个表面上。例如,图4a至图4c描绘了被印刷或以其他方式布置在物体411的表面(例如,顶表面)上的图片401a,以及被印刷或以其他方式布置在物体412的表面上的徽标412a或其他视觉标记。视觉标记可以形成物体411/412的视觉设计的至少一部分。在一些情况下,如果物体411/412是用于存放商品的盒子,则视觉设计可以指示商品的品牌名称、商品的制造商或分销商,或者可以是商品的说明或图。在一些情况下,诸如胶带条414a之类的物理项可以被放置在物体的表面上,诸如在物体414的顶表面上。在一些情况下,物体中的至少一个物体在一个或多个表面上可能没有视觉标记。例如,物体413的顶表面可以是空白的。

在实施例中,物体411-414、421-424可以包括具有相同物体设计的物体。作为示例,物体411可以具有与物体424(其在图8a中更详细地示出)相同的物体设计,而物体412可以具有与物体422(也在图8a中示出)相同的物体设计。更具体地,如上所述,物体设计可以包括视觉设计和/或物理设计。在实施例中,物体的物理设计可以指其物理结构,诸如物体的大小或形状。在此示例中,物体411可以具有与物体424相同的视觉设计,而物体412可以具有与物体422相同的视觉设计。如果物体411-414、421-424是用于存放商品的盒子或其他容器,则物体411和424之间以及物体412和422之间的共同的视觉设计可以指示这些物体存放相同商品或相同商品模型和/或它们可能来自相同制造商或分销商的可能性。在一些情况下,物体411和424之间(或物体412和422之间)的共同的视觉设计可以指示这些物体属于相同物体设计以及它们因此也具有共同的物理设计(诸如共同的物体大小和/或共同的物体形状)的可能性。

在实施例中,物体注册可以被执行以生成描述系统100/400已经遇到的各种物体设计的模板。更具体地,由图像捕获设备441感测的或由空间结构感测设备442感测的信息可以被用于生成描述物体(诸如物体411-414、421-424中的一个或多个)的物体设计的模板,如下面更详细讨论的。

如上所述,模板在一些情况下可以包括视觉特征描述,其描述了物体或一组物体的外观,或更具体地,出现在该组物体中的每一个物体的表面上的视觉标记(如果有的话)。视觉标记(诸如图片、图案或徽标)可以形成该组物体共同的视觉设计,并且可以在由图像捕获设备441生成的图像或其他信息中表示。在一些情况下,模板可以存储或以其他方式包括视觉标记本身,诸如可能出现在由图像捕获设备441生成的图像中的图片、图案或徽标。在一些情况下,模板可以存储对图片、图案、徽标或其他视觉标记进行编码的信息。例如,模板可以存储描述子(descriptor),这些描述子被生成以描述视觉标记,或更具体地描述由视觉标记(例如,图片或徽标)形成的具体特征。

在一些情况下,模板可以包括物体结构描述,其可以描述物体或一组物体的物体结构(也称为被物理结构)。例如,物体结构描述可以描述形成该组物体共同的物理设计的物体大小和/或物体形状。在一些情况下,物体大小可以描述与该组物体相关联的或更一般地与物理设计相关联的物体尺寸。在一些情况下,物体形状可以描述由该组物体中的每一个物体形成的物理轮廓,或更一般地,可以描述与该组物体所关联的物理设计相关联的物理轮廓。物体的物理轮廓可以指例如物体的轮廓(例如,3d轮廓),其可以由物体的一个或多个表面的形状以及表面相对于彼此如何排列来定义。例如,方盒的物理轮廓可以通过具有彼此正交的平坦表面的物理设计来定义。在一些情况下,物理轮廓可以包括形成在物体的一个或多个表面上的任何物理特征。作为示例,如果物体是容器,则物理特征可以包括形成在容器的一个或多个表面上的容器唇缘(lip)或容器手柄(如果有的话)。在此示例中,物体大小和/或物体形状可以通过由空间结构感测设备442(和/或由图4c的空间结构感测设备446、448)生成的感测的结构信息来描述。在一些情况下,物体结构描述可以包括所感测的结构信息本身,诸如点云。在一些情况下,物体结构描述可以包括从所感测的结构信息中得出的信息,诸如描述物体大小(例如,顶表面的长度和宽度,或长度和宽度之间的纵横比)的信息、描述物体结构的cad文件或某些其他信息。

返回图3,在实施例中,方法300可以以步骤302开始或以其他方式包括步骤302,其中,计算系统101可以被配置为在一个或多个物体(诸如图4a至图4c中的物体411-414、421-424)位于图像捕获设备的视野(诸如图像捕获设备441的视野443)中时执行。在一些情况下,如果方法300涉及空间结构感测设备(例如,442)的使用,则一个或多个物体(例如,411-414、421-424)可以还位于空间结构感测设备(例如,442)的视野(例如,444)中。在步骤302期间,计算系统101的处理电路110可以获得或以其他方式接收用于表示一个或多个物体(例如,411-414和/或421-424)的图像,其中该图像可以是由图像捕获设备(例如,441)生成的。在一些情况下,操作302可以由图2f的图像访问模块202执行。

作为步骤302的示例,图5a描绘了所获得的图像501,其表示或以其他方式至少与图4a至图4c的物体411-414、421-424的堆叠中的物体411-414相关联。如上所述,物体411-414在一个示例中可以是托盘430上的盒子或其他容器。在此示例中,由图像501表示的物体411-414可以属于托盘的一层,诸如层410。图像501可以由图像捕获设备441生成,该图像捕获设备441在此示例中可以位于物体411-414、421-424正上方。更具体地,图像501可以表示物体411-414的相应顶表面的外观,或更具体地,表示顶表面的(一个或多个)非遮挡部分的外观。换句话说,在此示例中,图像501可以表示捕获物体411-414的顶表面的顶透视图。在一些情况下,图像501可以更具体地表示视觉标记(如果有的话)的外观,这些视觉标记被印刷或以其他方式被布置在物体411-414的一个或多个表面上。视觉标记可以包括例如印刷在物体411的表面上的图片411a和印刷在物体412的表面上的徽标412a或其他图案。在一些情况下,图像501可以表示布置在一个或多个表面上的物理项的外观,诸如布置在物体414的表面上的胶带条414a。在实施例中,图像501可以是或包括二维(2d)像素阵列,其可以具有与由图像捕获设备441感测的信号的强度(诸如从物体411-414的相应表面(例如,顶表面)反射的光的强度)相关联的相应像素值(也被称为像素强度值)。在一些情况下,图像501可以是灰度图像。在一些情况下,图像501可以是彩色图像。

在实施例中,接收到的图像(例如,501)可以由计算系统101从图像捕获设备(例如441)获得。在实施例中,接收到的图像(例如,501)可能已经被存储在非暂时性计算机可读介质(例如,图2c至图2e的120或198)上,并且在步骤302中获得图像可能涉及从非暂时性计算机可读介质(例如,120或198)或任何其他来源检索(或更一般地,接收)图像(例如,501)。在一些情况下,图像(例如,501)可能已经由计算系统101诸如经由图2b的通信接口130从图像捕获设备(例如,441)接收,并且可能已经被存储在计算系统101的可以为图像(例如,501)提供存储空间的非暂时性计算机可读介质(例如,120)中。例如,图像(例如,501)可以被从图像捕获设备(例如,图4a/4b的441)接收,并且可以被存储在非暂时性计算机可读介质(例如,120)中。然后在步骤302中,图像(例如,501)可以由计算系统101的处理电路110从非暂时性计算机可读介质(例如,120)获得。

在一些情况下,接收到的图像(例如,501)可以被存储在计算系统101的非暂时性计算机可读介质(例如,120)中,并且可能已经由计算系统101的处理电路110基于从图像捕获设备(例如,441)接收到的信息预先生成。例如,处理电路110可以被配置为基于从图像捕获设备(例如,441)接收到的原始相机数据来生成图像(例如,501),并且可以被配置为将所生成的图像存储在计算系统101的非暂时性计算机可读介质(例如,120)中。然后,在步骤302中,图像可以由处理电路110接收(例如,通过从非暂时性计算机可读介质120检索图像)。如下面更详细地讨论的,计算系统101可以被配置为诸如通过确定物体的外观是否与各种物体设计的现有模板匹配来识别在图像(例如,501)中表示的物体(例如,411/412/413/414),并且可以被配置为如果计算系统101未识别物体,则基于物体的外观和/或物体的物理结构来生成新模板。生成新模板可以是物体注册过程的一部分,其中计算系统101确定并存储描述新遇到的物体的信息。

在实施例中,方法300可以包括步骤304,其中计算系统101的处理电路110从图像(例如,501)生成目标图像部分,其中该目标图像部分可以是图像中的与由图像(例如,501)表示的一个或多个物体中的一个物体(例如,图4a至图4c的411)相关联的一部分。例如,目标图像部分可以是图像的表示该物体(例如,411)的一部分(也被称为图像部分)。在一些情况下,步骤304也可以由图像访问模块202执行。

在一些情况下,步骤304可以涉及从在步骤302中获得的图像中提取目标图像部分。例如,图5b描绘了其中从图像501中提取表示物体411的目标图像部分511的示例。在一些情况下,步骤304可以在在步骤302中获得的图像表示多个物体(诸如形成盒子的堆叠中的一层的多个盒子)的上下文中执行。例如,图5a和5b中的接收到的图像501的整体可以表示多个物体,即物体411-414。在此示例中,物体411-414中的每一个物体可以由图像501的具体部分表示。在一些情况下,物体可以是由计算系统101标识的单个物体(例如,411),并且可以是用于执行物体识别或物体注册的目标,和/或用于机器人交互的目标(例如,由机器人161从托盘上卸载)。因此,该物体也可以被称为目标物体。在这样的情况下,表示目标物体的图像部分可以被称为目标图像部分。在一些情况下,目标图像部分(例如,511)可以是所接收到的图像(例如,501)的像素的区域,诸如矩形区域(例如,正方形区域)或具有任何其他形状的区域。如上所述,图5b描绘了表示物体411的目标图像部分511。在一些实施例中,目标图像部分511可以表示面向图像捕获设备(例如,图4b至图4c的441)和/或面对空间结构感测设备(例如,图4b至图4c的442)的物体表面(例如,目标物体411的顶表面)。在这样的实施例中,目标图像部分511可以代表特定视图,诸如物体411的顶视图。如下面更详细地讨论的,图6a还描绘了分别标识对象412、413和414的目标图像部分512、513和514。

在实施例中,目标图像部分(例如,511)可以包括一个或多个视觉细节,诸如线、角、图案或其组合。目标图像部分(例如,511)中的一个或多个视觉细节可以表示被印刷或以其他方式布置在由目标图像部分表示的物体(例如,411)上的视觉标记(如果有的话)。在实施例中,目标图像部分(例如,513)可以具有很少或没有视觉细节,并且可以看起来基本上是空白或均匀的。在一些情况下,这样的目标图像部分可以表示在其表面上没有视觉标记或具有很少视觉标记的物体。

在实施例中,如果步骤304涉及从接收到的图像(例如,501)中提取表示物体(例如,411)的目标图像部分(例如,511),则该提取可以基于标识图像(例如,501)内物体(例如,411)的边缘出现的位置,以及提取图像(例如,501)的由所标识的位置界定的区域,其中这些位置也可以被称为图像位置。在一些情况下,如果由图像(例如,501)表示的一个或多个物体(例如,411-414)也在空间结构感测设备(例如,图4b的442)的视野中,则计算系统101可以被配置为接收由空间结构感测设备(例如,442)生成的空间结构信息,并在来自空间结构信息的帮助下提取目标图像部分(例如,511)。例如,空间结构信息可以包括深度信息,并且计算系统101可以被配置为基于深度信息来确定物体(例如,411)的(一个或多个)边缘的位置,也被称为边缘位置。作为示例,边缘位置可以通过检测在深度上存在急剧变化或不连续的位置来确定。在此示例中,计算系统101可以被配置为将这些边缘位置映射到图像(例如,501)内的图像位置,并提取图像的由这些图像位置界定的区域,其中所提取的区域可以是目标图像部分(例如,501)。在一些情况下,图像位置可以是例如2d像素坐标,而边缘位置可以是3d坐标。计算系统101可以被配置为基于3d坐标来确定2d坐标。在题为“methodandcomputingsystemforprocessingcandidateedges”的美国申请no.16/791,024(attydkt.no.0077-0009us1/mj0049-us)中更详细地讨论了这样的确定,该美国申请的全部内容通过引用并入本文中。

如上所述,在一些情况下,在步骤302中接收到的图像(例如,图像501)可以表示多个物体。在其他情况下,在步骤302中接收到的图像可以仅表示一个物体(例如,仅一个盒子)。例如,在图像由计算系统101接收之前,它可能已经由图像捕获设备(例如,441)或另一设备进行了处理(例如,裁剪),以便仅表示特定物体(例如,物体411),并移除表示图像捕获设备(例如,441)的视野(例如,443)中任何其他物件的任何图像部分。在这样的示例中,在步骤302中接收到的图像可以仅表示该特定物体(例如,物体411),并且在步骤304中提取的目标图像部分可以与图像本身相同或基本相同。

在实施例中,图3的方法300还包括操作306,其中计算系统101的处理电路110确定将目标图像部分(例如,511)分类为有纹理的还是无纹理的。这样的分类可以指例如目标图像部分是否至少具有阈值水平的视觉纹理,或者目标图像部分是否缺少阈值水平的视觉纹理或者不具有视觉纹理(诸如通过在外观上基本上是空白的或均匀的)。作为示例,图5b的目标图像部分511可以被分类为有纹理的,而图6a的目标图像部分512-514可以被分类为无纹理的。如下面更详细地讨论的,目标图像部分可以被用于物体识别和/或物体注册。步骤306中的分类可以与物体识别相关,因为分类可以指示在标图像部分(例如,511)中存在多少视觉纹理(如果有的话),其中视觉纹理可以促进至少部分基于物体的视觉外观的物体识别操作。因此,步骤306中的分类可以影响如何执行物体识别。如下面还讨论的,该分类可以诸如通过影响模板被存储在哪里来影响如何执行物体注册。在一些情况下,步骤306可以由图像分类模块204执行。

在实施例中,将图像或图像部分分类为有纹理的或无纹理的可以采用在题为“methodandsystemforperformingimageclassificationforobjectrecognition”的第_______号美国专利申请(attydkt.mj0051-us/0077-0011us1)中讨论的一种或多种技术,该美国专利申请的全部内容通过引用并入本文中。例如,执行分类可以涉及基于目标图像部分生成一个或多个位图(bitmap)(也被称为掩码(mask)),其中该一个或多个位图可以指示目标图像部分是否具有用于特征检测的视觉特征,或者目标图像部分的像素强度值之间是否存在空间变化。在一个示例中,该一个或多个位图可以包括例如描述子位图、边缘位图和/或标准偏差位图。

在一些实现方式中,描述子位图可以提供热图或概率图,用于标识目标图像部分的哪些区域(一个或多个)被一个或多个描述子占据(也称为一个或多个描述子区域),或用于指示一个或多个描述子是否存在于目标图像部分中或被从目标图像部分中检测到。描述子位图可以由计算系统101基于例如检测目标图像部分中的描述子关键点(如果有的话)来生成,其中描述子关键点可以指示描述子区域的中心位置或其他位置。在一些情况下,可以使用诸如哈里斯角点检测算法、尺度不变特征变换(sift)算法、加速鲁棒特征(surf)算法、加速分割测试特征(fast)检测算法、和/或定向的fast和旋转二进制鲁棒独立基本特征(orb)算法之类的技术来执行关键点检测。计算系统101还可以被配置为基于与描述子关键点检测相关联的比例参数值来确定描述子区域(如果有的话)的相应大小。在一些情况下,计算系统可以基于由描述子位图标识的描述子的数量来执行分类。

在一些实现方式中,边缘位图可以是热图或概率图,用于指示目标图像部分的哪些区域包含一个或多个边缘,或者用于指示一个或多个边缘是否存在于目标图像部分中或被从目标图像部分中被检测到。计算系统101可以使用诸如sobel边缘检测算法、prewitt边缘检测算法、laplacian边缘检测算法、canny边缘检测算法之类的技术或任何其他边缘检测技术来检测目标图像部分中的边缘(如果存在任何边缘)。

在一些实现方式中,标准偏差位图可以描述目标图像部分中的像素周围的像素强度值的局部变化,或者可以指示目标图像部分中的像素周围的像素强度值缺少变化。例如,计算系统101可以通过针对目标图像部分的每个像素确定图像区域中的围绕该像素的像素强度值之间的标准偏差来生成标准偏差位图。在一些情况下,计算系统101可以基于标准偏差位图的特性(诸如其最大值、最小值或平均值)来执行分类。

在一些实现方式中,计算系统101可以在步骤306中基于一个或多个位图执行分类。例如,计算系统101可以组合描述子位图、边缘位图和/或标准偏差位图以生成融合位图和/或纹理位图。在一些情况下,还可以以考虑照明条件对目标图像部分(例如,511)的一个或多个区域的影响的方式来生成融合位图或纹理位图。融合位图或纹理位图可以标识目标图像部分中的一个或多个有纹理的区域或一个或多个无纹理的区域。在这样的情况下,计算系统101可以被配置为基于目标图像部分中的一个或多个有纹理的区域(如果有的话)的总面积或目标图像部分中一个或多个无纹理的区域(如果有的话)的总面积来将目标图像部分(例如,511)分类为有纹理或无纹理的。

返回参考图3,方法300还可以包括步骤308,其中计算系统101的处理电路110选择模板存储空间。更具体地,模板存储空间可以从上面讨论的第一模板存储空间181和第二模板存储空间182中选择(也被称为作为所选择的模板存储空间的感测的结构信息),其中,该选择可以基于目标图像部分被分类为有纹理的还是无纹理的。如上所述,相对于第二模板存储空间182,第一模板存储空间181可以被更频繁地清理。例如,第一模板存储空间181可以充当高速缓存或其他短期模板存储空间,而第二模板存储空间182可以充当长期模板存储空间,诸如其中模板被永久存储或在被移除之前存储了很长时间(例如,数月或数年)的模板存储空间。在此实施例中,第一模板存储空间181中的信息或其他内容可以比第二模板存储空间182中的信息或其他内容更具有临时性。作为示例,存储在第一模板存储空间181中的模板可以专用于当前任务(诸如将当前在托盘上的盒子卸垛),并且可以在该任务完成之后被从第一模板存储空间181中清理。在这样的示例中,第二模板存储空间182中的模板可以被认为不仅与当前任务相关,而且与后续任务相关。因此,在当前任务完成之后,第二模板存储空间182中的模板可以保留在第二模板存储空间182中,使得第二模板存储空间182中的模板仍然可以被用于在后续任务期间促进物体识别。换句话说,第二模板存储空间182中的模板可以被重用于其他任务,而第一模板存储空间181中的模板可以专用于特定任务并且不被重用于其他任务。

在实施例中,响应于计算系统101将目标图像部分(例如,512/513/514)分类为无纹理的确定,在步骤308中选择的模板存储空间可以是第一模板存储空间181,并且响应于计算系统101将目标图像部分(例如,511)分类为有纹理的确定,在步骤308中选择的模板存储空间可以是第二模板存储空间182。如果第一模板存储空间181用作高速缓存或其他短期模板存储空间,并且第二模板存储空间182用作长期模板存储空间,则步骤308中的选择可以是在该短期模板存储空间和该长期模板存储空间之间的。在示例中,如果目标图像部分被分类为无纹理的,则执行物体识别可以涉及将目标图像部分与短期模板存储空间中的现有模板进行比较。在此示例中,执行物体注册(如果执行的话)可能涉及基于目标图像部分生成新的无纹理的模板并将该无纹理的模板存储在短期模板存储空间中。在此示例中,如果目标图像部分被分类为有纹理的,则执行物体识别可能涉及将目标图像部分与长期模板存储空间中的现有模板进行比较,并且执行物体注册(如果执行的话)可能涉及基于目标图像部分生成新的有纹理的模板,并将该有纹理的模板存储在长期模板存储空间中。

如上所述,使用短期模板存储空间和长期模板存储空间的组合可以提供减少用于存储物体识别操作中所使用的模板所需的存储资源并且促进以快速和高效的方式执行物体识别操作的技术优势。在实施例中,物体识别可以基于尝试将图像捕获设备捕获的视觉细节或其他视觉信息与模板描述的视觉细节或其他视觉信息进行匹配。在一些情况下,目标图像部分中视觉纹理的存在或视觉纹理的水平可以指示可以被用于用来执行物体识别的视觉信息的水平。高水平的视觉纹理可以指示用于执行物体识别的高水平视觉信息,而低水平的视觉纹理或缺少视觉纹理可以指示用于执行物体识别的低水平视觉信息。因此,有纹理的目标图像部分对于执行物体识别可能是有价值的,因为它可以提供用于执行物体识别的高水平的视觉信息。在一些情况下,针对执行物体识别,无纹理的目标图像部分可能不如有纹理的图像部分有价值,但对于执行物体识别仍可能具有一定的用处。例如,如果在诸如将盒子的堆叠从托盘上卸垛的任务期间执行物体识别,则托盘上的一些或全部盒子可能存放来自相同零售商或制造商的相同商品,并且因此可能具有相同的视觉设计,或更一般地,具有相同的物体设计。例如,图4b中的物体412可以具有与图7a中的物体422相同的物体设计,并且更具体地,具有相同的视觉设计和物理设计。因此,即使目标图像部分被分类为无纹理的,基于表示这些盒子中的一个盒子的目标图像部分生成模板仍然是有用的,因为该无纹理的模板很可能与相同托盘上的另一个盒子的外观匹配。在一些情况下,无纹理的模板可以包括视觉特征描述和物体结构描述两者,以便可以在物体识别操作期间检查两种类型的信息以提高物体识别的准确性。但是,为有纹理的目标图像部分和无纹理的目标图像部分两者生成模板可能增加执行物体识别和/或执行物体注册的成本。在一些情况下,增加的成本可能包括增加的存储模板所需的存储资源,因为无纹理的模板增加被存储的模板的总数。在一些情况下,增加的成本可能包括较慢的性能,因为计算系统101可能必须搜索更多数量的模板,以试图找到与特定物体的外观匹配的模板。如果生成大量无纹理的模板,则可能会增加这些无纹理的模板当中的一个与特定物体的外观错误地匹配的可能性,特别是在这些无纹理的模板包括类似的视觉特征描述或其他视觉信息的情况下。

在实施例中,本公开的一个方面涉及通过使用专门用于存储无纹理模板的第一模板存储空间181以及专门用于存储有纹理的模板的第二模板存储空间182来解决上述问题。第一模板存储空间181可以用作高速缓存或其他短期模板存储空间,而第二模板存储空间可以用作长期模板存储空间。如上所述,被分类为无纹理的目标图像部分可以被用于生成存储在第一模板存储空间181中的新的无纹理的模板,和/或用于与第一模板存储空间181中的现有的无纹理的模板进行比较。类似地,被分类为有纹理的目标图像部分可以被用于生成存储在第二模板存储空间182中的新的有纹理的模板,和/或用于与第二模板存储空间182中的现有的有纹理的模板进行比较。在一些实现方式中,计算系统101可以被配置为将无纹理标志与无纹理的模板中的每一个相关联,以便将它们标记为无纹理的。在此实施例中,第二模板存储空间182可以被保留用于存储有纹理的模板,这可以限制在其中的模板总数。这样的结果可以限制存储有纹理的模板所需的存储资源。第二模板存储空间182中的有限的模板总数还可以限制计算系统101必须搜索以找到与物体的外观匹配的模板的数量,这可以带来物体识别操作的更快性能。

还如上所述,第一模板存储空间181可以是比第二模板存储空间182更频繁地被清理的短期存储空间。例如,第一模板存储空间181可以存储基于具体任务中所涉及的物体(诸如具体的卸垛任务所涉及的盒子)而生成的无纹理的模板。如果卸垛任务涉及将所有容器或其他物体从托盘移动到期望的目的地,则该任务可以称为卸垛循环。在这样的示例中,在卸垛循环完成之后,无纹理的模板可以被从第一模板存储空间181清理。如上所述,无纹理的模板对于将在同一卸垛循环中涉及的物体卸垛是有用的,这是例如因为这些盒子或其他物体中的一些或全部可能具有共同的视觉设计,或更一般地,具有共同的盒子设计。这些无纹理的模板可能对后续任务(诸如在另一个卸垛循环期间将另一堆盒子卸垛)有较低的有用性或相关性,因为来自两个不同卸垛循环的盒子可能不太可能共享共同的视觉设计。因此,在较早的任务完成时或之后,无纹理的模板可以被从第一模板存储空间181或任何其他模板存储空间清理。从第一模板存储空间181清理模板可以涉及删除模板,诸如通过删除指针或对模板的引用,或者通过取消分配第一模板存储空间181的由该模板占据的(一个或多个)部分,以便模板可以被覆盖。在一些情况下,当后续的卸垛循环或其他任务开始时,第一模板存储空间181可以为空或标记为空,并且在后续的卸垛循环期间存储在第一模板存储空间181中的任何无纹理的模板可以特定于该循环中涉及的物体。通过限制第一模板存储空间181中模板的总数,清理第一模板存储空间181可以减少第一模板存储空间181所需的存储资源。通过减少当试图找到与无纹理的目标图像部分或其他目标图像部分的匹配时计算系统101必须搜索的无纹理的模板的数量,清理第一模板存储空间181还可以导致物体识别操作的更快性能。在一些情况下,与无纹理标志相关联的所有模板可以被清理,而不管它们是否在第一模板存储空间181中。在一些示例中,第一模板存储空间181可以一次最多存储几个模板。第一模板存储空间181中的小数量的模板还可以减小计算系统101错误地将这些模板之一标识为与特定目标图像部分的匹配的可能性。

在实施例中,图3的方法300可以包括步骤310,其中计算系统101的处理电路110可以执行物体识别,该物体识别可以基于在步骤304中生成的目标图像部分和在步骤308中选择的模板存储空间。在一些情况下,步骤310可以由物体识别模块207执行。物体识别的结果可以被用于例如控制机器人与由目标图像部分表示的物体(例如,物体411)的交互,或确定是否(作为例如执行库存管理的一部分)执行物体注册,如下面更详细讨论的。

在一些情况下,执行步骤310可以涉及确定所选择的模板存储空间是否已经包括与目标图像部分匹配的模板。如果所选择的模板存储空间没有与目标图像部分匹配的模板,则计算系统101可以通过基于目标图像部分生成模板来执行物体注册操作。在一些情况下,仅当匹配失败时才生成模板。例如,图5c描绘了在步骤306中被分类为有纹理的目标图像部分511以及在步骤308中选择第二模板存储空间182的示例。在此示例中,将目标图像部分511与第二模板存储空间182中的现有模板进行比较,该第二模板存储空间可以用作存储有纹理的模板的长期模板存储空间。在一些实现方式中,模板存储空间182(和/或第一模板存储空间181)中的模板可以包括视觉特征描述,该视觉特征描述描述了与特定的视觉设计(或者更一般地与特定的物体设计)相关联的一个或多个视觉特征(如果有的话)。该一个或多个视觉特征可以指与视觉设计相关联的视觉细节或视觉标记的存在,或指视觉细节或视觉标记的特征。在一些情况下,视觉特征描述可以包括再现(reproduce)这样的视觉细节的图像信息,或者可以包括对这样的视觉细节进行编码的一个或多个描述子。在这样的实现方式中,计算系统101可以通过确定模板中包括的视觉特征描述是否与目标图像部分(例如,511)中的视觉细节(如果有的话)相匹配来执行物体识别操作。例如,计算系统101可以被配置为生成描述目标图像部分(例如,511)的描述子,并确定这些描述子是否与所选择的模板存储空间(例如,182)中的任何模板的视觉特征描述匹配。在一些情况下,如果目标图像部分与现有模板之一匹配,则匹配的模板可以被用于生成检测假设,该检测假设可以是关于目标图像表示什么物体、物体类型或物体设计的假设。

如图5c所示,计算系统101可以将目标图像部分511与第二模板存储空间182中的有纹理的模板进行比较,因为目标图像部分511被分类为有纹理的。在实施例中,可以仅将目标图像部分511与第二模板存储空间182中的模板进行比较。在另一个实施例中,如图5d所示,计算系统101可以将目标图像部分511与所有现有的存储模板进行比较,包括第二模板存储空间182中的有纹理的模板和第一模板存储空间181中的无纹理的模板(如果存在的话)。

在一些情况下,如果目标图像部分与所选择的模板存储空间182中的现有模板之一匹配,则匹配的模板可以包括物体结构描述,该物体结构描述描述了由目标图像部分(例如,511)表示的物体的物理结构。例如,物体结构描述可以描述物体(例如,411)的物体大小或物体形状。在一些情况下,匹配的模板中的物体结构描述可以被用于计划和/或控制机器人与物体的交互,如下面更详细地讨论的。

在一些情况下,如果计算系统101的处理电路111确定所选择的模板存储空间不具有与目标图像部分(例如,511)匹配的模板,则计算系统101可以通过基于目标图像部分(例如,511)生成新模板来执行物体注册,并来使得新模板被存储在所选择的模板存储空间中。在一些情况下,响应于确定第一模板存储空间181和/或第二模板存储空间182中没有一个模板与目标图像部分(例如,511)匹配,可以生成新模板。图5c至图5e示出了目标图像部分511与第二模板存储空间182中的任何现有模板(模板1至n)都不匹配,或者与任何现有的存储模板(包括第一模板存储空间181和第二模板存储空间182两者中的模板)都不匹配的示例。如图5e所示,计算系统101可以生成新的有纹理的模板,即模板n+1,其描述与目标图像部分511相关联的视觉设计,并且更一般地描述用于由目标图像部分511表示的物体411的物体设计。例如,模板n+1可以描述被印刷在物体411顶表面上的图片411a。更具体地,该新模板可以再现出现在目标图像部分511中的图片411a或其他视觉标记,或者可以包括描述图片411a的各种视觉特征的描述子。新模板可以存储在可以充当长期模板存储空间的第二模板存储空间182中。在一些情况下,如果在方法300中使用空间结构感测设备(例如442)来生成描述与物体411相关联的结构的感测的结构信息,则计算系统101可以基于所感测的结构信息来生成物体结构描述,并在新模板中包括该物体结构描述。物体结构描述可以描述例如物体411的物体大小或物体形状。

在一些情况下,如果计算系统101确定所选择的模板存储空间不具有与目标图像部分(例如,511)匹配的模板,或者如果计算系统101确定模板存储空间181、182中没有一个具有与目标图像部分匹配的模板,则计算系统111可以被配置为尝试检测最小可行区域(mvr,minimumvariableregion)。在题为“automatedpackageregistrationsystems,devices,andmethods”的美国专利申请no.16/443,743中更详细地讨论了最小可行区域,该美国专利申请的全部内容通过引用并入本文中。在一些情况下,响应于确定目标图像部分(例如,511)被分类为有纹理的以及确定所选择的模板存储空间(例如,182)中没有匹配的模板或者在所有模板存储空间181、182中都没有匹配模板,可以执行mvr检测。mvr检测可以在目标图像部分上执行以估计物体的边缘或角的位置,其中该位置可以被用于例如控制机器人与物体的交互和/或生成上面讨论的新模板。更具体地,在实施例中,计算系统101可以检测目标图像部分(例如,511)中的角或边缘中的至少一个,并且确定至少由该角或该边缘限定的区域。例如,计算系统101可以确定角或边缘出现在目标图像部分(例如,511)或接收到的图像(例如,501)中的位置处的像素坐标,并确定该目标图像部分的或者该图像的被这些边缘或角包围的区域。所确定的区域可以被用于生成上面讨论的新模板,和/或诸如通过确定用于控制机器人运动的移动命令来计划机器人与物体的交互。

如上所述,目标图像部分511在一些情况下可以表示图像捕获设备(例如,441)的视野(例如,443)中的多个物体之一。在一些情况下,计算系统101可以被配置为使得被添加到第一模板存储空间181或第二模板存储空间182中的每个新模板基于针对多个物体中的对应物体的相应目标图像部分。在实施例中,可以针对在步骤302中接收到的每个图像(例如,501)多次执行本文所述的各种步骤(例如,304-310)。例如,可以针对接收到的表示对象411-414的图像501中表示的多个物体中的每个物体执行步骤304-310。

更具体地,涉及图5a至图5e的以上讨论涉及对表示物体411的目标图像部分511执行步骤304-310。图6a描绘了步骤304被应用于生成分别表示物体412、413和414的目标图像部分512、513和514。目标图像部分512-514可以通过步骤304的几次迭代生成,或者可以在一次迭代中生成。在一些情况下,目标图像部分512-514可以从图像501中提取。计算系统101还可以通过将目标图像部分512-514分类为有纹理的或无纹理的来对目标图像部分512-514执行步骤306。在一些实现方式中,计算系统101可以将目标图像部分512-514分类为无纹理的,因为它们可能没有视觉纹理,或者可能没有限定水平的视觉纹理。作为分类的结果,计算系统101可以通过为目标图像部分512-514中的每一个选择第一模板存储空间181来执行步骤308,并且可以在步骤310中基于所选择的模板存储空间(即第一模板存储空间181)来执行物体识别。

图6b描绘了对目标图像部分512或更一般地对由目标图像部分512表示的物体412执行物体识别和/或物体注册的示例。在实施例中,该物体识别操作可以涉及计算系统101确定所选择的第一模板存储空间181是否具有与目标图像部分512相匹配的模板。在此示例中,计算系统101可以确定第一模板存储空间181为空,并且因此不具有与目标图像部分512相匹配的模板。图6b中的第一模板存储空间可能为空,因为它可能已在先前的机器人任务(例如,先前的卸垛循环)完成后被清理。在一些实施例中,计算系统101可以仅在第一模板存储空间181中搜索目标图像部分512的匹配模板。在其他实施例中,计算系统101可以在第一模板存储空间181和第二模板存储空间182两者中搜索目标图像部分512的匹配模板。在图6b的示例中,计算系统101可以确定不存在目标图像部分512的匹配模板,并且还可以通过基于目标图像部分512生成新的无纹理的模板并使该新的无纹理的模板作为模板1被存储在第一模板存储空间181中(例如,在模板高速缓存中),来执行物体注册操作,如图6c中所示。该模板可以包括例如描述物体412的外观或更具体地描述目标图像部分512的视觉特征描述。例如,视觉特征描述可以包括目标图像部分512本身,或者包括对目标图像部分512的视觉细节进行编码的描述子。在一些实现方式中,如果在方法300中使用空间结构感测设备442,则计算系统101可以接收由空间结构感测设备442生成的空间结构信息以生成描述由目标图像部分512表示的物体412的结构(例如,物体大小或物体形状)的物体结构描述。在这样实现方式中的计算系统101可以将该物体结构描述包括为新模板的一部分。

图6d描绘了对目标图像部分513或更一般地对由目标图像部分513表示的物体413执行物体识别的示例。在图6d的示例中,第一模板存储空间181可以包括模板1(其是基于目标图像部分512生成的),并且计算系统101可以被配置为确定例如模板1中的视觉特征描述是否与目标图像部分513匹配。如上所述,计算系统101可以尝试仅从第一模板存储空间181中找到匹配模板,或者可以替代地尝试从第一模板存储空间181和第二模板存储空间182中找到匹配模板。在此示例中,计算系统101可以确定目标图像部分513与模板1不匹配,或更一般地,不存在匹配模板。作为结果,计算系统101可以通过基于目标图像部分513生成新的无纹理的模板来执行物体注册,并且将新模板作为模板2存储在第一模板存储空间181中,如图6e所示。尽管模板2描述了很少或没有描述视觉细节,但它仍可以描述与其对应物体(例如,413)相关联的一些细节,这对于稍后与其他物体进行比较可能是有用的。例如,模板2可以描述与该对应物体的顶表面或其他表面相关联的纵横比。纵横比可以描述例如该表面的长度和宽度之间的比率。计算系统可以被配置为稍后将模板中描述的此纵横比与其他物体的纵横比进行比较。

类似地,图6f描绘了对目标图像部分514或更一般地对由目标图像部分514表示的物体414执行物体识别的示例。更具体地,计算系统101可以诸如通过确定目标图像部分514是否与第一模板存储空间181中的现有模板1和模板2匹配,来确定是否存在目标图像部分514的匹配模板。在此示例中,计算系统101可以确定两个模板都不与目标图像部分514匹配。作为结果,计算系统101还可以通过基于目标图像部分514生成新的无纹理的模板来执行物体注册,并将该新模板作为模板3存储在第一模板存储空间181中,如图6g所示。

如上所述,计算系统101可以在无纹理的模板(诸如图6g中的模板1、2或3)中包括物体结构描述,作为视觉特征描述的替代或附加。在一些情况下,确定无纹理的目标图像部分(例如,513/514)是否与无纹理的模板(例如,模板1或模板2)匹配可能涉及确定结构中是否存在匹配,或更具体地,是否存在对应物体(例如,413/414)的结构与特定模板中物体结构描述之间的匹配。例如,计算系统101可以既提取表示物体的目标图像部分(例如,514)又接收关于该物体(例如,414)的感测的结构信息。在这样的示例中,计算系统101可以通过确定物体的结构(如在感测的结构信息中所述)是否与模板中的物体结构描述相匹配来确定物体(例如414)是否与模板(例如,图6f的模板1或模板2)匹配。在一些情况下,基于物体结构描述来确定匹配可以提高物体识别的鲁棒性或可靠性。更具体地,因为无纹理的模板可能已经基于具有相对少的视觉细节的图像部分生成,所以仅基于视觉外观来执行物体识别可能缺乏最佳的鲁棒性或可靠性。因此,物体识别可以替代地或附加地基于由物体结构描述所描述的物理结构,诸如通过确定物体(例如,414)的目标图像部分(例如,514)是否与模板中的视觉特征描述相匹配以及所感测的物体(例如,414)的结构信息是否与模板中的物体结构描述相匹配二者。

在实施例中,如果计算系统101正在尝试搜索由有纹理的目标图像部分(例如,511)表示的物体(例如,411)的匹配模板,则计算系统101可以尝试找到匹配物体的外观和物体的物理结构两者的有纹理的模板,或者可以确定仅匹配外观就足够了。在一些情况下,即使当不考虑物体的物理结构时,有纹理的目标图像部分(例如,511)和有纹理的模板也可以包括足够的视觉细节,以允许仅基于物体的视觉外观来执行准确的物体识别。

在实施例中,计算系统101可以诸如通过将模板中的模板类型参数设置为指示这些目标是无纹理的值,来将每个无纹理的模板与无纹理标志相关联。作为示例,图6h描绘了包括在第一模板存储空间181中的模板1至模板3中的每一个模板中的无纹理标志。在一些情况下,当卸垛循环或其他任务完成时,计算系统101可以被配置为搜索并删除具有无纹理标志的所有模板。

图6i描绘了涉及无纹理标志的另一实施例。尽管以上实施例涉及第一模板存储空间181(例如,模板高速缓存)和第二模板存储空间182(例如,长期模板数据库),但是图6i示出了其中第一模板存储空间181和第二模板存储空间182被单个模板存储空间183(例如,单个文件或单个数据库)替代的替代实施例。在此替代实施例中,方法300可以被修改为省略步骤308的选择,并且可以基于模板存储空间183中的模板来执行步骤310的物体识别。例如,计算系统101可以在模板存储空间183中搜索与目标图像部分(例如,511)匹配的模板。如图6i所示,计算系统101可以在物体注册期间将新生成的模板存储在模板存储空间183中,并且在那些无纹理的模板中包括无纹理标志。当卸垛循环或其他任务完成时,计算系统101可以搜索并删除模板存储空间183中具有无纹理标志的所有模板。

返回图3,在实施例中方法300还可以包括步骤312,其中计算系统101的处理电路110生成用于引起机器人与由步骤304的目标图像部分表示的至少一个物体(诸如物体411-414中的一个)进行交互的移动命令。在一些情况下,步骤312可以由运动计划模块208执行。在实施例中,移动命令可以被用于机器人任务的运动计划,诸如从托盘拾取盒子或其他物体并将该物体移动到期望的目的地。移动命令可以基于来自物体识别的结果而生成。例如,如果物体识别的结果指示不存在与模板存储空间中的现有模板(如果有的话)的匹配,并且导致执行物体注册以基于物体的外观生成新模板,则移动命令可以基于该新模板。作为示例,如果物体411是涉及机器人461拾取物体411的卸垛任务的一个目标,则计算系统101可以基于图5e中的基于物体411或者更具体地基于其相关联的目标图像部分511的模板n+1而生成移动命令。计算系统101可以输出该移动命令,该移动命令可以被机器人461接收以与物体411交互。作为另一示例,如果物体412是该卸垛任务的另一个目标,则计算系统101可以基于图6c至图6i中的基于物体412或更具体地基于其相关联的目标图像部分512的模板1而生成移动命令。在实施例中,移动命令可以是基于新模板中的物体结构描述(如果有的话)而生成的。在一些情况下,如果物体识别和/或物体注册导致基于mvr检测来标识区域,则移动命令可以基于所标识的区域。例如,可以生成移动命令以引起机器人的末端执行器移动到与所标识的区域相对应的位置。

在实施例中,如果物体识别的结果是所选择的模板存储空间(例如,181/182)中的模板与物体的外观或更具体地与其目标图像部分之间存在匹配,则计算系统101可以被配置为基于匹配模板而生成移动命令。在一些情况下,该移动命令可以基于匹配模板中的物体结构描述而生成。

在实施例中,如果计算系统101生成移动命令以引起机器人(例如,461)与由目标图像部分表示的物体进行交互,则该移动命令可以基于目标图像部分是被分类为有纹理的还是无纹理的。例如,如果基于无纹理的目标图像部分执行步骤310中的物体识别,则相对于其中目标图像部分是有纹理的情况,可以认为物体识别的置信度较低。在这样的情况下,在步骤312中,计算系统101可以以如下方式来生成移动命令,即,当机器人试图拾物体取或以其他方式与物体交互时限制机器人(例如,461)的速度,使得机器人交互更加小心地进行。

在实施例中,如果在物体由于在步骤312中生成的移动命令而被机器人(例如,461)移动之后图像捕获设备(例如,441)生成更新后的图像,则计算系统301可以被配置为基于更新后的图像重复步骤302-312中的一些或全部。在一些情况下,每次移动物体时都可以生成更新后的图像。例如,图7a描绘了物体412(在图4a中)已经被机器人461移动到图像捕获设备441的视野443之外的目的地的示例。在物体411已经被移动之后,图像捕获设备441可以生成更新后的图像502(其在图7b中示出),其表示剩余的物体,即物体411、413、414和421-424。

在实施例中,计算系统101可以再次执行步骤302和304以接收更新后的图像502,并生成目标图像部分522,该目标图像部分522可以是图像502的表示物体422的一部分。然后,计算系统101还可以通过将目标图像部分522分类为有纹理的或无纹理的,通过基于该分类而选择模板存储空间,并通过基于所选择的模板存储空间执行物体识别,来再次执行步骤306-310。作为示例,目标图像部分522可以被分类为无纹理的。作为结果,计算系统101可以选择第一模板存储空间181,其可以包括来自图6g或6h的三个模板。如图7c所示,计算系统101可以被配置为执行物体识别操作,该物体识别操作确定目标图像部分522是否与第一模板存储空间181的模板中的视觉特征描述和/或物体结构描述匹配。在一些情况下,此确定不限于第一模板存储空间181,并且计算系统101可以确定目标图像部分522是否与第一模板存储空间181中的模板或第二模板存储空间182中的模板匹配。在图7c的示例中,计算系统101可以确定目标图像部分522与第一模板存储空间181中的模板1匹配。作为该匹配的结果,物体注册操作可以被省略,使得没有新的模板生成。在一些情况下,计算系统101可以通过基于物体识别的结果生成移动命令来重复步骤312。例如,如果模板1与目标图像部分522匹配并且包括描述特定物体结构的物体结构描述,则移动命令可以基于该物体结构描述而生成。

在一些情况下,每次物体的整个层都已被移动时,可以生成上述更新后的图像。例如,图8a示出了图4a的堆叠中的层410中的物体411-414已被机器人461移动到图像捕获设备441的视野443之外的目的地的示例。图8b示出了更新后的图像503,其表示保留在视野443中的层420的物体421-424。在实施例中,计算系统101可以被配置为从更新后的图像503中提取一个或多个目标图像部分,诸如目标图像部分521-524。提取的目标图像部分521-524可以分别表示物体421-424。在此实施例中,计算系统101可以被配置为针对目标图像部分521-524中的每一个来重复步骤304-312中的一些或全部。例如,图8c描绘了目标图像部分521-523中的每一个被分类为无纹理的示例,这可以使计算系统101选择第一模板存储空间181以基于这些目标图像部分来执行物体识别。在一些情况下,物体识别可以导致计算系统101确定目标图像部分522匹配模板1,并且目标图像部分523匹配模板3。在一些情况下,诸如通过确定从目标图像部分521确定的纵横比与模板2中描述的纵横比相匹配,计算系统101可以确定目标图像部分521匹配模板2。

图8d还描绘了目标图像部分524被分类为有纹理的示例。作为结果,计算系统101可以选择第二模板存储空间182以执行物体识别。在此示例中,物体识别可以导致计算系统101确定目标图像部分524与第二模板存储空间182中的模板n+1匹配(这可以使计算系统101跳过对目标图像部分524执行物体注册操作)。

在实施例中,用于物体识别的在第一模板存储空间181和第二模板存储空间182之间的选择可以影响对于物体注册操作的新模板(如果有的话)被存储的位置,和/或无纹理标志是否被包括在新模板中。基于现有模板而执行的物体识别可以仅使用所选择的模板存储空间来执行,或者可以使用第一模板存储空间181和第二模板存储空间182两者来执行。例如,图8e描绘了目标图像部分521-524的物体识别涉及在第一模板存储空间181和第二模板存储空间182二者中搜索匹配的模板的实施例。

如上所述,第一模板存储空间181可以是相对于第二模板存储空间182被更频繁地清理的短期模板存储空间。在一些情况下,计算系统101可以被配置为在机器人任务完成时或在完成后不久使第一模板存储空间181被清理而没有模板。例如,图9a示出了卸垛循环完成的情况。图9b示出了在这样的情况下由图像捕获设备441生成的图像504。在此示例中,属于物体的托盘的所有物体411-414、421-424可能已经被机器人461拾取并被移动到期望的目的地。如图9a和9b所示,可能没有盒子或其他目标物体保留在图像捕获设备441的视野443中。在一些情况下,计算系统101可以被配置为:当当前没有剩余用于与机器人461进行机器人交互的物体时,确定卸垛任务或其他机器人任务完成。响应于这样的确定,计算系统101可以被配置为清理第一模板存储空间181而不清理第二模板存储空间182。例如,图9c描绘了计算系统101使得第一模板存储空间181(在图8c中)中的模板1至模板3被从该第一模板存储空间181清理,而第二模板存储中的模板1至模板n+1可以保留在该模板存储空间中。如上所述,可以通过移除指针或对模板的引用来清理模板,使得它们不再是可访问的。在一些情况下,可以通过取消分配模板存储空间181中的由模板占用的一部分来清理模板,以便可以用其他数据覆盖被取消分配的部分。图9d示出了无纹理的模板被清理的另一示例。图9d的示例适用于第一模板存储空间181和第二模板存储空间182被单个模板存储空间183替换的替代实施例。在此示例中,计算系统101可以在模板存储空间183中搜索包括无纹理标志(其在图6i中示出)的所有模板,并且可以删除这些模板。

在实施例中,图3的方法300可以省略该图中的一个或多个步骤,和/或可以添加一个或多个其他步骤。例如,方法300在一些情况下可以包括对物体识别和/或物体注册进行验证的步骤。这样的验证步骤可以在步骤310中的物体识别之后和/或步骤312中的生成移动命令之前执行。在一些情况下,方法300可以被修改为省略步骤312。在一些情况下,方法300可以包括基于在步骤310中的物体识别的结果和/或基于物体注册来执行库存管理的步骤。这样的步骤可以例如跟踪什么物体或物体类型已经在图像捕获设备(例如,441)和/或空间结构感测设备(例如,442)的视野中。

各种实施例的附加讨论

实施例1涉及一种包括通信接口和至少一个处理电路的计算系统。所述通信接口被配置为与机器人以及与图像捕获设备通信。所述至少一个处理电路被配置为当一个或多个物体在或已经在所述图像捕获设备的视野中时执行一种方法,所述方法包括获得用于表示所述一个或多个物体的图像,其中所述图像是由所述图像捕获设备生成的。所述方法还包括:从所述图像生成目标图像部分,其中所述目标图像部分是所述图像的与所述一个或多个物体中的物体相关联的一部分;以及确定将所述目标图像部分分类为有纹理的还是无纹理的。所述方法还包括基于所述目标图像部分被分类为有纹理的还是无纹理的,从第一模板存储空间和第二模板存储空间中选择模板存储空间,其中,相对于所述第二模板存储空间,所述第一模板存储空间被更频繁地清理,其中,响应于确定将所述目标图像部分分类为无纹理的,所述第一模板存储空间被选择作为所述模板存储空间,并且,响应于确定将所述目标图像部分分类为有纹理的,所述第二模板存储空间被选择作为所述模板存储空间;基于所述目标图像部分和所选择的模板存储空间,执行物体识别。所述方法附加地包括生成用于引起机器人与至少所述物体交互的移动命令,其中所述移动命令是基于来自所述物体识别的结果而生成的。

实施例2包括实施例1的计算系统。在此实施例中,所述至少一个处理电路被配置为通过确定所选择的模板存储空间是否包括与所述目标图像部分匹配的模板来执行所述物体识别。

实施例3包括实施例1或2的计算系统。在此实施例中,所述至少一个处理电路被配置为通过确定所选择的模板存储空间是否包括与所述目标图像部分匹配的模板来执行所述物体识别。即,所述处理电路可以检测所选择的模板存储空间是否含有具有匹配的视觉特征描述的任何模板。

实施例4包括实施例1-3中任一项的计算系统。在此实施例中,所述通信接口被配置为与空间结构感测设备通信,并且其中所述至少一个处理电路被配置为接收用于描述与所述物体相关联的物体结构的感测的结构信息,其中所述感测的结构信息是由所述空间结构传感测设备生成的。此外,所述至少一个处理电路被配置为:响应于确定将所述目标图像部分分类为无纹理的,还通过确定所选择的模板存储空间是否包括具有与所述感测的结构信息匹配的物体结构描述的一个或多个模板来执行所述物体识别。

实施例5包括实施例1-4中任一项的计算系统。在此实施例中,所述至少一个处理电路被配置为:响应于确定所选择的模板存储空间包括与所述目标图像部分匹配的所述模板,基于所述模板生成所述移动命令。

实施例6包括实施例1-5中任一项的计算系统。在此实施例中,所述至少一个处理电路被配置为:响应于确定所选择的模板存储空间不包括与所述目标图像部分匹配的模板,通过基于所述目标图像部分生成新模板来执行物体注册,并使所述新模板被存储在所选择的模板存储空间中。因此,如果所选择的模板存储空间不具有与所述目标图像部分匹配的模板,则可以执行所述物体注册。

实施例7包括实施例6的计算系统。在此实施例中,所述至少一个处理电路被配置为基于所述新模板生成所述移动命令。

实施例8包括实施例6或7的计算系统。在此实施例中,所述至少一个处理电路被配置为还通过以下步骤来执行所述物体注册:响应于确定所选择的模板存储空间不包括与所述目标图像部分匹配的模板,检测所述目标图像部分中的角或边缘中的至少一个;以及确定至少由所述目标图像部分中的所述角或边缘限定的区域,其中,所述至少一个处理电路被配置为基于所确定的区域来生成所述新模板。

实施例9包括实施例8的计算系统。在此实施例中,所述至少一个处理电路被配置为:当所选择的模板存储空间不包括与所述目标图像部分匹配的模板时,基于所确定的区域来生成所述移动命令。

实施例10包括实施例8或9的计算系统。在此实施例中,对所述目标图像部分中的所述角或边缘中的至少一个的所述检测是响应于以下二者而执行的:确定所选择的模板存储空间不包括与所述目标图像部分匹配的模板,以及确定将所述目标图像部分分类为有纹理的,并且其中,所述至少一个处理电路被配置为:当所述目标图像部分被分类为有纹理的时,使所述新模板被存储在所述第二模板存储空间中。

实施例11包括实施例6-10中任一项的计算系统。在此实施例中,所述通信接口被配置为与空间结构感测设备通信。此外,在此实施例中,所述至少一个处理电路被配置为接收用于描述与所述物体相关联的物体结构的感测的结构信息,其中所述感测的结构信息是由所述空间结构设备生成的,并且其中,所述至少一个处理电路被配置为:当所述目标图像部分被分类为无纹理的时,生成所述新模板以具有包括或基于所述感测的结构信息的物体结构描述,并使所述新模板被存储在所述第一模板存储空间中。

实施例12包括实施例1-11中任一项的计算系统。在此实施例中,所述至少一个处理电路被配置为还基于所述目标图像部分被分类为有纹理的还是无纹理的而生成所述移动命令。

实施例13包括实施例1-12的计算系统。在此实施例中,至少一个处理电路被配置为:确定与所述一个或多个物体相关联的机器人任务是否完成。所述至少一个处理电路还被配置为:响应于确定所述机器人任务完成,使得所述第一模板存储空间被清理而不清理所述第二模板存储空间。

实施例14包括实施例13的计算系统。在此实施例中,所述至少一个处理电路被配置为:当所述至少一个处理电路在生成所述移动命令之后确定当前没有剩余用于与所述机器人进行机器人交互的物体时,确定所述机器人任务完成。

实施例15包括实施例1-14中任一项的计算系统。在此实施例中,所述至少一个处理电路被配置为:当多个物体位于所述图像捕获设备的所述视野中时,使得被添加到所选择的模板存储空间中的每个模板基于与所述多个物体中的对应物体相关联的相应目标图像部分。

实施例16包括实施例1-15中任一项的计算系统。在此实施例中,所述至少一个处理电路被配置为至少基于所述目标图像部分生成第一位图和第二位图。所述第一位图是描述子位图,所述描述子位图用于标识所述目标图像部分的包括从所述目标图像部分检测到的一个或多个相应描述子的一个或多个区域,或者用于指示在所述目标图像部分中未检测到描述子。所述第二位图是边缘位图,所述边缘位图用于标识所述目标图像部分的包括从所述目标图像部分检测到的一个或多个相应边缘的一个或多个区域,或者用于指示在所述目标图像部分中未检测到边缘。在此实施例中,对将所述目标图像部分分类为有纹理的还是无纹理的所述确定是基于所述第一位图和所述第二位图的。

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

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1