Robotic system and method with object detection

The control system with a robotic arm and camera enhances robotic systems' ability to detect and interact with layer separators between stacked objects by using 3D and 2D image analysis, addressing the complexity of irregularly placed separators and improving task efficiency.

JP2025010048AActive Publication Date: 2025-01-20MUJIN INC
View PDF 2 Cites 0 Cited by

Patent Information

Application Number
JP2024105493
Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Priority Date
2023-07-02
Filing Date
2024-06-28
Publication Date
2025-01-20
Estimated Expiration
2044-06-28

AI Technical Summary

Technical Problem

Robots lack the sophistication to replicate human interaction for identifying and managing complex tasks, particularly in detecting and interacting with layer separators between stacked objects on loading or transport platforms, which are often irregularly placed and shaped.

Method used

A control system using a camera and robotic arm with end effector, employing 3D and 2D image information to identify edges and contours of stacked objects, detect extension lines, and determine the presence of layer partitions based on threshold lengths, enabling the robotic system to autonomously detect and interact with layer separators.

Benefits of technology

Enhances the speed and accuracy of detecting and retrieving layer separators, improving the efficiency of robotic systems in handling complex tasks involving stacked objects.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2025010048000001_ABST
    Figure 2025010048000001_ABST
Patent Text Reader

Abstract

To provide a computing system that enables identification and detection of layer separators disposed between layers of objects arranged on a loading or a transportation platform.SOLUTION: A processing circuit of a computing system is configured to: identify a contour of stacked objects based on 3D image information obtained; identify a top surface of the stacked objects based on the contour of the stacked objects; detect extension lines, each corresponding to an edge of an object or a gap between objects, extending from a perimeter towards a center of the top surface based on 2D image information of the top surface of the stacked objects; detect the presence of a layer divider based on a length of each of the extension lines being less than a line-length threshold; identify a contour of the layer divider according to points on the top surface corresponding to termination points of the extension lines; and determine a trajectory to control movement of a robot based on the contour.SELECTED DRAWING: Figure 4A
Need to check novelty before this filing date? Find Prior Art

Description

[Technical field]

[0001] (CROSS REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of U.S. Provisional Patent Application No. 63 / 524,668, filed July 2, 2023, entitled "A ROBOTIC SYSTEM WITH OBJECT DETECTION," the entire contents of which are incorporated herein by reference.

[0002] The present technology is directed generally to robotic systems, and more particularly to systems, processes, and techniques for identifying and detecting objects. More specifically, the present technology enables the identification and detection of layer separators disposed between layers of objects disposed on a loading or transportation platform. [Background technology]

[0003] Currently, many robots (e.g., machines configured to automatically / autonomously perform physical operations) are widely used in a variety of different fields, with ever-increasing performance and decreasing costs. Robots can be used to perform a variety of tasks (e.g., manipulating or transporting objects through space), for example, in manufacturing and / or assembly, packaging and / or packaging, transportation and / or shipping, etc. Robots can replicate human actions when performing tasks, thereby replacing or reducing human involvement that would otherwise be required to perform dangerous or repetitive tasks.

[0004] Despite advances in technology, robots often lack the sophistication to replicate human interactions to perform larger and / or more complex tasks. Thus, a need remains for improved techniques and systems for managing the operation and / or interaction between robots. Summary of the Invention

[0005] In some aspects, a computing system for detecting layer partitions between stacked objects is provided, the computing system including: a control system configured to communicate with a robot having at least one camera and a robotic arm including an end effector device; and a processing circuit configured to: identify at least one edge and contour of the stacked object based on 3D image information obtained from at least one image captured by the at least one camera; identify a top surface of the stacked object based on the contour and at least one edge of the stacked object; detect extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one edge of the object or a gap between objects of the stacked objects, based on 2D image information of the top surface of the stacked object, the extension lines extending from a periphery of the top surface toward a center of the top surface, the extension lines each corresponding to at least one edge of the object or a gap between objects of the stacked objects, detect a presence of a layer partition based on a length of each of the extension lines being less than a line length threshold; identify a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; and determine a trajectory for controlling a movement of the robotic arm based on the contour of the layer partition.

[0006] In some aspects, a computing system for detecting layer partitions between stacked objects is provided, comprising: a control system configured to communicate with a robot having at least one camera and a robotic arm including an end effector device; and a processing circuit configured to identify at least one edge and contour of the stacked object based on 3D image information obtained from at least one image captured by the at least one camera, identify a top surface of the stacked object based on the contour and at least one edge of the stacked object, detect extension lines extending from a periphery of the top surface toward a center of the top surface based on 2D image information of the top surface of the stacked object, each of which corresponds to at least one edge of the object or a gap between objects of the stacked objects, and detect the presence of a layer partition in response to a length of each of the extension lines being less than a line length threshold.

[0007] In some aspects, a computer processor implemented method for detecting layer partitions between stacked objects is provided, comprising: identifying at least one edge and a contour of the stacked object based on 3D image information obtained from at least one image captured by at least one camera; identifying a top surface of the stacked object based on the contour and at least one edge of the stacked object; detecting extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one of an edge of the object or a gap between objects of the stacked objects, based on 2D image information of the top surface of the stacked object; detecting the presence of a layer partition based on a length of each of the extension lines being less than a line length threshold; identifying a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; and identifying a trajectory for controlling a movement of a robotic arm of a robot based on the contour of the layer partition.

[0008] Other features and aspects will be apparent from the following detailed description, the drawings, and the claims.

[0009] This Summary is provided to introduce selected concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used as an aid in determining the scope of the claimed subject matter. [Brief description of the drawings]

[0010] [Figure 1A] 1 illustrates an example of a system for object detection, identification, and capture in accordance with one or more embodiments. [Figure 1B] 1 illustrates an example of a system for object detection, identification, and capture in accordance with one or more embodiments. [Figure 1C] 1 illustrates an example of a system for object detection, identification, and capture in accordance with one or more embodiments. [Figure 1D]1 illustrates an example of a system for object detection, identification, and capture in accordance with one or more embodiments. [Figure 2A] 1 illustrates an example of a computing system configured to detect, identify, and acquire objects in accordance with one or more embodiments. [Figure 2B] 1 illustrates an example of a computing system configured to detect, identify, and acquire objects in accordance with one or more embodiments. [Figure 2C] 1 illustrates an example of a computing system configured to detect, identify, and acquire objects in accordance with one or more embodiments. [Figure 2D] 1 illustrates an example of a computing system configured to detect, identify, and acquire objects in accordance with one or more embodiments. [Figure 2E] 1 illustrates an example of image information processed by the systems and methods disclosed herein, in accordance with one or more embodiments. [Figure 2F] 1 is an example of image information processed by the systems and methods disclosed herein, in accordance with one or more embodiments. [Figure 3A] 1 illustrates an example of an environment for operating a robotic system in accordance with one or more embodiments. [Figure 3B] 1 illustrates an example of an environment for object detection, identification, and capture by a robotic system in accordance with one or more embodiments. [Figure 4A] 1 illustrates an example method for layer partition detection, identification, and acquisition by a robotic system in accordance with one or more embodiments. [Figure 4B] 1 illustrates an example of a method for determining a top surface of a stacked object by a robotic system, according to one or more embodiments. [Figure 5A] 1 illustrates an example of an image of stacked objects and layer dividers according to one or more embodiments. [Figure 5B] 1 illustrates an example of an image of stacked objects and layer dividers according to one or more embodiments. [Figure 5C] 1 illustrates an example of an image of stacked objects and layer dividers according to one or more embodiments. [Figure 6A] 1 illustrates an example of a method for determining contours of layer dividers in a stacked object according to one or more embodiments. [Figure 6B] 1 illustrates an example of an image for determining layer partitions in accordance with one or more embodiments. [Figure 7] 1 illustrates an example of a method for verifying the presence of a layer divider, according to one or more embodiments. [Figure 8] 1 illustrates an example of an environment in which two layers of objects are stacked on a pallet, in accordance with one or more embodiments. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Throughout the drawings and detailed description, the same drawing reference numbers will be understood to refer to the same elements, features, and structures unless otherwise stated or provided. The drawings may not be to scale, and the relative sizes, proportions, and depictions of elements in the drawings may be exaggerated for clarity, illustration, and convenience.

[0012] Systems and methods related to object detection, identification, and capture are described herein. In some examples, the disclosed systems and methods may facilitate detection, identification, and capture of layer dividers disposed between layers of objects disposed on a loading or transport platform. As described herein, the objects may be boxes, bins, crates, etc., which are disposed on a loading or transport platform, such as, for example, a skid or a pallet. In the detailed description below, the terms loading or transport platform and pallet may be used interchangeably, and these terms may refer to any platform on which objects may be stacked for storage or transport.

[0013] In some examples, the shape and size of the objects may vary. In some examples, the shape of the objects may be generally rectangular or cubic. The objects may be disposed on the loading or transport platform in an organized, unorganized, or irregular manner. For example, the objects disposed on the loading or transport platform may be disposed in shapes such as, for example, rectangular prisms, pyramids, or cubes. In other examples, the objects may be disposed on the loading or transport platform in layers, each of which may or may not have a similar or equal number or objects.

[0014] An object in a layer may be separated from an object in another layer by a splitter sheet, layer separator, or layer divider. A layer separator or layer divider may separate layers of objects on a loading or transport platform and may help distribute weight, protect the product from dust and dirt, and protect against strapping and forklift damage to one or more objects. In some cases, a layer divider may be a thin layer placed between objects, such as, for example, a slip sheet, splitter sheet, cardboard sheet, corrugated cardboard, paperboard (solid sheet), corrugated sheet, card stock, paper sheet, plastic sheet, or layer pad that may be placed between layers of objects. In some cases, the thickness of the layer divider may be minimal, for example, less than 10%, less than 5%, less than 2%, or less than 1% compared to any dimension of the object or the length or width of the layer divider. Some examples of layer divider thicknesses are: corrugated board thickness may vary from 3mm to 15mm, paperboard thickness may vary from 0.2mm to 1mm, and cardboard thickness may vary from 0.25mm to 0.8mm depending on whether the board is single wall, double wall, or triple wall.

[0015] In some cases, the layer divider may be disposed between some or all of the layers of objects on the loading or transportation platform. In some cases, the layer divider may be sized to cover all, nearly all, or substantially all (e.g., more than 50%, more than 80%, more than 90%, more than 95%, or more than 98%) of the top surface of the layer of objects. In some cases, the length and width of the layer divider may be less than the corresponding length and width of the top surface of the layer of objects disposed thereon. In some cases, the layer divider may be substantially quadrangular in shape, such as a rectangular shape or a square shape. In some cases, the shape of the layer divider may be distorted due to folding, bending, or tearing of one or more edges or sides of the layer divider.

[0016] Detection and identification of layer dividers in such situations may be difficult due to the irregular arrangement and shape of the layer dividers. The systems and methods described herein improve object detection, identification, and acquisition of layer dividers that come in different shapes and are arranged in a regular or semi-regular manner. Thus, the systems and methods described herein are designed to detect the presence of layer dividers and identify the contours of the layer dividers. The systems and methods described herein may include robotic systems. A robotic system configured according to embodiments herein may autonomously perform integrated tasks by coordinating the operation of multiple robots. The robotic system may include any suitable combination of robotic devices, actuators, sensors, cameras, and computing systems configured to control, issue commands, receive information from the robotic devices and sensors, access, analyze, and process data generated by the robotic devices, sensors, and cameras, generate data or information usable for control of the robotic system, and plan the movements of the robotic devices, sensors, and cameras, as described herein. A robotic system as used herein does not necessarily have immediate access to or control of the robotic actuators, sensors, or other devices. A robotic system may be a computing system configured to improve the performance of such robotic actuators, sensors, and other devices through receiving, analyzing, and processing information as described herein.

[0017] The technology described herein provides technical improvements to robotic systems configured for use in identifying, detecting, and retrieving objects. The technical improvements described herein increase the speed, precision, and accuracy of these tasks, making it easier to detect, identify, and retrieve layer separators disposed between layers of objects on a loading or transport platform. The robotic and computing systems described herein address the technical problem of identifying, detecting, and retrieving layer separators disposed between layers of objects on a loading or transport platform. Addressing this technical problem improves the technology of identifying, detecting, and retrieving objects.

[0018] This application refers to systems and robotic systems. A robotic system may include robotic actuator components (e.g., a robotic arm, a robotic gripper, etc.), various sensors (e.g., a camera, etc.), and various computational or control systems, as described herein. As described herein, a computational or control system may be referred to as "controlling" various robotic components, such as the robotic arm, the robotic gripper, the camera, etc. Such "control" may refer to direct control of and interaction with the various actuators, sensors, and other functional aspects of the robotic components. For example, a computational system may control a robotic arm by issuing or providing all of the necessary signals to the various motors, actuators, and sensors to cause robotic movements. Such "control" may also refer to the issuance of abstract or indirect commands to a further robotic control system, which then translates such commands into the necessary signals to cause the robotic movements. For example, a computational system may control a robotic arm by issuing commands describing a trajectory or destination position to which the robotic arm should move, and a further robotic control system associated with the robotic arm may receive and interpret such commands and then provide the necessary direct signals to the various actuators and sensors of the robotic arm to cause the necessary movements.

[0019] In particular, the technology described herein assists a robotic system in detecting, identifying, and interacting with layer separators disposed between layers of objects disposed on a loading or transport platform. Detecting, identifying, and removing a layer separator from between layers of objects requires several steps, including identifying edges and contours of stacked objects disposed on a loading or transport platform, identifying a top surface of the stacked objects based on the contours and edges of the stacked objects, detecting extension lines corresponding to edges of objects or gaps between objects of the stacked objects, the extension lines extending from the periphery of the top surface of the stacked objects toward the center of the top surface, detecting the presence of a layer divider based on the length of each of the extension lines being less than a threshold, and identifying the contour of the layer divider according to the point on the top surface corresponding to the end point of the extension line. For example, due to the possible irregular arrangement and shape of the layer dividers, it may be necessary to recognize and identify the contour of the layer divider.

[0020] In the following description, specific details are described to facilitate understanding of the disclosed technology. In embodiments, the technology introduced herein may be implemented without including each specific detail disclosed herein. In other instances, well-known features, such as specific functions or routines, are not described in detail to avoid unnecessarily obscuring the present disclosure. References herein to "an example," "an embodiment," "one embodiment," and the like, mean that the particular feature, structure, material, or characteristic described is included in at least one embodiment of the present disclosure. Thus, the appearances of such phrases herein do not necessarily all refer to the same embodiment. On the other hand, such references are not necessarily mutually exclusive. Moreover, a particular feature, structure, material, or characteristic described with respect to any one embodiment may be combined in any suitable manner with that of any other embodiment, unless such items are mutually exclusive. It should be understood that the various embodiments shown in the figures are merely illustrative representations and are not necessarily drawn to scale.

[0021] For clarity purposes, some details describing structures or processes that are well known and often associated with robotic systems and subsystems, but that may unnecessarily obscure some important aspects of the technology of the present disclosure, are not set forth in the following description. Additionally, while the following disclosure describes some embodiments of different aspects of the technology, some other embodiments may have different configurations or different components than those described in this section. Thus, the disclosed technology may have other embodiments that have additional elements or that do not have some of the elements described below.

[0022] Many embodiments or aspects of the disclosure described below may take the form of computer or controller executable instructions, including routines executed by a programmable computer or controller. Those skilled in the relevant art will appreciate that the disclosed technology may be practiced on or with computer or controller systems other than those shown and described below. The technology described herein may be embodied in a special purpose computer or data processor that is specially programmed, configured, or constructed to execute one or more of the computer executable instructions described below. Thus, the terms processor, processing unit, computer, and controller as used generally herein refer to any data processor, and may include Internet appliances and handheld devices, including palmtop computers, wearable computers, cellular or mobile phones, multiprocessor systems, processor-based or programmable appliances, network computers, minicomputers, and the like. For ease of explanation, the singular terms processor, controller, or computer may be used to describe the embodiments described in this application, although in other embodiments, multiple processors or computers may be used, or a processor or computer may include multiple processing elements, or multiple types of processing elements, or both. For example, a single hardware component or two or more hardware components may be implemented by a single processor, or two or more processors, or a processor and a controller. One or more processors, or one processor, or one controller may implement a single hardware component or two or more hardware components. Information manipulated by these computers and controllers may be presented on any suitable display medium, including a liquid crystal display (LCD). Instructions for executing executable tasks by a computer or controller may be stored in or on any suitable computer-readable medium, including hardware, firmware, or a combination of hardware and firmware.The instructions may be contained in any suitable memory device, including, for example, a flash drive, a USB device, and / or other suitable medium.

[0023] The terms "coupled" and "connected," along with their derivatives, may be used herein to describe a structural relationship between components. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, "connected" may be used to indicate that two or more elements are in direct contact with each other. Unless otherwise clear in context, the term "coupled" may be used to indicate that two or more elements are in direct or indirect contact with each other (with other intervening elements therebetween), or that two or more elements cooperate or interact with each other (e.g., in a causal relationship, such as for signal transmission / reception or for function calls), or both.

[0024] Any reference herein to image analysis by a computing system may be performed in accordance with or using spatial structure information, which may include depth information describing respective depth values ​​of various locations relative to a selected point. The depth information may be used to identify an object or estimate how an object is spatially located. In some cases, the spatial structure information may include, or be used to generate, a point cloud describing the location of one or more surfaces of an object. Spatial structure information is only one form of possible image analysis, and other forms known to those skilled in the art may be used in accordance with the methods described herein.

[0025] FIG. 1A illustrates a system 1000 for performing object detection, or more specifically, object recognition. The system 1000 may include, more specifically, a computing system 1100 and a camera 1200. In this example, the camera 1200 may be configured to generate image information that describes or otherwise represents an environment in which the camera 1200 is located, or more specifically, represents an environment in a field of view of the camera 1200 (also referred to as a camera field of view). The environment may be, for example, a warehouse, a manufacturing plant, a retail space, or other facility. In such an instance, the image information may represent objects located in such a facility, such as boxes, bins, cases, crates, pallets, or other containers, as well as layer dividers as discussed herein. The system 1000 may be configured to generate, receive, and / or process the image information, such as to use the image information to distinguish between individual objects in the camera field of view, to perform object recognition or object registration based on the image information, and / or to perform a robot interaction plan based on the image information, as discussed in more detail below (the terms "and / or" and "or" are used interchangeably in this disclosure). The robot interaction plan may be used to control a robot at a facility, for example, to facilitate robot interaction between the robot and a container or other object. The computing system 1100 and the camera 1200 may be located at the same facility or may be located remotely from one another. For example, the computing system 1100 may be part of a cloud computing platform hosted at a data center remote from a warehouse or retail space and may communicate with the camera 1200 via a network connection.

[0026] In an embodiment, the camera 1200 (which may also be referred to as an image sensing device) may be a 2D camera and / or a 3D camera. For example, FIG. 1B shows a system 1500A (which may be an embodiment of the system 1000) including a computing system 1100 and a camera 1200A and a camera 1200B, both of which may be embodiments of the camera 1200. In this example, the camera 1200A may be a 2D camera configured to generate 2D image information that includes or forms a 2D image showing the visual appearance of the environment in the field of view of the camera. The camera 1200B may be a 3D camera (also referred to as a spatial structure detection camera or a spatial structure detection device) configured to generate 3D image information that includes or forms spatial structure information about the environment in the field of view of the camera. The spatial structure information may include depth information (e.g., a depth map) that describes the respective depth values ​​of various positions relative to the camera 1200B, such as the positions on the surface of various objects in the field of view of the camera 1200B. These positions on the camera's field of view or the surface of the object may also be referred to as physical positions. The depth information in this example may be used to estimate how the object is spatially positioned in three-dimensional (3D) space. In some cases, the spatial structure information may include, or may be used to generate, a point cloud that describes positions on one or more surfaces of the object in the field of view of the camera 1200B. More specifically, the spatial structure information may describe various positions on the structure of the object (also referred to as the object structure).

[0027] In an embodiment, the system 1000 may be a robot operating system for facilitating robotic interaction between the robot and various objects in the environment of the camera 1200. For example, FIG. 1C illustrates a robot operating system 1500B, which may be an embodiment of the system 1000 / 1500A of FIGS. 1A and 1B. The robot operating system 1500B may include a computing system 1100, a camera 1200, and a robot 1300. As described above, the robot 1300 may be used to interact with one or more objects in the environment of the camera 1200, such as boxes, crates, bins, cases, pallets, other containers and / or tier dividers as discussed herein. For example, the robot 1300 may be configured to pick up containers from one location and move them to another location. In some cases, the robot 1300 may be used to perform palletizing operations, where a group of containers or other objects are unloaded and moved, for example, to a conveyor belt, or to perform palletizing operations, where containers are stacked on a pallet to prepare for transportation. In some examples, during a pallet off operation, the robot 1300 may identify and pick up layer separators placed between layers of objects disposed on the pallet and store them or move them to a location away from the belt conveyor. In some examples, the camera 1200 may be attached to the robot 1300 or the robot 3300, described below. This is also known as an in-hand camera or an on-hand camera. The camera 1200 may be attached to the robot arm 3320 of the robot 1300. The robot arm 3320 may move to various picking areas and generate image information about those areas. In some implementations, the camera 1200 may be separate from the robot 1300. For example, the camera 1200 may be mounted to the ceiling of a warehouse or other structure and may remain stationary relative to the robot 1300. In some implementations, multiple cameras 1200 may be used, including multiple cameras 1200 separate from the robot 1300 used in conjunction with an in-hand camera 1200 and / or cameras 1200 separate from the robot 1300.In some implementations, the camera 1200 or cameras 1200 may be mounted or fixed to a dedicated robotic system separate from the robot 1300 used for object manipulation, such as a robotic arm, gantry, or other automated system configured for camera movement. Throughout this specification, we may discuss "control" or "controlling" the camera 1200. For camera handheld solutions, control of the camera 1200 also includes control of the robot 1300 to which the camera 1200 is mounted or attached.

[0028] In some embodiments, the computing system 1100 of FIGS. 1A-1C may form or be incorporated into a robot 1300, which may also be referred to as a robot controller. The robot control system may be included in a robot operating system 1500B and may be configured to generate commands for the robot 1300, such as robot interaction movement commands for controlling robot interaction between the robot 1300 and a container, layer separator, or other object. In such an embodiment, the computing system 1100 may be configured to generate such commands based on image information generated by the camera 1200, for example. In some examples, the computing system 1100 may be configured to determine a motion plan based on the image information, which may be intended, for example, to grasp or otherwise pick up an object. The computing system 1100 may generate one or more robot interaction movement commands to execute the motion plan.

[0029] In some embodiments, the computing system 1100 may form or be part of a vision system. The vision system may be, for example, a system that generates visual information describing the environment in which the robot 1300 is located, or additionally describing the environment in which the camera 1200 is located. The visual information may include the 3D image information and / or the 2D image information described above, or some other image information. In some circumstances, when the computing system 1100 forms a vision system, the vision system may be part of the robot control system described above, or may be separate from the robot control system. When the vision system is separate from the robot control system, the vision system may be configured to output information describing the environment in which the robot 1300 is located. The information may be output to a robot control system, which may receive such information from the vision system, and based on the information, perform a motion plan and / or generate a robot interaction movement command. More information regarding the vision system is described in detail below.

[0030] In some embodiments, the computing system 1100 may communicate with the camera 1200 and / or the robot 1300 by a direct connection, such as a connection provided through a dedicated wired communication interface, such as an RS-232 interface, a universal serial bus (USB) interface, and / or a local computer bus, such as a peripheral component interconnect (PCI) bus. In some embodiments, the computing system 1100 may communicate with the camera 1200 and / or the robot 1300 through a network. The network may be of any type and / or form, such as a personal area network (PAN), a local area network (LAN), such as an intranet, a metropolitan area network (MAN), a wide area network (WAN), or the Internet. The network may utilize different technologies and layers or stacks of protocols, including, for example, Ethernet protocols, Internet Protocol Suite (TCP / IP), Asynchronous Transfer Mode (ATM) technologies, Synchronous Optical Networking (SONET) protocols, or Synchronous Digital Hierarchy (SDH) protocols.

[0031] In some embodiments, the computing system 1100 may communicate information directly with the camera 1200 and / or the robot 1300, or may communicate via an intermediate storage device, or more generally, an intermediate non-transitory computer-readable medium. For example, FIG. 1D illustrates a system 1500C, which may be an embodiment of the systems 1000 / 1500A / 1500B, including a non-transitory computer-readable medium 1400 that may be external to the computing system 1100, and may act as an external buffer or repository for storing image information generated by the camera 1200, for example. In such an example, the computing system 1100 may retrieve or otherwise receive image information from the non-transitory computer-readable medium 1400. Examples of the non-transitory computer-readable medium 1400 include electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination thereof. The non-transitory computer readable medium may form, for example, a computer diskette, a hard disk drive (HDD), a solid state drive (SDD), a random access memory (RAM), a read only memory (ROM), an erasable programmable read only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disc read only memory (CD-ROM), a digital versatile disc (DVD), and / or a memory stick.

[0032] As mentioned above, the camera 1200 may be a 3D camera and / or a 2D camera. The 2D camera may be configured to generate a 2D image, such as a color image or a grayscale image. The 3D camera may be, for example, a depth-sensing camera, such as a time-of-flight (TOF) camera or a structured light camera, or any other type of 3D camera. In some cases, the 2D camera and / or the 3D camera may include an image sensor, such as a charge-coupled device (CCD) sensor and / or a complementary metal-oxide semiconductor (CMOS) sensor. In some embodiments, the 3D camera may include a laser, a LIDAR device, an infrared device, a light / dark sensor, a motion sensor, a microwave detector, an ultrasonic detector, a radar detector, or any other device configured to capture depth information or other spatial structure information.

[0033] As described above, the image information may be processed by computing system 1100. In some embodiments, computing system 1100 may include or be configured as a server (e.g., having one or more server blades, processors, etc.), a personal computer (e.g., a desktop computer, a laptop computer, etc.), a smartphone, a tablet computing device, and / or any other computing system. In some embodiments, any or all of the functionality of computing system 1100 may be performed as part of a cloud computing platform. Computing system 1100 may be a single computing device (e.g., a desktop computer) or may include multiple computing devices.

[0034] 2A illustrates an example of a computing system 1100. The computing system 1100 in this embodiment includes a processing circuit 1110 and a non-transitory computer-readable medium (or media) 1120. In some cases, the processing circuit 1110 may include a processor (e.g., a central processing unit (CPU), a special-purpose computer, and / or an in-vehicle server) configured to execute instructions (e.g., software instructions) stored on the non-transitory computer-readable medium 1120 (e.g., computer memory). In some embodiments, the processor may be included in a separate / standalone controller that is operably coupled to other electronic / electrical devices. The processor may execute program instructions to control / interface with other devices, thereby causing the computing system 1100 to perform operations, tasks, and / or operations. In one embodiment, processing circuitry 1110 includes one or more processors, one or more processing cores, a programmable logic controller ("PLC"), an application specific integrated circuit ("ASIC"), a programmable gate array ("PGA"), a field programmable gate array ("FPGA"), any combination thereof, or any other processing circuitry.

[0035] In some embodiments, the non-transitory computer readable medium 1120 that is part of the computing system 1100 may be in place of or in addition to the intermediate non-transitory computer readable medium 1400 described above. The non-transitory computer readable medium 1120 may be a storage device such as an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a storage device such as, for example, a computer diskette, a hard disk drive (HDD), a solid state drive (SSD), a random access memory (RAM), a read only memory (ROM), an erasable programmable read only memory (EPROM or flash memory), a static random access memory (SRAM), a portable compact disk read only memory (CD-ROM), a digital versatile disk (DVD), a memory stick, any combination thereof, any other storage device, and any other device configured to store instructions or software and any associated data, data files, and data structures in a non-transitory manner and provide the instructions or software and any associated data, data files, and data structures to one or more processors or computers so that the one or more processors or computers can execute the instructions. In some cases, the non-transitory computer-readable medium 1120 may include multiple storage devices. In one example, the instructions or software, and any associated data, data files, and data structures, are distributed over a network-coupled computer system such that the instructions and software, and any associated data, data files, and data structures are stored, accessed, and executed in a distributed manner by one or more processors or computers. In a particular implementation, the non-transitory computer-readable medium 1120 is configured to store image information generated by the camera 1200 and received by the computing system 1100. In some cases, the non-transitory computer-readable medium 1120 may store one or more object recognition templates used to implement the methods and operations described herein.The non-transitory computer-readable medium 1120 may alternatively or additionally store computer-readable program instructions that, when executed by the processing circuit 1110, cause the processing circuit 1110 to perform one or more methodologies described herein.

[0036] FIG. 2B depicts one embodiment of the computing system 1100, the computing system 1100A, including a communication interface 1131. The communication interface 1131 may be configured to receive image information generated by, for example, the camera 1200 of FIGS. 1A-1D. The image information may be received via an intermediate non-transitory computer-readable medium 1400 or a network as discussed above, or via a more direct connection between the camera 1200 and the computing system 1100 / 1100A. In one embodiment, the communication interface 1131 may be configured to communicate with the robot 1300 of FIG. 1C. If the computing system 1100 is external to the robot control system, the communication interface 1131 of the computing system 1100 may be configured to communicate with the robot control system. The communication interface 1131 may also be referred to as a communication component or communication circuitry, and may include, for example, communication circuitry configured to implement communication over a wired or wireless protocol. By way of example, the communications circuitry may include an RS-232 port controller, a USB controller, an Ethernet controller, a Bluetooth controller, a PCI bus controller, any other communications circuitry, or a combination thereof.

[0037] 2C, the non-transitory computer-readable medium 1120 may include a storage space 1125 configured to store one or more data objects described herein. For example, the storage space may store object recognition templates, image information, object image information, thresholds, robotic arm movement commands, and any additional data objects that the computing systems described herein may need to access.

[0038] In an embodiment, the processing circuit 1110 may be programmed with one or more computer readable program instructions stored on a non-transitory computer readable medium 1120. For example, FIG. 2D illustrates a computing system 1100C, an embodiment of computing system 1100 / 1100A / 1100B, in which the processing circuit 1110 is programmed with one or more modules, including an object recognition module 1121, a motion planning module 1129, and an object manipulation planning module 1126. The processing circuit 1110 may be further programmed with an object registration module 1130, a feature extraction module 1134, and a verification module 1138. Each of the above modules may represent computer readable program instructions that, when instantiated in one or more of the processors, processing circuits, computing systems, etc. described herein, are configured to perform a particular task. Each of the above modules may operate in conjunction with one another to accomplish the functions described herein. Various aspects of the functionality described herein may be performed by one or more of the software modules described above, and the software modules and their descriptions are not to be understood as limiting the computational structure of the systems disclosed herein. For example, while a particular task or function may be described with respect to a particular module, that task or function may also be performed by different modules, if desired. Furthermore, the system functions described herein may be performed by different sets of software modules configured with different breakdowns or allocations of functionality.

[0039] In an embodiment, the object recognition module 1121 may be configured to acquire and analyze image information, as described throughout this disclosure. The methods, systems, and techniques described herein with respect to image information may use the object recognition module 1121. The object recognition module may be further configured for object recognition tasks related to object identification, as described herein.

[0040] The motion planning module 1129 can be configured to plan and execute robot movements. For example, the motion planning module 1129 can interact with other modules described herein to plan the movements of the robot 3300 for object retrieval and camera placement operations. The methods, systems, and techniques described herein with respect to robot arm movements and trajectories can be executed by the motion planning module 1129.

[0041] The object manipulation planning module 1126 may be configured to plan and execute object manipulation activities for the robotic arm, such as, for example, grasping and releasing objects, and executing robotic arm commands to assist and facilitate such grasping and releasing.

[0042] The object registration module 1130 may be configured to obtain, store, generate, and otherwise process object registration information that may be required for various tasks discussed herein. The object registration module 1130 may store dimensions and thresholds associated with various objects that may be detected, identified, and retrieved by the robotic system. The object registration module 1130 may be configured to interact or communicate with any other modules as needed.

[0043] The feature extraction module 1134 may be configured to complete the feature extraction and generation tasks discussed herein, for example, in connection with Figures 4A-5C. The feature extraction module 1134 may be configured to interact with the object registration module 1130, and any other modules as needed.

[0044] The verification module 1138 may be configured to complete the verification tasks as discussed herein, for example, in connection with Figures 4A and 7. The verification module 1138 may be configured to interact with the object registration module 1130, the feature extraction module 1134, and any other modules as needed.

[0045] With reference to Figures 2E, 2F, 3A and 3B, methods related to the object recognition module 1121 that may be implemented for image analysis are described. Figures 2E and 2F illustrate example image information associated with the image analysis method, while Figures 3A and 3B illustrate an example robot environment associated with the image analysis method. References herein related to image analysis by a computing system may be performed according to or using spatial structure information, which may include depth information, describing respective depth values ​​of various positions relative to a selected point. The depth information may be used to identify an object or estimate how an object is spatially arranged. In some cases, the spatial structure information may include, or may be used to generate, a point cloud describing the location of one or more surfaces of an object. Spatial structure information is just one form of image analysis, and other forms known to those skilled in the art may be used according to the methods described herein.

[0046] In an embodiment, the computing system 1100 may obtain image information representing an object within a camera field of view (e.g., 3200) of the camera 1200. In some examples, the object may be a layer divider 3600 disposed on a top surface 3120 of an object 3100A / 3100B / 3100C / 3100D / 3600 on a pallet 3400 in the field of view 3200 of the camera 1200. As shown in Figures 2E and 2F, image information 2600, 2700 may be generated by the camera (e.g., 1200) when the layer divider 3600 is (or was) in the camera field of view 3200 and may describe the layer divider 3600, the pallet 3400, one or more of the individual objects 3100A / 3100B / 3100C / 3100D, and / or the scene 3800. The object appearance describes the appearance of the layer divider 3600 and surrounding objects 3100A / 3100B / 3100C / 3100D, as well as the pallet 3400, from the viewpoint of the camera 1200. If there are multiple objects in the camera field of view, the camera may generate image information representing the multiple objects or a single object, as appropriate (such image information regarding a single object may be referred to as object image information). Image information may be generated by a camera (e.g., 1200) when a group of objects is (or was) in the camera field of view and may include, for example, 2D image information and / or 3D image information.

[0047] 2E depicts a first set of image information, more specifically, 2D image information 2600, which is generated by camera 1200, as described above, and which represents objects 3100A / 3100B / 3100C / 3100D, layer dividers 3600, and palette 3400 of FIG. 3A. In some examples, 2D image information 2600 may be a grayscale or color image and may describe the appearance of objects 3100A / 3100B / 3100C / 3100D, layer dividers 3600, and palette 3400 from the perspective of camera 1200. In some embodiments, 2D image information 2600 may correspond to a single color channel (e.g., a red, green, or blue channel) of a color image. When the camera 1200 is placed above the object 3100A / 3100B / 3100C / 3100D, the 2D image information 2600 may represent the appearance of the top surface of each of the object 3100A / 3100B / 3100C / 3100D, the layer divider 3600, and the pallet 3400. In the example of Fig. 2E, the 2D image information 2600 may include respective portions 2000A / 2000B / 2000C / 2000D, also called image portions or object image information, representing the top surface of each of the objects 3100A / 3100B / 3100C / 3100D. In the example of Fig. 2E, the 2D image information 2600 may include image portions 2100, also called image portions, representing the top surface of the layer divider 3600 placed on the object 3100A / 3100B / 3100C / 3100D. In the example of FIG. 2E, the 2D image information 2600 may include image portions, also referred to as object image information 2550, representing the respective surfaces of the pallet 3400 on which the objects 3100A / 3100B / 3100C / 3100D are placed.

[0048] In FIG. 2E, each image portion 2000A / 2000B / 2000C / 2000D / 2100 / 2550 of the 2D image information 2600 may be an image region, or more specifically, a pixel region (where the image is formed by pixels). Each pixel in the pixel region of the 2D image information 2600 may be characterized as having a location indicated by a set of coordinates [U, V], and may have a value relative to the camera coordinate system or some other coordinate system, as shown in FIG. 2E and FIG. 2F. Each of the pixels may also have an intensity value, such as a value from 0 to 255 or 0 to 1023. In further embodiments, each of the pixels may include any additional information associated with the pixel in various formats (e.g., hue, saturation, intensity, CMYK, RGB, etc.).

[0049] As mentioned above, the image information may be all or a portion of an image, such as the 2D image information 2600, in some embodiments. In an example, the computing system 1100 may be configured to extract the image portion 2100 from the 2D image information 2600 to obtain only image information associated with the corresponding object, i.e., the layer partition 3600. When an image portion (such as the image portion 2000A) is directed to a single object, it may be referred to as object image information. The object image information need not include only information about the object at which it is directed. For example, the object at which it is directed may be located near, under, on, or otherwise in the vicinity of one or more other objects. In such a case, the object image information may include information about the object at which it is directed, as well as one or more adjacent objects. The computing system 1100 may extract the image portion 2000A by performing an image segmentation or other analysis or processing operation based on the 2D image information 2600 and / or the 3D image information 2700 shown in FIG. 2F. In some implementations, image segmentation or other operations may include detecting image locations where physical edges of objects in the 2D image information 2600 appear (e.g., edges of objects or gaps between objects in the image) and using such image locations to identify object image information that is limited to represent individual objects in the camera field of view (e.g., 3200) and to substantially exclude other objects. By "substantially exclude," it is meant that the image segmentation or other processing techniques are designed and configured to exclude non-target objects from the object image information, while it is understood that errors may occur and noise may be present and various other factors may result in the inclusion of portions of other objects.

[0050] 2F depicts an example where the image information is 3D image information 2700. In some examples, the 3D image information 2700 may include, for example, a depth map or point cloud indicating respective depth values ​​of various locations on one or more surfaces (e.g., top surfaces, or other exterior surfaces) of the objects 3100A / 3100B / 3100C / 3100D, the layer dividers 3600, and the pallets 3400. In some implementations, an image segmentation operation for extracting image information may include detecting image locations where physical edges of objects (e.g., edges of a box) appear in the 3D image information 2700, and using such image locations to identify image portions (e.g., 2730) that are restricted to represent individual objects within the camera field of view (e.g., 3100A).

[0051] The respective depth values ​​may be relative to the camera 1200 generating the 3D image information 2700, or may be relative to some other reference point. In some embodiments, the 3D image information 2700 may include a point cloud including respective coordinates for various locations on the structure of the object that are within the camera field of view (e.g., 3200). In the example of FIG. 2F, the point cloud may include respective sets of coordinates describing the location of the surfaces of the objects 3100A / 3100B / 3100C / 3100D, the layer divider 3600, and the pallet 3400. The coordinates may be 3D coordinates, such as [XYZ] coordinates, and may have values ​​relative to the camera coordinate system, or some other coordinate system. For example, the 3D image information 2700 may include locations 27101-2710, also referred to as physical locations on the surface of the object 3100D. n In another example, the 3D image information 2700 may further include a second portion, a third portion, a fourth portion, and a fifth portion 2720, 2730, 2740, 2750, and 2760. These portions are then respectively denoted as 27201 to 2720. n , 27301~2730 n , 27401~2740 n , 27501~2750 n , and 27601 to 2760 n3A , and the depth values ​​for the set of positions may be represented by the following equation: 2D=1, 2D=1, 3D=2, 4D=3, 5D=4, 6D=5, 7D=6, 8D=8, 9D=9, 10D=10, 11D=11, 12D=12, 13D=13, 14D=14, 15D=15, 16D=16, 17D=17, 18D=18, 19D=19, 20D=20, 21D=21, 22D=22, 23D=23, 24D=24, 25D=25, 36D=37, 40D=40, 50D=50, 60D=19, 70D=25, 8D=37, 90D=19, 10D=25, 11D=19, 12D=26, 13D=37, 14D=19, 15D=27, 16D=18, 17D=28, 18D=39, 19D=49, 19D=50, 19D=51, 19D=29, 20D=32, 21D=33, 22D=34, 23D=35, 24D=36, 25D=37, 36D=40, 37D=50, 40D=51, 50D=60, 60D=19, 18D=29, 19D=34, 25D=35, 36D=40, 19D=29, 19D=35, 26D=36, 27D

[0052] In some embodiments, an image normalization operation may be performed by the computing system 1100 as part of acquiring image information. The image normalization operation may include transforming an image or image portion generated by the camera 1200, thereby generating a transformed image or image portion. For example, image information, which may include 2D image information 2600, 3D image information 2700, or a combination of the two, may be subjected to an image normalization process to attempt to change the image information in terms of viewpoint, object pose, and lighting conditions associated with the visual description information. Such normalization may be performed to facilitate a more accurate comparison between the image information and the model (e.g., template) information. The viewpoint may refer to the pose of the object relative to the camera 1200 and / or the angle at which the camera 1200 is viewing the object when the camera 1200 generates an image representing the object.

[0053] For example, image information may be generated during an object recognition operation where a target object is within the camera field of view 3200. The camera 1200 may generate image information representing a target object when the target object has a particular pose relative to the camera. For example, the target object may have a pose that makes its top surface perpendicular to the optical axis of the camera 1200. In such an example, the image information generated by the camera 1200 may represent a particular viewpoint, such as a top view of the target object. In some cases, when the camera 1200 is generating image information during an object recognition operation, the image information may be generated with particular lighting conditions, such as lighting intensity. In such an example, the image information may represent a particular lighting intensity, lighting color, or other lighting condition.

[0054] In some embodiments, the image normalization operation may include adjusting an image or image portion of a scene generated by a camera to better match the image or image portion to the viewpoint and / or lighting conditions associated with the information in the object recognition template, which may include transforming the image or image portion to generate a transformed image that matches at least one of the object pose or the lighting conditions associated with the visual description information of the object recognition template.

[0055] Adjusting the viewpoint may include processing, warping, and / or shifting the image of the situation so that the image represents the same viewpoint as the visual description information that may be included in the object recognition template. Processing may include, for example, changing the color, contrast, or lighting of the image, warping the situation may include changing the size, dimensions, or ratio of the image, and shifting the image may include changing the position, orientation, or rotation of the image. In an exemplary embodiment, processing, warping, and / or shifting may be used to change objects in the image of the situation to have an orientation and / or size that matches or better corresponds to the visual description information of the object recognition template. If the object recognition template shows a front view (e.g., a top view) of an object, the image of the situation may be warped to also represent a front view of the object in the situation.

[0056] Further aspects of the object recognition methods embodied in this specification are described in more detail in U.S. patent application Ser. No. 16 / 991,510, filed Aug. 12, 2020, and U.S. patent application Ser. No. 16 / 991,466, filed Aug. 12, 2020, each of which is incorporated by reference herein.

[0057] In various embodiments, the terms "computer readable instructions" and "computer readable program instructions" are used to describe software instructions or computer code configured to perform various tasks and operations. In various embodiments, the term "module" refers broadly to a collection of software instructions or code configured to cause the processing circuitry 1110 to perform one or more functional tasks. The modules and computer readable instructions may be described as performing various cognitive operations or tasks when the processing circuitry or other hardware components are executing the modules or computer readable instructions.

[0058] 3A and 3B illustrate an exemplary environment in which computer readable program instructions stored on a non-transitory computer readable medium 1120 are utilized via a computing system 1100 to increase the efficiency of object identification, detection, and acquisition operations and methods. Image information acquired by the computing system 1100 and illustrated in FIG. 3A influences the system's decision-making procedures and command output to a robot 3300 present within the object environment.

[0059] 3A-3B illustrate an exemplary environment in which the processes and methods described herein may be implemented. FIG. 3A illustrates an environment having a system 3000 (which may be an embodiment of systems 1000 / 1500A / 1500B / 1500C of FIGS. 1A-1D ) including at least a computing system 1100, a robot 3300, and a camera 1200. The camera 1200 may be an embodiment of the camera 1200 and may be configured to generate image information representing a scene 3800 in a camera field of view 3200 of the camera 1200, or more specifically, representing stacked objects 3700 (e.g., boxes) in the camera field of view 3200, such as objects 3100A, 3100B, 3100C, 3100D. In one example, each of the objects 3100A-3100D may be a container, such as, for example, a box or crate, that is placed on an object, such as a pallet 3400. The layer divider 3600 may be disposed on the top surface 3120 of the object 3100A / 3100B / 3100C / 3100D. The layer divider may separate two layers of objects in the stacked object 3700. In some examples, the stacked object 3700 may collectively refer to the object 3100A / 3100B / 3100C / 3100D, the layer divider 3600, and the pallet 3400. For ease of illustration and explanation, only one layer of the object 3100A / 3100B / 3100C / 3100D having the layer divider 3600 is shown in the example of FIG. 3A and FIG. 3B. However, it will be understood that the stacked object 3700 may include multiple layers of objects and the layer divider 3600 may or may not be disposed between two layers of objects. An example of two layers of objects 3100A / 3100B / 3100C / 3100D / 3100E / 3100F / 3100G / 3100H on a pallet 3400 is shown in Figure 8, where a layer divider 3600 is disposed on the top surface of the second layer.

[0060] FIG. 3A illustrates an embodiment including multiple objects 3100A-3100D, whose camera field of view (e.g., 3200) is captured using a camera 1200 mounted on a robot 3300. FIG. 3B illustrates an embodiment in which the camera field of view (e.g., 3200) is captured using a camera 1200 that is disposed separately from the robot 3300. Each of the objects 3100A / 3100B / 3100C / 3100D may be, for example, a box, crate, case, bin, or other container. The objects, i.e., objects 3100A / 3100B / 3100C / 3100D, may be disposed on another object, such as a pallet 3400, which may also be at least partially disposed within the camera field of view 3200. In some scenarios, the pallet 3400 may be used with a wide variety of stacking or arrangement configurations to stack or otherwise arrange containers or other objects, which may have a wide variety of sizes (e.g., a wide variety of length, width, and height values). Layer dividers 3600 may or may not be placed between layers of objects on pallet 3400.

[0061] In one embodiment, the system 3000 of FIG. 3A may include one or more light sources. The light sources may be, for example, light emitting diodes (LEDs), halogen lamps, or any other light source and may be configured to emit visible light, infrared light, or any other form of light toward the surfaces of the objects 3100A-3100D, the layer dividers 3600, and the pallets 3400. In some implementations, the computing system 1100 may be configured to communicate with the light sources to control when the light sources are activated. In other implementations, the light sources may operate independently of the computing system 1100.

[0062] In one embodiment, system 3000 may include camera 1200, or multiple cameras 1200, including a 2D camera configured to generate 2D image information 2600 and a 3D camera configured to generate 3D image information 2700. Camera 1200 or multiple cameras 1200 may be mounted or attached to robot 3300, may be stationary in the environment, and / or may be fixed to a dedicated robotic system separate from robot 3300 used for object manipulation, such as a robotic arm, gantry, or other automated system configured for camera movement.

[0063] 3A shows an example with a still camera 1200 and a handheld camera 1200, while FIG. 3B shows an example with only a still camera 1200. The 2D image information 2600 (e.g., a color image or a grayscale image) may describe the appearance of one or more objects, such as objects 3100A / 3100B / 3100C / 3100D or layer partition 3600, in the camera field of view 3200. For example, the 2D image information 2600 may capture or otherwise represent visual details located on the outer surfaces (e.g., top surfaces) of the objects 3100A / 3100B / 3100C / 3100D and layer partition 3600 and / or contours of their outer surfaces. In one embodiment, the 3D image information 2700 may describe the structure of one or more of the objects 3100A / 3100B / 3100C / 3100D and the layer dividers 3600, where the structure for the objects may also be referred to as the structure of the objects or the physical structure of the objects. In some examples, the 3D image information 2700 may describe the contours of the objects 3100A / 3100B / 3100C / 3100D and the layer dividers 3600 disposed on the pallet 3400. For example, the 3D image information 2700 may include a depth map, or more generally, depth information that may describe respective depth values ​​of various locations within the camera field of view 3200 relative to the camera 1200 or relative to some other reference point. The locations corresponding to each depth value may be locations (also referred to as physical locations) on various surfaces of the camera field of view 3200, such as locations on the respective top surfaces of the objects 3100A / 3100B / 3100C / 3100D and layer divider 3600. In some instances, the 3D image information 2700 may include a point cloud, which may include multiple 3D coordinates describing various locations on one or more exterior surfaces of the objects 3100A / 3100B / 3100C / 3100D and layer divider 3600, or some other object within the camera field of view 3200. FIG. 2F shows an example of a point cloud.

[0064] In the example of Figures 3A and 3B, a robot 3300 (which may be an embodiment of the robot 1300) may include a robot arm 3320 attached at one end to a robot base 3310 and attached at the other end to or formed by an end effector device 3330, such as a robot gripper. The robot base 3310 may be used to mount the robot arm 3320, while the robot arm 3320, and more specifically the end effector device 3330, may be used to interact with one or more objects in the environment of the robot 3300. The interaction (also referred to as robot interaction) may include, for example, grasping or otherwise picking up at least one of the objects 3100A-3100D and 3600. For example, the robot interaction may be part of an object picking operation to identify, detect, and remove a layer divider 3600 from a top surface 3120 of a layer of objects 3100A / 3100B / 3100C / 3100D. The end effector device 3330 may have a suction cup or other component for gripping or grasping the layer divider 3600. The end effector device 3330 may be configured to grip or grasp an object using the suction cup or other gripping component, for example, through contact with a single face or surface of the object via an upper surface.

[0065] The robot 3300 may further include additional sensors configured to obtain information used to implement a task, such as to manipulate a structural member and / or to transport the robotic unit. The sensors may include devices configured to detect or measure one or more physical characteristics of the robot 3300 and / or the surrounding environment (e.g., its state, condition, and / or the position of one or more structural members / joints). Some examples of sensors may include accelerometers, gyroscopes, force sensors, strain gauges, tactile sensors, torque sensors, position encoders, etc.

[0066] FIG. 4A illustrates an example of a method 400 for detecting, identifying, and acquiring layer partitions by a robotic system, according to one or more embodiments. The operations of FIG. 4A may be performed in the order and manner as shown. However, the order of some operations may be changed, or some of the operations may be omitted without departing from the spirit and scope of the illustrated example. In addition, the operations illustrated in FIG. 4A may be performed in parallel or simultaneously. One or more blocks of FIG. 4A, and combinations of blocks, may be implemented by a special purpose hardware-based computer that performs the specified functions, or a combination of special purpose hardware and instructions, e.g., computer or processor instructions. In addition to the description of FIG. 4A below, the descriptions of FIGS. 1-3B also apply to FIG. 4A and are incorporated herein.

[0067] In an image capture operation 410, the camera 1200 captures an image of the stacked objects arranged on the pallet. In an embodiment, the computing system 1100 receives (e.g., via the object recognition module 1121) image information (which may also be referred to as a first set of image information) representing at least a first portion of an object structure associated with an object that is within the field of view 3200 (also referred to as the camera field of view) of the camera 1200. For example, FIG. 3A depicts a scenario in which a stacked object 3700 is within the camera field of view 3200 of the camera 1200.

[0068] In some examples, the image information received by the computing system 1100 may be generated by the camera (e.g., 1200) when the camera is in or has a first camera pose, such as the camera pose shown in FIG. 3A. The camera pose may refer to the position and orientation of the camera (e.g., 1200). In some scenarios, the camera pose may affect the view or viewpoint of the camera (e.g., 3200). For example, the first camera pose depicted in FIG. 3A may involve the camera 1200 having a position above the object 3700 and an orientation in which the camera 1200 faces a first portion, or more specifically, the top (e.g., top surface) of the object 3100A / 3100B / 3100C / 3100D. In some examples, the orientation of the first camera pose may be associated with the camera 1200 having a top view of the object. For example, the first camera pose may involve the camera 1200 having an orientation in which the image sensor of the camera 1200 faces directly toward the top of the object 3100A / 3100B / 3100C / 3100D and / or an orientation in which the focal axis of one or more lenses of the camera 1200 is vertical or substantially vertical.

[0069] In a contour operation 420, the computing system 1100 identifies contours of the stacked objects 3700 based on information obtained from the images captured by the camera. The edges of the stacked objects 3700 may represent boundaries of the images that have an abrupt change in image brightness or image color. The change may be due to a discontinuity in image intensity or a transition between different regions in the image. The edges may be generated by one or more of object boundaries, boundaries between objects, reflectance changes within an object, reflectance changes between objects, changes in surface orientation within an object, and illumination changes (e.g., projected boundaries). The edges of the image may be detected by one or more methods such as, for example, the Sobel operator, the Canny operator, the Prewitt operator, the Roberts operator, and the Gabor energy filter.

[0070] The contour of an object may refer to a curve that connects all consecutive points along the boundary that have the same color or intensity. Contour detection methods may find curves, which may be continuous, that delineate the object boundary according to edges identified in the image. Unlike edges, which are primarily related to areas of high contrast in an image, contours focus on outlining the shape and structure of objects in an image. Contours depicted in an image may be determined by the computing system 1100 converting the image of the stacked objects 3700 into a binary image and pre-processing the binary image to enhance edge features and extract contours.

[0071] In an exemplary process for determining contours depicted in an image, the computing system 1100 may apply a filter to smooth the image. A Gaussian blur may be used for this purpose to reduce image noise without blurring edges. The computing system 1100 may then determine the gradient of the image to highlight areas with high spatial frequencies that may correspond to edges. Any of the techniques described above, such as the Sobel, Prewitt, or Canny edge detectors, may be used to calculate the magnitude and direction of the gradient at each pixel. The computing system 1100 may further perform non-maximal suppression to thin the edges. Here, pixels that are not on areas of high spatial frequency may be suppressed, leaving a thin line of pixels with high gradients. Areas of high spatial frequency may be areas where image intensity changes rapidly over a small spatial distance, such as edges between different objects or between an object and a background. The computing system 1100 may then apply a threshold to the gradient image to identify edges. The threshold may be a simple binary threshold, an adaptive threshold, or a hysteresis threshold used in the Canny edge detector, which distinguishes between strong and weak edges based on two thresholds. The threshold value may be stored in the object registration module 1130. Once edges are identified, the computing system 1100 may link the edge pixels together to form a contour, which may be continuous. For example, a contour-following algorithm, such as the cv2.findContours and cv2.drawContours functions, may be used to follow the edges and draw the contour of the stacked objects 3700.

[0072] In some instances, additional processing by the computing system 1100 may be performed to simplify and reduce the complexity of the detected contour. For example, the computing system 1100 may apply methods such as the Douglas-Peucker algorithm to reduce the number of points in the curve that have slight deviations from the original contour. After the contours of the stacked objects 3700 are extracted, the feature extraction module 1134 may extract features such as shape, size, orientation, etc., or perform object recognition. The computing system 1100 may analyze the contour to extract features such as shape, size, orientation, etc., or perform object recognition by comparing the contour to known shapes stored in the object registration module 1130. One or more of the steps for contour extraction and analysis may be enhanced or bypassed by deploying a neural network trained for edge detection and / or contour extraction from input images. The neural network may be a U-Net convolutional neural network (CNN) architecture.

[0073] In some examples, as described above, the computing system 1100 identifies edges and contours of the stacked objects 3700 based on features extracted from the image by the feature extraction module 1134. The image may be a 3D image (the image information may be 3D image information), and in other examples, the image may be a 2D image (the image information may be 2D image information). The computing system 1100 (e.g., via the object recognition module 1121) may generate contours of the objects (e.g., 3100A / 3100B / 31000C / 3100D) and layer dividers 3600 located on the pallet 3400 in the camera field of view (e.g., 3200) based on the image information. The computing system 1100 may analyze the contours of the stacked objects 3700 to determine structural information such as the shape, size, and orientation of the contours of the stacked objects 3700. The contours may be generated based on multiple sets of image information, all representing top views of one or more objects in the camera field of view (e.g., 3200). The multiple sets of image information may be generated by the camera (e.g., 1200) at different respective positions (as the camera moves laterally) but with the same or similar orientation relative to the camera, such as an orientation in which the camera's image sensor faces directly toward a respective region on top of one or more objects (e.g., 3100A / 3100B / 31000C / 3100D). In this example, the image information may be one of the multiple sets of image information. The image information may include a point cloud or a depth map that may be used by the object recognition module 1121 in conjunction with other modules of the computing system 1100 to identify the contours of the stacked objects 3700.

[0074] The computing system 1100 may analyze the contour of the stacked object 3700 to identify an edge associated with the contour of the stacked object 3700. For example, the edge may be an outer corner of the stacked object 3700 of FIG. 3A. In some implementations, the computing system 1100 may identify an object corner based on the sensed structural information. For example, the computing system 1100 may identify multiple exterior edges described by the sensed structural information, or multiple edge regions described by the sensed structural information. In such an example, the computing system 1100 may identify an edge as a location at or near the intersection of multiple exterior edges and / or as a location within an area where multiple edge regions intersect. Identifying edges and contours of stacked objects is discussed in more detail in U.S. Pat. No. 11,883,966 B2, the entire contents of which are incorporated herein by reference.

[0075] In the surface identification operation 430, the computing system 1100 may identify the top surface of the stacked object based on the contour of the object. The object recognition module 1121 may identify the top surface of the layer of objects based on features extracted from the image by the feature extraction module 1134. The object recognition module 1121 may identify the top surface of the layer of objects 3700 based on analyzing the contour of the stacked object 3700 to determine an uppermost boundary of the contour that represents the top surface. The uppermost boundary of the contour may refer to a line or surface that indicates the limit of the horizontal plane that represents the highest surface of the stacked object 3700.

[0076] FIG. 4B illustrates in more detail a surface identification operation 430 for determining the top surface of a stacked object by a robotic system, according to one or more embodiments. The operations of FIG. 4B may be performed in the order and manner as shown. However, the order of some operations may be changed, or some of the operations may be omitted, without departing from the spirit and scope of the illustrated example. In addition, the operations illustrated in FIG. 4B may be performed in parallel or simultaneously. One or more blocks of FIG. 4B, and combinations of blocks, may be implemented by a special purpose hardware-based computer that performs the specified functions, or a combination of special purpose hardware and instructions, e.g., computer or processor instructions. In addition to the description of FIG. 4B below, the descriptions of FIGS. 1-4A also apply to FIG. 4B and are incorporated herein.

[0077] In a positioning operation 431, the computing system 1100 may generate instructions to position the camera 1200 toward the stacked object 3700. The computing system 1100 (e.g., via one or more camera positioning operation commands) may position the camera 1200 such that the camera (e.g., 1200) has a second camera pose configured to capture an image of a top view of the stacked object 3700 identified in the contour operation 420. The object recognition module 1121 may identify a top surface of the layer of objects 3700 based on analyzing the contour of the stacked object 3700 to determine an uppermost boundary of the contour that represents the top surface.

[0078] In some examples, the second camera pose may be the same as the pose of the camera used to capture the image of the stacked object 3700 in operation 410. In some examples, the second camera pose of operation 431 may be different from the camera pose associated with operation 410. As mentioned above, the camera pose may be a combination of the position and orientation of the camera (e.g., 1200).

[0079] In the capture operation 432, the camera (e.g., 1200) may capture a 2D image of the top view of the stacked object 3700. When the camera 1200 has a second camera pose, the top surface of the stacked object 3700 may come within the camera field of view 3200 of the camera 1200 and may be within the line of sight of the image sensor of the camera 1200. FIG. 5A shows an example of a 2D image 5000A of the top surface of the stacked object, which is described further below. In other embodiments, in the capture operation 432, the camera (e.g., 1200) may also capture a 3D image of the top view of the stacked object 3700.

[0080] In a top surface determination operation 433, the computing system 1100 may determine a top surface of the stacked object 3700 based on the 2D image captured in operation 432. The top surface of the stacked object 3700 may represent a horizontal plane representing the highest surface of the stacked object 3700. The top surface of the stacked object 3700 may be determined or identified by image segmentation or edge detection of the image captured in capture operation 432, as described above. The perimeter of the top surface of the stacked object 3700 may be defined by the boundary 5200A of the top view of the objects 5100A-5100I shown in FIG. 5A. The computing system 1100 may determine a perimeter of the top surface of the stacked object 3700 indicating the outer boundary of the stacked object based on edge detection methods, as described above. In some embodiments, the vertical height of the top surface of the stacked object 3700 from the pallet 3400 may be determined by a sensor or image segmentation or edge detection, as described above.

[0081] Returning now to FIG. 4A, in the extension line detection operation 440, the computing system 1100 may detect, based on the image information of the top surface of the stacked objects, extension lines extending from the periphery of the top surface toward the center of the top surface. Each of the extension lines may correspond to at least one of an edge of an object in the image or a gap between objects of the stacked objects. As shown in FIG. 5A, the extension line 5500A may correspond to an edge, which is detected in the image information of the image of the top surface of the stacked object 3700, and represents a gap between the object 5100A and the object 5100B in the image information. As described below, the progression of the extension line from the periphery of the stacked object 3700 toward the center of the top surface is limited (or hidden from the line of sight of the image sensor of the camera 1200) by the layer divider 5600A disposed on the object 5100A-5100I. Further details regarding the detection of the extension line between objects are provided below with reference to FIGS. 5A-5C. In another embodiment, if there are no layer dividers between layers of objects, the extension lines may follow the contours of the surfaces of all objects placed on the top surface of the stacked objects. In other words, if there are no layer dividers between layers of objects, the extension lines may not terminate, but may define the shape of the top surfaces of the objects 5100A-5100I.

[0082] 5A shows an example of a 2D image 5000A of the top surfaces of stacked objects, such as objects 5100A-5100I disposed on a pallet 5400. A layer divider 5600A may be disposed on the top surfaces of the objects 5100A-5100I. The layer divider 5600A may cover all or a portion of the top surfaces of the objects 5100A-5100I. As described above, image segmentation, edge detection, or other processing operations may be performed to identify objects 5100A-5100I, boundaries 5200A of the top surfaces of objects 5100A-5100I, and extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H (indicating gaps between objects in image 5000A) that extend inwardly from the respective boundaries (and substantially perpendicular to the respective boundaries, e.g., within 10%, 5%, 2%, or 1% of being perpendicular to the respective boundaries) toward a central portion of 2D image 5000A. Boundary 5200A defines the boundary of the outer edges of objects 5100A-5100I, which are disposed on pallet 5400. As shown in FIG. 5A, extension lines 5500A and 5500B extend inward from the right boundary 5200A of the 2D image 5000A, extension lines 5500C, 5500D, and 5500E extend inward from the bottom boundary 5200A of the 2D image 5000A, and extension lines 5500F, 5500G, and 5500H extend inward from the top boundary 5200A of the 2D image 5000A.

[0083] The computing system 1100 may determine the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H starting from the boundary 5200A and proceeding towards a central portion of the 2D image 5000A based on image segmentation, edge detection, or other processing operations as described above. The boundary 5200A may surround a detection region 5700 of the image, including the objects 5100A-5100I, the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H, and the layer divider 5600A.

[0084] Figure 5B shows an example of a 3D image 5000B of the top surfaces of stacked objects. Figure 5B shows an example of a top view of objects such as objects 5100A-5100I arranged on a pallet. A layer divider 5600A may be placed on the top surfaces of objects 5100A-5100I. As described with reference to above, image segmentation, edge deduction, or other processing operations may be performed on the depth map or point cloud data to identify the objects 5100A-5100I, the boundaries 5200A of the top views of the objects 5100A-5100I, the extension lines 5500C / 5500D / 5500E extending from the respective boundaries (and substantially perpendicular to the respective boundaries, e.g., within 10%, within 5%, within 2%, or within 1% of being perpendicular to the respective boundaries) toward the central portion of the 3D image 5000B (representing gaps between the objects 5100A-5100I in the image 5000B), and the detection region 5700 of the image. For example, the computing system 1100 may determine the extension lines 5500C / 5500D / 5500E starting from the boundary 5200A and proceeding toward the central portion of the 3D image 5000B. Boundary 5200A bounds the outer edges of objects 5100A-5100I, which are located on pallet 5400. Extensions 5500C / 5500D / 5500E and boundary 5200A may be determined based on changes in depth information of adjacent 3D points in the 3D image or changes in depth gradients. As described above, spatial depth information in the 3D image may be analyzed to detect edges based on discontinuities or significant changes in depth. These detected edges may be analyzed to determine extensions 5500C / 5500D / 5500E (representing gaps between objects in image 5000A).

[0085] Returning now to FIG. 4, in layer divider detection operation 450, computing system 1100 may measure the length of the extension lines detected in extension line detection operation 440. Computing system 1100 may detect the presence of a layer divider 3600 disposed on the top surface 3120 of the layer of objects based on (e.g., in response to) the length of each of the extension lines being less than a first threshold, i.e., the line length threshold. In some examples, the dimensions of the objects in the stacked objects and the threshold may be stored in object registration module 1130. In some examples, the line length threshold may correspond to the length of the smallest side of any of objects 5100A-5100I. The line length threshold may be obtained by computing system 1100 and compared to the measured length. If the length of each of the extension lines is less than the line length threshold, computing system 1100 may detect the presence of a layer divider. If the length of each of the extended lines representing the gaps between the objects 5100A-5100I in the image 5000A is less than the length of the smallest side of the objects 5100A-5100I, it may indicate that a portion of the image of the object is obstructed by the presence of another object, which may be a layer divider 5600A. The line length measurement process may be further understood with reference to FIG.

[0086] Figure 5C shows examples of extension lines and edges of a detection region identified based on the 2D image and method shown in Figure 5A or the 3D image and method shown in Figure 5B. Figure 5C shows boundary 5200A in detection region 5700 of image 5000C and extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H determined using either the 2D image of Figure 5A or the 3D image or point cloud data of Figure 5B. The computing system 1100 may determine, based on image segmentation, edge detection, or other processing operations discussed above, that the end points of each of the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H are 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 / 5500T8, respectively, which are distal to the perimeter of the upper surface defined by the boundary 5200A. The termination points 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 / 5500T8 of the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H indicate that an object, i.e., layer partition 5600A, interrupts the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H extending from the respective boundaries 5200A. Thus, end points 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 / 5500T8 may indicate that a layer divider is positioned above objects 5100A-5100I, and tracking the end points may provide the outline of layer divider 5600A.

[0087] The computing system 1100 may determine the length of each of the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H based on image segmentation, edge detection, or other processing operations discussed above. In some examples, the length of each respective line may be determined based on the length of the shortest line from the end point of the line to the boundary 5200A of the detection region 5700 from which the respective line extends.

[0088] In some examples, the computing system 1100 may be further configured to detect the presence of the layer divider 3600 based on none of the extended lines extending from the perimeter of the top surface 3120 to the center of the top surface 3120 of the stacked object 3700. When none of the extended lines extending from the perimeter of the top surface 3120 of the stacked object 3700 to the center of the top surface 3120, it may indicate that a portion of the image of the object 5100A-5100I is obstructed by the presence of another object, which may be the layer divider 5600A. In some examples, the line length threshold may be less than half the length of the smallest side of a rectangle that defines the top surface 3120 of the stacked object 3700. In some examples, the line length threshold may be less than one-quarter the length of the smallest side of a rectangle that defines the top surface 3120 of the stacked object 3700. In some examples, the line length threshold may be half the length of a side of a rectangle that defines the top surface 3120 of the stacked object 3700. In some examples, the line length threshold may be a predefined number that is stored in the object registration module 1130. The predefined number may be based on the environment for operating the robotic system and the objects the robotic system is configured to handle. The predefined line length threshold may be selectively adjusted based on changes in the size of objects that the robotic system may handle or process.

[0089] In a verify operation 460, the computing system 1100 may verify the presence of the layer divider based on one or more of a surface area of ​​the layer divider, a thickness of the layer divider, a weight of the layer divider, a smoothness of the layer divider, or texture artifacts. In some examples, operation 460 may be performed selectively. In some examples, the contours of the layer divider may be identified after the presence of the layer divider is verified. In some examples, the verification may be performed after the contours of the layer divider are identified.

[0090] FIG. 7 illustrates an example of a method for verifying the presence of a layer divider disposed between or on layers of an object. One or more of the blocks of FIG. 7, and combinations of blocks, may be implemented by a special purpose hardware-based computer that performs the specified functions, or a combination of special purpose hardware and instructions, e.g., computer or processor instructions. For example, one or more of the operations of FIG. 7 may be performed by a verification module 1138 of a computing system 1100C. The order of the operations of FIG. 4A may be changed, or some of the operations may be omitted, without departing from the spirit and scope of the illustrated example. In addition to the description of FIG. 7 below, the descriptions of FIGS. 1-6B also apply to FIG. 7 and are incorporated herein.

[0091] In a surface area minimum threshold operation 461, the validation module 1138 of the computing system 1100C may determine the surface area of ​​the contour of the layer divider when (e.g., in response to) detecting the presence of the layer divider. The computing system 1100C may determine the surface area of ​​the contour of the layer divider 5600A by calculating the area enclosed by the contour that defines the boundary of the layer divider 5600A. If the contour of the layer divider 5600A defines a standard geometric shape (such as a rectangle, circle, or triangle), the surface area is calculated by multiplying the length by the width for a rectangle / square, using the formula πr 2 where r is the radius of the circle, determining the area of ​​a triangle based on multiplying ½ x base x height, or applying Heron's rule if all sides of the triangle are known.

[0092] For non-standard shapes of the layer partition 5600A, the surface area can be determined by breaking the shape into smaller manageable segments (such as triangles) or by using numerical calculation methods. For example, the calculation system 1100C can divide the area enclosed by the contour of the layer partition 5600A into triangles by selecting a point inside (or outside) the contour of the layer partition 5600A as a reference and connecting it to the vertices of the contour, effectively triangulating the interior of the contour of the layer partition 5600A. The calculation system 1100C can calculate the area of ​​each triangle by the formula above, and these areas can be summed to obtain the area of ​​the contour of the layer partition 5600. In another example, the calculation system 1100C can use the shoelace rule (also known as the Gaussian area rule) to determine the surface area of ​​the contour of the layer partition 5600A, which can be represented as a polygon.

[0093] In another example, the surface area calculation system 1100C may be extracted from a digital image using a library such as OpenCV, which provides functions such as the contourArea function that may directly calculate the area enclosed by a contour.

[0094] The computing system 1100C may compare the surface area of ​​the contour of the layer separator to a minimum surface area threshold stored in the object registration module 1130. The computing system 1100C may verify the presence of a layer divider based on (e.g., in response to) whether the surface area of ​​the contour of the layer divider is greater than the minimum surface area threshold. If the surface area of ​​the contour of a potentially detected layer divider is sufficiently large, it may be considered a correct detection, e.g., should be verified.

[0095] In some examples, the surface area minimum threshold may be equal to or greater than the surface area of ​​the smallest side of the smallest object handled in the operating environment. The surface area minimum threshold may be equal to or greater than the surface area of ​​the smallest side of the smallest object in the stack of objects. The surface area minimum threshold may be equal to the surface area of ​​the largest object in the stack of objects. In some examples, the surface area minimum threshold may be equal to the surface area of ​​the largest side of the largest object in the stack of objects. In some examples, the surface area minimum threshold is a predefined number stored in the object registration module 1130. The predefined number may be based on the environment for operating the robotic system and the objects the robotic system is configured to handle. In some examples, the predefined number may vary based on the type and size of the object, or the type or size of items included in the object.

[0096] In a surface area maximum threshold operation 462, the verification module 1138 of the computing system 1100C may determine a surface area of ​​the contour of the layer divider after (e.g., in response to) the presence of the layer divider is detected. The surface area of ​​the contour of the layer divider may be determined as described above with reference to the determination of the surface area of ​​the surface area minimum threshold operation 461. The surface area may be compared to a surface area maximum threshold stored in the object registration module 1130. The computing system 1100C may verify the presence of the layer divider based on (e.g., in response to) whether the surface area of ​​the contour of the layer divider is smaller than the surface area maximum threshold. If the surface area of ​​the contour of the potentially detected layer divider is sufficiently small, it may be considered to be an accurate detection, e.g., to be verified.

[0097] In some examples, the surface area maximum threshold may be equal to the surface area of ​​the pallet on which the stacked objects are placed. In some examples, the surface area maximum threshold is a predefined number stored in the object registration module 1130. In some examples, the predefined number may vary based on the environment in which the objects are stored or located. Based on the environment for operating the robotic system and the objects the robotic system is configured to handle, the predefined surface area maximum threshold may be obtained by multiplying the size of the sides of the pallet. In some examples, the size of the pallet may be any one of 45.9" x 45.9", 48" x 40", 47.2" x 31.5", 47.2" x 39.4", 47.2" x 31.5", 44.9" x 44.9", 43.3" x 43.3", 39.4" x 47.2", 31.5" x 23.6", 24" x 20", 20" x 24", or any other size suitable for use in the environment for operating the robotic system.

[0098] In a layer divider thickness operation 463, the verification module 1138 of the computing system 1100C may determine a thickness of the layer divider based on the 3D image information when the presence of the layer divider is detected. In some examples, the contour of the layer divider may be identified after the presence of the layer divider is verified based on the layer divider thickness operation 463. In other examples, the layer divider thickness operation 463 may verify the presence of the layer divider after the contour of the layer divider is identified. In some examples, the computing system 1100C may determine the thickness of the layer divider based on a change in depth information of adjacent 3D points of the 3D image, or a change in a depth gradient between the layer divider indicated by the contour of the layer divider and the top surface of the stacked object. The computing system 1100C may verify the presence of the layer divider based on (e.g., in response to) whether the thickness of the layer divider indicated by the contour of the layer divider is less than a thickness threshold. In some examples, the thickness threshold is a predefined number stored in the object registration module 1130. As mentioned above, the layer dividers may be made of many different materials, such as, for example, corrugated board, corrugated sheets, and cardboard. The predefined thickness threshold may vary based on the material of the layer dividers. For example, if the layer dividers are made of corrugated board, the predefined thickness threshold may vary from 3 mm to 15 mm depending on whether the corrugated board is single wall, double wall, or triple wall. If the layer dividers are made of paperboard, the predefined thickness threshold may vary from 0.2 mm to 1 mm, and if the layer dividers are made of cardboard, the predefined thickness threshold may vary from 0.25 mm to 0.8 mm.

[0099] In a layer divider weight operation 464, the verification module 1138 of the computing system 1100C may determine a weight of the layer divider based on the sensor information when the presence of the layer divider is detected. In some examples, the contour of the layer divider may be identified after the presence of the layer divider is verified based on the layer divider weight operation 464. In other examples, the layer divider weight operation 464 may verify the presence of the layer divider after the contour of the layer divider is identified. The computing system 1100C may verify the presence of the layer divider based on (e.g., in response to) whether the weight of the layer divider is less than a weight threshold. In some examples, the weight threshold is a predefined number stored in the object registration module 1130. The predefined weight threshold may vary based on the material of the layer divider and the expected size of the layer divider. For example, the predefined weight threshold may be greater for triple wall corrugated board than double wall triple wall, and the predefined weight threshold may be greater for single wall corrugated board than either paperboard or cardboard. The expected size of the layer dividers may depend on the size of the objects the robotic system is configured to handle. In some examples, the weight threshold may be approximately 2.5 kilograms. In other examples, the weight threshold may vary from 100 grams to 2500 grams based on the environment for operating the robotic system and the objects the robotic system is configured to handle.

[0100] In a layer partition smoothness operation 465, the validation module 1138 of the computing system 1100C may measure the smoothness of the layer partition and compare the measured smoothness to a smoothness threshold to validate the identified layer partition. If the measured smoothness is less than the smoothness threshold, i.e., the layer partition is rougher than the smoothness threshold, the identified object may be determined to not be a layer partition, e.g., it may be invalidated.

[0101] In one example, the smoothness measured by analyzing the z-values ​​between points in a point cloud representing the layer partition 5600A may be compared to a z-value smoothness threshold. The validation against the z-value smoothness threshold may be performed in a number of ways. The validation module 1138 may extract the z-coordinate (height) of the point. The z-value may represent the height or depth of the point in the point cloud from an imaging device such as the camera 1200. The validation module 1138 may then identify the nearest neighbors of each point using a data structure such as a KD Tree. The validation module 1138 may determine local z variation by calculating the standard deviation of the difference between each point's z-value and the z-values ​​of its neighbors. The validation module 1138 may analyze the mean and standard deviation of these local z variations to quantify the surface smoothness, with a lower standard deviation indicating a smoother surface of the layer partition 5600A. The surface smoothness may be compared to a z-value smoothness threshold to validate or invalidate the identified layer partition.

[0102] In one example, the validation module 1138 may analyze the depth values, i.e., the range and distribution of values, to identify variations, which may be compared to a value smoothness threshold to validate or invalidate the identified layer partitions.

[0103] In another example, the computing system 1100C may determine that an object is not a layer partition when (i.e., in response to) the depth variation between a point and its neighboring points is greater than a z-value smoothness threshold.

[0104] In another example, the computing system 1100C may segment the point cloud into clusters having similar depths and examine the depth variation within and between these clusters. The computing system 1100C may determine that the object is not a layer partition when (i.e., in response to) the depth variation is greater than a z-value smoothness threshold.

[0105] In one example, exceeding a z-value smoothness threshold of approximately 5 mm, 6 mm or more may be deemed to invalidate an object as a potential layer divider. In another embodiment, the computing system 1100C may determine that an object is not a layer divider when (i.e., in response to) the depth variation is greater than the z-value smoothness threshold for 5%-12%, 7%-9%, or about 8% of the surface area of ​​the object representing the point cloud (e.g., identified as a potential layer divider).

[0106] In other examples, the computing system 1100C may measure the smoothness of the layer divider based on a sensor, such as an optical profilometer, that uses light to measure surface topography. These optical profilometers may project a beam of light onto the surface of the layer divider and analyze the reflected light to determine surface features and determine the smoothness of the layer divider. The smoothness of the layer divider may be expressed as an arithmetic mean roughness (Ra), which is a measurement of the average surface roughness of a material. Ra is the average deviation of surface peaks and valleys from a mean line, measured over a specified length. The computing system 1100C may verify the presence of the layer divider based on (e.g., in response to) whether the smoothness is greater than a smoothness threshold. In some examples, the smoothness threshold is a predefined number stored in the object registration module 1130. The predefined smoothness threshold may vary based on the material of the layer divider, such as corrugated board, paperboard, and cardboard.

[0107] In some examples, the computing system 1100C may determine that the object is a layer partition based on a comparison to either or both of a measured smoothness threshold and a z-value smoothness threshold (which may be different thresholds). The computing system 1100C may determine that the object is a layer partition when (i.e., in response to) both of the respective thresholds are met.

[0108] In some examples, the contours of the layer dividers may be identified after the presence of the layer dividers is verified based on the layer divider smoothness operation 465. In some examples, the contours of the layer dividers may be identified after the layer divider smoothness operation 465 verifies the presence of the layers. In other examples, the layer divider smoothness operation 465 may verify the presence of the layer dividers after the contours of the layer dividers are identified.

[0109] In the layer divider texture operation 466, the feature extraction module 1134 of the computing system 1100C may generate image features based on the 2D image information and the 3D image information corresponding to the upper surface of the layer divider. In some examples, the contour of the layer divider may be identified after the presence of the layer divider is verified based on the layer divider texture operation 466. In other examples, the layer divider texture operation 466 may verify the presence of the layer divider after the contour of the layer divider is identified. In some examples, the verification module 1138 may interact with the feature extraction module 1134 to identify texture artifacts based on the image features. The computing system 1100C may verify the presence of the layer divider based on (e.g., in response to) whether a texture artifact is identified in the image information. The computing system 1100C may determine that the presence of the layer divider is a false positive when (e.g., in response to) a texture artifact is identified in the image information. In some examples, the texture artifacts include any one or any combination of logos, graphics, tags, labels, markings, scan codes, Universal Product Codes (UPCs), packaging tape, visual patterns, and high spatial frequency regions in the image information. A high spatial frequency region may be a region where the image intensity changes rapidly over a small spatial distance, such as between an object and a background, or between a plain background of a packaging box and text or image artifacts. The computing system 1100C may verify the presence of a layer divider when (e.g., in response to) a texture artifact is not identified in the image information.

[0110] Returning now to FIG. 4A, in contour identification operation 470, the computing system 1100 may identify the contour of the layer partition according to the points on the top surface that correspond to the end points of the extension lines.

[0111] FIG. 6A illustrates an example of a method 670 for determining a contour of a layer partition, according to one or more embodiments. The operations of FIG. 6A may be performed in the order and manner as shown. However, the order of some operations may be changed, or some of the operations may be omitted, without departing from the spirit and scope of the illustrated example. In addition, the operations illustrated in FIG. 6A may be performed in parallel or simultaneously. One or more blocks of FIG. 6A, and combinations of blocks, may be implemented by a special purpose hardware-based computer that performs the specified functions, or a combination of special purpose hardware and instructions, e.g., computer or processor instructions. In addition to the description of FIG. 6A below, the descriptions of FIGS. 1-5C also apply to FIG. 6A and are incorporated herein.

[0112] In the termination point determination operation 671, the computing system 1100 may determine that the termination points of each of the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H are 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7, respectively. The termination points 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 are shown in FIG. 5C and described above with reference to FIG. 5C. The end points 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 / 5500T8 of the extension lines indicate that an object, i.e., layer partition 5600A, is intercepting the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H extending from their respective boundaries 5200A. Thus, the end points 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7 / 5500T8 may indicate that the layer partition is disposed above the objects 5100A-5100I, and tracing the end points may provide a contour of the layer partition 5600A.

[0113] In a top surface correspondence operation 672, the computing system 1100 may determine a contour of the layer partition based on points on the top surface that correspond to the end points of the extension lines 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7. In one example, the contour of the layer partition may be based on connecting the end points of the extension lines 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7.

[0114] In another example, the contours of the layer dividers may be based on image segmentation or other processing operations of the top view 2D image of the objects, such as the objects 5100A-5100I, the layer dividers 5600A, and the boundaries 5200A, of the objects, such as the objects 5100A-5100I, arranged on the pallet, of the extension lines 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7. During image segmentation, the computing system 1100 may identify objects, such as the objects 5100A-5100I, the layer dividers 5600A, and the boundaries 5200A, in the top view 2D image based on criteria such as image color, intensity, or texture. The computing system 1100 may trace the contours of the layer dividers based on the end points and the objects from the image segmentation operations. If the computing system 1100 encounters a boundary 5200A element while following the contour, the computing system 1100 may recognize that it has reached the boundary of the detection area 5700 and may prompt to stop following the contour towards the boundary 5200 of the detection area 5700. In another example, the contour of the layer divider may be based on the end points of the extension lines 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7, or on the change in depth information of adjacent 3D points in the 3D image, or on the change in depth gradient of the top view of the object, such as the objects 5100A-5100I arranged on the pallet. Similar to the example described for image segmentation, the change in depth information may identify the object in the image, which may then assist the computing system 1100 in following the contour of the layer divider.

[0115] In a detection area portion removal operation 673, the computing system 1100 may determine the contour of the layer partition by filtering out portions of the detection area 5700 corresponding to the length of each extension line 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H, which may be determined as described above. In one example, the computing system 1100 may identify the contour of the layer partition based on removing portions of 2D image information of the top surface of the stacked object from the perimeter to the end point of each of the extension lines 5500T1 / 5500T2 / 5500T3 / 5500T4 / 5500T5 / 5500T6 / 5500T7. The operation of removing a portion of the detection area corresponding to the length of each extension line 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H is shown in Figure 6B.

[0116] In the detection region portion removal operation 674, the computing system 1100 removes the longest extension line (Ext Line 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H) from the extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H. long The computing system 1100 may determine the maximum extension line (Ext Line long The computation system 1100 may determine the contour of the layer partition by filtering out a portion of the detection area 5700 corresponding to the length of the longest extension line (Ext Line ) on each side of the rectangle that forms the detection area 5700 from the perimeter of the detection area 5700. long ) the contours of the layer partitions can be identified based on removing (or filtering out) portions of the 2D image information of the top surfaces of the stacked objects up to a distance corresponding to the length of the

[0117] In the detection area portion removal operation 675, the computing system 1100 calculates the longest extension line (Ext Line ) for each side of the rectangle that forms the detection area 5700. long In the example of FIG. 5C, the calculation system 1100 may determine a first longest extension line (first Ext Line ) from among the extension lines 5500A / 5500B on the right side of the rectangle that forms the detection area 5700. longThe calculation system 1100 may determine the second longest extension line (second Ext Line ) from among the extension lines 5500C / 5500D / 5500E on the bottom side of the rectangle that forms the detection area 5700. long The calculation system 1100 may determine the third longest extension line (third Ext Line ) from among the upper extension lines 5500F / 5500G / 5500H of the rectangle that forms the detection area 5700. long ) may be determined. This operation may not be performed on the fourth side of the rectangle because there is no extension to the left of the rectangle forming the detection region 5700. In some examples, the layer divider 5600A may extend all the way around the fourth side, so there will be no extension on the fourth side of the rectangle.

[0118] The computing system 1100 may determine the contours of the layer partitions by removing (or filtering out) portions of the detection area 5700 on each side of the rectangle forming the detection area 5700 that correspond to the length of the longest extended line on each side. For example, the computing system 1100 may filter out a first longest extended line (First Ext Line) from the right side of the rectangle forming the detection area 5700. long 5. Remove (or filter out) a portion of the detection area 5700 equal to the length of the rectangle that defines the detection area 5700, and draw a second longest extension line (Second Ext Line) from the bottom side of the rectangle that defines the detection area 5700. long ) from the top of the quadrilateral that defines the detection area 5700, and a third longest extension line (Third Ext Line long ) to determine the contour of the layer divider. Because no extension lines are detected to the left of the rectangle forming the detection region 5700, the computing system 1100 may determine that the detection region 5700 extends to the perimeter of the rectangle forming the detection region 5700 and does not require removal (or filtering out).

[0119] In another example, if no extension line is detected to the left of the rectangle forming the detection region 5700, the computing system 1100 may select a first Ext Line long, 2nd Ext Line long , and the third Ext Line long 5700。 To avoid the risk of image processing failure, the longest extension of the rectangle forming the detection area 5700 may be selected. If the image processing fails to detect the extension of the left side of the rectangle forming the detection area 5700, the contour of the layer partition may be determined to be larger than the actual layer partition, leading to a potential accident when the robot tries to pick up or remove the layer partition from the stacked object. Therefore, to exercise due caution and avoid accidents, if no extension is detected on the left side of the rectangle forming the detection area 5700, the computing system 1100 may remove (or filter out) the part of the detection area 5700 corresponding to the length of the longest extension from the left side of the rectangle forming the detection area 5700. This is because if the contour of the layer partition is determined to be larger than the actual layer partition, an accident may occur when the robot tries to pick up or remove the layer partition from the stacked object. The computing system 1100 may remove (or filter out) the part of the detection area 5700 corresponding to the length of the longest extension from the left side of the rectangle forming the detection area 5700.

[0120] 6B shows a detection area 5700 bounded by boundary 5200A and extension lines 5500A / 5500B / 5500C / 5500D / 5500E disposed in the detection area 5700 starting from boundary 5200A and proceeding toward the center of 2D image 6000A. The bottom part of FIG. 6B shows the longest extensions (Ext Line 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G) of extension lines 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G from each side of the rectangle forming detection area 5700, as described above for operation 674. long 5 illustrates the contour of layer divider 5600A obtained by removing a portion of detection area 5700 corresponding to the length of

[0121] After the contours of the layer partitions are determined, in contour sharpening operation 676, the computing system 1100 may perform a morphological process to sharpen the identified contours of the layer partitions. In some examples, the morphological process is based on a square structuring element with a side length equal to the maximum extension length of the extensions 5500A / 5500B / 5500C / 5500D / 5500E / 5500F / 5500G / 5500H. The morphological process may include an erosion process based on sliding the structuring element over the layer partitions and retaining the minimum pixel value covered by the structuring element. Erosion is a morphological process that removes pixels on object boundaries in the image, effectively shrinking the object. It works by sliding the structuring element over the image and retaining a pixel at its origin only if all pixels under the structuring element match the element, resulting in the removal of thinner objects and small protrusions. Erosion erodes the boundaries of foreground (typically white) objects in the image.

[0122] Morphological operations may include a dilation operation based on sliding a structuring element over a layer partition and retaining the maximum pixel value covered by the structuring element. Dilation adds pixels to the boundaries of objects in an image. The structuring element is slid over the image and if any pixel under the structuring element is 1, the pixel of origin is set to 1. Dilation is used to enhance features and close small holes or gaps in objects.

[0123] In some examples, the morphological processing may include an erosion process followed by a dilation process. In some examples, the morphological processing may include performing a dilation process followed by an erosion process.

[0124] In a trajectory determination operation 480, when the computing system 1100 determines (e.g., in response to) the contour of the layer partition, the object manipulation planning module 1126 of the computing system 1100 may determine a trajectory to control the movement of the robot arm of the robot 1300 or the robot 3300 based on the contour of the layer partition. For example, the object manipulation planning module 1126 may configure the robot 3300 to grasp and remove the layer partition 3600 from the top surface 3120 of the object 3100A / 3100B / 3100C / 3100D based on the trajectory. In some examples, the trajectory sets the robot arm 330 to grasp and remove the layer partition 3600 from above the stacked object 3700 using the end effector device 3330. In some examples, the trajectory sets the gripper of the end effector device 3330 to grasp the layer partition 3600.

[0125] 8 shows an example of an environment where two layers 3710 and 3720 of objects 3100A / 3100B / 3100C / 3100D / 3100E / 3100F / 3100G / 3100H on a pallet 3400 have a layer divider 3600 disposed on a top surface of the second layer. The first layer 3710 includes objects 3100A / 3100B / 3100C / 3100D and the second layer 3720 includes objects 3100E / 3100F / 3100G / 3100H. The layer divider 3600 is disposed on a top surface of the second layer 3720. The presence of the layer divider 3600 in FIG. 8 can be determined based on the methods and systems described above.

[0126] The above detailed description of examples of the disclosed technology is not intended to be exhaustive or to limit the disclosed technology to the precise form disclosed above. Specific examples of the disclosed technology are described above for illustrative purposes, but various equivalent modifications are possible within the scope of the disclosed technology, as one of ordinary skill in the relevant art would recognize. For example, while processes or blocks are presented in a given order, alternative implementations may perform routines having steps or employ systems having blocks in different orders, and some processes or blocks may be deleted, moved, added, sub-divided, combined, and / or modified to provide alternative or sub-combinations. Each of these processes or blocks may be implemented in a variety of different ways. Furthermore, while processes or blocks are sometimes shown as being performed in series, these processes or blocks may instead be performed or implemented in parallel, or may be performed at different times. Furthermore, any specific numbers described herein are merely examples, and alternative implementations may employ different values ​​or ranges.

[0127] These and other changes may be made to the disclosed technology in light of the above detailed description. Although the detailed description describes specific examples of the disclosed technology, as well as the best mode contemplated, the disclosed technology may be practiced in many ways, regardless of how detailed the above description appears in the text. The details of the system may vary considerably in its specific implementation, yet be encompassed by the technology disclosed herein. As noted above, a particular term used in describing a particular feature or aspect of the disclosed technology should not be construed to mean that the term is redefined herein to be limited to any particular characteristic, feature, or aspect of the disclosed technology with which the term is associated. Thus, the present invention is not limited, except as by the appended claims. In general, the terms used in the following claims should not be construed to limit the disclosed technology to the particular examples disclosed herein, unless the detailed description section above explicitly defines such terms.

[0128] It will be apparent to those skilled in the relevant art that other suitable modifications and adaptations to the methods and applications described herein may be made without departing from the scope of any of the embodiments. The above-described embodiments are illustrative examples, and the disclosure should not be construed as being limited to these particular embodiments. It should be understood that the various embodiments disclosed herein may be combined in different combinations than those specifically presented in the specification and accompanying drawings. It should also be understood that, depending on the example, certain acts or events of any of the processes or methods described herein may be performed in a different order, added, combined, or omitted entirely (e.g., not all acts or events described may be necessary to perform a method or process). In addition, although certain features of the embodiments herein are described as being performed by a single component, module, or unit for express purposes, it should be understood that the features and functions described herein may be performed by any combination of components, units, or modules. Thus, various changes and modifications may be effected by those skilled in the art without departing from the spirit or scope of the invention, as defined in the appended claims.

[0129] Further embodiments include the following:

[0130] EMBODIMENT 1 11. A computing system for detecting layer partitions between stacked objects, comprising: a control system configured to communicate with a robot having at least one camera and a robotic arm including an end effector device; and a processing circuit configured to: identify contours of the stacked objects based on 3D image information obtained from at least one image captured by the at least one camera; identify a top surface of the stacked objects based on the contours of the stacked objects; detect extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one of an edge of the object or a gap between objects of the stacked objects, based on 2D image information of the top surface of the stacked objects; detect the presence of a layer partition based on a length of each of the extension lines being less than a line length threshold; identify a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; and determine a trajectory for controlling a movement of the robot arm based on the contour of the layer partition.

[0131] EMBODIMENT 2 2. The system of embodiment 1, wherein the termination point is distal to the periphery of the upper surface.

[0132] EMBODIMENT 3 2. The system of embodiment 1, wherein the processing circuitry is further configured to detect an extension line on the upper surface based on a depth gradient between objects detected in the 3D image information.

[0133] EMBODIMENT 4 2. The system of embodiment 1, wherein the processing circuitry is further configured to detect the presence of a layer partition based on the extension line not extending from the periphery of the top surface to the center of the top surface.

[0134] EMBODIMENT 5 The system of embodiment 1, wherein the processing circuitry is further configured to identify contours of layer partitions based on removing portions of image information of the top surfaces of the stacked objects from the periphery to the end points of each of the extension lines.

[0135] EMBODIMENT 6 2. The system of embodiment 1, wherein the processing circuitry is further configured to determine a surface area of ​​the layer divider in response to the presence of the layer divider being detected, and to verify the presence of the layer divider in response to the surface area being greater than a minimum surface area threshold.

[0136] EMBODIMENT 7 2. The system of embodiment 1, wherein the processing circuitry is further configured to determine a surface area of ​​the layer divider in response to the presence of the layer divider being detected, and to verify the presence of the layer divider in response to the surface area being less than a maximum surface area threshold.

[0137] EMBODIMENT 8 The system of embodiment 1, wherein the processing circuitry is further configured to, in response to detecting the presence of a layer divider, determine a smoothness of the layer divider based on changes in depth information of adjacent pixels in the 3D image information corresponding to the top surface of the layer divider, and, in response to the smoothness being greater than a smoothness threshold, verify the presence of the layer divider.

[0138] EMBODIMENT 9 The system of embodiment 1, wherein the processing circuitry is further configured to generate image features based on 2D image information and 3D image information corresponding to the top surface of the layer partition, identify texture artifacts based on the image features, and determine that the presence of the layer partition is a false positive in response to the texture artifact being identified.

[0139] EMBODIMENT 10 2. The system of embodiment 1, wherein the trajectory configures the robot to grasp and remove the layer divider.

[0140] EMBODIMENT 11 2. The system of embodiment 1, wherein the line length threshold is less than half the length of the smallest side of a rectangle defining the upper surface.

[0141] EMBODIMENT 12 2. The system of embodiment 1, wherein the line length threshold is less than one-quarter of the length of the smallest side of a rectangle defining the upper surface.

[0142] EMBODIMENT 13 7. The system of embodiment 6, wherein the surface area minimum threshold is equal to the surface area of ​​the largest object in the stack.

[0143] EMBODIMENT 14 7. The system of embodiment 6, wherein the surface area minimum threshold is equal to the surface area of ​​the largest side of the largest object in the stack.

[0144] EMBODIMENT 15 8. The system of embodiment 7, wherein the surface area maximum threshold is equal to the surface area of ​​the pallet on which the stacked objects are placed.

[0145] EMBODIMENT 16 The system of embodiment 1, wherein the processing circuitry is further configured to determine a thickness of the layer divider based on the 3D image information in response to the presence of the layer divider being detected, and to verify the presence of the layer divider in response to the thickness being less than a thickness threshold.

[0146] EMBODIMENT 17 2. The system of embodiment 1, wherein the processing circuitry is further configured to determine a weight of the layer divider in response to the presence of the layer divider being detected, and to verify the presence of the layer divider in response to the thickness being less than a weight threshold.

[0147] EMBODIMENT 18 10. The system of embodiment 9, wherein the texture artifact comprises any one or any combination of a logo, a graphic, a tag, a label, a marking, a scan code, a Universal Product Code (UPC), packaging tape, a visual pattern, and an intensity change.

[0148] EMBODIMENT 19 The system of embodiment 1, wherein the processing circuitry is further configured to perform morphological processing to sharpen the contours of the layer partitions, the morphological processing being based on a square structuring element having a side length equal to the length of the longest one of the extension lines.

[0149] EMBODIMENT 20 2. The system of embodiment 1, wherein the morphological process includes a dilation process based on sliding a structuring element over a layer partition and retaining the maximum pixel value covered by the structuring element.

[0150] EMBODIMENT 21 2. The system of embodiment 1, wherein the morphological process includes an erosion process based on sliding a structuring element over a layer partition and retaining the minimum pixel value covered by the structuring element.

[0151] EMBODIMENT 22 2. The system of embodiment 1, wherein the morphological processing comprises performing a dilation process followed by an erosion process.

[0152] EMBODIMENT 23 2. The system of embodiment 1, wherein the trajectory configures the robotic arm to use an end effector device to grasp and remove a layer divider from above the stacked object.

[0153] EMBODIMENT 24 A system as described in embodiment 1, wherein the trajectory configures the gripper of the end effector device to grip the layer partition according to at least one of a plurality of gripping models.

[0154] EMBODIMENT 25 The system of embodiment 1, wherein identifying the top surface of the stacked object includes positioning at least one camera toward the stacked object, capturing a 2D image of the top surface of the stacked object based on a contour of the stacked object, and determining the top surface of the stacked object based on the 2D image.

[0155] EMBODIMENT 26 A non-transitory computer-readable medium having instructions thereon that, when executed by the control circuit, configure a processing circuit to: identify contours of the stacked objects based on 3D image information obtained from at least one image captured by the at least one camera; identify top surfaces of the stacked objects based on the contours of the stacked objects; detect extension lines extending from a periphery of the top surface toward a center of the top surface, each corresponding to at least one of an edge of the object or a gap between objects of the stacked objects, based on 2D image information of the top surfaces of the stacked objects, detect the presence of a layer partition based on a length of each of the extension lines being less than a line length threshold; identify contours of the layer partitions according to points on the top surface corresponding to endpoints of the extension lines; and determine a trajectory for controlling movement of a robot arm of a robot based on the contours of the layer partitions.

[0156] EMBODIMENT 27 27. The non-transitory computer-readable medium of embodiment 26, wherein the termination point is distal to the periphery of the upper surface.

[0157] EMBODIMENT 28 27. The non-transitory computer-readable medium of embodiment 26, wherein the control circuitry is further configured to detect an extension line on the upper surface based on a depth gradient between objects detected in the 3D image information.

[0158] EMBODIMENT 29 27. The non-transitory computer-readable medium of embodiment 26, wherein the control circuitry is further configured to detect the presence of a layer divider based on the extension line not extending from the periphery of the top surface to the center of the top surface.

[0159] EMBODIMENT 30 A non-transitory computer-readable medium as described in embodiment 26, wherein the control circuitry is further configured to identify contours of layer partitions based on removing portions of image information of the top surfaces of the stacked objects from the periphery to the end points of each of the extension lines.

[0160] EMBODIMENT 31 11. A processor-implemented method for detecting layer partitions between stacked objects, comprising: identifying a contour of the stacked object based on 3D image information obtained from at least one image; identifying a top surface of the stacked object based on the contour of the stacked object; detecting extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one of an edge of the object or a gap between objects of the stacked objects, based on 2D image information of the top surface of the stacked object; detecting the presence of a layer partition based on a length of each of the extension lines being less than a line length threshold; identifying a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; and determining a trajectory for controlling a movement of a robot arm of a robot based on the contour of the layer partition.

[0161] EMBODIMENT 32 32. The method of embodiment 31, wherein the termination point is distal to the periphery of the upper surface.

[0162] EMBODIMENT 33 32. The method of embodiment 31, further comprising detecting an extension line on the upper surface based on a depth gradient between objects detected in the 3D image information.

[0163] EMBODIMENT 34 32. The method of embodiment 31, further comprising detecting the presence of a layer partition based on the extension line not extending from the periphery of the top surface to the center of the top surface.

[0164] EMBODIMENT 35 32. The method of claim 31, wherein identifying the contours of the layer partitions includes identifying the contours of the layer partitions based on removing portions of image information of the top surfaces of the stacked objects from the periphery to the end points of each of the extension lines.

Claims

1. 1. A computing system for detecting layer partitions between stacked objects, comprising: At least one camera; a control system configured to communicate with a robot having a robotic arm including an end effector device; processing circuitry; The processing circuitry includes: identifying contours of the stacked objects based on 3D image information obtained from at least one image captured by the at least one camera; identifying a top surface of the stacked object based on the contour of the stacked object; Based on the 2D image information of the top surfaces of the stacked objects, detecting extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one of an edge of an object or a gap between the stacked objects; detecting the presence of the layer partition based on the length of each of the extension lines being less than a line length threshold; identifying a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; A computing system configured to determine a trajectory for controlling movement of the robot arm based on the contour of the layer partition.

2. The system of claim 1 , wherein the termination point is distal to the perimeter of the upper surface.

3. The system of claim 1 , wherein the processing circuitry is further configured to detect the extension line on the upper surface based on a depth gradient between the objects detected in the 3D image information.

4. The system of claim 1 , wherein the processing circuitry is further configured to detect the presence of the layer divider based on the extension line not extending from the perimeter of the top surface to the center of the top surface.

5. The system of claim 1 , wherein the processing circuitry is further configured to identify a contour of the layer partition based on removing a portion of image information of the top surface of the stacked object from the perimeter to the end point of each of the extension lines.

6. The processing circuitry includes: determining a surface area of ​​the layer divider in response to the presence of the layer divider being detected; The system of claim 1 , further configured to verify the presence of the layer divider in response to the surface area being greater than a minimum surface area threshold.

7. The processing circuitry includes: determining a surface area of ​​the layer divider in response to the presence of the layer divider being detected; The system of claim 1 , further configured to verify the presence of the layer divider in response to the surface area being less than a maximum surface area threshold.

8. The processing circuitry includes: in response to the presence of the layer divider being detected, determining a smoothness of the layer divider based on changes in depth information of adjacent pixels in the 3D image information that correspond to a top surface of the layer divider; The system of claim 1 , further configured to verify the presence of the layer divider in response to the smoothness being greater than a smoothness threshold.

9. The processing circuitry includes: generating image features based on the 2D image information and the 3D image information corresponding to a top surface of the layer partition; identifying texture artifacts based on the image features; The system of claim 1 , further configured to, in response to the texture artifact being identified, determine that the presence of the layer partition is a false positive.

10. The system of claim 1 , wherein the trajectory configures the robot to grasp and remove the layer divider.

11. A non-transitory computer-readable medium having instructions, The instructions, when executed by control circuitry, cause the control circuitry to: identifying contours of the stacked objects based on 3D image information obtained from at least one image captured by at least one camera; identifying a top surface of the stacked object based on the contour of the stacked object; Based on the 2D image information of the top surfaces of the stacked objects, detecting extension lines extending from a periphery of the top surface toward a center of the top surface, each of which corresponds to at least one of an edge of an object or a gap between the stacked objects; detecting the presence of the layer partition based on the length of each of the extension lines being less than a line length threshold; identifying a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; and a non-transitory computer-readable medium configured to determine a trajectory for controlling movement of a robotic arm of a robot based on the contour of the layer partition.

12. The non-transitory computer-readable medium of claim 11 , wherein the termination point is distal to the perimeter of the top surface.

13. 12. The non-transitory computer-readable medium of claim 11, wherein the control circuitry is further configured to detect the extension line on the upper surface based on a depth gradient between the objects detected in the 3D image information.

14. 12. The non-transitory computer-readable medium of claim 11, wherein the control circuitry is further configured to detect the presence of the layer divider based on the extension line not extending from the perimeter of the top surface to the center of the top surface.

15. 12. The non-transitory computer-readable medium of claim 11, wherein the control circuitry is further configured to identify a contour of the layer divider based on removing a portion of image information of the top surface of the stacked objects from the perimeter to the end point of each of the extension lines.

16. 1. A processor-implemented method for detecting layer partitions between stacked objects, comprising: identifying a contour of the stacked object based on 3D image information acquired from at least one image; identifying a top surface of the stacked object based on the contour of the stacked object; detecting extension lines extending from a periphery of the top surface toward a center of the top surface based on 2D image information of the top surfaces of the stacked objects, each of which corresponds to at least one of an edge of an object or a gap between the stacked objects; detecting the presence of the layer partition based on a length of each of the extension lines being less than a line length threshold; identifying a contour of the layer partition according to a point on the top surface corresponding to an end point of the extension line; determining a trajectory for controlling a movement of a robot arm of a robot based on the contour of the layer partition.

17. The method of claim 16 , wherein the termination point is distal to the perimeter of the upper surface.

18. The method of claim 16 , further comprising detecting the extension lines on the upper surface based on a depth gradient between the objects detected in the 3D image information.

19. The method of claim 16 , further comprising detecting the presence of the layer divider based on the extension line not extending from the perimeter of the top surface to the center of the top surface.

20. 17. The method of claim 16, wherein identifying the contours of the layer dividers includes identifying the contours of the layer dividers based on removing portions of image information of the top surfaces of the stacked objects from the perimeter to the end points of each of the extension lines.

Citation Information

Patent Citations

  • Image processing device, imaging apparatus, robot and robot system

    JP2021033712A

  • Mix-size depalletizing

    JP2022045905A