用于机器人物体放置的系统和方法
文献发布时间:2023-06-19 18:35:48
对相关申请的交叉引用
本申请要求于2021年8月10日提交的题为“A ROBOTIC SYSTEM FOR PLANNING ORFACILITATING OBJECT PICKING”的第63/231,326号美国临时申请的权益,该美国临时申请的全部内容通过引用并入本文。
技术领域
本技术总体上针对机器人系统,并且更具体地针对用于确定和促进机器人周围环境中物体的拾取(picking)和放置的系统、过程和技术。
背景技术
随着它们不断提高的性能和降低的成本,许多机器人(例如,被配置为自动/自主地执行物理动作的机器)现在广泛用于各种不同的领域。例如,机器人可用于在制造和/或组装、填充(packing)和/或打包、运输和/或装运等中执行各种任务(例如,通过空间操纵或转移物体)。在执行任务时,机器人可以复制人类动作,从而替代或减少执行危险或重复性任务另外所需的人类参与。
然而,尽管技术进步,机器人通常缺乏复制执行更大和/或更复杂任务所需的人类交互所需的复杂性。因此,仍然需要用于管理机器人之间的操作和/或交互的改进技术和系统。
发明内容
在实施例中,提供了一种计算系统。该计算系统包括被配置为与机器人通信的控制系统,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机。至少一个处理电路被配置为当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,执行以下步骤以用于将物体从物体队列转移到装载环境中。步骤包括检测要被提供给装载环境的物体队列;接收多个物体类型标识符,多个物体类型标识符中的每一个与来自队列的物体中的相应物体相关联;基于从相机接收到的物体队列图像信息,确定队列中目标物体的目标物体姿势;为目标物体确定目标物体放置,所述目标物体放置指示目标物体在装载环境中的计划放置位置;根据从物体队列图像信息生成的目标物体姿势和目标物体的计划放置位置执行运动计划操作,用于目标物体的取回和放置;根据运动计划操作执行放置命令,用于将目标物体放置在装载环境中;以及生成装载环境图像信息,包括装载环境中的目标物体放置姿势。
在另一个实施例中,提供了一种计算系统。该计算系统包括被配置为与机器人通信的控制系统,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机。至少一个处理电路被配置为,当机器人处于包括多个装载区域、缓冲区、现有物体和传入物体队列的装载环境中时,执行以下步骤。步骤包括:处理从相机接收到的装载环境图像信息;从处理后的装载环境图像信息中标识装载环境状态,装载环境状态包括与相应现有物体相关联的多个现有物体类型标识符和与相应传入物体相关联的多个传入物体类型标识符;执行托盘检测操作以:从装载环境图像信息中检测装载环境中的现有托盘,确定现有托盘的托盘填充状态,并标识与现有托盘相关联的托盘标识符;以及基于多个现有物体类型标识符、多个传入物体类型标识符和托盘标识符之间的比较,确定要被执行的物体移动命令。
在另一个实施例中,机器人控制方法被配置为由被配置为与机器人通信的控制系统执行。机器人包含包括有或附接到末端执行器装置的机械臂。当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,相机被附接到机械臂。方法包括检测要被提供给装载环境的物体队列;接收多个物体类型标识符,多个物体类型标识符中的每一个与来自队列的物体中的相应物体相关联;基于从相机接收到的物体队列图像信息,确定队列中目标物体的目标物体姿势;为目标物体确定目标物体放置,所述目标物体放置指示目标物体在装载环境中的计划放置位置;根据从物体队列图像信息生成的目标物体姿势和计划放置位置执行运动计划操作,用于目标物体的取回和放置;根据运动计划操作执行取回命令,用于从队列中取回目标物体;根据运动计划操作执行放置命令,用于将目标物体放置在装载环境中;以及生成更新的装载环境图像信息,包括装载环境中的目标物体放置姿势。
在另一个实施例中,机器人控制方法被配置为由被配置为与机器人通信的控制系统执行。机器人包括包含有或附接到末端执行器装置的机械臂。当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,相机被附接到机械臂。方法包括处理从相机接收到的装载环境图像信息;从处理后的装载环境图像信息中标识装载环境状态,装载环境状态包括与相应现有物体相关联的多个现有物体类型标识符和与相应传入物体相关联的多个传入物体类型标识符;执行托盘检测操作以:从装载环境图像信息中检测装载环境中的现有托盘,确定现有托盘的托盘填充状态,并标识与现有托盘相关联的托盘标识符;以及基于多个现有物体类型标识符、多个传入物体类型标识符和托盘标识符之间的比较,确定要被执行的物体移动命令。
附图说明
图1A图示了根据本发明实施例的用于在装载环境内执行或促进物体的计划和放置的系统。
图1B图示了根据本发明实施例的用于在装载环境内执行或促进物体的计划和放置的系统的实施例。
图1C图示了根据本发明实施例的用于在装载环境内执行或促进物体的计划和放置的系统的另一个实施例。
图1D图示了根据本发明实施例的用于在装载环境内执行或促进物体的计划和放置的系统的又另一实施例。
图2A是图示与本发明实施例一致的被配置成在装载环境内执行或促进物体的计划和放置的计算系统的框图。
图2B是图示与本发明实施例一致的被配置成在装载环境内执行或促进物体的计划和放置的计算系统的实施例的框图。
图2C是图示与本发明实施例一致的被配置成在装载环境内执行或促进物体的计划和放置的计算系统的另一个实施例的框图。
图2D是图示与本发明实施例一致的被配置成在装载环境内执行或促进物体的计划和放置的计算系统的又另一个实施例的框图。
图2E是由系统处理的并且与本发明实施例一致的图像信息的示例。
图2F是由系统处理的并且与本发明实施例一致的图像信息的另一个示例。
图3A图示了根据本发明实施例的在装载环境内物体的计划和放置可被执行的示例性环境。
图3B是根据本发明实施例的包含布置在其上的物体类型标识符的物体的示例性实施例。
图3C图示了根据本发明实施例的在装载环境内物体的计划和放置可被执行的另一个示例性环境。
图3D描绘了根据本文的实施例的处于本文所述系统和方法的执行的后期阶段的图3C的装载环境和系统。
图4提供了图示根据本发明实施例的装载环境内物体的计划和放置的方法的流程图。
图5描绘了与本发明实施例一致的物体装载环境。
图6提供了图示根据本发明实施例的装载环境内物体的计划和放置的方法的流程图。
图7A描绘了与本发明实施例一致的物体装载环境。
图7B描绘了与本发明实施例一致的物体装载环境。
图7C描绘了与本发明实施例一致的物体装载环境。
图7D描绘了与本发明实施例一致的物体装载环境。
具体实施方式
本文描述了用于具有协调转移机制的机器人系统的系统和方法。根据本发明实施例配置的机器人系统(例如,每个执行一个或多个指定任务的设备的集成系统)通过协调多个单元(例如,机器人)的操作来自主地执行集成任务。如本文所述,机器人系统可包括机器人设备、传感器和计算系统的任何合适组合,这些计算系统被配置为控制这样的机器人设备和传感器,向其发出命令,并从其接收信息。
本文描述的技术向被配置为在装载环境中使用的机器人系统提供了技术改进。本文所述的技术改进提高了在装载环境内计划和执行物体的取回和放置的速度和精度。机器人系统还提供了对在装载环境内和附近进行的码垛或卸垛操作的效率的改进。
本申请涉及系统和机器人系统。如本文所讨论的,机器人系统可以包括机器人致动器组件(例如,机械臂、机械抓手等)、各种传感器(例如,相机等),以及各种计算或控制系统。如本文所讨论的,计算系统或控制系统可以被称为“控制”各种机器人组件,诸如机械臂、机械抓手、相机等。这样的“控制”可以指对各种致动器、传感器和机器人组件的其他功能方面的直接控制和与其的交互。例如,计算系统可以通过发出或提供所有需要的信号来控制机械臂,以引起各种电动机、致动器和传感器引起机器人移动。这样的“控制”还可以指向另一个机器人控制系统发出抽象或间接命令,然后该另一个机器人控制系统将这样的命令转换为用于引起机器人移动的必要信号。例如,计算系统可以通过发出描述机械臂应该移动到的轨迹或目的地位置的命令来控制机械臂,并且与机械臂相关联的另一个机器人控制系统可以接收和解释这样的命令,然后向机械臂的各种致动器和传感器提供必要的直接信号,以引起所需的移动。
特别地,本文描述的本技术帮助机器人系统与多个物体中的目标物体交互,其中目标为在装载环境中取回和放置的物体取决于多种因素,包括但不包括仅限于:物体类型标识符、装载环境内各种装载区域/区的填充状态以及托盘对应关系。例如,如果传入目标物体,例如新到达装载环境的目标物体,拥有与装载环境内现有托盘对应的物体类型标识符(即,托盘被指定接收具有传入目标物体的物体类型标识符的物体),则机器人系统可以控制机器人取回该传入目标物体并将其放置在托盘上。如果现有物体(即装载环境内缓冲区中可用的物体)拥有与该托盘对应的物体类型标识符,则机器人系统还可以控制机器人取回现有物体并将其放置在托盘上。在另一个实施例中,与本公开一致的系统可以被配置为响应于特定类型的现有和传入物体的存在而将托盘交换进和交换出装载区域或区。
在以下中,具体细节被阐述以提供对当前公开的技术的理解。在实施例中,本文介绍的技术可被实践而不包括本文公开的每个具体细节。在其他情况下,诸如具体功能或例程的众所周知的特征未被详细描述以避免不必要地混淆本公开。本说明书中对“实施例”、“一个实施例”等的引用意味着正在描述的特定特征、结构、材料或特性包括在本公开的至少一个实施例中。因此,本说明书中的这样的短语的出现不一定都指相同的实施例。另一方面,这样的引用也不一定是相互排斥的。此外,特定特征、结构、材料或特性可以在一个或多个实施例中以任何合适的方式组合。应当理解,图中所示的各种实施例仅仅是说明性的表示并且不一定按比例绘制。
为清楚起见,描述众所周知且通常与机器人系统和子系统相关联但可能不必要地混淆所公开技术的一些重要方面的结构或过程的若干细节在以下描述中未被阐述。此外,尽管以下公开阐述了本技术的不同方面的若干实施例,但若干其他实施例可具有与本部分中描述的那些不同的配置或不同的组件。因此,所公开的技术可以具有带有附加元素或没有下面描述的元素中的若干元素的其他实施例。
下面描述的本公开的许多实施例或方面可以采取计算机或控制器可执行指令的形式,包括由可编程计算机或控制器执行的例程。相关领域的技术人员将理解,所公开的技术可以在除了下面所示和描述的那些之外的计算机或控制器系统上或通过其实践。本文描述的技术可以体现在专用计算机或数据处理器中,该专用计算机或数据处理器被具体编程、配置或构造为执行下述计算机可执行指令中的一个或多个。因此,如本文通常使用的术语“计算机”和“控制器”是指任何数据处理器,并且可以包括互联网工具和手持设备(包括掌上型计算机、可穿戴计算机、蜂窝或移动电话、多处理器系统、基于处理器或可编程的消费电子产品、网络计算机、小型计算机等)。这些计算机和控制器处理的信息可以在包括液晶显示器(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可以移动到各种拾取范围(诸如队列3160、装载区域3110/3120/3130/3140或缓冲区3150),以生成关于这些范围的图像信息。在某些实现中,相机1200可以与机器人1300分开。例如,相机1200可以被安装到仓库的天花板或其他结构,并且可以相对于该结构保持固定。在某些实现中,可以使用多个相机1200,包括与机器人1300分开的多个相机1200和/或与掌上相机1200一起使用的与机器人1300分开的相机1200。在某些实现中,一个相机1200或多个相机1200可以安装或固定到与用于物体操纵的机器人1300分开的专用机器人系统上,诸如机械臂、门架(gantry)或被配置用于相机移动的其他自动化系统。贯穿说明书,可以讨论“控制(control)”或“正在控制(controlling)”相机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的实施例并且包括通信接口1130。通信接口1130可以被配置为例如接收由图1A-1D的相机1200生成的图像信息。可以经由以上讨论的中间非暂时性计算机可读介质1400或网络,或者经由相机1200与计算系统1100/1100A之间的更直接的连接来接收图像信息。在实施例中,通信接口1130可以被配置为与图1C的机器人1300通信。如果计算系统1100在机器人控制系统外部,则计算系统1100的通信接口1130可以被配置为与机器人控制系统进行通信。通信接口1130也可以被称为通信组件或通信电路,并且可以包括例如被配置为通过有线或无线协议执行通信的通信电路。作为示例,通信电路可以包括RS-232端口控制器、USB控制器、以太网控制器、
在实施例中,如图2C中所示,非暂时性计算机可读介质1120可以包括被配置为存储本文讨论的一个或多个数据对象(data objects)的存储空间1125。例如,存储空间可以存储模型模板、机械臂移动命令以及计算系统1100B可能需要访问的任何附加数据对象。
在实施例中,处理电路1110可以由存储在非暂时性计算机可读介质1120上的一个或多个计算机可读程序指令编程。例如,图2D示出了计算系统1100C,其是计算系统1100/1100A/1100B的实施例,其中处理电路1110由包括物体识别模块1121、运动计划模块1129和物体操纵计划模块1126的一个或多个模块编程。运动计划模块1129(和与计算系统1100C相关联的任何其他模块)可以根据需要访问轨迹信息1128和模板信息1127。
在实施例中,物体识别模块1121可被配置为获取和分析图像信息,如贯穿本公开所讨论的。本文讨论的关于图像信息的方法、系统和技术可以使用物体识别模块1121。物体识别模块可以用于物体识别和存储库识别两者,如本文讨论的。物体识别模块还可被配置用于与物体识别相关的物体识别任务,如本文所讨论的。
运动计划模块1129可以被配置为计划和执行机器人的移动。例如,运动计划模块1129可以导出各个放置位置/朝向,计算对应的运动计划,或其组合以用于抓取和移动物体。运动计划模块1129可以访问和更新轨迹信息1128。轨迹信息1128可以包括可由运动计划模块1129访问和更新的预先计划的初始轨迹信息。运动计划模块还可以存储调整后的轨迹信息。运动计划模块1129可以访问和更新模板信息1127,包括物体模板信息和存储库模板信息(源和目的地两者),如下面更详细讨论的。本文讨论的关于机械臂移动和轨迹的方法、系统和技术可以由运动计划模块1129执行。本文讨论的关于模型和模板的方法、系统和技术可以由运动计划模块1129执行。
物体操纵计划模块1126可以被配置为计划和执行机械臂的物体操纵活动,例如,抓握和释放物体以及执行机械臂命令以帮助和促进这样的抓握和释放。
装载环境管理模块1122可以被配置为管理装载环境。装载环境管理模块1122因此可以被配置为确定现有和传入物体两者的目的地位置,并且还可以被配置为制定(formulate)和提供与托盘交换和移动相关的命令,如下面进一步讨论的。
参考图2E、2F和3A,解释了与可以被执行用于图像分析的物体识别模块1121相关的方法。图2E和2F示出了与图像分析方法相关联的示例图像信息,而图3A示出了与图像分析方法相关联的示例机器人环境。本文中与由计算系统进行的图像分析相关的参考可以根据或使用空间结构信息来执行,该空间结构信息可以包括描述相对于所选点的各种位置的相应深度值的深度信息。深度信息可用于标识物体或估计物体如何在空间上排列。在某些情况下,空间结构信息可包括或可用于生成描述物体的一个或多个表面的位置的点云。空间结构信息仅仅是可能的图像分析的一种形式,并且本领域技术人员已知的其他形式可以根据本文描述的方法使用。
在实施例中,计算系统1100可以获取表示相机1200的相机视场(例如,3200)中的物体的图像信息。在某些情况下,物体可以是相机1200的相机视场3200中的一个或多个物体(例如,如图3C-3D所示,3510-3590)的第一物体(例如,3500)。在该组物体3410A/3410B/3410C/3410D处于(或已经处于)相机视场3200中时,图像信息2600、2700可以由相机(例如,1200)生成并且可以描述各个物体中的一个或多个。物体外观从相机1200的视点描述了物体3410A/3410B/3410C/3410D的外观。如果在相机视场中有多个物体,则相机可以根据需要生成表示多个物体或单个物体的图像信息。当该组物体处于(或已经处于)相机视场中时,图像信息可以由相机(例如,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/3410D340的相应表面的相应部分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相关联的图像信息。例如,计算系统1100可以基于2D图像信息2600和/或图2F中所示的3D图像信息2700通过执行图像分段操作来提取图像部分2000A。在某些实现中,图像分段操作可以包括检测2D图像信息2600中物体的物理边缘(例如,盒子的边缘)出现的图像位置并且使用这样的图像位置来标识仅限于表示相机视场(例如,3200)中的单个物体的图像部分(例如,5610)。
图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生成的图像信息可以表示具体的视点,诸如目标物体的顶视图。在某些情况下,当相机1200在物体识别操作期间生成图像信息时,图像信息可以在诸如照明强度的特定照明条件下生成。在这样的情况下,图像信息可以表示特定的照明强度、照明颜色或其他照明条件。
在实施例中,图像归一化操作可以涉及调整由相机生成的场景的图像或图像部分,以使图像或图像部分更好地匹配与模型模板的信息相关联的视点和/或照明条件。调整可以涉及变换图像或图像部分以生成与和模型模板的视觉描述信息相关联的物体姿势或照明条件中的至少一个相匹配的变换后的图像。
视点调整可以涉及场景的图像的处理、卷绕和/或移位,使得图像表示与模型模板中的视觉描述信息相同的视点。例如,处理包括改变图像的颜色、对比度或照明,场景的卷绕可包括更改图像的大小、尺寸或比例,而图像的移位可能包括更改图像的位置、朝向或旋转。在示例实施例中,处理、卷绕和/或移位可用来改变场景的图像中的物体以具有匹配或更好地对应于模型模板的视觉描述信息的朝向和/或大小。如果模型模板描述了某个物体的正面视图(head-on view)(例如,顶视图),则场景的图像可能会被卷绕,以便也表示场景中物体的正面视图。
本文中执行的物体识别方法的其他方面在2020年8月12日提交的第16/991,510号美国申请和2020年8月12日提交的第16/991,466号美国申请被更详细地描述,这些美国申请中的每一个通过引用并入本文。
在各种实施例中,术语“计算机可读指令”和“计算机可读程序指令”被用于描述被配置为执行各种任务和操作的软件指令或计算机代码。在各种实施例中,术语“模块”广义上是指被配置为使处理电路1110执行一个或多个功能任务的软件指令或代码的集合。当处理电路或其他硬件组件正在执行模块或计算机可读指令时,模块和计算机可读指令可以被描述为执行各种操作或任务。
图3A-3D示出了示例性环境,其中经由计算系统1100利用存储在非暂时性计算机可读介质1120上的计算机可读程序指令以使用运动计划模块1129和物体操纵计划模块1126与本文公开的机器人系统来最大化放置和装载操作的效率。如图3C-3D所示,由计算系统1100获得并在图3A中例示的图像信息影响系统的决策制定过程和对本文公开的装载环境3100内呈现的机器人3300的命令输出。装载环境3100可以包括至少一个装载区域3110(或图3C中所示的多个装载区域3110、3120、3130、3140)以用于接收物体(例如,多个物体3510-3590中的任何一个),和/或例如托盘3400。缓冲区3150还可以被包括在装载环境中,用于接收溢出(overflow)物体3550/3560/3570。物体队列3160可以包括到达装载环境的传入物体3510/3520/3530的队列,用于经由机器人3300在装载环境内的其他地方取回和放置。在实施例中,多于一个的物体队列3160可被提供以供应传入物体3510/3520/3530到装载环境。物体队列3160可以由任何合适的物体运输手段提供,包括例如传送带(如图3C所示)以及托盘、车辆、架子、容器等。
也可以被布置在装载环境3100内的机器人3300包括带有末端执行器装置3330的臂3320,该末端执行器装置3330被设计用于抓握和释放物体3500。末端执行器装置3330可以包括例如吸盘、机器人抓手和/或适用于抓握和释放物体的任何其他机器人工具。相机1200可被布置在机器人的末端执行器装置3330上以向计算系统1100提供来自机器人的动态“第一人称视角”,诸如来自末端执行器装置3330的视图。在实施例中,相机1200可替代地被放置在机器人的臂3320上。相机1200也可以放置在装载环境内的静态位置,而不是被附接到机器人3300。在另一个替代方案中,相机1200可被放置在机器人上,而第二相机1200可被放置在装载环境内与机器人分开的静态位置,以向计算系统1100提供环境和/或要经由机器人3300与之交互的物体3500的多个角度。机器人3300在装载环境3100内的放置决定于机器人到达装载区域3110/3120/3130/3140、缓冲区3150和物体队列3160的能力。在实施例中,机器人还可以具有帮助正确到达装载环境内的所有区域的运动能力。
提供给装载环境3100或在装载环境3100内可用的物体3510-3590(在图3B的示例中统称为物体3500)每个与物体类型标识符3710、3720、3730(统称为物体类型标识符3700)相关联,以用于经由计算系统1100进行检测、标识和/或识别。物体类型标识符3700是指示物体与之相关联的其类型的数据对象。例如,物体类型标识符3700可以通过盒子大小、形状或重量,通过内容、来源、目的地或任何其他合适的标识属性来标识物体类型。在实施例中,物体类型标识符3700可以由计算系统1100经由标识或读取位于物体3500上或包含在物体3500内的物理标识符来获得。例如,物体类型标识符3700可以存储在唯一的库存单位(SKU)代码、通用产品代码(UPC)、地址标签、射频识别(RFID)标签或用于跟踪和交易物品或产品的任何其他类型的条形码、标记和/或无线跟踪设备或系统中或其上,或由其识别。在另外的实施例中,物体识别技术可被用来识别物体类型(例如,根据物体模板匹配)并相应地将物体类型标识符3700分配给物体3500。与某个物体类型标识符3700相关联的物体3500可以与具有相似或相同物体类型标识符的其他物体分类或分组在一起。这样做时,计算系统1100可以最佳地确定机器人拾取和放置操作、托盘控制操作(例如码垛或卸垛操作)和缓冲区操作等的执行。物体类型标识符3700可以对应于或不对应于托盘3400的托盘标识符。由物体类型标识符3700提供的物体3500的对应/非对应状态可以由计算系统1100确定。
托盘3400可以在所提供的装载区3110/3120/3130/3140中的每一个内被接收,用于接收多个物体3510-3590中的至少一个。在实施例中,托盘3400例如通过托盘标识符经由计算系统1100被标识以接收具有对应物体类型标识符3700的对应物体3500。因此,呈现或存在于装载区域3110/3120/3130/3140中的至少一个内的任何托盘3400可以接收具有对应于它们的托盘标识符的物体类型标识符3700的一个或多个对应物体3510-3590。具有非对应物体类型标识符3700的非对应物体3500可以被放置在缓冲区3150中,或者可以触发托盘交换(swap)。托盘交换决策可以取决于装载环境内的各种装载区域、缓冲区域和一个或多个托盘的填充状态,其方法将在下面更详细地讨论。
任何托盘运输操作,诸如托盘交换,可能涉及经由自动化机械或车辆(叉车或诸如自动引导车辆“AGV”的其他车辆、附加或外部机器人(未示出)、人机交互、机械系统(未示出)和任何其他合适的运输工具来运输托盘。这些可能会在托盘化过程中引入延迟。例如,机器人3300可能必须停止操作一段时间,用于AGV(或其他运输工具)驱动或移动现有托盘3400A/3400B离开装载环境3100(或离开其指定的装载区域3110/3120/3130/3140),并用于另一个AGV(或其他运输工具)驱动或移动新托盘3400C进入装载环境3100(或进入现在空的装载区域3110/3120/3130/3140)。此操作延迟可能发生在每次需要托盘交换操作时。因此缓冲区3150可被实现以减少托盘交换的需要,这继而减少了每个托盘交换实例导致的停机时间量。
缓冲区3150用作从队列或传送带3160提供的传入物体3510/3520/3530的临时目的地或储存库,这些物体缺少与装载环境内(例如,在装载区域3110-3140内)现有托盘对应的物体类型标识符3700。具有非对应物体类型标识符3700的传入物体3510/3520/3530因此可以由机器人从物体队列3160中取回并放置到缓冲区3150中以允许物体队列3160继续前进并供应传入物体3510/3520/3530的连续流。非对应物体3500可以保持在缓冲区中,直到专用于接收具有该特定物体类型标识符3700的物体3500的托盘(例如,具有对应的托盘标识符)在装载环境3100中提供。当这样的托盘交换命令时做出后,现有托盘3400A/3400B被从其相应的装载区域3110/3130中移除,使得托盘3400C可以取而代之。然后,机器人3300可以取回缓冲区内的溢出物体或多个溢出物体3550-3570,并将它们移动到专用于接收具有其现在对应的物体类型标识符的物体的托盘3400C。在实施例中,多于一个缓冲区可以在装载环境内提供,以容纳经由物体队列3160提供的更大量的溢出物体。
本公开涉及执行、促进和/或计划将多个传入物体3510/3520/3530从物体队列3160(或替代地,多个队列或传送带)转移到装载环境3100的指定区域。图4描绘了用于执行、促进和/或计划将多个物体从队列或传送带转移到装载环境的指定区域的示例方法4000的流程图。在实施例中,物体转移方法4000的操作可以结合托盘管理方法5000的操作来执行,如下文更详细地描述。物体转移方法4000的操作用于管理物体到装载环境3100中的转移。托盘管理方法5000的操作用于管理进出装载环境3100的托盘或转移。方法4000和方法5000的各种操作可以彼此结合或组合执行,以实现提高在将物体转移到装载环境内的托盘中的效率的目标。
在实施例中,方法4000可以由例如图2A-2D的计算系统1100(或1100A/1100B/1100C)或图3A-3D的计算系统1100执行,或更具体地由计算系统1100的至少一个处理电路1110执行。在某些情况下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行方法4000。例如,指令可以使计算系统1100执行图2D中所示的一个或多个模块,其可以执行方法4000。例如,在实施例中,与物体识别相关的步骤,例如,操作4001、操作4002、操作4003、操作4004等可以经由物体识别模块1121执行。例如,在实施例中,与运动和轨迹计划相关的步骤,例如,操作4006、操作4007、操作4008等可以经由运动计划模块1129执行。例如,在实施例中,与物体放置和处理相关的步骤,例如,操作4004、操作4008等,可以由物体操纵计划模块1126执行。与装载环境管理和理解相关的操作,例如,操作4005和4009,可以由装载环境管理模块1122执行或进行。在某些实施例中,运动计划模块1129和物体操纵计划模块1126可以协同操作以定义和/或计划涉及运动和物体操纵两者的轨迹。
方法4000的步骤可用于实现用于执行具体任务的具体顺序机器人轨迹。作为一般概述,方法4000可以操作以使计算系统1100将物体从物体队列3160转移到装载区域3110-3140或缓冲区3150。这样的转移操作可以包括根据预先计划的轨迹对机器人3300的操作,该轨迹根据操作期间发生的各种操作被更新和/或细化。
在方法4000中,计算系统1100可以被配置和操作以控制(例如,提供用于控制的命令)机器人3300的移动,以从物体队列3160中取回传入物体3510/3520/3530并将传入物体3510/3520/3530放置到装载环境3100内的指定区域(例如,装载区域3110-3140或缓冲区3150)。计算系统1100可以被配置为基于物体周围的众多因素和装载环境的状态(所有这些都可以经由相机被收集为图像信息)来计划和调整随后的物体取回和放置过程。计算系统1100可以确定物体移动命令以从物体队列3160中取回传入物体3510/3520/3530并将其放置在装载环境3100内提供的目标装载区域3110-3140内。在实施例中,计算系统1100可以决定从物体队列3160取回传入物体3510/3520/3530并将其放置在装载环境3100内的缓冲区3150内。在另一个实施例中,计算系统1100可以确定从缓冲区3150取回溢出物体3550/3560/3570并将其放置在装载环境3100内提供的目标装载区域3110-3140内。
方法4000的描述是指移动周期A(Movement Cycle A),如图5所示。周期A中的移动可以包括相机1200(例如,附接到机械臂3320的相机,或者替代地在与机器人分开的装载环境内的其他地方提供的相机,或两者)在装载环境3100前的移动,(或更具体地,物体队列3160、装载区域3110-3140和/或缓冲区3150),使得相机1200可以生成表示装载环境3100的图像信息。移动周期A可以包括机械臂3320的移动以接近并抓取或提升来自物体队列3160的目标传入物体3510(轨迹A1)。移动周期A可以包括机械臂3320的移动以将目标传入物体3510运输和存放到装载区域3110-3140或缓冲区3150之一(轨迹A2a、A2b、A2c、A2d)中。图像信息可被计算系统1100用来确定要发送或执行以使机器人3300执行轨迹A1、A2a、A2b、A2c、A2d的命令。
图5中描绘的被称为周期A的一种类型的移动周期中,计算系统1100可以输出命令,该命令被配置为使装载环境3100中的机器人3300在轨迹A1中使用末端执行器装置3330从物体队列3160移动和取回物体3510/3520/3530之一。然后,计算系统1100可以基于经由相机1200收集的处理后的图像信息确定要从物体队列3160取回的传入物体3510/3520/3530是否与对应于装载区域3110/3120/3130/3140的物体类型标识符3700相关联。如果取回的传入物体3510/3520/3530的物体类型标识符3700对应,则计算系统1100可以控制机器人3300移动传入物体3510/3520/3530并将其放置在装载区域3110/3120/3130/3140中(例如轨迹A2a、A2b、A2d)。替代地,如果取回的传入物体3510/3520/3530的物体类型标识符3700不对应于任何装载区域3110/3120/3130/3140中托盘的托盘标识符,则计算系统1100可以命令或控制机器人3300移动传入物体3510/3520/3530并将其放置在缓冲区3150中(例如轨迹A2c)。计算系统1100基于多个因素确定在缓冲区3150中将传入物体3510/3520/3530移动和放置在哪里,这些因素包括传入物体3510/3520/3530的大小、已经存在于缓冲区3150内的其他溢出物体3550/3560/3570的位置、以及已经存在于缓冲区3150内的其他物体的取向。计算系统1100考虑这些参数,使得被配置为从缓冲区移动和取回被放置在了缓冲区中的传入物体3510/3520/3530的未来命令不受到外部因素的妨碍,诸如其他物体阻挡机械臂3320的路径和/或在相机1200收集与物体有关的图像信息时阻碍从相机1200对传入物体3510/3520/3530的视野(例如,较大的物体3500位于传入物体3510/3520/3530的前面,从而阻碍了相机的视野)。
移动周期A仅通过示例方式提供。机械臂3320可被控制以具有涉及在用作源或目的地的其他储存库之间移动物体的其他移动周期。例如,机器人可以将物体从装载环境内的装载区域或缓冲区移动到队列或传送带。在另一个示例中,机器人可以将物体从装载环境内的装载区域移动到缓冲区。
对移动周期A的描述应被理解为对涉及在装载环境内和/或机器人周围的物体的计划和放置的操作的描述。需要源和目的地储存库/位置的不同组合的移动周期可能需要本文公开的操作的不同组合和/或不同顺序而不脱离本公开的范围。
计算系统1100可以执行方法4000的具体步骤以将传入物体3510/3520/3530从物体队列3160转移到装载环境3100中。方法4000可以以操作4001开始或以其他方式包括操作4001,其中计算系统1100可以使用如先前上述收集的图像信息来检测驻留在物体队列3160中并被提供给装载环境3100的物体3510/3520/3530的传入队列。特别地,图像信息可以由放置在机器人3300的末端执行器装置3330上的相机1200和/或经由在装载环境3100中与机器人3300分开的其他地方提供的一个或多个辅助相机1200或经由相机1200和一个或多个辅助相机1200的组合捕获。图像信息可以包括例如物体队列图像信息和装载环境图像信息。物体队列图像信息包括物体队列3160中的传入物体3510/3520/3530的图像信息。装载环境图像信息包括现有物体3540/3580/3590、托盘3400和装载环境的其他特征的图像信息。在实施例中,计算系统1100可以被预先供应或预先加载与物体队列3160相关或描述物体队列3160的信息(包括图像信息),从而促进操作4001的执行。本文所述的物体识别技术可被用来识别或标识物体队列3160内的各个物体3510/3520/3530。
方法4000还可以包括操作4002,其中计算系统1100被配置为获得或接收多个物体类型标识符3710/3720/3730,这些标识符与来自物体队列3160的物体3500的相应的传入物体3510/3520/3530有关或相关联。多个物体类型标识符3710/3720/3730可以经由如先前上述收集的图像信息(例如,经由物体识别、条形码、SKU或QR码读取等)接收、获得或以其他方式确定。替代地,物体类型标识符3710/3720/3730可被预先供应或预先加载到计算系统中。在实施例中,物体类型标识符3710/3720/3730可以经由分开的处理器/系统被提供给机器人系统。在另外的实施例中,物体类型标识符3710/3720/3730可以从被配置为读取与传入物体3510/3520/3530相关联的无线标识符(例如,RFID标签)的系统接收或获得。物体类型可能已经由计算系统1100本身确定,或者由与计算系统1100通信的另一个系统确定。
方法4000还可以包括操作4003,其中计算系统1100获得或接收与队列3160中的目标物体(例如,由机器人系统标识的要经由机器人3300取回的下一个传入物体3510)有关的图像信息。计算系统1100还可以被配置为确定在经由队列3160到达的一系列传入物体3510/3520/3530中最接近机器人的传入物体3510接下来将被机器人3300拾取,从而成为目标传入物体3510。计算系统1100还可以被配置为将先前获得的与目标传入物体3510相关联的物体类型标识符3700用于确定目标传入物体3510是具有对应物体类型标识符3700(例如,对应于与装载区域3110-3140之一中的托盘相关联的托盘标识符)的对应物体,还是具有非对应物体类型标识符3700(例如,不对应于与装载区域3110-3140之一中的托盘相关联的托盘标识符)的非对应物体。在实施例中,机器人系统还可以被配置用于标识与目标物体相关联的物体类型标识符3700,并且基于所标识的标记将物体类型标识符3700分配给目标传入物体3510。
方法4000还可以包括操作4004,其基于从相机接收到的物体队列3160的图像信息来确定队列3160中的目标传入物体3510的目标物体姿势。目标物体姿势可以包括物体队列3160内的目标物体的大小、取向和位置,以及如先前上述的其他变量。目标物体姿势可用于稍后执行取回命令以确保从物体队列3160中正确取回目标传入物体3510的实现。计算系统1100还可以被配置为使用图像信息来确定目标传入物体3510是具有对应物体类型标识符的对应物体,还是具有非对应物体类型标识符的非对应物体。
方法4000还可以包括操作4005,其中计算系统1100确定目标传入物体3510的目标物体放置,指示目标传入物体3510在装载环境3100中的计划放置位置。如果目标传入物体3510被认为是对应物体(即目标传入物体3510的物体类型标识符3700与放置在可用装载区域3110-3140之一中的托盘的托盘标识符对齐或对应),则计划放置位置还可以被确定为装载区域3110/3120/3130/3140。如果目标传入物体3510被认为是非对应物体(即目标传入物体3510的物体类型标识符3700不与位于可用装载区域3110-3140之一中的托盘的托盘标识符对齐或对应),则计划放置位置可以替代地是缓冲区3150。在确定目标物体放置时,计算系统1100还可以被配置用于通过处理装载环境图像信息来执行托盘检测操作,以确定装载区域中提供的托盘的姿势,例如,使用如本文公开的物体识别技术。
方法4000还可以包括操作4006,其中计算系统1100可以经由运动计划模块1129执行运动计划操作,如先前上述,用于目标传入物体3510的取回和放置。运动计划操作可以包括确定被配置为引起机器人3300运动或移动的一系列命令。在实施例中,此运动或移动可以包括机械臂3320的移动和/或末端执行器装置3330的移动。运动计划操作可以基于先前在操作4003中收集的图像信息来执行。例如,计算系统1100可以确定控制控制臂3320的移动相对于要被取回的目标物体的方向和/或角度。计算系统1100还可以确定控制末端执行器装置相对于要取回的目标物体的方向和/或角度。在实施例中,操作4006可以将取向、重量、大小和针对从物体队列图像信息生成的目标物体姿势的其他物理数据考虑在内。与目标物体姿势有关的此信息还可以被集成到目标物体计划放置位置中。
方法4000还可以包括操作4007,其中机器人系统可以根据运动计划操作发送或执行用于从物体队列3160取回目标传入物体3510(在图5中示为移动或步骤A1)的取回命令。取回命令可以被配置为使机器人3300在轨迹A1中朝着目标传入物体3510移动,并将末端执行器装置3330用于抓持目标物体。操作4007还可以包括发送或执行启动命令,该启动命令被配置为使机器人开始从物体队列3160到目标传入物体3510的目的地(例如装载区域3110/3120/3130/3140,或缓冲区3150)的运动A2a/A2b/A2c/A2d。
方法4000还可以包括操作4008,其中计算系统1100根据运动计划操作发送或执行用于将目标传入物体3510放置在目标装载区域3110/3120/3130/3140中的放置命令。
计算系统1100还可以被配置用于与装载环境托盘管理方法(例如,如下面更详细描述的方法5000)的各种操作相关联地控制机械臂3320将对应的目标传入物体3510放置在装载区域3110/3120/3130/3140中的托盘3400上。例如,在物体放置之前或期间,计算系统1100可以执行托盘管理方法5000的一个或多个操作。例如,托盘检测操作5003、托盘状态操作5005、托盘标识操作5006、托盘交换操作5007等可以以任何组合在物体放置操作之前或与物体放置操作相结合地执行。
例如,物体放置可以根据托盘检测操作(例如,如下面更详细描述的托盘检测操作5003)的结果来执行。托盘检测操作可以由计算系统1100调用以确认现有托盘是否存在于装载环境3100内(即在指定装载区域3110/3120/3130/3140内)。
例如,物体放置可以根据检测被确认在装载环境3100内的现有托盘3400A/3400B的填充状态(例如,下面更详细描述的操作5004)的结果来执行。在实施例中,托盘填充状态经由相机1200捕获的图像信息来确定。相机1200可以是掌上相机解决方案(也称为手持相机解决方案),其中相机1200放置在机械臂3320上。然后,机械臂3320可以移动到各种拾取区(诸如托盘3400、缓冲区3150或队列3160)以从多个不同的角度捕获图像信息。在实施例中,相机1200可以远离机器人3300定位。在实施例中,可以使用远程和/或掌上的多个相机1200。如先前上述,并且参考图2E、2F和3A,计算系统1100采用与物体识别模块1121相关的方法,这些方法可以被执行用于图像分析。例如,可以包括描述相对于所选点的各个位置的相应深度值的深度信息的3d图像信息2700(例如,空间结构信息)可以用于确定托盘填充状态。深度信息可用于标识存在于托盘3400A/3400B上的现有物体3540/3580/3590,和/或估计现有物体3540/3580/3590如何在托盘3400A/3400B上空间排列。在一些实施例中,3d图像信息2700可包括或可用于生成描述现有物体3540/3580/3590的一个或多个表面的位置的点云。3d图像信息2700仅仅是可能的图像分析的一种形式,并且可以根据本文描述的方法使用本领域技术人员已知的其他形式,诸如2d图像信息2600的分析。
例如,物体放置可以在托盘交换操作(例如,操作5007)的执行之后执行,该托盘交换操作被配置为引起用来自装载环境3100外部的新托盘3400C替换装载环境内的现有托盘3400A/3400B。新托盘3400C可以被取回并移动到装载环境3100中,例如,通过自动化机械(叉车或诸如AGV的其他车辆)、外部机器人(未示出)、人机交互、机械系统(未示出)和任何其他合适的交通工具。在实施例中,由于现有托盘3400A/3400B的不足(例如,托盘标识符不对应于与众多传入3510/3520/3530、现有物体3540/3580/3590和/或要被移动的溢出物体3550/3560/3570相关联的物体类型标识符3700),计算系统1100可能发现需要托盘交换操作。因此,计算系统1100可以响应于确定需要托盘交换命令,使托盘交换将现有托盘3400A/3400B与新托盘3400C交换(如图7A中轨迹B2a/B2b所示)。在实施例中,现有托盘3400A/3400B和新托盘3400C可以经由外力交换,例如,通过自动化机械(叉车或其他车辆)、外部机器人(未示出)、人机交互、机械系统(未示出)等。在实施例中,现有托盘3400A/3400B和新托盘3400C可以经由机器人3300交换(即机器人3300使用其臂3320和末端执行器装置3330来促进交换)。在实施例中,由于现有托盘3400A/3400B的托盘填充状态返回指示已满的值,因此也可以确定为需要托盘交换操作。例如,如果机器人3300具有掌上相机(安装在机械臂3320上的相机),则机器人系统可以控制机械臂3320被放置在相机1200指向现有托盘3400A/3400B底角的位置和方向。在又另一个实施例中,还可以响应于确定与现有物体3540/3580/3590和/或溢出物体3550/3560/3570相关联的现有物体类型标识符3700与托盘标识符不对应而确定为需要托盘交换操作。在仍又一实施例中,还可以响应于确定与传入物体3510/3520/3530相关联的传入物体类型标识符3700与托盘标识符不对应而确定为需要托盘交换操作。
机器人系统仍还可以被配置用于在将对应物体(又名具有对应的物体类型标识符3700的目标物体)放置在托盘3400上之后记录对应物体放置姿势。在实施例中,机器人系统可以被配置用于控制机械臂3320以将非对应物体(又名具有非对应物体类型标识符3700的目标物体)放置在缓冲区3150中。机器人系统仍还可以被配置用于在将非对应物体放置在缓冲区3150之后记录非对应物体放置姿势。
方法4000还可以包括操作4009,其中机器人系统生成更新的装载环境图像信息,包括装载环境3100中的目标物体放置姿势。在一个或多个物体3500已被移入、移进或移出装载环境3100后,装载环境3100可能被改变,因此可能需要被重新成像以确保计算系统1100具有关于装载环境3100的状态的准确的和当前的信息。如下面进一步讨论的在托盘交换或其他托盘运输操作后,也可能需要这样的更新。生成更新的装载环境图像信息可以包括控制相机1200以捕获更新的图像信息。在实施例中,计算系统1100可以在执行操作4008之后控制相机1200以捕获表示装载区域3110/3120/3130/3140中的至少一个以及该至少一个装载区域的填充状态的图像信息。这还可以包括在执行操作4008之后控制相机以捕获表示布置在至少一个装载区域3110/3120/3130/3140内的托盘3400A/3400B的填充状态的图像信息。这仍还可以包括在执行操作4008之后控制相机以捕获表示装载区域3110/3120/3130/3140内的目标物体放置姿势(以及在实施例中,托盘3400A/3400B上的目标物体放置姿势)的图像信息。在实施例中,计算系统1100可以在执行操作4008之后控制相机1200(和/或机械臂3300来定位相机1200)以捕获表示缓冲区3150以及缓冲区3150的填充状态的图像信息。这还可以包括在执行操作4008之后控制相机1200以捕获表示缓冲区3150内的目标物体放置姿势的图像信息。更新的装载环境图像信息可以允许对经由机器人系统进行的未来操作4001-4009的细化。根据方法4000的操作4001-4009,机器人系统可以随后处理装载环境图像信息以执行新的运动计划操作4006,用于取回队列中的后续物体并将其放置到装载环境中。
如上所述,本发明的方法4000涉及计算机系统1100,该计算机系统1100被配置为与机器人3300通信并控制机器人3300,该机器人3300具有附接到或包括末端执行器装置3330的机械臂3320和布置在臂3320/末端执行器装置3330上、或装载环境3100内与机器人3300分开的其他地方的相机1200/1200。机器人3300可以在装载环境3100内,并且物体队列3160提供向装载环境3100提供传入物体3510/3520/3530用于经由机器人3300交互。方法4000包括被配置用于执行至少操作4001-4009的至少一个处理电路1110。方法4000的执行实现了对机器人系统的技术改进,包括但不限于物体3500的取回和其在装载环境3100内的放置的速度、效率和精度的提高。
本公开还涉及执行、促进和/或计划将多个传入物体3510/3520/3530从物体队列3160转移到装载环境3100内可用的缓冲区3150和/或装载区域3110/3120/3130/3140的托盘中。图6描绘了用于执行、促进和/或计划将多个物体从队列或传送带转移到装载环境内可用的缓冲区和/或托盘的示例托盘管理方法5000的流程图。
在实施例中,方法5000可以由例如图2A-2D的计算系统1100或图3A-3D的计算系统1100执行,或者更具体地由计算系统1100的至少一个处理电路1110执行。在某些情况下,计算系统1100可以通过执行存储在非暂时性计算机可读介质(例如,1120)上的指令来执行方法5000。例如,指令可以使计算系统1100执行图2D中所示的模块中的一个或多个,其可以执行方法5000。例如,在实施例中,与物体识别相关的步骤,例如操作5001-5006等,可以至少部分地经由物体识别模块1121执行。例如,在实施例中,与运动和轨迹计划相关的步骤,例如,操作5007和5008等,可以至少部分地经由运动计划模块1129执行。例如,在实施例中,与物体放置和处理相关的步骤,例如操作5008等,可以至少部分地经由物体操纵计划模块1126执行。在实施例中,装载环境管理模块1122可以至少部分地执行与装载环境物流相关的操作,诸如操作5002和5007。在一些实施例中,物体识别模块1121、运动计划模块1129、物体操纵计划模块1126和装载环境管理模块1122可以协同操作以定义和/或计划涉及运动和物体操纵两者的轨迹。
方法5000的操作可用于实现用于执行具体任务的具体顺序机器人轨迹。作为一般概述,方法5000可以操作以使计算系统1100将传入物体3510/3520/3530从物体队列3160转移到布置在装载区域3110/3120/3130/3140内的对应托盘3400A/3400B,或到缓冲区3510。这样的转移操作可以包括机器人3300根据预先计划的轨迹的操作,该轨迹根据在方法5000期间发生的各种操作被更新和/或细化。如上所述,方法的操作5000可以结合方法4000的任何或所有操作或与其组合来执行。
方法5000可以经由计算系统1100调用托盘检测操作(例如,操作5004)用于确认装载环境3100内(即指定装载区域3110/3120/3130/3140内)现有托盘3400A/3400B的存在。托盘检测操作还可以包括,例如,检测确认在装载环境3100内的现有托盘3400A/3400B的填充状态。托盘检测操作还可以包括,例如,标识与确认在装载环境3100内的现有托盘3400A/3400B相关联的托盘标识符。
方法5000还可以包括执行托盘交换操作,该操作被配置为导致用来自装载环境外部的新托盘3400C替换装载环境3100内的现有托盘3400A/3400B。托盘交换操作还可以包括执行托盘交换以将新托盘3400C从装载环境3100的外部引入装载环境,并且在实施例中,引入装载环境内的指定装载区域3110/3120/3130/3140。
在方法5000中,计算系统1100可以被配置和操作以引起机器人3300的移动以从物体队列3160中取回目标传入物体3510(例如,从传入物体3510/3520/3530中)并且将目标传入物体3510放置到装载环境3100内的现有托盘上,例如根据方法4000的各种操作。机器人系统还可以被配置为基于与目标传入物体3510和装载环境3100的状态相关的众多因素,对随后的物体取回和放置过程进行计划和调整。这些因素可以从经由相机1200捕获的图像信息中确定。计算系统1100可以被配置为决定从物体队列3160中取回目标传入物体3510并将其放置到装载环境3100内提供的具体装载区域3110/3120/3130/3140内的现有托盘上。在实施例中,计算系统1100可以决定从物体队列3160取回目标传入物体3510并将其放置在装载环境3100内的缓冲区3150内。在另一个实施例中,计算系统1100可以决定从缓冲区3150中取回目标溢出物体3550并将其放置在装载环境3100内提供的某个装载区域3110/3120/3130/3140内的现有托盘上。在另外的实施例中,计算系统1100可以确定现有托盘的填充状态指示接近满载或满载,并且响应于这样的确定,要求托盘交换操作以将现有托盘与位于装载环境外部的新托盘交换。在实施例中,计算系统1100可以确定目标物体包括与装载环境3100内的现有托盘3400A/3400B的托盘标识符不对应的物体类型标识符3700,并且调用托盘交换操作来将现有托盘3400A/3400B与位于装载环境3100外部的新托盘3400C交换。在另一个实施例中,机器人系统可以确定托盘3400不存在于装载环境3100内(或装载环境3100的具体装载区域3110/3120/3130/3140内),并要求专用于接收具有对应物体类型标识符3700的物体3500的新托盘3400C被带入装载环境3100中。
方法5000的描述涉及移动周期B(Movement Cycle B),如图7A-7D所示。这些周期中的移动可以包括在装载环境3100(或更具体地,物体队列3160、装载区域3110-3140和/或缓冲区3150)之前的相机1200(例如,附接到机械臂3320的相机)的移动使得相机1200可以生成表示装载环境3100的图像信息(例如,3d图像信息2700和/或2d图像信息2600),其中图像信息被计算系统1100用来确定执行或发送的操作命令,以使轨迹B1/B2a/B2b/B2c/B3a/B3b/B3c/B4/B5a/B5b通过可用手段(例如机器人3300、(一个或多个)外部机器人、人机交互、外部计算机系统和/或外部机械系统等)执行。
在图7A-7D中描绘的一种类型的移动周期(称为周期B)中,装载环境3100中的机器人3300可以移动以根据轨迹B1从物体队列3160中取回目标传入物体3510-3530。然后,计算系统1100可以基于经由相机1200收集的处理后的图像信息来确定要从物体队列3160取回的目标传入物体3510/3520/3530是否拥有与装载区域3110/3130内存在的现有托盘3400A/3400B对应的物体类型标识符3710/3720/3730。如果取回的或目标传入物体3510/3520/3530的物体类型标识符3710/3720/3730对应,则计算系统1100可以控制机器人3300移动并将目标传入物体3510/3520/3530放置在托盘3400A/3400B上(分别为轨迹B3a和B3b)。可选地,如果取回的或目标传入物体3510/3520/3530的物体类型标识符3710/3720/3730不对应于任何现有托盘3400A/3400B的托盘标识符,则计算系统1100可以控制机器人移动并将目标传入物体3510/3520/3530放置在缓冲区3150中(以步骤B3c为例)。计算系统1100基于多个因素确定在缓冲区3150中将物体移动和放置在哪里,这些因素包括传入物体3510/3520/3530的大小、已经存在于缓冲区3150内的溢出物体3550/3560/3570的位置、以及已经存在于缓冲区3150内的其他物体的取向。计算系统1100考虑这些参数,使得被配置为从缓冲区移动和取回传入物体3510/3520/3530的未来命令不受到外部因素的妨碍,诸如其他物体阻挡机械臂3320的路径和/或在相机1200收集与物体有关的图像信息时阻碍从相机1200对传入物体3510/3520/3530的视野(例如,较大的物体3500位于传入物体3510/3520/3530的前面,从而阻碍了相机视野)。
在实施例中,计算系统1100可以执行托盘检测操作以确定装载环境3100内装载区域3110/3120/3130/3140中的一个或多个托盘3400A/3400B的存在和标识。如果托盘不存在于装载环境内,则计算系统1100可以发送托盘取回命令,该托盘取回命令被配置为使新托盘3400C被移动到装载区域3110/3120/3130/3140之一内的装载环境中(例如,轨迹B2c)。新托盘3400C可以被取回并移动到装载环境3100中,例如,通过自动化机械(叉车或其他车辆)、外部机器人(未示出)、人机交互、机械系统(未示出)等。在实施例中,如果现有托盘3400A/3400B的托盘标识符不对应于由机器人3300取回或目标为取回以放置在托盘3400上的目标传入物体3510-3590的物体类型标识符3710-3730,则计算系统1100可以发送命令以执行托盘交换操作。在托盘交换操作中,现有的托盘3400A/3400B可以从相应的装载区域3110/3120/3130/3140中移除并替换为新托盘3400C(轨迹B2a或B2b),其中新托盘3400C的托盘标识符对应于机器人3300当前取回或正在取回的目标传入物体3510-3590的物体类型标识符3700。
仅作为示例提供移动周期B。机器人3300可以被控制以具有涉及在用作源或目的地的其他储存库之间移动物体3500的其他移动周期。例如,机器人3300可以将现有物体3540/3580/3590从装载环境3100内的装载区域3110/3120/3130/3140、托盘3400和/或缓冲区3150移动到物体队列3160。另一个示例,机器人3300可以将现有物体3540/3580/3590从装载环境3100内的装载区域3110/3120/3130/3140和/或托盘3400移动到缓冲区3150。机器人3300也可以被控制或导致执行涉及在装载环境3100内和贯穿装载环境3100移动托盘3400的其他移动周期。
移动周期B的描述应被理解为涉及在装载环境3100内和/或机器人3300周围的物体的计划和放置的操作的描述。需要源和目的地储存库/位置的不同组合的移动周期可能需要本文公开的操作的不同组合和/或不同顺序而不脱离本公开的范围。
关于方法5000描述的步骤和方法不排除关于方法4000描述的步骤和方法。被配置为执行方法4000的步骤的系统和设备还可以被配置为执行方法5000的步骤。方法4000和5000的步骤可以在相同装载环境3100内同时、连续和以重叠方式执行。例如,方法4000的步骤可被执行以从物体队列3160运输传入物体3510/3520/3530,然后是方法5000的步骤以导致托盘3400在装载环境3100内的重新排列,然后进一步是根据方法4000的附加物体放置步骤。因此,方法4000的任何步骤或操作可以由方法4000或方法5000的适当步骤或操作接替。方法5000的任何步骤或操作可以由方法4000或方法5000的适当步骤或操作接替。
计算系统1100可以执行方法5000的具体步骤,用于将传入物体3510/3520/3530从物体队列3160转移到装载环境3100中,并进一步发送或执行命令以便以提高方法5000的执行效率的方式转换装载环境3100。方法5000可以以操作5001开始或以其他方式包括操作5001,其中机器人系统可以处理如先前上述收集的装载环境图像信息,以将装载环境图像信息转换成稍后可由计算系统1100在执行操作5002-5008中使用的数据,如下文更详细描述的。特别地,装载环境图像信息可以通过控制布置在机器人3300的臂3320上的相机1200、通过控制布置在装载环境中与机器人分开的其他地方提供的辅助相机1200、或者通过控制相机1200和辅助相机1200的组合来捕获。在实施例中,计算系统1100可以控制相机1200/1200来捕获表示装载区域3110/3120/3130/3140中的至少一个的图像信息,以及至少一个装载区域的填充状态。这还可以包括控制相机捕获表示布置在至少一个装载区域3110/3120/3130/3140内的托盘3400A/3400B的填充状态的图像信息。这还可以包括控制相机捕获表示装载区域(例如3110/3130)内和托盘(例如3400A/3400B)上的现有物体3540/3580/3590的图像信息。这还可以包括控制相机1200来捕获表示布置在装载环境3100之外的托盘3400C的填充状态的图像信息。在实施例中,计算系统1100可以控制相机1200/1200来捕获表示缓冲区3150以及缓冲区3150的填充状态的图像信息。这还可以包括控制相机捕获表示缓冲区内的物体3550/3560/3570的图像信息。在由相机1200和/或辅助相机1200捕获之后,装载环境图像信息可以由计算系统1100获得或接收并且随后如前所述处理。在实施例中,计算系统1100可能已经被预先供应或预先加载关于装载环境3100的信息,从而促进操作5001的执行。
方法5000还可以包括操作5002,其中计算系统1100从处理的装载环境图像信息中标识装载环境状态。在实施例中,装载环境状态可以包括与存在于装载区域3110-3140和/或缓冲区3150内的相应现有物体3550-3590相关联的多个物体类型标识符3700。装载环境状态还可以包括与经由物体队列3160传入的相应传入物体3510/3520/3530相关联的多个物体类型标识符3700。多个物体类型标识符3700可以经由如先前上述收集(例如,经由物体识别、条形码、SKU或QR码读取等)的图像信息接收、获得或以其他方式确定。可选地或附加地,物体类型标识符3700可以被预先提供或预先加载到计算系统1100中。在实施例中,物体类型标识符3700可以经由分开的处理器/系统提供给机器人系统。在另外的实施例中,物体类型标识符3700可以从被配置为读取与物体3500相关联的无线标识符(例如,RFID标签)的系统接收或获得。物体类型可能已经由计算系统1100本身或者由与计算系统1100通信的另一个系统确定。
方法5000还可以包括操作5003,其中计算系统执行托盘检测操作。计算系统1100被配置为确定在装载环境3100内(更具体地,在装载区域3110/3120/3130/3140内)托盘3400A/3400B是否存在。在执行操作5003时,机器人系统可以启动操作5004,以从装载环境图像信息中检测装载环境3100中(或更具体地,分别在装载区域3110/3130中)现有托盘3400A/3400B的存在。在装载环境内无现有托盘被检测到的实施例中,计算系统1100还可以输出托盘取回命令,该命令被配置为使新的或外部托盘3400C被带入装载环境3100中,并且更具体地,被带入指定装载区域3110/3120/3130/3140中(例如,在图7A中示为移动或步骤B2a/B2b/B2c)。在一些实施例中,新托盘3400C可以被取回并被移动到装载环境3100中,并且现有托盘(例如,现有托盘3400A/3400B之一)可以例如通过自动化机械(叉车、AGV或其他车辆)、外部机器人(未示出)、人机交互、机械系统(未示出)等运输离开装载环境3100。例如,现有的托盘3400A/3400B和新的托盘3400C可以经由AGV(未示出)定位在装载环境3100中的装载区域3110/3120/3130/3140之一上,并被运输到装载环境3100中的装载区域3110/3120/3130/3140之一或从其运输。在实施例中,计算系统1100可以被配置为使用末端执行器装置3330使机器人3300抓持并在外部新托盘3400C中移动。
操作5003还可以包括并启动操作5005,其中计算系统1100确定现有托盘3400A/3400B的托盘填充状态(如果一个基于操作5004的输出在装载环境3100内标识出;或如果新托盘3400C被带入装载环境3100,如托盘取回命令所提供的)。在实施例中,托盘填充状态是经由由相机1200捕获的图像信息来确定的。如先前上述,并参考图2E、2F和3A,计算系统1100采用与物体识别模块1121相关的方法,这些方法可以被执行用于图像分析。可以包括描述相对于所选点的各种位置的相应深度值的深度信息的空间结构信息(例如,3d图像信息2700),可以用于确定托盘填充状态。深度信息可用于标识存在于托盘3400A/3400B上的现有物体3540/3580/3590,和/或估计现有物体3540/3580/3590如何在在托盘3400A/3400B上空间排列。在某些实施例中,空间结构信息可包括或可用于生成描述物体现有物体3540/3580/3590的一个或多个表面的位置的点云。空间结构信息仅仅是可能的图像分析的一种形式(例如,采用2d图像信息2600),并且可以根据本文描述的方法使用本领域技术人员已知的其他形式。空间结构信息可用于协调物体3500在托盘3400A/3400B上的放置,以防止一旦放置在托盘上就可能导致物体3500损坏或移位的不当放置。
在实施例中,操作5005可以返回空的托盘填充状态,其中计算系统1100已经分析了所获得的图像信息并确定托盘3400A/3400B上无物体存在。在实施例中,操作5005可以返回占用的托盘填充状态,其中计算系统1100已经分析了所获得的图像信息并确定托盘3400A/3400B上至少一个现有物体3540/3580/3590存在。计算系统1100还可以确定在托盘3400A/3400B上标识的至少一个现有物体3540/3580/3590的姿势。在实施例中,操作5005可以返回已满的托盘填充状态,其中计算系统1100分析了所获得的图像信息并确定了托盘3400A/3400B上存在足够的现有物体3540/3580/3590,使得由于托盘3400A/3400B的最终总重量(例如满足行业重量限制)、托盘3400A/3400B上缺乏空余空间/地方(space/room),或者现有物体3540/3580/3590、后续物体、托盘或所有的某些组合无损坏风险,后续物体3500实际上无法被放置在托盘340A/34000B上。
在实施例中,托盘检测操作可以——响应于确定托盘填充状态返回被占用的输出——使计算系统1100执行若干后续步骤中的至少一个。这可以包括控制相机1200以生成更新的装载环境图像信息并且将更新的装载环境图像信息发送或以其他方式提供给计算系统1100(例如根据操作4009)。然后物体检测和/或障碍物检测程序可以在现有托盘3400A/3400B上执行以生成物体/障碍物检测程序数据。一旦生成,物体/障碍物检测程序数据就可以被传送到计算系统1100并且可以用于生成或执行将被随后执行的物体移动命令(在下面更详细地描述)。计算系统1100可以输出命令以便以创建物体的层的方式将后续物品放置在托盘3400A/3400B上。一旦第一层物体3500在托盘3400A/3400B上形成,计算系统1100就可以使用第一层的点云来确定形成第一层的每个物体3500的高度。例如,物体3580的高度可能不等于布置在物体3580附近(参见图3D)的物体3590的高度。然后,计算系统1100可以将此信息考虑在内以用于未来的计划和放置操作,该计划和放置操作用来形成在托盘3400A/3400B上创建的第一层物体的顶部上形成的物体3500的后续层。
在托盘填充状态在托盘检测操作期间返回被占用的输出的实施例中,计算系统1100还可以执行后续步骤。这些可以包括控制相机1200生成更新的装载环境图像信息。它还可以包括确定现有托盘3400A/3400B的位置偏差,其中位置偏差数据是针对现有物体3540/3580/3590的姿势,或托盘3400A/3400B本身的姿势改变。位置偏差数据可以在现在存在的托盘3400A/3400B先前存在于的装载环境3100内(或更具体地在装载区域3110/3130内)但出于各种原因之一被交换到装载环境之外的情况中生成。此后,该托盘3400A/3400B被带回到装载环境中,但其位置或姿势与相同托盘先前存在于装载环境中时其所处的位置或姿势不完全匹配。例如,已将托盘3400A/3400B带入装载环境3100的AGV(或其他运输工具)可能已经以导致托盘具有一定旋转度(例如大约90°/180°/270°旋转)的方式这样做。AGV(或其他运输工具)也可能无法将托盘3400A/3400B带回到其先前所处的装载环境3100内的确切横向坐标(例如X、Y坐标)。作为另一个示例,托盘经由AGV(或其他运输工具)的突然移动可能已经导致托盘上的物体从其原始位置移动。因此,可以通过比较旧的装载环境图像信息和更新的装载环境信息,以及通过确定在装载环境图像信息和更新的装载环境图像之间提供的现有托盘(以及在实施例中,布置在现有托盘顶部的(一个或多个)物体)的移动或平移程度来生成位置偏差数据。因此,计算系统1100将把此位置偏差数据与稍后要执行的物体移动命令(下面进一步详细描述)合并,以便在放置下一个物体时做出必要的调整。在这样做时,计算系统1100确保放置在现有托盘3400A/3400B上的多个物体以适当的方式定位和定向,如先前在移动周期B1的描述中上述的。如先前上述,此位置偏差数据也将被合并到托盘上物体层的正确成型中。
在另外的实施例中,操作5005可以返回空的托盘填充状态值。然后,计算系统1100可以确定可以装到空的现有托盘3400A/3400B上的溢出物体3550/3560/3570和/或进入物体3510/3520/3530的数量。输出的物体移动命令(下面进一步详细描述的)可以相应地例如通过用现有物体3540/3580/3590(例如存在于缓冲区3150内的物体)和/或现有托盘3400A/3400B上的传入物体3510/3520/3530(例如,通过物体队列3160提供的物体)形成第一层,来将传入物体3510/3520/3530放置到现有托盘3400A/3400B上。
操作5003还可以包括并启动操作5006,其中计算系统1100标识与现有托盘相关联的托盘标识符(如果现有托盘在装载环境内从操作5004的输出中被标识出)。计算系统1100可以经由如先前上述收集的图像信息接收、获得或以其他方式确定托盘标识符。可选地或附加地,托盘标识符可以被预先提供或预先加载到计算系统1100中。在实施例中,托盘标识符可以经由分开的处理器/系统被提供给计算系统1100。在另一个实施例中,存在于现有托盘3400A/3400B上的物体3500的物体类型标识符3700可用于确定托盘标识符。例如,现有物体3580/3590的物体类型标识符3700可以允许计算系统1100确定具有相似或匹配物体类型标识符3700的传入物体3510/3520/3530将对应于现有托盘3400A。在实施例中,标识托盘标识符可以包括例如根据在物体队列3160中等待的传入物体3510/3520/3530将新的托盘标识符分配给空托盘。在实施例中,计算系统1100可以发现由于现有托盘3400A/3400B的不足(例如,托盘标识符不对应于与要被移动的众多传入、溢出和/或现有物体3510-3590相关联的物体类型标识符3710/3720/3730),需要托盘交换命令。因此,计算系统1100可以响应于确定需要托盘交换命令,发送被配置成用新托盘3400C交换现有托盘3400A/3400B(在图7A中示为轨迹B2a/B2b)的托盘交换命令。在实施例中,现有托盘3400A/3400B和新托盘3400C可以经由外力交换,例如通过自动化机械(叉车或其他车辆)、外部机器人(未示出)、人机交互、机械系统(未示出)等。在另一个实施例中,现有托盘3400A/3400B和新托盘3400C可以经由机器人3300交换(即机器人3300使用其臂3320和末端执行器装置3330来促进交换)。
方法5000还可以包括托盘交换操作5007。在托盘交换操作5007中,计算系统1100可以确定托盘交换命令的执行必要性并且进行托盘交换命令的执行。由于现有托盘3400A/3400B的托盘填充状态返回指示已满的值,计算系统1100可以确定是否需要托盘交换命令。在实施例中,托盘交换命令还可以响应于确定与现有物体3540/3580/3590相关联的现有物体类型标识符3700与托盘标识符不对应而被确定为需要。在另一个实施例中,托盘交换命令还可以响应于确定与溢出物体3550/3560/3570相关联的物体类型标识符3700与托盘标识符不对应而被确定为需要。在实施例中,托盘交换命令还可以响应于确定与传入物体3510/3520/3530相关联的传入物体类型标识符3710/3720/3730与托盘标识符不对应而被确定为需要。在仍又一实施例中,由于缓冲区具有不足的空间(即无法容纳更多物体),并且目标物体具有与现有托盘3400A/3400B不对应的物体类型标识符3700,托盘交换命令可被确定为需要。在实施例中,如果托盘交换命令被认为是必要的,则计算系统1100可以使托盘交换命令被执行并且托盘交换发生。
方法5000还可以包括操作5008,其中计算系统1100基于多个现有物体3540/3580/3590类型标识符、多个传入物体3510/3520/3530类型标识,多个溢出物体3550/3560/3570类型标识、以及指示托盘标识符的托盘标识符之间的比较来确定要执行的物体移动命令。例如,物体移动命令可以根据方法4000的一个或多个操作来执行。在实施例中,响应于确定与现有物体相关联的溢出物体3550/3560/3570的物体类型标识符3700对应于现有托盘的物体类型,物体移动命令可被执行以使机械臂3320取回缓冲区3150内的溢出物体3550/3560/3570并将溢出物体3550/3560/3570放置在现有托盘3400A/3400B上。在替代实施例中,响应于确定与传入物体3510/3520/3530相关联的物体类型标识符3700对应于托盘标识符,物体移动命令被执行以使机械臂3320取回传入物体3510/3520/3530并将传入物体3510/3520/3530放置在现有托盘3400A/3400B上。在仍又一实施例中,响应于确定与传入物体3510/3520/3530相关联的物体类型标识符3700不对应于托盘标识符,物体移动命令被执行以取回传入物体3510/3520/3530并将传入物体放置在缓冲区3150内。
对于相关领域的普通技术人员将明显的是,在不脱离任何实施例的范围的情况下,可以对本文所述的方法和应用进行其他适当的修改和改编。上述实施例是说明性示例,并且不应解释为将本发明限于这些特定实施例。应当理解,本文所公开的各种实施例可以以与说明书和附图中具体呈现的组合不同的组合来进行组合。还应当理解,取决于示例,本文描述的任何过程或方法的某些动作或事件可以以不同的顺序执行,可以被添加、合并或完全省略(例如,所有描述的动作或事件对于执行方法或过程可能不是必需的)。此外,尽管为了清楚起见,本文实施例的某些特征被描述为由单个部件、模块或单元来执行,但是应当理解,本文描述的特征和功能可以由部件、单元或模块的任何组合来执行。因此,在不脱离所附权利要求书所限定的本发明的精神或范围的情况下,本领域技术人员可以影响各种变化和修改。
其他实施例包括:
实施例1是一种计算系统,包括:被配置为与机器人通信的控制系统,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机;至少一个处理电路,其被配置为当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,执行以下步骤以用于将物体从物体队列转移到装载环境中:检测要被提供给装载环境的物体队列;接收多个物体类型标识符,多个物体类型标识符中的每一个与来自队列的物体中的相应物体相关联;基于从相机接收到的物体队列图像信息,确定队列中目标物体的目标物体姿势;为目标物体确定目标物体放置,目标物体放置指示目标物体在装载环境中的计划放置位置;根据从物体队列图像信息生成的目标物体姿势和目标物体的计划放置位置执行运动计划操作,用于目标物体的取回和放置;根据运动计划操作执行取回命令,用于从队列中取回目标物体;根据运动计划操作执行放置命令,用于将目标物体放置在装载环境中;以及生成更新的装载环境图像信息,包括装载环境中的目标物体放置姿势。
实施例2是实施例1的系统,还包括处理更新的装载环境图像信息以执行新的运动计划操作,用于取回队列中的后续物体并将其放置到装载环境中。
实施例3是实施例1的系统,其中该至少一个处理电路还被配置用于确定该目标物体是具有对应物体类型标识符的对应物体还是具有非对应物体类型标识符的非对应物体,并且其中如果目标物体为对应物体,则计划放置位置被确定为装载区域,并且如果目标物体为非对应物体,则计划放置位置被确定为缓冲区。
实施例4是实施例3的系统,其中该至少一个处理电路还被配置用于通过处理更新的装载环境图像信息来执行托盘检测操作以确定装载区域中提供的托盘的姿势;以及根据托盘检测操作,控制机械臂将对应物体放置在装载区域中的托盘上。
实施例5是实施例4的系统,其中该至少一个处理电路还被配置用于在将对应物体放置在托盘上之后,记录对应物体放置姿势。
实施例6是实施例3的系统,其中该至少一个处理电路还被配置用于控制机械臂将非对应物体放置在缓冲区中。
实施例7是实施例6的系统,还包括在将非对应物体放置在缓冲区中之后记录非对应物体放置姿势的步骤。
实施例8是实施例1的系统,其中该至少一个处理电路还被配置用于标识与目标物体相关联的标记;基于标识的标记将物体类型标识符分配给目标物体;以及将物体类型标识符传送给控制系统。
实施例9是一种计算系统,包括:被配置为与机器人通信的控制系统,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机;至少一个处理电路,其被配置为当机器人处于包括多个装载区域、缓冲区、现有物体和传入物体队列的装载环境中时,执行以下步骤:处理从相机接收到的装载环境图像信息;从处理后的装载环境图像信息中标识装载环境状态,装载环境状态包括与相应现有物体相关联的多个现有物体类型标识符和与相应传入物体相关联的多个传入物体类型标识符;执行托盘检测操作以:从装载环境图像信息中检测装载环境中的现有托盘,确定现有托盘的托盘填充状态,并标识与现有托盘相关联的托盘标识符;以及基于多个现有物体类型标识符、多个传入物体类型标识符和托盘标识符之间的比较,确定要被执行的物体移动命令。
实施例10是实施例9的系统,其中响应于确定与现有物体相关联的现有物体类型标识符与托盘标识符对应,物体移动命令被执行以使机械臂取回现有物体并将现有物体放置在现有托盘上。
实施例11是实施例9的系统,其中响应于确定与传入物体相关联的传入物体类型标识符与托盘标识符对应,物体移动命令被执行以使机械臂取回传入物体并将传入物体放置在现有托盘上。
实施例12是实施例9的系统,其中响应于确定与传入物体相关联的传入物体类型标识符不与托盘标识符对应,物体移动命令被执行以取回传入物体并将传入物体放置在缓冲区内。
实施例13是实施例9的系统,其中该托盘检测操作还包括,响应于确定该托盘填充状态被占用:控制相机以生成更新的装载环境图像信息;在现有托盘上执行物体检测程序和/或障碍物检测程序以生成物体/障碍物检测程序数据;将物体/障碍物检测程序数据传送到控制系统;以及将物体/障碍物检测程序数据与要被执行的物体移动命令合并。
实施例14是实施例9的系统,其中该托盘检测操作还包括,响应于确定该托盘填充状态被占用:控制相机以生成更新的装载环境图像信息;确定现有托盘的位置偏差;以及将位置偏差数据与要被执行的物体移动命令合并。
实施例15是根据实施例10的系统,其中该托盘检测操作还包括,响应于确定托盘填充状态为空:确定能够装到现有托盘上的传入物体和/或现有物体的数量;以及输出物体移动命令以用现有托盘上的传入物体和/或现有物体形成第一层。
实施例16是实施例9的系统,其中该至少一个处理电路还被配置用于:确定是否需要托盘交换命令;以及响应于确定需要托盘交换命令,发送被配置为使现有托盘与新托盘交换的托盘交换命令。
实施例17是实施例16的系统,其中当现有托盘的托盘填充状态为满时,确定需要托盘交换命令。
实施例18是实施例16的系统,其中响应于确定与现有物体相关联的现有物体类型标识符与托盘标识符不对应,确定需要托盘交换命令。
实施例19是实施例16的系统,其中响应于确定与传入物体相关联的传入物体类型标识符与托盘标识符不对应,确定需要托盘交换命令。
实施例20是一种机器人控制方法,其被配置为由被配置为与机器人通信的控制系统执行,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机,当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,方法包括:检测要被提供给装载环境的物体队列;接收多个物体类型标识符,多个物体类型标识符中的每一个与来自队列的物体中的相应物体相关联;基于从相机接收到的物体队列图像信息,确定队列中目标物体的目标物体姿势;为目标物体确定目标物体放置,目标物体放置指示目标物体在装载环境中的计划放置位置;根据从物体队列图像信息生成的目标物体姿势和计划放置位置执行运动计划操作,用于目标物体的取回和放置;根据运动计划操作执行取回命令,用于从队列中取回目标物体;根据运动计划操作执行放置命令,用于将目标物体放置在装载环境中;以及生成更新的装载环境图像信息,包括装载环境中的目标物体放置姿势。
实施例21是一种机器人控制方法,其被配置为由被配置为与机器人通信的控制系统执行,该机器人具有包括或附接到末端执行器装置的机械臂,并且具有附接到机械臂的相机,当机器人处于装载环境中并且用于放置在装载环境中的物体队列被提供时,方法包括:处理从相机接收到的装载环境图像信息;从处理后的装载环境图像信息中标识装载环境状态,装载环境状态包括与相应现有物体相关联的多个现有物体类型标识符和与相应传入物体相关联的多个传入物体类型标识符;执行托盘检测操作以:从装载环境图像信息中检测装载环境中的现有托盘,确定现有托盘的托盘填充状态,并标识与现有托盘相关联的托盘标识符;以及基于多个现有物体类型标识符、多个传入物体类型标识符和托盘标识符之间的比较,确定要被执行的物体移动命令。
- 机器人、用于机器人的物体识别装置及物体识别方法
- 零件放置系统、零件放置设备和用于放置零件的方法
- 用于在物体上放置标签的系统及其方法和用于机器人系统的效应器
- 用于在物体上放置标签的系统及其方法和用于机器人系统的效应器