Robotic system having a wall-based packing mechanism and method of operation thereof
The robotic system with a wall-based packing mechanism addresses the limitations of robots by using a discretized model to dynamically adjust packing plans, ensuring efficient and adaptable object placement in containers despite real-world variations.
Patent Information
- Application Number
- JP2020158291
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-06-18
- Filing Date
- 2020-09-23
- Publication Date
- 2025-01-21
- Estimated Expiration
- 2040-07-31
AI Technical Summary
Robots lack the sophistication to replicate human sensitivity and adaptability for complex and intricate tasks, often failing to account for real-world variations and uncertainties, limiting their ability to efficiently pack objects into containers.
A robotic system with a wall-based packing mechanism that uses a discretized model to derive packing plans, adjusting for unforeseen circumstances by dynamically updating motion plans and leveraging object and container characteristics to optimize packing efficiency.
Enhances packing control, usability, and flexibility by ensuring objects are stacked efficiently, even in irregular containers, while adapting to real-time anomalies, thereby improving resource utilization and stability.
Smart Images

Figure 0007618159000001 
Figure 0007618159000002 
Figure 0007618159000003
Abstract
Description
[Technical field]
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS This application claims the benefit of U.S. Provisional Patent Application No. 62 / 931,161, filed November 19, 2019, which is incorporated by reference in its entirety.
[0002] The present technology is directed generally to robotic systems, and more particularly to systems, processes and techniques for packing objects into containers. [Background technology]
[0003] Due to ever-improving performance and decreasing costs, many robots (e.g., machines configured to automatically / autonomously perform physical actions) are now widely used in many fields. Robots can be used to perform various tasks (e.g., manipulating or transposing objects through space), for example, in manufacturing and / or assembly, packing and / or packaging, transportation and / or shipping, etc. In performing tasks, robots can replicate human actions, thereby replacing or reducing human involvement that would otherwise be required to perform dangerous or repetitive tasks.
[0004] However, despite technological advances, robots often lack the sophistication necessary to replicate the human agility and / or adaptability required to perform more complex and intricate tasks. For example, robots often lack the granularity and flexibility of control in the actions they perform to fully utilize available resources. Robots also often cannot account for variability or uncertainty that may result from various real-world factors. Thus, there remains a need for improved techniques and systems for controlling and managing various aspects of robots to complete tasks despite various real-world factors. [Brief description of the drawings]
[0005] [Figure 1] FIG. 1 illustrates an example environment in which a robotic system having a wall-based packing mechanism may operate. [Diagram 2] FIG. 1 is a block diagram illustrating a robotic system in accordance with one or more embodiments of the present technology. [Diagram 3] FIG. 1 is a diagram of a robotic system in accordance with one or more embodiments of the present technology. [Figure 4A] 1 is a diagram of an example object container in accordance with one or more embodiments of the present technology. [Figure 4B] 1 is a diagram of an example object container in accordance with one or more embodiments of the present technology. [Figure 4C] 1 is a diagram of an example object container in accordance with one or more embodiments of the present technology. [Figure 4D] 1 is a diagram of an example object container in accordance with one or more embodiments of the present technology. [Figure 5A] FIG. 1 illustrates an exemplary end effector in accordance with one or more embodiments of the present technology. [Figure 5B] FIG. 1 illustrates an exemplary end effector in accordance with one or more embodiments of the present technology. [Figure 5C] FIG. 1 illustrates an exemplary end effector in accordance with one or more embodiments of the present technology. [Figure 6] FIG. 1 is a diagram of an example discretized model of a packing component in accordance with one or more embodiments of the present technique. [Figure 7A] FIG. 1 is an example packing plan in accordance with one or more embodiments of the present technology. [Figure 7B] FIG. 13 is an illustration of a placement planning process in accordance with one or more embodiments of the present technology. [Figure 7C] FIG. 1 is a diagram of a placement rule in accordance with one or more embodiments of the present technology. [Figure 8A] 11A-11C are diagrams illustrating various aspects of calculation of support in accordance with one or more embodiments of the present technology. [Figure 8B]11A-11C are diagrams illustrating various aspects of calculation of support in accordance with one or more embodiments of the present technology. [Figure 9A] 1A-1C are diagrams illustrating aspects of an example motion plan calculation in accordance with one or more embodiments of the present technology. [Figure 9B] 1A-1C are diagrams illustrating aspects of an example motion plan calculation in accordance with one or more embodiments of the present technology. [Figure 9C] 1A-1C are diagrams illustrating aspects of an example motion plan calculation in accordance with one or more embodiments of the present technology. [Figure 10] FIG. 1 is a diagram of exemplary real-time sensor data in accordance with one or more embodiments of the present technology. [Figure 11] 2 is a flowchart of a first exemplary method of operating the robotic system of FIG. 1 in accordance with one or more embodiments of the present technique. [Figure 12] 10 is a flowchart of a second exemplary method of operating the robotic system of FIG. 1 in accordance with one or more embodiments of the present technique. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0006] Described herein are systems and methods for a robotic system with a wall-based packing mechanism. A robotic system (e.g., an integrated system of devices performing one or more designated tasks) configured according to some embodiments improves control, usability, and flexibility by packing objects (e.g., packages, boxes, cases, etc.) with respect to container walls. For example, the robotic system can stack objects in layers such that one or more objects on a base layer (1) contact or rest against one or more container walls and / or (2) overhang (e.g., protrude laterally from their perimeter(s)) one or more base layer object(s) closest to the container wall.
[0007] The robotic system can pack the object with respect to a container wall (e.g., a vertically oriented wall or partition of a cart, cage, bin, box, etc.) based on discretizing various packing components. Some examples of packing components can include objects (e.g., registered or assumed objects and / or unrecognized objects), a container or packing platform configured to receive the object, and / or a robotic manipulator (e.g., an end effector, a robotic arm, a portion thereof, or a combination thereof). The robotic system can generate a discretized model of the packing components.
[0008] Using the discretized model, the robotic system can derive a packing plan that determines placement positions of objects within a container. The packing plan can include placement positions that stack objects on top of each other (e.g., in layers). The robotic system can calculate / estimate separation distances between objects and / or between objects and container walls, overhang distances or portions thereof, other object-to-object measurements, and / or other object-to-container measurements. Based on the calculations, the robotic system can derive a packing plan with placement positions where the placed objects touch / lean against the container walls and / or overhang one or more objects below. In some embodiments, the robotic system can derive and utilize center of gravity (CoM) positions, rotation points, mass / weight, dimensions, and / or other physical attributes of the objects to derive the packing plan.
[0009] In some embodiments, the robotic system can derive motion plans corresponding to the packing plan. Each motion plan corresponds to an object and can include a motion path or a corresponding set of commands / settings for the object and / or the robotic unit (e.g., the robot arm and / or the end effector). The motion plan can correspond to the actions of the robotic unit to approach the object at a start position, grasp the object with the end effector, pick up the object and move it to its placement position, and release / place the object at the placement position.
[0010] The robotic system can implement the packing plan, such as by communicating one or more of the motion plan and / or corresponding commands / settings to the target robotic units. The robotic system can further implement the packing plan by executing the commands / settings at the target robotic units. Thus, the robotic system can operate the robotic units to transpose the objects from the starting positions to their respective placement positions according to the packing plan.
[0011] The robotic system can be configured to dynamically adjust the packing plan to account for, for example, unexpected conditions (e.g., container anomalies). For example, a container (e.g., a two-walled cart and / or a three-walled cage) may include vertically oriented walls that may be deformed, bent, misaligned, partially closed, and / or otherwise physically different from expected conditions. Such unexpected conditions may affect the placement area within the container and / or the access path to the placement area. The robotic system can detect such unexpected conditions and dynamically adjust the packing plan. As described in more detail below, the robotic system can use a discretized model to determine an axis aligned bounding box (AABB), offset the AABB, and / or validate the offset AABB. Based on the dynamic adjustments, the robotic system can also update the motion plan to account for unexpected conditions. In some embodiments, the robotic system can start from an adjusted object placement position and step back to the starting position to determine the motion plan. The robotic system can place a discretized model of the end effector along the reverse trace path to update and / or validate the motion plan.
[0012] In the following description, numerous specific details are set forth to provide a thorough understanding of the disclosed technology. In other embodiments, the technology presented herein may be practiced without these specific details. In other instances, well-known features, e.g., specific functions or routines, have not been described in detail so as not to unnecessarily obscure the present disclosure. References herein to "an embodiment," "an embodiment," or the like, mean that the particular feature, structure, material, or characteristic being described is included in at least one embodiment of the present disclosure. Thus, appearances of such language herein do not necessarily all refer to the same embodiment. On the other hand, such references are not necessarily mutually exclusive. Moreover, particular features, structures, materials, or characteristics may be combined in any suitable manner in one or more embodiments. It should be understood that the various embodiments shown in the drawings are merely illustrative representations and are not necessarily drawn to scale.
[0013] For the sake of clarity, some details describing structure or processing that are well known and often associated with robotic systems and subsystems, but that may unnecessarily obscure some important aspects of the disclosed technology, are not included in the following description. Also, 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 and that do not have some of the elements described below.
[0014] Many embodiments or aspects of the disclosure described below may take the form of computer-executable or processor-executable instructions, including routines executed by a programmable computer or processor. Those skilled in the art will appreciate that the disclosed technology may be practiced on computer or processor systems other than those illustrated and described below. The technology described herein may be implemented in a special-purpose computer or data processor that is specifically programmed, configured, or constructed to execute one or more of the computer-executable instructions described below. Thus, the terms "computer" and "processor" as used generally herein refer to any data processor, including Internet appliances and handheld devices (e.g., palmtop computers, wearable computers, cellular or mobile phones, multiprocessor systems, processor-based or programmable consumer electronics, network computers, minicomputers, etc.). Information manipulated by these computers and processors may be presented on any suitable display medium, such as a liquid crystal display (LCD). Instructions for performing computer-executable or processor-executable tasks 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 and / or other suitable medium.
[0015] The terms "coupled" and "connected," as well as derivatives thereof, may be used herein to describe structural relationships between components. It should be understood that these terms are not intended to be synonyms for each other. Rather, in certain embodiments, "connected" may be used to indicate that two or more elements are in direct contact with each other. Unless the context clearly indicates otherwise, the term "coupled" may be used to indicate that two or more elements are in direct or indirect contact with each other (through other intervening elements therebetween), or that two or more elements cooperate or interact with each other (e.g., in a causal relationship for sending and receiving signals or calling functions, etc.), or both.
[0016] Favourable environment 1 is a diagram of an example environment in which a robotic system 100 having a wall-based packing mechanism may operate. The robotic system 100 may include and / or communicate with one or more units (e.g., robots) configured to perform one or more tasks. Aspects of the wall-based packing mechanism may be practiced or implemented by various units.
[0017] In the example shown in FIG. 1 , the robotic system 100 can include an unloading unit 102, a transposition unit 104 (e.g., a palletizing robot and / or a piece picker robot), a transport unit 106, a loading unit 108, or a combination thereof, in a warehouse or distribution / shipping depot. Each unit in the robotic system 100 can be configured to perform one or more tasks. Tasks can be combined in sequence to perform actions to achieve a goal, such as unloading an object from a truck or van and storing it in a warehouse, or unloading an object from a storage location and preparing it for shipment. In other examples, a task can include placing an object at a target location (e.g., on a pallet and / or in a bin / cage / box / case). As described below, the robotic system can derive a plan (e.g., a placement position / orientation, a sequence for transposing the object, and / or a corresponding motion plan) for placing and / or stacking the object. Each unit can be configured to perform a sequence of actions (e.g., by operating one or more components therein) according to one or more of the derived plans to perform the task.
[0018] In some embodiments, a task may include manipulating (e.g., moving and / or reorienting) a target object 112 (e.g., one of a package, a box, a case, a cage, a pallet, etc., corresponding to the task being performed) from a start location 114 to a task location 116. For example, the unloading unit 102 (e.g., a devanning robot) may be configured to transpose the target object 112 from a position in a carrier (e.g., a truck) to a position on a conveyor belt. Also, the transposition unit 104 may be configured to transpose the target object 112 from one position (e.g., a conveyor belt, a pallet, or a bin) to another position (e.g., a pallet, a bin, etc.). In another example, the transposition unit 104 (e.g., a palletizing robot) may be configured to transpose the target object 112 from a source position (e.g., a pallet, a pick-up area, and / or a conveyor) to a destination pallet. Upon completing an operation, the transport unit 106 may transpose the target object 112 from an area associated with the displacement unit 104 to an area associated with the loading unit 108, and the loading unit 108 may transpose the target object 112 from the displacement unit 104 (e.g., by moving a pallet carrying the target object 112) to a storage location (e.g., a location on a shelf). More details regarding the tasks and associated actions are provided below.
[0019] For illustrative purposes, the robotic system 100 is described in the context of a shipping center, however, it should be understood that the robotic system 100 can be configured to perform tasks in other environments / purposes, e.g., for manufacturing, assembly, packaging, healthcare, and / or other types of automation. It should also be understood that the robotic system 100 can include other units not shown in FIG. 1 , e.g., manipulators, service robots, modular robots, etc. For example, in some embodiments, the robotic system 100 can include a depalletizing unit for transposing objects from a cage cart or pallet onto a conveyor or other pallet, a container switching unit for transposing objects from one container to another, a packaging unit for packaging objects, a sorting unit for grouping objects according to one or more characteristics thereof, a piece picking unit for manipulating (e.g., to sort, group, and / or transpose) objects differently according to one or more characteristics thereof, or a combination thereof.
[0020] The robotic system 100 can include and / or be coupled to physical or structural members (e.g., robotic manipulator arms) connected at joints for movement (e.g., rotational and / or translational displacement). The structural members and joints can form a kinematic chain configured to manipulate an end effector (e.g., gripper) configured to perform one or more tasks (e.g., grasping, rotating, joining, etc.) depending on the application / operation of the robotic system 100. The robotic system 100 can include actuation devices (e.g., motors, actuators, wires, artificial muscles, electroactive polymers, etc.) configured to drive or manipulate (e.g., displace and / or reorient) the structural members around or at the corresponding joints. In some embodiments, the robotic system 100 can include a transport motor configured to transport the corresponding unit / chassis from one location to another.
[0021] The robotic system 100 may include sensors configured to obtain information used to perform tasks, for example, to manipulate structural members and / or transport the robotic unit. The sensors may include devices configured to detect or measure one or more physical characteristics of the robotic system 100 (e.g., the state, status, and / or position of one or more structural members / joints thereof) and / or the surrounding environment. Some examples of sensors may include accelerometers, gyroscopes, force sensors, strain gauges, tactile sensors, torque sensors, position encoders, etc.
[0022] In some embodiments, for example, the sensors may include one or more imaging devices (e.g., visual and / or infrared cameras, 2D and / or 3D imaging cameras, distance measuring devices, e.g., lidar or radar, etc.) configured to detect the surrounding environment. The imaging devices may generate a representation of the detected environment, such as a digital image and / or a point cloud, which may be processed via machine / computer vision (e.g., for automated inspection, robotic guidance, or other robotic applications). As described in more detail below, the robotic system 100 may process the digital image and / or point cloud to identify the target object 112, the start position 114, the task position 116, the pose of the target object 112, a confidence metric for the start position 114 and / or pose, or a combination thereof.
[0023] To manipulate the target object 112, the robotic system 100 can capture and analyze images of a designated area (e.g., a pick-up location, such as in a truck or on a conveyor belt) to identify the target object 112 and its start location 114. Similarly, the robotic system 100 can capture and analyze images of other designated areas (e.g., a drop-off location for placing the object on a conveyor, a location for placing the object in a container, or a location on a pallet for stacking purposes) to identify a task location 116. For example, the imaging device can include one or more cameras configured to generate images of the pick-up area and / or one or more cameras configured to generate images of the task area (e.g., a drop-off area). Based on the captured images, the robotic system 100 can determine the start location 114, the task location 116, associated poses, packing / placing plans, transposition / packing sequences, and / or other processing results, as described below.
[0024] In some embodiments, for example, the sensors may include position sensors (e.g., position encoders, potentiometers, etc.) configured to detect the positions of structural members (e.g., robotic arms and / or end effectors) and / or corresponding joints of the robotic system 100. The robotic system 100 may use the position sensors to track the positions and / or orientations of the structural members and / or joints during the performance of a task.
[0025] Preferred system 2 is a block diagram illustrating a robotic system 100 according to one or more embodiments of the present technology. In some embodiments, for example, the robotic system 100 (e.g., in one or more of the units and / or robots described above) can include electronic / electrical devices, such as one or more processors 202, one or more storage devices 204, one or more communication devices 206, one or more input / output devices 208, one or more actuation devices 212, one or more transport motors 214, one or more sensors 216, or combinations thereof. The various devices can be coupled to each other via wired and / or wireless connections. For example, the robotic system 100 can include a bus, such as, for example, a system bus, a Peripheral Component Interconnect (PCI) bus or PCI-Express bus, a HyperTransport or Industry Standard Architecture (ISA) bus, a Small Computer System Interface (SCSI) bus, a Universal Serial Bus (USB), an IIC (I2C) bus, or an Institute of Electrical and Electronics Engineers (IEEE) standard 1394 bus (also called "Firewire"). Also, for example, the robotic system 100 may include bridges, adapters, processors, or other signal-related devices to provide wired connections between devices. Wireless connections may be based on, for example, cellular communication protocols (e.g., 3G, 4G, LTE, 5G, etc.), wireless local area network (LAN) protocols (e.g., Wireless Fidelity (WIFI)), peer-to-peer or device-to-device communication protocols (e.g., Bluetooth, Near Field Communication (NFC)), Internet of Things (IoT) protocols (e.g., NB-IoT, LTE-M, etc.), and / or other wireless communication protocols.
[0026] The processor 202 may include a data processor (e.g., a central processing unit (CPU), a special purpose computer, and / or an on-board server) configured to execute instructions (e.g., software instructions) stored in a storage device 204 (e.g., a computer memory). In some embodiments, the processor 202 may be included in an independent / stand-alone controller that is operably coupled to other electronic / electrical devices shown in FIG. 2 and / or the robotic unit shown in FIG. 1. The processor 202 may control / interface other devices to implement program instructions that cause the robotic system 100 to perform actions, tasks, and / or operations.
[0027] The storage device 204 may include a non-transitory computer-readable medium on which program instructions (e.g., software) are stored. Some examples of the storage device 204 may include volatile memory (e.g., cache and / or random access memory (RAM)) and / or non-volatile memory (e.g., flash memory and / or magnetic disk drives). Other examples of the storage device 204 may include portable memory drives and / or cloud storage devices.
[0028] In some embodiments, the storage device 204 can be used to further store and provide access to processing results and / or predefined data / thresholds. For example, the storage device 204 can store master data 252 including descriptions of objects (e.g., boxes, cases, and / or products) that may be manipulated by the robotic system 100. In one or more embodiments, the master data 252 can include enrollment data 254 for each such object. The enrollment data 254 can include dimensions, shapes (e.g., templates for possible poses and / or computer-generated models for recognizing the object in different poses), color schemes, images, identification information (e.g., barcodes, Quick Response (QR) codes, logos, etc., and / or their expected locations), expected weight, other physical / visual characteristics, or combinations thereof, for the objects expected to be manipulated by the robotic system 100. In some embodiments, the master data 252 may include operation-related information about the objects, such as the center of gravity (CoM) position or an estimate thereof for each object, expected sensor measurements (e.g., related to force, torque, pressure, and / or contact measurements) corresponding to one or more actions / procedures, or a combination thereof.
[0029] The communication device 206 may include circuitry configured to communicate with external or remote devices over a network. For example, the communication device 206 may include a receiver, a transmitter, a modulator / demodulator (modem), a signal detector, a signal coder / decoder, a connector port, a network card, etc. The communication device 206 may be configured to transmit, receive, and / or process electrical signals according to one or more communication protocols (e.g., Internet Protocol (IP), wireless communication protocols, etc.). In some embodiments, the robotic system 100 may use the communication device 206 to exchange information between units of the robotic system 100 and / or with systems or devices external to the robotic system 100 (e.g., for reporting, data collection, analysis, and / or troubleshooting purposes).
[0030] The input / output devices 208 can include user interface devices configured to communicate and / or receive information to a human operator. For example, the input / output devices 208 can include a display 210 and / or other output devices (e.g., speakers, haptic circuitry, or tactile feedback devices, etc.) for communicating information to a human operator. The input / output devices 208 can also include control or receiving devices, such as a keyboard, mouse, touch screen, microphone, user interface (UI) sensors (e.g., cameras for receiving motion commands), wearable input devices, etc. In some embodiments, the robotic system 100 can use the input / output devices 208 to interact with a human operator in performing actions, tasks, operations, or combinations thereof.
[0031] The robotic system 100 may include physical or structural members (e.g., robotic manipulator arms) connected at joints for movement (e.g., rotational and / or translational displacement). The structural members and joints may form a kinematic chain configured to manipulate an end effector (e.g., gripper) configured to perform one or more tasks (e.g., grasping, rotating, joining, etc.) depending on the application / operation of the robotic system 100. The robotic system 100 may include actuation devices 212 (e.g., motors, actuators, wires, artificial muscles, electroactive polymers, etc.) configured to drive or manipulate (e.g., displace and / or reorient) the structural members around or at the corresponding joints. In some embodiments, the robotic system 100 may include a transport motor 214 configured to transport a corresponding unit / chassis from one location to another.
[0032] The robotic system 100 may include sensors 216 configured to obtain information used to perform tasks, for example, to manipulate structural members and / or transport the robotic unit. The sensors 216 may include devices configured to detect or measure one or more physical characteristics of the robotic system 100 (e.g., the state, condition, and / or position of one or more structural members / joints thereof) and / or the surrounding environment. Some examples of the sensors 216 may include accelerometers, gyroscopes, force sensors, strain gauges, tactile sensors, torque sensors, position encoders, etc.
[0033] In some embodiments, for example, the sensor 216 can include one or more imaging devices 222 (e.g., visual and / or infrared cameras, 2D and / or 3D imaging cameras, distance measuring devices, e.g., lidar or radar, etc.) configured to detect the surrounding environment. The imaging devices 222 can generate a representation of the detected environment, such as a digital image and / or a point cloud, that can be processed via machine / computer vision (e.g., for automated inspection, robotic guidance, or other robotic applications). As described in more detail below, the robotic system 100 (e.g., via the processor 202) can process the digital image and / or point cloud to identify the target object 112 of FIG. 1, the start position 114 of FIG. 1, the task position 116 of FIG. 1, the pose of the target object 112, a confidence metric for the start position 114 and / or pose, or a combination thereof.
[0034] To manipulate the target object 112, the robotic system 100 (e.g., via various circuits / devices described above) can capture and analyze images of a designated area (e.g., a pick-up location, such as in a truck or on a conveyor belt) to identify the target object 112 and its start location 114. Similarly, the robotic system 100 can capture and analyze images of other designated areas (e.g., a drop-off location for placing the object on a conveyor, a location for placing the object in a container, or a location on a pallet for stacking purposes) to identify a task location 116. For example, the imaging device 222 can include one or more cameras configured to generate images of the pick-up area and / or one or more cameras configured to generate images of the task area (e.g., a drop-off area). Based on the captured images, the robotic system 100 can determine the start location 114, the task location 116, associated poses, packing / placing plans, transposition / packing sequences, and / or other processing results, as described below.
[0035] In some embodiments, for example, the sensors 216 may include position sensors 224 (e.g., position encoders, potentiometers, etc.) configured to detect the position of structural members (e.g., robotic arms and / or end effectors) and / or corresponding joints of the robotic system 100. The robotic system 100 may use the position sensors 224 to track the positions and / or orientations of the structural members and / or joints during the performance of a task.
[0036] Exemplary Object Transposition and Packing 3 is a diagram of the robotic system 100 of FIG. 1 in accordance with one or more embodiments of the present technology. The robotic system 100 can include or be communicatively coupled to a robotic arm 302 including an end effector 304 (e.g., a gripper). The robotic arm 302 can be one of or a part of the robotic units shown in FIG. 1 (e.g., an instance of the transposition unit 104 of FIG. 1). For example, the robotic arm 302 can include an industrial robotic system employed in industrial applications including package handling applications. The robotic arm 302 is articulated along or about several axes, and can be, for example, a six-axis industrial robotic arm configuration.
[0037] The robotic arm 302 can be configured to transpose the target object 112 between a start location 114 in FIG. 1 and a task location 116 in FIG. 1. As shown in FIG. 3, the start location 114 can correspond to a location (e.g., an end / ingress point) on a conveyor 306 (e.g., an instance of a transport unit 106 in FIG. 1). The task location 116 of the robotic arm 302 can be a location on or within a platform 308 (e.g., a container such as a cart or cage). For example, the robotic arm 302 can pick up the object 112 from the conveyor 306 and place it in / on the platform 308 for transportation / task to another destination.
[0038] The end effector 304 may include any one or more components coupled to a distal end of the robotic arm 302. The end effector 304 may be configured to interact with one or more objects. In some embodiments, the end effector 304 may include a force torque (FT) sensor (not shown), an arm interface, a gripper system, and / or a gripper interface. For illustrative purposes, the end effector 304 is shown having an array of suction cups, but it should be understood that the end effector 304 may have different configurations. For example, the end effector 304 may have a suction pad with integrated suction channels, a pincher-type gripping device, or any other type of gripping system for gripping an object.
[0039] The robotic system 100 can use one or more of the sensors 216 of FIG. 2 when performing the transposition operation with the robotic arm 302. The robotic system 100 can include or be coupled to a set of sensors (e.g., 2D and / or 3D sensors, e.g., cameras and / or depth sensors) at or near the start location 114 and / or the task location 116. In some embodiments, the robotic system 100 can include or be coupled to a top view sensor 310 above and oriented toward the task location 116, and / or a side view sensor 312 adjacent to and oriented laterally toward the task location 116. The robotic system 100 can similarly include one or more source sensors 314 oriented toward the start location 114. The sensors can be configured to image and / or analyze the corresponding locations. For example, the top view sensor 310 can generate and / or process image data depicting a top view of the platform 308 and / or objects thereon. Additionally, the side view sensor 312 may generate and / or process image data depicting a side view of the platform 308 and / or objects thereon.
[0040] The robotic system 100 can use image data from the sensor 216 to perform a task, for example, to transpose an object from a start location 114 to a task location 116. Thus, the robotic system 100 can use the image data to derive and implement one or more packing plans and / or motion plans for performing the task. As described in more detail below, the robotic system 100 can derive and / or dynamically adjust packing plans and corresponding motion plans for placing objects on or in the placement platform 308. The plans can accommodate one or more objects being placed on top of other objects (e.g., stacking). The robotic system 100 can derive and / or adjust various plans such that stacked objects (e.g., an object placed on top of a lower object) are placed such that the perimeter(s) of the object extend laterally beyond the perimeter(s) of the lower object. In some examples, the robotic system 100 may derive and / or adjust plans such that protruding stacked objects contact and / or rest against vertically oriented walls or partitions of the mounting platform 308. Thus, the robotic system 100 can derive packing and motion plans to effectively increase the mounting zone within the mounting platform 308 and use the vertically oriented walls or partitions to support objects therein.
[0041] As also described in more detail below, the robotic system 100 can dynamically adjust the packing plan and / or the motion plan based on detecting anomalies associated with the mounting platform 308. For example, the robotic system 100 can acquire real-time images of the actual mounting platforms (e.g., carts and / or cages) as they are mounted during operation of the robotic system 100. The robotic system 100 can analyze the real-time images to detect anomalies in the mounting platforms, such as a partially open, misaligned, and / or reduced mounting zone (e.g., compared to a predetermined or expected space) due to warping of vertical walls. Based on detecting anomalies in real-time, the robotic system 100 can dynamically update the plan (e.g., at the deployment site and / or immediately prior to implementing / triggering the initially derived plan). In some embodiments, the robotic system 100 can test and validate various offset mounting positions. The robotic system 100 can further test the updated motion plan corresponding to the mounting positions according to real-time conditions.
[0042] The robotic system 100 can similarly locate and track the robot arm 302, end effector 304, and / or target object 112 using one or more of the sensors 216. In some embodiments, the robotic system 100 can track a position (illustrated in FIG. 3 as a set of coordinates (x,y,z)) based on readings from position sensors. The robotic system 100 can also calculate and track a position based on transmitted or executed commands / settings. The robotic system can determine and track a position according to a predefined coordinate system or grid.
[0043] Exemplary Mounting Table 4A-4D are diagrams of an exemplary object container (e.g., platform 308 of FIG. 3) in accordance with one or more embodiments of the present technology. FIG. 4A is a side view of an exemplary cart 410, and FIG. 4B is a top view of the cart 410. The cart 410 can be an object container having a cart bottom 412 and a pair of opposing cart sidewalls 414. For example, the cart bottom 412 can have a rectangular shaped footprint (e.g., a perimeter shape or silhouette from a top or bottom view). The cart sidewalls 414 can be attached to / on or integral with a pair of opposing peripheries of the cart bottom 412. The space above the remaining peripheries of the cart bottom 412 can be left open or unobstructed.
[0044] 4C is a side view of an exemplary cage 420, and FIG. 4D is a top view of the cage 420. The cage 420 can be an object container having a cage bottom 422 and three vertically oriented walls (e.g., a pair of opposing cage side walls 424 and a cage back wall 426). For example, the cage bottom 422 can have a rectangular shaped footprint. The cage side walls 424 can be attached to / on or integral with a pair of opposing peripheries of the cage bottom 422. The cage back wall 426 can be attached to / on or integral with one of the remaining peripheries of the cage bottom 422. The space opposite the cage back wall 426 can be left open or unobstructed.
[0045] Each platform 308 may include an intended placement zone 430 that may be occupied by a carried / loaded object. In other words, the intended placement zone 430 may represent the intended or predetermined cargo space of the corresponding platform 308. With joint reference to FIGS. 4A-4D , the intended placement zone 430 of the cart 410 and cage 420 may extend to and / or be surrounded by vertically oriented walls (e.g., cart sidewalls 414, cage sidewalls 424, and / or cage back wall 426). Thus, the robotic system 100 may derive, implement, and / or execute a plan for placing an object in the cart 410 and / or cage 420 such that the object contacts and / or is supported by the vertically oriented walls. The mounting zone 430 may extend laterally (e.g., along the y-axis) to (e.g., short of or flush / coincident with) or beyond an open / unobstructed edge of the cart bottom 412 and / or cage bottom 422. Similarly, the mounting zone 430 may extend vertically (e.g., along the z-axis) to or beyond a top of a vertically oriented wall. In other words, in some examples, the robotic system 100 may derive, implement, and / or execute a plan for mounting an object such that at least a portion of the mounted object extends beyond a top of a vertically oriented wall of a corresponding mounting platform 308.
[0046] Exemplary End Effectors 5A-5C are diagrams of an example end effector (e.g., end effector 304 of FIG. 3) in accordance with one or more embodiments of the present technology. Figures 5A and 5B are side and top views, respectively, of an example gripper assembly 502 and a portion of the robot arm 302. In some embodiments, the gripper assembly 502 can correspond to a vacuum gripper configured to create a vacuum between the gripper assembly 502 and an object to adhere the object to the gripper assembly 502 (e.g., grip the object).
[0047] The gripper assembly 502 may include a structural member 512 (e.g., a revolute joint, an extension arm, etc.) that structurally couples the robotic arm 302 to a gripper 514. The gripper 514 may include circuitry, motors, and / or other mechanical components configured to operate a gripping interface 516 to contact and adhere one or more target objects to the gripper 514. In some embodiments, the gripping interface 516 may include suction cups controlled by actuators and / or other mechanical components of the gripper 514. The gripper 514 may be configured to adhere and grip target objects by forming and controlling a vacuum in a space enclosed by each suction cup and contact surface.
[0048] The gripper assembly 502 may include other components. In some embodiments, the gripper assembly 502 may include a calibration board 518 configured to provide functionality used to identify the location of the gripper assembly 502 and / or one or more portions thereof. The calibration board 518 may be used as a reference in acquired images and / or provide detailed position information for a calibration process. The calibration board 518 may be attached to or integral with the periphery of the gripper 514 and extend away from the periphery. In some embodiments, the calibration board 518 may extend vertically away from the top surface of the gripper 514. The calibration board 518 may also extend laterally toward or away from a center of the structural member 512 and / or the gripper 514.
[0049] The gripper assembly 502 can have dimensions that are predetermined or known to the robotic system 100. For example, the gripper assembly 502 can have an assembly height 522, a base length 524, and / or a base width 526. The assembly height 522 can correspond to the distance (e.g., along the z-axis) between an outermost portion of the structural member (e.g., a top portion or a portion connected to the robot arm 302) and a portion of the gripping interface 516 opposite the outermost portion. The base length 524 and base width 526 can correspond to lateral dimensions of the gripper 514 measured along orthogonal directions (e.g., the x-axis and y-axis). The dimensions can correspond to a predetermined orientation / configuration of the gripper assembly 502 relative to engaging or gripping a target object.
[0050] In some embodiments, one or more dimensions of the gripper assembly 502 may change while gripping an object. FIG. 5C is an exemplary side view of the gripper assembly 502 after gripping and lifting a target object 112, according to one or more embodiments of the present technology. In the case of a vacuum-based gripper, the extended interface height 532 may correspond to the height of the suction cup in the initial disengaged state. Upon contacting the suction cup and creating and maintaining a vacuum therein, the shape of the suction cup may deform and / or compress. Thus, when the gripper 514 engages and grips the target object 112, the gripping interface 516 may correspond to an engaged interface height 534 that is less than the extended interface height 532. Thus, the assembly height 522 may decrease when engaging / gripping the target object 112. The robotic system 100 may identify or identify the change in height (e.g., the engaged interface height 534) to accurately identify and track the position of the gripper 514, the target object 112, and / or portions thereof. In some embodiments, the robotic system 100 can have a predetermined engaged interface height 534 stored in the storage device 204, Figure 2. In some embodiments, the robotic system 100 can determine the engaged interface height 534 in real-time (e.g., during deployment / operation) based on capturing and analyzing image data from the side view sensor 312, Figure 3, after grasping the target object 112 and raising the gripper 514 a predetermined height.
[0051] Example Discretized Model 6 is a diagram of an example discretized model 600 of a packing component according to one or more embodiments of the present technology. The discretized model 600 may include a pixelated representation of a packing component, such as an object to be manipulated / packed (e.g., a registered object), a robotic unit or part thereof, and / or an object container (e.g., the mounting platform 308 of FIG. 3). For example, the discretized model 600 may describe the physical size / shape of the packing component according to a discretized unit 602 (i.e., one discrete area / space corresponds to a given dimension). In other words, the discretized unit 602 may correspond to a unit pixel, such as a polygon (e.g., a rectangle or a cube) having one or more dimensions corresponding to a discretized length.
[0052] The dimensions of the discretization units 602 may include lengths preset by a system operator, a system designer, predetermined inputs / settings, or a combination thereof. In some embodiments, the dimensions of the discretization units 602 may be dynamically adjusted during operation of the robotic system 100. In some embodiments, the size of the discretization units 602 (e.g., discretization units) may vary depending on the dimensions of the object and / or the dimensions of the loading platform. Also, the size of the discretization units 602 (e.g., pixels) may be adjusted (e.g., via preset rules / formulas and / or operator selection) to balance the required resources (e.g., computation time, memory requirements, etc.) with packing accuracy. As the size is reduced, computation time and packing accuracy may increase based on the resulting increased data. Thus, using adjustable discretization units 602 to discretize packing tasks (e.g., target packages, end effector assemblies, and packing platforms) provides increased flexibility for palletizing packages. The robotic system 100 can control the balance between computational resources / time and packing accuracy depending on the specific scenario, pattern, and / or environment.
[0053] The robotic system 100 can describe or represent the robot arm 302 of FIG. 3, the end effector 304 of FIG. 3, the target object 112 of FIG. 1, the mounting platform 308 (e.g., the cart 410 of FIG. 4A and / or the cage 420 of FIG. 4B), the mounted object, and / or parts thereof, via known or predefined units. In this way, the robotic system can convert a continuous real-world space / area into computer-readable digital information. Furthermore, the discretized data can reduce the computational complexity of comparing various package mounting positions when describing the space occupied by the packaging components. For example, package dimensions can correspond to integer discrete units instead of real-world decimals, thereby reducing the complexity of the associated mathematical calculations.
[0054] The robotic system 100 may utilize a discretized model 600 generated by a discretization mechanism (e.g., a process, a circuit, a function, and / or a routine). In some examples, the discretized model 600 may be provided by an external source (e.g., a manufacturer, a distributor, a customer, etc.). The robotic system 100 may also generate the discretized model 600 based on segmenting target data (e.g., image data, shape templates, and / or other digitized physical representations) representing the packing components. The robotic system 100 may identify actual features 606 (e.g., edges and / or corners) in the segmented target data using, for example, an edge detection mechanism (e.g., a Sobel filter). Based on the identified actual features 606 (shown in solid lines), the robotic system 100 may determine reference points / edges 604 (e.g., corners, centers, midpoints, landmarks, and / or localization devices) in the segmented target data. The robotic system 100 can use the reference position 604 as an origin and divide the data to be segmented accordingly using a predefined dimension and / or orientation that corresponds to a discretized unit 602 (shown by a dotted line). The resulting segments can be discretized / pixelated units of the imaged component. In this manner, the robotic system 100 (e.g., via the processor 202 of FIG. 2) can map continuous faces / edges of real-world objects (e.g., a package, a robotic arm, a gripper, one or more parts thereof, and / or other objects relevant to a task) to discrete counterparts (e.g., unit length and / or unit area).
[0055] In some examples, the actual features 606 may not match the discretization units 602. In other words, the packing components may have dimensions with decimal / fractional discretization units (e.g., 1.2 units or 3 / 4 units). The robotic system 100 may generate the discretization model 600 based on rounding up or down accordingly. For example, the discretization model 600 may be or include the model object (e.g., the target object 112 of FIG. 1), the mounting platform 308 of FIG. 3, the robotic arm 302 of FIG. 3, and / or the end effector 304 of FIG. 3. For components (e.g., the robotic arm 302, the end effector 304, and / or the object) that go into the object container, the robotic system 100 may generate the corresponding discretization model 600 by rounding up the dimensions to a quantity of the discretization units 602. In other words, the robotic system 100 can generate a discretized model 600 with a model boundary 608 (illustrated by a dashed line) that exceeds the actual features 606 of the modeled component that will fit into the cart 410 of Figure 4 and / or the cage 420 of Figure 4. For an object container (e.g., a mounting platform 308 such as the cart 410 and / or the cage 420), the robotic system 100 can generate the corresponding discretized model 600 by rounding down the dimensions to a quantity of discretized units 602. In other words, the robotic system 100 can generate the discretized model 600 in front of or between the actual features 606 of the modeled component.
[0056] The robotic system 100 may generate the discretized model 600 having a model boundary 608 that is beyond (e.g., away from) the actual feature 606 by a separation distance 610. For example, the separation distance 610 may correspond to an added buffer, such that the robotic system 100 models or accounts for a larger space than the actual component, such as for the end effector 304. Thus, the robotic system 100 may ensure that the modeled component does not contact or collide with other objects / structures during operation (e.g., during movement of the component). In this manner, the robotic system 100 may use the discretized model 600 generated according to the separation distance 610 to reduce the collision rate. Also, in some embodiments, the robotic system 100 may generate the discretized model 600 having a rectangular cross-sectional shape with a model boundary 608 that matches or is based on the outermost part of the modeled component. Thus, the robotic system 100 can provide a less complex or simpler process (i.e., compared to considering all edges / corners / features) for testing the position / motion of a modeled component.
[0057] In some embodiments, the discretized model 600 may be predetermined or generated offline (e.g., independent of and prior to a corresponding operation / performance) and stored in the master data 252 so that it can be accessed during deployment or operation of the robotic system 100. In other embodiments, the discretized model 600 may be generated in real-time (e.g., during operation) based on acquiring image data representative of the start position 114 and / or task position 116.
[0058] The discretized model 600 can represent the shape, dimensions, etc. of the packaging components in 2D and / or 3D. For example, the discretized model 600 can include an object model (e.g., an object footprint model 612 and / or an object side model 614) for each instance or type of registered or imaged object. The discretized model 600 can also include a container model (e.g., a container footprint model 622 and / or a container side model 624) for each instance or type of the mounting platform 308. The container models 622 and 624 can represent a mounting surface (e.g., an inner bottom surface of an object container having a lateral enclosure as shown in FIGS. 4A-4D) according to the discretized unit 602. The container models 622 and 624 can be based on an object container of known or standard size. Additionally, discretized model 600 may include a gripper footprint model 632 and / or a gripper side model 634 that represent portions of a robotic unit used to perform tasks related to placing an object (e.g., target object 112) on / in platform 308. For example, gripper models 632 and / or 634 may represent end effector 304, robot arm 302, and / or portions thereof.
[0059] The footprint model can correspond to the perimeter of the modeled component along a lateral plane (e.g., the xy plane). The side model can correspond to the perimeter of the modeled component along a vertical plane (e.g., the xz and / or yz plane). In some embodiments, the discretized model 600 can include a 3-D model.
[0060] Example Loading Calculations 7A is a diagram of an example packing plan 700 according to one or more embodiments of the present technology. The robotic system 100 can use the discretized model 600 of FIG. 6 to derive the packing plan 700 including derived placement positions for a set of objects in or on the placement platform 308 (e.g., a container) of FIG. 3. The packing plan 700 can represent the placement positions and / or placed objects in 2D and / or 3D. In some embodiments, the packing plan 700 can be a 3D model. The packing plan 700 can correspond to a top view 702 and / or a side view 704 representing lateral and / or vertical occupancy of objects placed within the intended placement zone 430 of FIG. 4A.
[0061] In the example shown in FIG. 7A, the target objects may include first, second, and third types of objects designated to be packed within an instance of the cart 410. Thus, the robotic system 100 may derive the packing plan 700 using the first object model 706, the second object model 708, and the third object model 710 corresponding to the first, second, and third object types, respectively, and the container model (e.g., the container footprint model 622 and / or the container side model 624). The robotic system 100 may derive the packing plan 700 based on deriving, testing, and evaluating various positions of the object models superimposed on the container model. According to rules and / or conditions described in detail below, the robotic system 100 may derive the packing plan 700 to place the first and second types of objects in the lower layer 712 (e.g., the bottom layer contacting the cart bottom surface 412 in FIG. 4A) and the third type of object in the stacked layer 722.
[0062] The robotic system 100 can derive a packing plan 700 for placing / packing the target object on the designated / assigned placement platform 308. The robotic system 100 can derive the packing plan 700 based on overlaying an object model of the target object (e.g., an instance of the object footprint model 612 of FIG. 6 and / or the object side model 614 of FIG. 6 ) onto a container model of the designated placement platform 308 (e.g., the container footprint model 622 of FIG. 6 and / or the container side model 624 of FIG. 6 ). The robotic system 100 can derive and / or test the corresponding placement positions according to a set of predefined rules and / or conditions. The robotic system 100 can iteratively derive placement positions for the target object to derive the packing plan 700. The robotic system 100 can further derive the packing plan 700 and / or a set of corresponding motion plans based on minimizing resource consumption (e.g., number of steps, corresponding duration, etc.), maximizing the number of objects packed, and / or minimizing errors / failures (e.g., loss, collisions, etc.).
[0063] Further, the robotic system 100 can derive a packing plan 700 for stacking objects on top of each other, e.g., in layers (e.g., lower layer 712 and stacked layer 722). The robotic system 100 can also derive a packing plan 700 where objects contact and / or rest against vertically oriented walls of a container (e.g., cart sidewall 414 in FIG. 4A and / or cage sidewall 424 in FIG. 4C). For example, the lower layer 712 can include a lower outermost object 714 closest to a support wall 725 (e.g., a vertically oriented structure of a container that defines or is within an assumed resting zone 430 that may be used / specified to contact / support an object) and separated by an object-wall spacing 726 (e.g., the distance and / or number of pixels between the support wall 725 and the closest perimeter / point of the corresponding directly adjacent object). Objects / walls may be directly adjacent when there are no other objects occupying the space between a corresponding pair of objects along, e.g., a lateral direction. The upper stacked layer 722 may include a stacked object 724 that rests at least partially on and is supported by the lower outermost object 714. The periphery of the stacked object 724 may protrude laterally beyond the periphery of the lower outermost object 714. The periphery / surface (e.g., vertically oriented faces / edges and / or top corners / edges) of the stacked object 724 may be closer to or in contact with the supporting wall 725. The robotic system 100 may derive the packing plan 700 with placement positions of the stacked objects 724 (e.g., those that overhang / protrude beyond the lower outermost object 714 and / or in contact with the supporting wall 725) based on the object-wall spacing 726. In some embodiments, if the edge / face of the closest object is not parallel to the supporting wall 725, the robotic system 100 may calculate the object-wall spacing 726 as an average value of the corresponding distances.The robotic system 100 can further derive the packing plan 700 according to the object reference position 728 of the target object, e.g., CoM position and / or center point, as described in more detail below.
[0064] In some embodiments, the robotic system 100 may derive and utilize an axis-aligned bounding box (AABB) 730 for a set of objects specified to be placed in a container. In other words, the AABB 730 may be a specified planar shape (e.g., a rectangle) that encompasses and / or coincides with the outermost points of the objects according to the derived placement plan. In the example shown in FIG. 7A, the AABB 730 may be a set of rectangles aligned according to a predetermined set of axes (e.g., x, y, and z axes) that coincide with the outermost points of the objects in the packing plan 700. The AABB 730 may represent the overall size (e.g., pack size) of the packing plan 700. The robotic system 100 may derive and use the AABB 730 to adjust the packing plan 700 to account for unexpected real-world situations (e.g., half-open containers and / or warped container walls). As described in more detail below, the robotic system 100 may derive and use the AABB 730 when changing or shifting the placement or position of objects (e.g., in the packing plan 700). In some embodiments, using the AABB 730, the robotic system 100 can consider an entire stack of objects in the packing plan 700 as a single object. The AABB 730 can be derived according to the discretization units described above.
[0065] FIG. 7B is an illustration of a placement planning process according to one or more embodiments of the present technology. The robotic system 100 of FIG. 1 (e.g., via one or more processors 202 of FIG. 2) can derive the packing plan 700 of FIG. 7A for a set of available packages 742. The available packages 742 can correspond to objects that need to be or are subject to being packed for shipping and / or storage. For example, the available packages 742 can correspond to arriving objects received via receiving and / or stored objects ordered for shipping. In some embodiments, the robotic system 100 can identify the available packages 742 in real-time using a shipping manifest, an order list, or the like, e.g., immediately (i.e., within a threshold period of time) upon receipt of the manifest, list, or the like. Thus, the robotic system 100 can derive the packing plan 700 in real-time using the identified available packages 742. Thus, instead of an offline packing simulator that utilizes a hypothetical number / set / combination of packages to derive a plan that is applied independent of real-time conditions, the robotic system 100 can use real-time conditions, availability, and / or demand to derive the packing plan 700. In some embodiments, the robotic system 100 can use devices (e.g., one or more of the processors 202) at locations where objects are received, stored, and / or sent, such as, for example, shipping depots and / or warehouses. In other embodiments, the robotic system 100 can perform the packing derivation offline using expected conditions.
[0066] In deriving the packing plan, the robotic system 100 may group and / or order the available packages 742. The robotic system 100 may derive the packing plan 700 using the ordered set of available packages 742. The robotic system 100 may determine and evaluate unique placement locations / combinations for the available packages 742 to derive the packing plan 700. In other words, the robotic system 100 may determine a set of possible placement combinations 744 and evaluate (e.g., score) them according to a set of predefined requirements, conditions, weight, cost, subsequent impact, or combinations thereof. Based on the evaluation, the robotic system 100 may select a placement combination to derive the packing plan 700.
[0067] In at least one embodiment, the robotic system 100 can derive the packing plan 700 using an algorithm that iteratively evaluates the placement of the arranged packages. As shown in FIG. 7B, for example, the robotic system 100 can begin the derivation by determining an initial placement for a first package among the available packages 742. Thus, the robotic system 100 can overlay a corresponding discretized object model (e.g., the first object model 706, the second object model 708, and / or the third object model 710 shown in FIG. 7A) onto an initial location (e.g., a corner, a center location, and / or other pre-set location) on the discretized bed model (e.g., the container models 622 and / or 624 in FIG. 6). The robotic system 100 can track the remaining packages 752 based on removing placed packages (e.g., the first package) from the available packages 742.
[0068] Based on the initial placement, the robotic system 100 can determine a set of possible placements for a second package among the available packages 742. The robotic system 100 can determine the set of possible placements according to a predetermined rule, pattern, or combination thereof. For example, the robotic system 100 can determine the placement locations according to a pattern of positions (e.g., relative to the placed package(s)) relative to the placed package(s). The robotic system 100 can also determine the placement locations based on a minimum / maximum separation distance or lack thereof required between one or more of the packages. Additionally, the robotic system 100 can determine the placement locations based on rotating the package (i.e., the corresponding discretized object model) according to a predetermined amount, such as 90 degrees. In some embodiments, the robotic system 100 can limit the placement candidates according to a predetermined threshold and / or pattern. Additionally, the robotic system 100 can update the remaining packages 752 accordingly.
[0069] The robotic system 100 can repeat the process described above, iteratively processing the available packages 742, until a stopping condition is reached. Some examples of stopping conditions can represent all packages being placed (i.e., the remaining packages 752 are empty), the placement cannot be improved (e.g., same evaluation score as the previous tier / iteration), no more packages can be placed on the discretized bed model, or a combination thereof.
[0070] In some embodiments, the robotic system 100 can use a search tree 754 to keep track of possible placements and corresponding possible placement combinations 744. The root of the search tree 754 can correspond to an initial placement, and each level or tier can include possible placements of subsequent packages among the available packages 742. Different tiers can be connected to form branches that correspond to unique placement combinations for a set of packages.
[0071] For each possible placement of a package, the robotic system 100 can identify and eliminate redundant footprints (e.g., represented by "x" in FIG. 7B). For example, at each level of the search tree 754, the robotic system 100 can compare (e.g., overlap) the resulting footprints of the possible placement locations / combinations. Based on the comparison, the robotic system 100 can eliminate duplicates of the resulting footprints. In some embodiments, the robotic system 100 can further compare transposed, rotated, and / or inverted versions of the resulting footprints to eliminate associated duplicates. For example, the robotic system 100 can rotate one footprint ±90 degrees and / or transpose the footprint across one or more inversion lines (e.g., diagonals running diagonally, bisector(s) running in the x-direction and / or y-direction, or a combination thereof) and compare it to the other footprints.
[0072] Also, for each possible placement of the package, the robotic system 100 can identify and eliminate placements that violate one or more requirements / constraints. One example of a requirement / constraint can be based on collision probability. The robotic system 100 can calculate an approach path and corresponding collision probability for each placement location depending on the existing footprint, one or more dimensions of the package, the location of the transposing robot, previous events or history, or a combination thereof. The robotic system 100 can eliminate placements where the collision probability exceeds a predefined threshold. Another example of a requirement / constraint can be a support weight for stacking the package (i.e., placing directly on / over one or more supporting packages). For one or more of the packages under the placement location, the robotic system 100 can calculate the support weight (i.e., the total weight of the directly overlying packages or parts thereof) based on the weight of the package placed. The robotic system 100 can eliminate any placement where the support weight violates (e.g., exceeds or is within a threshold range of) a fragility requirement (e.g., a maximum supportable weight) for one or more of the packages under the placement location.
[0073] In some embodiments, the robotic system 100 can track and / or evaluate the placement combinations 744 using a priority queue 756 (e.g., a heap structure, etc.). The priority queue 756 can order the placement combinations 744 according to a set of preferences. The robotic system 100 can evaluate or score each placement combination 744 according to one or more predetermined criteria. The criteria can include one or more costs associated with the items already placed and / or one or more heuristic scores related to how the current placement affects future placements or candidates.
[0074] An example of a criterion may include maximizing footprint density. The robotic system 100 may calculate footprint density for a perimeter 762 of the group of packages. In some embodiments, the perimeter 762 may be determined based on the exposed / perimeter edges of the group of packages. The robotic system 100 may further enclose the surrounding / associated area by extending two or more edges to find an intersection and / or by drawing a line connecting one or more corners of the footprint. The robotic system 100 may calculate footprint density as a ratio of the actual occupied area 764 (e.g., the number of unit pixels corresponding to the discretized units 602 or shaded area in FIG. 6 ) to the free area 766 (e.g., the number of discretized units 602 corresponding to the enclosed / associated area). The robotic system 100 may be configured to prioritize (e.g., by assigning a higher / lower score) placement plans that minimize the free area 766.
[0075] 7C is a diagram of an example placement rule in accordance with one or more embodiments of the present technology. The robotic system 100 can use the placement rules to derive a placement location for an object within a specified container. For example, the robotic system 100 can discard or disqualify a possible placement location that fails to satisfy one or more placement rules.
[0076] Some examples of placement rules can be for placing objects on top of each other, for example, stacking / placing one or more layers of packages on top of one or more other layer(s) of packages. The robotic system 100 can use placement rules to improve / ensure the stability of the stacked objects and prevent any objects from slipping and / or tipping during container movement. For illustrative purposes, FIG. 7C shows several scenarios in which a top package 772 is directly above and supported by (e.g., in direct contact with) one or more supporting packages 774.
[0077] The robotic system 100 may use horizontal offset rules 776 to derive the 3D placement position (e.g., the 3D packing plan 700 of FIG. 7A). The horizontal offset rules 776 may include restrictions, requirements, or combinations thereof to control the horizontal offset of the vertical edges / faces between the stacked items. For example, the horizontal offset rules 776 may be based on an overlap requirement 778, an overhang requirement 780, or a combination thereof. The overlap requirement 778 may include a minimum amount of overlap (e.g., percentage or ratio of length, width, and / or surface area) between the stacked packages. In some embodiments, the overlap requirement 778 may require that a minimum amount of horizontal dimension / surface area of the top package 772 overlaps and / or contacts that of the support package 774. The overhang requirement 780 may include a maximum amount of protrusion (e.g., percentage or ratio of length, width, and / or surface area), such as a portion of the top package 772 that extends horizontally beyond the peripheral edge / face of the support package 774.
[0078] In some embodiments, the horizontal offset rule 776 can be based on weight, size, and / or center of gravity (CoM) location 782. For example, the overlap requirement 778 and / or overhang requirement 780 can be based on the CoM location 782, such as to evaluate the distance between the CoM location 782 of the top package 772 and the support package 774 relative to the distance between the top CoM location and a horizontal edge / face of the support package 774. The overlap requirement 778 and / or overhang requirement 780 can also correspond to an evaluation of the distance between the CoM location 782 of the top package 772 and the support package 774 relative to the overhang distance (e.g., the degree along a horizontal direction of a portion of the top package 772 that extends beyond the perimeter(s) of the support package 774). In some embodiments, the horizontal offset rule 776 can be based on a CoM offset requirement 784 that requires the CoM location 782 of the top package 772 and the support package 774 to be within a CoM support threshold. The CoM support threshold may include a predetermined distance, a limit on the ratio of the offset distance between CoM positions 782 to the horizontal dimension, an overhang distance, an overlap distance, or a combination thereof.
[0079] The robotic system 100 may also derive the 3D placement position using support spacing rules 786. The support spacing rules 786 may include restrictions, requirements, or combinations thereof for controlling the lateral spacing distance 788 between the support packages 774. The lateral spacing distance 788 may correspond to the horizontal distance between the perimeter / edges of directly adjacent support packages 774. In some embodiments, the support spacing rules 786 may be further based on the location and / or amount of overlapping surface of the upper package 772 and the support package 774. For example, the support spacing rules 786 may require that the lateral spacing distance 788 be a predetermined percentage longer than any overhang distance. Additionally, the support spacing rules 786 may require that the lateral spacing distance 788 extend below the CoM position 782 of the upper package 772. In some embodiments, if the placement position of the upper package 772 satisfies the support spacing rule 786, the robotic system 100 may consider the portion of the upper package 772 between the supporting packages 774 (e.g., the portion above the lateral spacing distance 788) to be supported by and / or in contact with the object in the bottom layer.
[0080] The robotic system 100 may also derive the 3D placement position using vertical offset rules 790. The vertical offset rules 790 may include restrictions, requirements, or combinations thereof to control the support height difference 792 between the vertical positions of the support packages 774. The support height difference 792 may correspond to the vertical distance between the tops of the corresponding support packages 774, for example, between the portions that are likely to contact an upper package 772 placed on the corresponding support package 774. In some embodiments, the vertical offset rules 790 may require that the support height difference 792 be below a predetermined threshold requirement for stacking one or more packages on the support package 774.
[0081] In some embodiments, the vertical offset rules 790 can be different based on the height of the layers. For example, if the top package 772 (e.g., the supported package) is part of a top layer, the support height difference 792 limit can be greater than the lower layer. In some embodiments, the vertical offset rules 790 can vary based on the proximity of a given container to a vertically oriented wall / divider. For example, if the lower height supporting package 774 is closest to the vertical wall (e.g., there are no other objects between the supporting package 774 and the wall), the support height difference 792 limit can be greater because the top package 772 can be supported by the vertical wall even if the support fails and / or the top package 772 is displaced.
[0082] The robotic system 100 may derive / estimate a pivot location 793 that is related to the orientation of the top package 772 (e.g., tilting downward of a lateral / horizontal reference plane). The pivot location 793 may be the top of the higher support package (i.e., the highest support location). The robotic system 100 may derive the pivot location 793 as the periphery and / or the highest part of the support package that is closest to the lower support package. The robotic system 100 may further derive the pivot location 793 based on the CoM location 782, the lateral dimensions of the top package 772, and / or the weight of the top package 772. Similarly, the robotic system 100 may estimate the rotation of the top package 772 about the pivot location 793. The robotic system 100 may estimate the rotation according to the object reference location 728 (e.g., CoM location 782), the lateral dimensions of the top package 772, and / or the weight of the top package 772.
[0083] The robotic system 100 can generate a packing plan (e.g., a 3D combination of multiple 2D mounting plans / locations) according to the mounting rules. For example, the robotic system 100 can generate 2D mounting plans (e.g., lateral layers / mounting locations along a plane) according to height requirements (e.g., to keep the height of an object group within a threshold distance). The robotic system 100 can then generate a stacking plan based on vertically stacking (e.g., stacking) the 2D mounting plans.
[0084] The robotic system 100 can generate a packing plan according to placement rules for leaning objects against a support wall 725. In some embodiments, the placement rules can include wall support rules 794, tilted support rules 796, and / or multiple overhang rules 798. The wall support rules 794 can include restrictions, requirements, or combinations thereof for controlling placement of objects against / in contact with a vertically oriented container structure. In one or more embodiments, the wall support rules 794 can be analyzed first, and if the proposed / analyzed placement location satisfies the wall support rules 794, other rules (e.g., tilted support rules 796 and / or multiple overhang rules 798) can be analyzed or checked.
[0085] The wall support rule 794 may be based on an effective support 795 that corresponds to a portion of the upper package 772 (e.g., a portion of its bottom surface) that contacts and / or is supported by the support package 774 when the upper package 772 is placed on the support package 774. In other words, the effective support 795 may correspond to the overlap between the support package 774 and the upper package 772 and / or the portion of the upper package 772 excluding / remaining its overhanging portion. In some embodiments, the wall support rule 794 may require a minimum amount of effective support 795 (e.g., a minimum percentage threshold, such as 51% or more). In other words, the wall support rule 794 may require that the overhang distance be less than the effective support 795 by a predetermined amount. In one or more embodiments, the wall support rule 794 may require that a minimum number of corners (e.g., 4-6 corners of the 8 corners of a box-type structure) are on / supported by the support package 774.
[0086] The wall support rule 794 may also be based on the object-wall spacing 726 measured between the support wall 725 and the supporting package 774, one or more dimensions of the upper package 772, and / or the CoM location 782 of the upper package 772. For example, the wall support rule 794 may require that the CoM location 782 be on or within the periphery of the effective support 795 such that the CoM location 782 is on and / or supported by the supporting package 774. The wall support rule 794 may also require that the object-wall spacing 726 be less than a lateral dimension of the effective support 795 (e.g., the remaining / overlapping portion of the upper package 772). The wall support rule 794 may contemplate aspects similar to the horizontal offset rule 776, but with reduced support requirements based on the contact of the upper package 772 with and / or support provided by the supporting wall 725. In other words, the robotic system 100 can derive, analyze, and / or validate possible placement locations that violate the horizontal offset rule 776 but satisfy the wall support rule 794. For example, the wall support rule 794 can derive and validate possible placement locations that extend laterally further than permitted by the horizontal offset rule 776. Because an object placed in a placement location contacts the supporting wall 725 and derives structural support / stability from the container, the object may be placed in a location that would otherwise violate the horizontal offset rule 776.
[0087] The tilt support rule 796 may include restrictions, requirements, or combinations thereof to control placement of objects in response to changes in tilt or attitude of the top package 772 with respect to contact between the top package 772 and the support wall 725. In some embodiments, the tilt support rule 796 may be applied / tested when the top package 772 abuts the support wall 725 without contacting it (e.g., the lateral separation distance between the outermost edge of the top package 772 and the support wall 725 is non-zero). The tilt support rule 796 may be used to account for possible shifts and / or rotations of the top package 772 during transport and the resulting impact on other objects in the container.
[0088] In some embodiments, the tilt support rule 796 may impose a limit (e.g., a maximum threshold) on a tilt angle 797 associated with the top package 772. The tilt angle 797 may be the angle of a reference surface (e.g., top surface) of the top package 772 in an intended pose or in a rotated pose in a candidate placement position. The robotic system 100 may calculate the tilt angle 797 based on rotating a corresponding discretized model of the top package 772 about a pivot location 793 (e.g., the periphery of the support package 774 closest to the support wall 725). The tilt angle 797 may correspond to the periphery of the top package 772 that contacts the support wall 725 (e.g., the top closest to the support wall 725). Thus, the tilted support rule 796 may be used to enable placement positions where the top package 772 contacts and / or is supported by the supporting wall 725 without excessive rotation of the top package 772 (i.e., the amount of rotation that would cause the supporting package 774 to shift position and / or the top package 772 to tip / fall into the object-wall spacing 726). The robotic system 100 may use the tilted support rule 796 to derive, analyze, and / or enable possible placement positions that may violate other rules, such as the horizontal offset rule 776 and / or the wall support rule 794. In other words, based on the tilted support rule 796, the robotic system 100 may enable positions where the object extends / overhangs further than permitted by the horizontal offset rule 776, because the object will remain supported / fixed even if it shifts during transport.
[0089] In one or more embodiments, the tilt support rule 796 may be further based on the weight of the top package 772 and / or the CoM position 782 of the top package 772 relative to the pivot location 793. For example, the robotic system 100 may calculate the likelihood of object slippage (e.g., likelihood of lateral displacement during transposition) of the top package 772 based on its weight. The robotic system 100 may also calculate the likelihood of object rotation of the top package 772 based on the weight and the CoM position 782 of the top package 772 relative to the pivot location 793. The robotic system 100 may calculate the various possibilities according to one or more predefined formulas / processes that consider the forces encountered by the object during transposition, frictional forces between the placed object and / or container, and / or other relevant physical parameters. The robotic system 100 may include qualifying threshold(s) for the various possibilities. In other words, the robotic system 100 may conclude that the object placement position satisfies the tilt support rule 796 if the calculated likelihood of shift / rotation is below an eligible threshold, with or without consideration of the tilt angle 797.
[0090] The multiple overhang rule 798 may include restrictions, requirements, or combinations thereof for controlling the placement of multiple / consecutive overhanging objects. In other words, the multiple overhang rule 798 may be used to evaluate a candidate placement location on and supported by an intermediate object 799 that is on and supported by the support package 774. The robotic system 100 may consider the multiple overhang rule 798 if the candidate placement location is on and supported by the intermediate object 799, the intermediate object 799 overhangs one or more objects below, and the perimeter of the intermediate object 799 extends laterally beyond the perimeter of the one or more objects below. In other examples (e.g., if the perimeter of the intermediate object 799 extends laterally up to but not beyond the perimeter of the object below), the robotic system 100 may consider the candidate placement location for the intermediate object 799, for example, by considering the intermediate object 799 as a supporting object.
[0091] In processing the multiple overhang rules 798, the robotic system 100 can derive an effective support 795 for the top package 772 relative to one or more packages below an intermediate overhanging object 799. For example, the robotic system 100 can derive the effective support 795 based on the overlap between the top package 772 and the bottom package and / or the package that is laterally furthest from the support wall 725. In other words, the robotic system 100 can designate the bottom object or the object that is laterally furthest from the support wall 725 as the supporting package 774 of the top object, including the top package 772. In some embodiments, as part of processing the multiple overhang rules 798, the robotic system 100 can test the horizontal offset rules 776 and / or the wall support rules 794 using the resulting effective support 795 for the top package 772. The robotic system 100 can validate a candidate placement location and determine that the multiple overhang rule 798 is satisfied if the adjusted effective support 795 of the upper package 772 satisfies the horizontal offset rule 776 and / or the wall support rule 794 described above.
[0092] Alternatively or additionally, the robotic system 100 can derive a combined object estimation 732 having a combined reference position 734 for an object on a specified supporting package 774 (e.g., the bottom object and / or the object furthest laterally from the supporting wall 725 below the candidate placement position) that includes the candidate placement position of the top package 772. The robotic system 100 can derive the combined object estimation 732 as a specified planar shape (e.g., a rectangle) that encompasses and / or matches the outermost portion of the combined objects (e.g., the object on and / or supported by the specified supporting package 774). In other words, the robotic system 100 can derive a combined object estimation 732 that is similar to the AABB 730, but for the combined objects. The robotic system 100 can derive the combined reference position 734 based on combining reference positions (e.g., CoM positions) of the combined objects. For example, the robotic system 100 can derive the combined reference position 734 based on combining the CoM positions 782 (e.g., by spatial averaging) with the corresponding package weights as parameter weights for the CoM positions 782. Thus, the robotic system 100 can estimate and process the CoM positions of a combined set of objects.
[0093] To test for compliance with the multiple overhang rule 798, the robotic system 100 can process / test the combined object estimate 732 and / or combined reference position 734 instead of the upper package 772 and / or corresponding CoM position 782. For example, the robotic system 100 can validate a candidate placement position if the corresponding combined object estimate 732 and / or combined reference position 734 satisfies the horizontal offset rule 776, the wall support rule 794, the tilted support rule 796, and / or any other placement rules.
[0094] In some embodiments, the robotic system 100 may compare the object-wall spacing 726 to a support threshold distance that represents a limit for supporting the upper package 772. The support threshold distance may be based on one or more physical aspects of the upper package 772 (e.g., package height). For example, the support threshold distance may be to determine whether the object-wall spacing 726 is large enough that the upper package 772 will shift laterally and fall between the support wall 725 and the supporting package 774. Thus, the horizontal offset rule 776, wall support rule 794, tilt support rule 796, and / or other placement rules may require the object-wall spacing 726 to be below the support threshold distance (e.g., a fraction of a dimension of the upper package). In one or more embodiments, the robotic system 100 may adjust the effective support 795 threshold requirement based on the relationship between the object-wall spacing 726 and the support threshold distance. For example, the robotic system 100 may increase the threshold requirement for effective support 795 (e.g., from 51%-60% to 75% or more) if the object-wall spacing 726 is greater than the support threshold distance.
[0095] In some embodiments, the robotic system 100 may consider and validate candidate resting positions in which the top package 772 extends above the top edge of the support wall 725. The robotic system 100 may validate such resting positions based on, for example, (1) the amount of overlap between the support wall 725 and the top package 772, (2) the amount of protrusion of the portion of the top package 772 that protrudes above the top edge, (3) the ratio of (1) to (2), (4) the CoM position 782 of the top package 772 (e.g., the vertical position of the CoM with respect to the edge of the wall), (5) the lateral distance between the top package 772 and the support wall 725, (6) the pivot position, (7) an estimated or predefined coefficient of friction of the resting object, (8) the weight of the object, (9) a maximum acceleration / force threshold associated with the misaligned / tipped object, and / or other similar physical parameters.
[0096] The robotic system 100 may process the various placement rules according to one or more predefined sequences and / or interaction patterns. For example, the robotic system 100 may test the candidate placement locations according to a predefined sequence and / or flow (e.g., if-then type processing) associated with the placement rule. The robotic system 100 may also process the scores corresponding to each placement rule, sum the resulting scores, and compare the total score to a placement score threshold to validate the candidate placement location.
[0097] Exemplary 3D calculations 8A and 8B are diagrams of various aspects of the calculation of support according to one or more embodiments of the present technology. As described above, the robotic system 100 of FIG. 1 can derive the packing plan 700 of FIG. 7A based on deriving and testing candidate placement positions for the target object 112 of FIG. 1. The candidate placement positions can represent nodes in the search tree 754 of FIG. 7B. FIG. 8A and 8B can illustrate an example mechanism for calculating a 3D placement of an object (e.g., a stacking object), which can be performed at least partially offline (e.g., using assumed or known parameters) and / or at least partially in real-time (e.g., based on real-time sensor data).
[0098] In some embodiments, the robotic system 100 may iteratively move a discretized model of a target object (e.g., object footprint model 612 in FIG. 6 ) throughout a discretized model of a specified resting container (e.g., container footprint model 622 in FIG. 6 ) to generate candidate positions. For example, the robotic system 100 may generate a first instance of a candidate position 801 by placing a discretized object model corresponding to a predefined initial position (e.g., corner) of the discretized rest model according to one or more orientations. For the next instance of the candidate position 801, the robotic system 100 may move the discretized object model a predefined distance (e.g., one or more unit pixels) according to a predefined direction / pattern.
[0099] If the candidate position 801 overlaps one or more objects or existing objects / structures (e.g., for real-time placement calculation) at the planned location, the robotic system 100 can calculate and evaluate the degree of support (e.g., effective support 795 in FIG. 7C) provided by the placed object. To calculate and evaluate the degree of support, the robotic system 100 can determine and track the height / contour for the placement area. For example, the robotic system 100 can update the height dimension 802 per unit area (e.g., discretized unit 602 in FIG. 6) according to the known / expected height of the processed object (e.g., object with confirmed or validated placement position). For real-time processing, the robotic system 100 can use the depth dimension (e.g., point cloud value) from one or more of the imaging devices 222 in FIG. 2 directed at the task location 116 in FIG. 1. Because the vertical position of the ground and / or platform surface is known (e.g., the height of the bottom of the cart / cage above the facility ground), the robotic system 100 can use the depth dimension to calculate the height / contour of the exposed top surface(s) of the platform, placed object, or combination thereof.
[0100] The robotic system 100 can update the discretized bed model to include the height dimension 802 during the derivation of the iterative placement. The robotic system 100 can determine the height dimension 802 according to each discretized pixel in the discretized bed model. For example, the robotic system 100 can determine the height dimension 802 as the maximum height of the container bottom and / or the surface portion of the placed / processed object within the corresponding unit pixel.
[0101] For each candidate location 801 that overlaps one or more of the placed objects, the robotic system 100 can evaluate the placement probability based on the height dimension 802. In some embodiments, the robotic system 100 can evaluate the placement probability based on identifying the maximum overlapping height dimension 802 at each candidate location 801. The robotic system 100 can further identify other height dimensions 802 located at each candidate location 801 that have a height dimension 802 within a difference threshold limit to the maximum one of the height dimensions 802. Eligible cells / pixels can represent locations that can provide support for the stacked objects such that the stacked objects are essentially flat / horizontal (i.e., parallel to the placement surface at the bottom of the container).
[0102] 8A, for the first of the candidate locations 801 (e.g., the top left corner of the container footprint model 622), the maximum height dimension may be 0.3 (i.e., 300 millimeters (mm) height). With a difference threshold pre-determined as 0.02 (e.g., representing 20 mm), the robotic system 100 may identify the top four discretized cells / pixels as meeting the difference threshold. The robotic system 100 may use the identified / qualified cells / pixels to evaluate / represent the degree of support.
[0103] Further examples of support calculations are shown in Figure 8B. Figure 8B shows one of the candidate locations 801 with a container footprint model 622 (shown in solid bold outline) overlaid on the top left corner of the candidate location 801. The robotic system 100 can calculate / utilize various support parameters 804, which are parameters used to evaluate the candidate location 801. For example, the support parameters 804 can include a discretization dimension 806, an overlap area 808, a height difference threshold 810, a support threshold 812, a maximum height 814, a height limit 816, a qualifying number 818, a set of support area contours 820, a support area size 822, a support ratio 824, a CoM position 782, or a combination thereof.
[0104] The discretization dimensions 806 may describe the physical dimensions (e.g., length, width, height, perimeter, etc.) of the target object 112 of FIG. 1 according to the discretization units 602 of FIG. 6. For example, the discretization dimensions 806 may include the quantity of the discretization units 602 that form the perimeter of the discretized object model 612 / 614. The overlap area 808 may describe the area (e.g., footprint size along a horizontal plane) occupied by the target object 112, which may be similarly expressed according to the discretization units 602. In other words, the overlap area 808 may correspond to the quantity of the discretization units 602 in the discretized object model. In the example shown in FIG. 8B, the target object 112 may have a discretization dimension 806 of 6 pixels by 7 pixels, which corresponds to an overlap area 808 of 42 pixels.
[0105] The height difference threshold 810 and the support threshold 812 may correspond to limits used to process and / or validate the candidate location 801. The height difference threshold 810, which may be pre-determined and / or adjusted by an operator and / or order, may represent an acceptable deviation from another reference height (e.g., the maximum height 814 corresponding to the largest instance of the height dimension 802 within the overlapping area of the discretized object models) to contact and / or support a package placed thereon. In other words, the height difference threshold 810 may be used to define a range of heights of a surface that may contact and / or support a package placed thereon. Thus, relative to the maximum height 814, the lower height limit 816 may correspond to a lower limit of a height within the overlapping area 808 that may provide support for a stacked package. In the example shown in FIG. 8B, the height difference threshold 810 may be 0.02. If the maximum height 814 is 0.2, the lower height limit 816 may be 0.18. Therefore, when placing the target object 112 at the candidate location 801, the robotic system 100 can estimate that faces / pixels with a height greater than 0.18 will contact and / or provide support to the target object 112.
[0106] Thus, in one or more embodiments, the robotic system 100 can categorize the discretization units 602 in the overlap area 808 according to the height difference threshold 810. For example, the robotic system 100 can categorize the discretization units 602 having heights that satisfy the height difference threshold 810 (i.e., values equal to or greater than the lower height limit 816) as support positions 828 (e.g., a group of discretization units 602 representing a surface on which an object can be stacked, represented by the shaded pixels in FIG. 4B). The robotic system 100 can categorize other discretization units 602 as ineligible positions 830 (e.g., pixels having heights less than the lower height limit 816).
[0107] The support threshold 812 can represent a limit for evaluating the candidate locations 801 based on the sufficiency of the support locations 828. For example, the support threshold 812 can be for evaluating a quantity, ratio, area, location, or combination thereof associated with the support locations 828. In some embodiments, the support threshold 812 can be used to determine whether the eligible number 818 for the candidate locations 801 (e.g., the total number of support locations 828) is sufficient to support the target object 112.
[0108] In one or more embodiments, the support threshold 812 can be used to evaluate the support area associated with the support location 828 (e.g., the discretized units 602 that can provide support to an object stacked above, which can be determined by a height threshold). For example, the robotic system 100 can determine the support area contour 820 based on connecting the corners of the outermost / perimeter instances of the support location 828 by extending edges and / or determining lines that extend across or around the ineligible locations 830. In this manner, the support area contour 820 can exclude the ineligible locations 830. Thus, the support area contour 820 can define the perimeter of the support area based on the perimeter instances of the support location 828. Because the support area contour 820 can span and / or include the ineligible locations 830, the support area size 822 (e.g., the quantity of discretized units 602 within the support area) can be greater than the eligible number 818. Thus, the support area size 822 effectively represents the spacing between the outermost edges / corners where support is provided. Because wider support is preferred (e.g., when a portion of the support area contour 820 is larger than the object overlap area 808 to reduce overhang and / or improve stability), the support threshold 812 may correspond to a minimum number of discretization units 602 within the support area (e.g., for evaluating the support area contour 820), thereby effectively evaluating the spacing between the outermost edges / corners where support is provided.
[0109] In some embodiments, the support threshold 812 can be for evaluating a support ratio 824, which can be calculated based on comparing the eligible number 818 and / or the support area size 822 to the overlap area 808. For example, the support ratio 824 can include a ratio of the eligible number 818 to the overlap area 808 to represent horizontal stability, concentration of support weight, or a combination thereof. The support ratio 824 can also include a ratio of the support area size 822 to the overlap area 808 to represent the relative width between the supporting edges / corners under the target object 112.
[0110] Additionally, the robotic system 100 can further evaluate the candidate position 801 based on the CoM position 782 of the target object 112. In some embodiments, the robotic system 100 can access the CoM position 782 of the target object 112 from the master data 252 of FIG. 2 and / or dynamically estimate the CoM position 782 based on grasping and / or lifting the target object 112. Once accessed / estimated, the robotic system 100 can compare the CoM position 782 to the support area contour 820. The robotic system 100 can require the candidate position 801 to include the CoM position 782 within the support area contour 820 and eliminate / disqualify the candidate position 801 that fails to meet such requirement. In one or more embodiments, the robotic system 100 can calculate and evaluate a placement score based on a separation distance (e.g., along the x-axis and / or y-axis) between the CoM position 782 and the support area contour 820.
[0111] The robotic system 100 can use the support parameters 804 to evaluate the constraints / requirements. For example, the robotic system 100 can eliminate / disqualify candidate locations that do not satisfy the support threshold 812, the CoM position threshold (e.g., the requirement that the CoM position 782 be within the support area contour 820), and / or other stacking rules. The robotic system 100 can also use the support parameters 804 to calculate a placement score for the candidate locations 801 (e.g., locations that satisfy the constraints) according to predefined weights and / or formulas. As described in more detail below, the robotic system 100 can use the calculated placement scores to rank the candidate locations 801 according to predefined settings (e.g., as reflected by the weights / formulas).
[0112] In some embodiments, the robotic system 100 can determine whether the end effector 304 of FIG. 3 can be positioned to place the target object 112. For example, the robotic system 100 can overlay a discretized end effector model (e.g., the gripper footprint model 632 of FIG. 6 and / or the gripper side model 634 of FIG. 6) on the discretized platform model (e.g., the container footprint model 622 and / or the container side model 624) of the task location 116 of FIG. 1 in response to the derived candidate position 801. The robotic system 100 can verify the candidate position 801 if the discretized end effector model is between (e.g., without overlapping with) the support wall 725 of FIG. 7C or a corresponding discretized portion.
[0113] As an illustrative example, the robotic system 100 may validate a set of available gripping configurations (e.g., over the center, aligned to the periphery, rotated 1-359 degrees relative to the object, etc.) for the end effector 304 for one or more (e.g., each) of the candidate positions 801. For each gripping configuration, the robotic system 100 may adjust the discretized end effector model according to the gripping configuration and overlay the adjusted model on the discretized bed model. Using the overlayed model, the robotic system 100 may calculate a depth value of the end effector 304 at the placement position of the target object 112 (i.e., with the target object 112 resting on the placement surface at the candidate position 801). The depth value(s) of the top surface of the target object 112 at the candidate position 801 may be calculated as the sum of the depth value of the placement surface according to the discretized bed model, the height of one or more objects placed or planned to be placed between the container floor and the candidate position 801, and / or the height of the target object 112. The corresponding depth value(s) of the end effector can be calculated as the sum of the calculated depth value of the top surface of the target object at the candidate position 801 and the depth value(s) corresponding to the discretized end effector model.
[0114] For each gripping configuration, the robotic system 100 can compare the depth value of the discretized end effector model with the depth values surrounding the target object 112 at the candidate location 801 (e.g., the height of other objects and / or the support wall 725). The robotic system 100 can reject the gripping configuration if the depth values of the discretized bed and / or objects thereon indicate that the 2D mesh of the discretized end effector model will collide with a portion of the container (e.g., the support wall 725) or an object stacked therein. The robotic system 100 can detect a likely collision if the depth values between the discretized bed model and the discretized end effector model are the same or within a threshold range. The robotic system 100 can also detect a likely collision if the depth values indicate that the discretized end effector is lower than the corresponding / overlapping portion of the discretized bed model. Similarly, the robotic system 100 can determine a potential collision when the 2D mesh representing the end effector and the attached portion of the robot arm touches or extends beyond the boundary of the discretized bed model.
[0115] The robotic system 100 can approve or activate the gripping configurations that pass the collision analysis. In other words, the robotic system 100 can activate the remaining gripping configurations that do not correspond to any potential collision. The robotic system 100 can further activate the corresponding candidate positions 801 based on the activation of the gripping configuration. In this manner, the robotic system 100 can take the end effector 304 into account when deriving the placement of the target object 112. The robotic system 100 can further use the above-described process to take the end effector 304 into account when updating the placement plan in real time to adjust for unexpected situations (e.g., unexpected position and / or shape of the support wall 725).
[0116] Exemplary Motion Planning 9A-9C are illustrative aspects of an exemplary motion plan calculation according to one or more embodiments of the present technology. Figures 9A and 9B are side views showing an exemplary approach for placing the target object 112 of Figure 1. Figures 6A and 6B each show an approach path 901 for placing the target object 112 at the corresponding candidate location 801 of Figure 8A above one or more predecessor objects 508 (e.g., objects already placed or planned to be placed earlier) in a container.
[0117] The robotic system 100 of FIG. 1 can derive an approach path 901 based on approach increments 903 illustrated by dashed boxes F-1 through F-5. The approach increments 903 can represent sampling increments corresponding to sequential positions of the target object 112, the robot arm 302 (or a portion thereof) of FIG. 3, the end effector 304 of FIG. 3, or a combination thereof, in 3D space along the corresponding approach path 901. In some embodiments, the approach increments 903 can match one or more dimensions of the discretization unit 602 of FIG. 6 used for the model. The approach path 901 can include path segments 904 corresponding to straight line segments / directions. The path segments 904 can include a final segment 906 for placing the target object 112 at the corresponding candidate position 801 of FIG. 8A. In some embodiments, the final segment 906 can include a vertical (e.g., downward) direction or movement. In other embodiments, the final segment 906 may include a vertical downward approach increment followed by an angled downward trajectory to the candidate location 801, for example to place the object under an overhang and / or extending laterally.
[0118] To derive the approach path 901, the robotic system 100 may identify any of the predecessor objects 902 and / or the supporting walls 725 that may be obstacles for the target object 112, the robot arm 302, and / or the end effector 304 when placing the target object 112 at the candidate location 801. In one or more embodiments, the robotic system 100 may identify the potential obstacle(s) 910 as a horizontal line (e.g., a straight line along the xy plane) extending between a position above the start location 114 and the corresponding candidate location 801 and / or an instance(s) of the predecessor object 902 that overlaps a 2D plane. The robotic system 100 may further identify the potential obstacle(s) 910 as, for example, an instance(s) of a predecessor object 902 that overlaps with a derived lane 912 (shown in FIG. 9C ) near the horizon based on deriving a lane 912 that is parallel to and overlaps the horizon and has a width based on one or more dimensions (e.g., width, length, and / or height) of the target object 112. As shown in FIGS. 9A and 9B , the start location 114 may be to the right of the candidate location 801. Similarly, the robotic system 100 may further identify the potential obstacle(s) 910 as a supporting wall 725 of the container.
[0119] In some embodiments, the robotic system 100 can validate / identify potential obstacles 910 based on the depth dimensions described above. For example, the robotic system 100 can validate / identify potential obstacles 910 having one or more of their top surface depth dimensions that are equal to or greater than the top surface depth dimension of the candidate location 801. The robotic system 100 can eliminate from the potential obstacles 910 predecessor objects 902 that have a top surface depth dimension that is less than the top surface depth dimension of the candidate location 801. In one or more embodiments, the robotic system 100 can identify / eliminate potential obstacles 910 based on ambiguity associated with the height of the candidate location 801 and / or the height of the potential obstacle 910.
[0120] In some embodiments, the robotic system 100 can derive the entry path 901 in reverse order, e.g., starting from the candidate location 801 and ending at the starting location 114. Thus, the robotic system 100 can derive the final segment 906 first (e.g., before other segments) to avoid the potential obstacle 910. For example, the robotic system 100 can determine a set of lanes 912 according to the dimensions of the object and end effector (e.g., a combination of the gripper model and the object model according to the engaged interface height 534 of FIG. 5C). In some embodiments, the set of lanes can include one or more laterally extending lanes corresponding to the height and / or width of the target object. The set of lanes can also include one or more vertically extending lanes corresponding to the length and / or width of the target object.
[0121] The robotic system 100 may first derive a vertically extending lane extending upward from the candidate position 801. The robotic system 100 may evaluate whether the vertically extending lane overlaps / touches any preceding objects 902 and / or supporting walls 725. The robotic system 100 may disqualify the candidate position 801 and / or evaluate lateral movement based on detecting the overlap / touch. If the vertically extending lane does not overlap / touch any potential obstacles 910 (e.g., preceding objects 902 and / or supporting walls 725), the robotic system 100 may derive a laterally extending lane from the vertically extending lane to a position above the starting position 114. The robotic system 100 may derive a laterally extending lane of a predetermined minimum height (e.g., minimum / maximum drop height and / or container wall height).
[0122] The robotic system 100 may similarly evaluate whether the laterally extending lanes overlap / contact any potential obstacles 910. The robotic system 100 may iteratively increase the height of the laterally extending lanes (e.g., by one or more entry increments 903) based on the detection of the potential obstacle. In this manner, the robotic system 100 may evaluate lateral lanes of increasing height until a clear entry lane is determined and / or a maximum evaluation height is reached. If the maximum evaluation height is reached without a clear lane, the robotic system 100 may reject the candidate location 801. Otherwise, the robotic system 100 may validate the laterally extending lanes.
[0123] The robotic system 100 can derive the approach path 901 as a function of the validated vertical lanes (e.g., those corresponding to the final segment 906) and the validated lateral lanes (e.g., those corresponding to the path segment 904). In some embodiments, the robotic system 100 can also evaluate diagonal lanes (e.g., lanes that extend upward at an angle) and / or multiple lane segments (e.g., those that repeatedly ascend and then lateralize to follow a step pattern) relative to the approach path 901.
[0124] As an illustrative example, the robotic system 100 may continue to increase the height of the laterally extending lane until the bottom surface / lane edge is above the potential obstacle 910 and / or leapfrogs the nearest potential obstacle by a gap threshold 914 (e.g., a requirement for a minimum vertical spacing for the target object 112 above the highest point of the potential obstacle 910 to avoid contact or collision between the target object 112 and the potential obstacle 910). If the lane meets the gap threshold 914, the robotic system 100 may adjust the corresponding entry increment by a predetermined distance along the horizontal direction (e.g., toward the start position 114). Thus, the robotic system 100 may derive the final segment 906 and / or the subsequent path segment 904 based on the candidate position 801 and the entry path 901.
[0125] Once derived, the robotic system 100 can use the approach path 901 to evaluate the corresponding candidate location 801. In some embodiments, the robotic system 100 can calculate a placement score as a function of the approach path 901. For example, the robotic system 100 can calculate a placement score as a function of a setting for a shorter length / distance for the final / vertical segment (e.g., as a function of one or more weights corresponding to a given placement setting). In one or more embodiments, the robotic system 100 can include a constraint, such as an upper limit (e.g., for the final / vertical segment 906), associated with the approach path 901 that is used to eliminate or disqualify the candidate location 801.
[0126] In some embodiments, the robotic system 100 may further evaluate the corresponding candidate positions 801 according to other collision / obstacle related parameters. For example, the robotic system 100 may evaluate the candidate positions 801 according to the horizontal spacing 916 between the candidate positions 360 and one or more of the predecessor objects 902. Each horizontal spacing 916 may be a distance (e.g., a shortest distance) along a horizontal direction (e.g., an xy plane) between the corresponding candidate position 360 and an adjacent instance of the predecessor object 902. The robotic system 100 may calculate a placement score for the candidate positions 360 based on the horizontal spacing 916, similar to that described above for the approach path 901. The robotic system 100 may also eliminate or disqualify the candidate positions 360 based on the horizontal spacing 916, such as when the horizontal spacing 916 does not meet a minimum requirement. Because the final segment 906 is generally the most difficult for object placement, validating the approach path 901 starting from the final segment 906 reduces the processing time for validating the approach path 901.
[0127] Example adjustments for unexpected situations 10 illustrates example real-time sensor data (e.g., sensor output 1000) in accordance with one or more embodiments of the present technology. The robotic system 100 of FIG. 1 can acquire the sensor output 1000 via a corresponding sensor. For example, the sensor output 1000 can include a top view image 1052 from the top view sensor 310 of FIG. 3 and / or a side view image 1054 from the side view sensor 312 of FIG. 3. The top view image 1052 and / or the side view image 1054 can depict a container (e.g., cart 410 of FIG. 4A and / or cage 420 of FIG. 4C) at the task location 116 of FIG. 1 and / or objects within the container.
[0128] The robotic system 100 of FIG. 1 can analyze the sensor output 1000 for unexpected features 1002 associated with the container. For example, the robotic system 100 can analyze the sensor output 1000 based on detecting actual features 606 (e.g., via an edge detection mechanism such as a Sobel filter) and comparing them to predetermined / expected features (e.g., edges) of the container. The robotic system 100 can detect the unexpected feature 1002 when the actual feature 606 depicted in the sensor output 1000 deviates from the expected features of the container (e.g., those represented by the corresponding template) and / or the template pattern for a predetermined error condition. Some examples of the unexpected feature 1002 can correspond to error conditions of the support wall 725 of FIG. 7C, such as a half-open cart wall (illustrated by the left wall) and / or a warped wall (illustrated by the right wall).
[0129] The unexpected feature 1002 may correspond to a resting surface that is offset from the expected resting surface. For example, a half-open cart wall and / or a warped wall may expose a reduced portion of the container bottom surface. Thus, the packing plan 700 of FIG. 7A derived based on the expected situation may not be applicable (e.g., may not fit without adjustment) to an actual container having the unexpected feature 1002. The unexpected feature 1002 may also indicate an unexpected obstacle / obstruction to the motion plan associated with the packing plan 700 (e.g., the approach 901 of FIG. 9A).
[0130] Thus, in response to detecting the unexpected feature 1002, the robotic system 100 may dynamically adjust the packing plan 700 to account for the unexpected feature 1002. In other words, the robotic system 100 may dynamically (e.g., during a packing / loading operation) generate or update the packing plan 700 to place the planned objects in the container without or with the unexpected feature 1002 in mind. In dynamically adjusting the packing plan 700, the robotic system 100 may use the sensor output 1000 to dynamically generate one or more actual container models that include or represent the unexpected feature 1002. For example, the robotic system 100 may dynamically generate an adjusted footprint model 1022 based on the top view image 1052 and / or an adjusted side model 1024 based on the side view image 1054. The robotic system 100 may generate the adjusted model based on pixelating and / or discretizing the sensor output 1000 according to the discretization units 602 of FIG. 6 and / or the entry increments 903 of FIG. 9A. For example, the robotic system 100 may identify detected edges corresponding to the support walls 725 (e.g., one or more inner top edges thereof) and / or the container bottom based on a predefined pattern related to depth, color, shape, and / or other parameters. The robotic system 100 may select one or more predefined instances of the identified edges as starting / reference edges (e.g., part of the model boundary 608). The robotic system 100 may use the selected edges to start dividing the area / space between the support walls 725 for the pixelation process. The robotic system 100 may pixelate the area / space without exceeding or extending beyond the edges corresponding to the support walls 725 and / or the associated positions / heights. In this manner, the robotic system 100 may determine the remaining portions of the model boundary 608. Thus, the robotic system 100 can dynamically generate a calibrated model that represents a calibrated placement zone 1026 in which the object may be stored.
[0131] As described above, the robotic system 100 can dynamically determine the adjusted placement zone 1026, which may differ from the expected placement zone 430 of FIG. 4A. If an unexpected feature 1002 is detected, the robotic system 100 can compare the adjusted placement zone 1026 to the expected placement zone 430 and / or the packing plan 700 for placing the object in a container. For example, the robotic system 100 can overlay a container model and / or the packing plan 700 onto the adjusted model. Thus, the robotic system 100 can determine whether the expected placement zone 430 differs from the adjusted placement zone 1026 and / or whether the packing plan 700 extends beyond the adjusted placement zone 1026.
[0132] The robotic system 100 can initiate pack relocation if the assumed placement zone 430 differs from the adjusted placement zone 1026 and / or if the packing plan 700 or a portion thereof extends beyond the adjusted placement zone 1026. The robotic system 100 can perform pack relocation based on moving the packing plan 700 within the adjusted placement zone 1026. For example, the robotic system 100 can first align the AABB 730 of FIG. 7A with a predefined corner / edge of the adjusted placement zone 1026 and evaluate whether the AABB 730 falls within the adjusted placement zone 1026. If the initial alignment of the AABB 730 does not fall within the boundaries of the adjusted placement zone 1026, the robotic system 100 can iteratively shift the AABB 730 within the adjusted placement zone 1026 according to a predefined pattern and evaluate whether the AABB 730 falls within the adjusted placement zone 1026. In this manner, the robotic system 100 can coordinate the placement positions of all objects in the packing plan 700 as a group / unit.
[0133] If the placement of the AABB 730 falls within the adjusted placement zone 1026, the robotic system 100 can validate the adjusted position of the packing plan 700. In some embodiments, the robotic system 100 can validate the adjusted position of the packing plan 700 based on evaluating whether the entry path 901 of FIG. 9A overlaps with a detected container edge for one or more objects in the shifted or adjusted instance of the packing plan 700. For example, the robotic system 100 can update the entry path 901 of the first object, the first layer, objects at the perimeter of the AABB 730, and / or other objects to account for the adjusted placement position. By overlaying and comparing the shifted entry path 901 to the sensor output 1000, it can be determined whether the shifted entry path 901 overlaps / collides with a container wall and / or a preceding object. If the evaluated approach path avoids the potential obstacle 910 in FIG. 9A for the unexpected feature, the robotic system 100 can activate and implement the packing plan 700 according to the shifted position. In this manner, the robotic system 100 can, for example, implement the packing plan 700 in light of the unexpected feature 1002 without re-deriving the packing plan 700 and / or the approach path 901. If the robotic system 100 cannot determine an alternative position for the AABB 730 where all objects are contained within the adjusted placement zone 1026, the robotic system 100 can re-derive the packing plan 700 and / or initiate / implement a container swap. More details regarding dynamic adjustments to the unexpected feature 1002 are provided below.
[0134] 11 is a flow diagram of a first exemplary method 1100 of operating the robotic system 100 of FIG. 1 in accordance with one or more embodiments of the present technology. The method 1100 can be for deriving the packing plan 700 of FIG. 7A for placing an object (e.g., a package, case, and / or box) in a container (e.g., the cart 410 of FIG. 4A and / or the cage 420 of FIG. 4C). The method 1100 can be implemented based on instructions stored in one or more of the storage devices 204 of FIG. 2 being executed by one or more of the processors 202 of FIG. 2. The processor 202 can control the robot arm 302 of FIG. 3 and / or the end effector 304 of FIG. 3 according to the packing plan 700, for example, by transposing the target object 112 of FIG. 1 from the start location 114 of FIG. 1 to a container at the task location 116 of FIG. 1. For example, the processor 202 can control the robotic unit to manipulate components / objects along the access path 901 in FIG. 9A and place them in corresponding placement locations within a container.
[0135] In block 1102, the robotic system 100 may identify a set of objects designated to be placed within a container at the task location 116 (e.g., objects determined to be stacked objects 724 in FIG. 7B, top package 772 in FIG. 7C, supporting package 774 in FIG. 7C, intermediate object 799 in FIG. 7C, etc.). For example, the robotic system 100 may identify objects available for packing, in incoming shipment, arrived at a designated location, placed at a source, designated to be placed, and / or listed in an order / request / inventory (e.g., the set of available packages 742 in FIG. 7B).
[0136] Also, in block 1102, the robotic system 100 may identify containers available to receive the identified object. For example, the robotic system 100 may identify carts 410 and / or cages 420 that have an empty or partially filled status and / or are accessible (e.g., not currently in use or blocked). The robotic system 100 may also identify containers that become available from a queue, etc. The robotic system 100 may further identify characteristics / attributes (e.g., category, dimensions, identifier, etc.) of the identified container. The robotic system 100 may interface with other systems (e.g., a transport robot system), access information from the master data 252 of FIG. 2, and / or obtain real-time information from the containers (e.g., via sensors at predetermined locations) to identify the containers and / or their characteristics.
[0137] At block 1104, the robotic system 100 may obtain (e.g., by generating in real time and / or accessing from the master data 252) one or more discretized models. For example, the robotic system 100 may obtain discretized models representing the identified object, such as, for example, the object models 706-710 of FIG. 7A, the corresponding footprint model 612 of FIG. 6, and / or the corresponding side model 614 of FIG. 6. The robotic system 100 may also obtain discretized models representing the identified container, such as, for example, the container footprint model 622 of FIG. 6 and / or the container side model 624 of FIG. 6.
[0138] In some embodiments, the robotic system 100 can generate a discretized model in real time (e.g., after receiving an order and / or before starting a packing operation, or offline) based on pixelating or dividing a physical dimension or image of an object / container according to the discretized units 602 of FIG. 6 (e.g., pixels having set dimensions). The dimensions of the discretized units 602 can be predetermined or dynamically set by the manufacturer, the ordering customer, and / or the operator. For example, the discretized units 602 can be 1 millimeter (mm) or 1 / 16 inch (in) or more (e.g., 5 mm or 20 mm). In some embodiments, the discretized units 602 can be based on a dimension or size of one or more of the objects and / or containers (e.g., percentages or fractions).
[0139] In some embodiments, the robotic system 100 can access discretized models stored in the storage device 204 and / or other devices (e.g., a storage device of a package supplier, a database, a system for controlling a transport robot, and / or a server accessed via the communication device 206 of FIG. 2). The robotic system 100 can access a predefined discretized model representing the identified object and / or the identified container. For example, the robotic system 100 can access a discretized object model corresponding to the identified object by searching for the available objects and their corresponding models in the master data 252 (e.g., a predefined table or lookup table). Similarly, the robotic system 100 can access a discretized container model representing a task location 116, such as an identified cart or cage, in which the available object will be placed.
[0140] In block 1106, the robotic system 100 may determine object groups (e.g., subgroups of the identified objects). The robotic system 100 may determine object groups according to similarities and / or patterns in one or more characteristics of the identified objects. In some embodiments, the robotic system 100 may determine object groups according to predefined grouping conditions / requirements, such as object priority (e.g., as specified by one or more customers), fragility rating (e.g., maximum weight that can be supported by an object), weight, dimensions (e.g., height), type, or combinations thereof. In grouping the objects, the robotic system 100 may search the master data 252 for various characteristics of the identified objects that match the grouping conditions / requirements.
[0141] At block 1108, the robotic system 100 may derive a processing order (e.g., a sequence in which to consider / derive placement locations) for the identified objects and / or object groups. In some embodiments, the robotic system 100 may derive the processing order according to one or more ordering criteria / requirements. For example, the robotic system 100 may prioritize processing of object groups according to the number of objects in each group, e.g., to process groups with a higher number of objects earlier in the placement plan. In some embodiments, the ordering criteria may overlap with the grouping criteria, e.g., for weight range, fragility rating, etc. For example, the robotic system 100 may prioritize processing of heavier and / or less fragile objects to be processed earlier and / or placed on a lower layer.
[0142] In some embodiments, the robotic system 100 may prioritize placement plans according to total horizontal area. Using information specified in the master data 252, the robotic system 100 may calculate or access the surface area of the top faces of the objects in a group (e.g., by multiplying corresponding widths and lengths, etc.). In calculating the total horizontal area, the robotic system 100 may add up the surface areas of objects that are of the same type and / or have heights within a threshold range. In some embodiments, the robotic system 100 may prioritize placement plans of groups with larger total horizontal areas to be processed sooner and / or placed on a lower layer.
[0143] For one or more embodiments, the robotic system 100 can load identifiers and / or quantities of the identified objects into a buffer (e.g., storage device 204). The robotic system 100 can arrange the identifiers in the buffer according to group. Additionally, the robotic system 100 can arrange the identifiers in the buffer according to processing order. Thus, the arranged values in the buffer can correspond to available packages 742 and / or remaining packages 752 shown in FIG. 7B.
[0144] The robotic system 100 may derive the processing order for the initial set of available packages 742 offline, e.g., before any of the objects are placed on the pedestal. In some embodiments, the robotic system 100 may dynamically derive the processing order for the remaining set of available or remaining packages 752 after initiation or during execution of the corresponding packing plan 700. For example, as illustrated by the feedback loop from block 1116, the robotic system 100 may calculate the processing order for the remaining set (e.g., the portion of available or remaining packages 752 that have not been transposed to the pedestal and / or remain at the source location) according to one or more trigger conditions. Exemplary trigger conditions may include a stacking error (e.g., a lost or dropped object), a collision event, a predefined re-trigger timing, a container anomaly (e.g., detection of unexpected feature 1004 of FIG. 10 ), or a combination thereof.
[0145] The robotic system 100 can derive the packing plan 700 based on iteratively deriving and evaluating candidate locations 801 and / or combinations thereof according to one or more placement rules. The robotic system 100 can derive the packing plan 700 based on overlaying an object model onto the discretized container model at the candidate locations 801. The robotic system 100 can estimate one or more attributes associated with the object model overlaid at the candidate locations 801 (e.g., physical placement of the object, resulting weight, collision probability, stability, etc.).
[0146] In some embodiments, the robotic system 100 can derive and evaluate the 2D plan by deriving candidate positions 801 according to layers. For example, the robotic system 100 can derive (e.g., validate instances of candidate positions 801) an object placement position that forms the lowest layer where the placed object directly contacts the container bottom (i.e., placement surface). In deriving the layers and / or for subsequent evaluation, the robotic system 100 can add the height dimension 802 of FIG. 8A to the placement position and process the position in 3D. Once the lowest layer is derived / validated, the robotic system 100 can derive candidate positions 801 for placing an object on top of (e.g., directly contacting its top surface) the object planned to be placed on the lowest layer. Thus, the robotic system 100 can derive a packing plan 700 that includes multiple 2D layers stacked on top of each other. Additionally, in deriving the packing plan 700, the robotic system 100 can derive and validate locations where each stacked object overhangs one or more objects located below the stacked object and utilizes support walls 725 for support. More details regarding deriving the packing plan 700 are provided below.
[0147] In block 1110, the robotic system 100 can derive a 2D plan (e.g., layers such as lower layer 712 and / or stacked layer 722 shown in FIG. 7A) for placing the available packages 742 along corresponding horizontal planes. For example, the robotic system 100 can derive a 2D mapping of placement locations along horizontal planes for a subset of the available packages 742. The robotic system 100 can derive the placement plan based on the discretized model, for example, by overlaying / comparing the discretized object model to the discretized container model. Thus, the robotic system 100 can analyze different placements of the discretized object model (e.g., candidate location 801 in FIG. 8A) and validate placements that are within the boundaries of the discretized bed model. The robotic system 100 can assign other layers to objects that cannot be placed within the boundaries of the discretized container model. Thus, the robotic system 100 can iteratively derive placement positions for the 2D layer of the packing plan 700 until each package in the package set has been assigned a position.
[0148] In some embodiments, the robotic system 100 can generate the packing plan 700 and / or layers therein based on object groups. For example, the robotic system 100 can determine the placement of objects in one group before considering placing objects in other groups. If the objects in an object group overflow a layer (i.e., do not fit into one layer or one instance of the discretized container model) and / or after placing all packages of one group, the robotic system 100 can assign locations for objects in the next group to any remaining / unoccupied areas in the discretized container model. The robotic system 100 can iteratively repeat the assignment until no unassigned objects fit into the remaining space of the discretized container model.
[0149] Similarly, the robotic system 100 can generate plan layers based on the processing order (e.g., based on object groups according to the processing order). For example, the robotic system 100 can determine a test placement based on assigning objects and / or groups according to the processing order. The robotic system 100 can assign the earliest sequenced object / group the first placement of the test placement and then test / assign subsequent objects / groups according to the processing order. In some embodiments, the robotic system 100 can retain the processing order for objects / groups across layers (e.g., across instances of placement plan 350). In some embodiments, the robotic system 100 can re-derive and update the processing order after each layer is filled (illustrated by the dashed feedback line in FIG. 6). In some embodiments, as an illustrative example of the above process, the robotic system 100 can generate a 2D plan by identifying different / unique package types within each object group and / or package set.
[0150] The robotic system 100 can derive (e.g., iteratively) a placement location for each available package 742. The robotic system 100 can determine an initial placement location (e.g., candidate location 801) for the first unique object in the sequence according to the processing order. The robotic system 100 can determine the initial placement location according to a predefined pattern (e.g., a predefined sequence of orientations / positions) as described above. In some embodiments, the robotic system 100 can calculate an initial placement for each unique package. Each resulting initial placement can be developed into a unique placement combination (e.g., an instance of the search tree 754 of FIG. 7B), for example, by tracking placement location combinations over iterations. The robotic system 100 can derive and track candidate placement locations for subsequent objects according to the processing order and / or remaining packages as described above. Thus, the robotic system 100 can iteratively derive the placement combination 744 of FIG. 7B.
[0151] In deriving the placement combinations 744 (e.g., a set of candidate locations 801), the robotic system 100 can iteratively derive and evaluate candidate stacking scenarios (e.g., possible placement of objects on top of objects at derived candidate locations 801). For example, the robotic system 100 can evaluate the set of candidate locations 801 in a layer according to the resulting top surface area, stability estimates, support estimates, and / or other criteria. The evaluated criteria can require / prefer that the discretized object model falls entirely within the horizontal boundaries of the placement zone. The placement criteria can also require that the placement of the discretized object model is within a threshold distance relative to the initial placement location and / or previous placement location (e.g., along a horizontal direction, etc.), for adjacent placement or spacing requirements, etc. Other examples of placement criteria can include a preference for adjacent placement of packages with a minimum difference(s) in one or more package dimensions (e.g., height), fragility rating, package weight range, or combinations thereof. In some embodiments, the placement criteria may include a collision probability that may correspond to a location and / or a characteristic (e.g., height) of an assigned package in a layer relative to a reference location (e.g., a location of a palletizing robot). Thus, the robotic system 100 can generate multiple unique placement combinations of package placement locations (i.e., candidate placement plans for each layer and / or candidate stacking scenarios each including multiple layers). In some embodiments, the robotic system 100 can track the placement of the combinations based on generating and updating a search tree 754 over the placement iterations.
[0152] Upon determining the placement positions of the 2D layer, the robotic system 100 can calculate / update a placement score for each combination / package placement. The robotic system 100 can calculate the placement score according to one or more of the placement conditions / settings (e.g., package dimensions, collision probability, fragility rating, package weight range, spacing requirements, package quantity requirements). For example, the robotic system 100 can use preference factors (e.g., multiplier weights) and / or formulas to describe preferences for spacing distance between packages, package dimensions / fragility rating / package weight differences for adjacent packages, collision probability, contiguous / adjacent surfaces at the same height, their statistical results (e.g., average, maximum, minimum, standard deviation, etc.), or combinations thereof. Each combination can be scored according to preference factors and / or formulas that may be predefined by the system manufacturer, order, and / or system operator. In some embodiments, the robotic system 100 can calculate the placement score at the end of the entire placement iteration.
[0153] In some embodiments, the robotic system 100 can update the sequence of placement combinations 744 in the priority queue 756 of Figure 7B after each placement iteration. The robotic system 100 can update the sequence based on the placement score.
[0154] The robotic system 100 can stop the placement iterations (e.g., completion of one placement plan candidate) based on determining an empty source status, a full layer status, or an invariant score status. The empty source status can represent that all available objects have been placed. The full layer status can represent that no other objects can be placed within the remaining area of the discretized container model under consideration. The invariant score status can represent that the placement score for the combination remains constant over one or more consecutive placement iterations. In some embodiments, the robotic system 100 can derive other instances of the stacking scenario candidate by repeating the placement iterations using different initial placement positions and / or different processing orders (e.g., to reorder groups with identical array values / scores associated with the array conditions). In other words, the robotic system 100 can generate multiple 2D placement plans, where each 2D placement plan can represent a layer in a 3D stack (e.g., an instance of a stacking scenario candidate). In other embodiments, the robotic system 100 can iteratively consider the 3D effects when the 2D placement plan is derived, and when the 2D placement plan is full, start deriving the next layer as the next iteration.
[0155] In block 1112, the robotic system 100 can calculate stacking scenarios for the 2D plans. In doing so, the robotic system 100 can convert each of the placement combinations 744 and / or the 2D placement plans to a 3D state, as shown in block 1152. For example, the robotic system 100 can assign height values of objects to the placement combinations 744. The robotic system 100 can generate a contour map (an estimate of a depth map) based on calculating a height dimension 802 for each discretized unit 602 / pixel of the container model (e.g., the container footprint model 622) according to the heights of the corresponding objects in the placement combinations 744. For multiple layers, the robotic system 100 can calculate a height dimension 802 that combines the heights of the objects planned to be placed / stacked at the pixelated positions.
[0156] The 3D state allows the robotic system 100 to evaluate the placement combination 744 according to one or more stacking rules (e.g., horizontal offset rule 776 of FIG. 7C , support spacing rule 786 of FIG. 7C , and / or vertical offset rule 790 of FIG. 7C ). As an illustrative example, the robotic system 100 can calculate a reduced score for placement combinations 744 or their flag positions that violate the overlap requirement 778 of FIG. 7C , overhang requirement 780 of FIG. 7C , vertical offset rule 790 of FIG. 7C , CoM offset requirement 784 of FIG. 7C , or a combination thereof, as described above. In one or more embodiments, the robotic system 100 can calculate a fragility rating for one or more objects, for example, by estimating the support weight in the stacked packages and comparing it to a corresponding fragility rating of the object planned for the lower layer.
[0157] In block 1154, the robotic system 100 can select the combination depending on the 3D score / update. In other words, the robotic system 100 can calculate the 3D placement score or update the placement score and select the combination accordingly. The robotic system 100 can use a predefined setting (e.g., weights and / or formulas) related to the placement cost and / or heuristic value for the 3D placement. The predefined 3D setting can be similar to a 2D setting, a group setting, an arrangement condition, or a combination thereof. For example, the 3D setting can be configured to calculate a collision probability based on the 3D state and calculate a score that prioritizes the placement combination with a lower collision probability. Also, the robotic system 100 can calculate the score based on the remaining packages 752, the size of the support area having a common height, the number of packed items of the 3D state, the height difference of the processed packages, or a combination thereof. In some embodiments, the robotic system 100 can update the sequence of the placement combinations 744 in the priority queue 756 depending on the score.
[0158] After the 3D state is processed, the robotic system 100 can update the 2D plan by deriving a placement for the next package in the remaining packages 752, such as in block 1110. The robotic system 100 can iterate the above process until a stopping condition, such as when all available packages 742 have been processed (i.e., an empty value / set for the remaining packages 752) and / or when the placement combination 744 cannot be improved (also referred to as a non-improved combination). Some examples of a non-improved combination can include when the currently processed placement displaces the last of the placement combinations 744 in the priority queue 756 due to one or more of the violations and / or when the placement score remains constant for a threshold number of iterations for the favored combination.
[0159] If a stop condition is detected, the robotic system 100 can select one of the derived placement combinations 744 depending on the placement scores (e.g., 2D and / or 3D relevance scores) and, accordingly, the robotic system 100 can designate the selected placement combination as the packing plan 700.
[0160] As an illustrative example, the robotic system 100 may implement the functions of blocks 1110 and 1112 differently. For example, in block 1110, the robotic system 100 may generate a 2D plan (e.g., an instance of the placement plan 350) for the bottom layer as described above. In doing so, the robotic system 100 may be configured to give heavier settings (e.g., higher parameter weights) for matching package heights, heavier package weights, and / or higher supportable weights for packages when considering placement and / or processing orders. The robotic system 100 may derive a first 2D plan for the base layer as described above for block 1110.
[0161] Once the first 2D layer is complete / full as described above to form the base layer, the robotic system 100 can convert the placement plan to a 3D state as described for block 1112. Using the 3D information, the robotic system 100 can identify one or more planar sections / areas of the base layer as described above. Using the planar sections, the robotic system 100 can iteratively / recursively derive package placement for the next layer above the base layer. The robotic system 100 can essentially consider each planar section as a new instance of discretization and test / evaluate different placements as described above for block 1110. In some embodiments, the robotic system 100 can derive the 2D placement using the placement surface, but can calculate the score over the entire placement area / space. Thus, the robotic system 100 can be configured to prioritize larger placement areas for subsequent layers without being limited by the preceding placement areas.
[0162] When the iterative placement process stops for the second layer, the robotic system 100 can calculate a planar section (e.g., a top surface having a height within a threshold range) for the derived layer to generate a 2D placement of the remaining packages / groups for the next up layer. The iterative layering process can continue until a stopping condition is met, as described above.
[0163] When deriving the second or higher layer 2D plan, the robotic system 100 can derive object placement locations where the to-be-placed object overhangs one or more objects below (i.e., objects in the lower layer 2D placement plan). For example, the robotic system 100 can derive a lower / first layer 2D plan where a first object (e.g., support package 774 in FIG. 7C ) is directly adjacent to a support wall 725 and separated by an object-wall spacing 726. When deriving a higher / stacked layer 2D plan, the robotic system 100 can derive a candidate location 801 for a second object (e.g., stacked object 724) to be stacked / placed on top of the first object, with a portion of the second object overhanging laterally beyond the periphery of the first object toward the support wall 725. The robotic system 100 can derive and validate the candidate location 801 for utilizing the support wall 725 to support the second object placement.
[0164] In block 1122, as an illustrative example, the robotic system 100 may derive candidate positions 801 related to wall support when deriving the 2D placement plan. In other words, the robotic system 100 may derive a position of the second object (e.g., object to be stacked 724) where the object directly contacts and is supported by the support wall 725 when the second object is placed. The robotic system 100 may further derive a position of the second object that is less than a threshold distance away from the support wall 725 such that the object may contact and be supported by the support wall 725 if the object is displaced during container transport. The candidate positions 801 may be within the discretized container model for placing the second object. The candidate positions 801 may also be such that the second object laterally protrudes beyond the perimeter(s) of the first object (e.g., overhangs the first object) and laterally protrudes toward the support wall 725.
[0165] In block 1124, the robotic system 100 can estimate one or more attributes of the candidate location 801. In other words, the robotic system 100 can calculate a likely physical outcome of placing the second object at the candidate location 801. The robotic system 100 can estimate the one or more attributes based on placing the first object model at the first placement location and placing the second object model at the candidate location.
[0166] In block 1132, the robotic system 100 may derive a combined object estimate 732 of FIG. 7 for a multiple overhang scenario. The multiple overhang scenario may include an intermediate object 799 of FIG. 7C overhanging an object below, and a candidate location 801 overhanging the intermediate object 799 or an object above it. In some embodiments, the robotic system 100 may track placement locations that overhang from a planned object below. Using the tracked status, the robotic system 100 may determine when the candidate location 801 overhangs a planned object below and one or more planned locations below also overhang other objects.
[0167] If the candidate location 801 corresponds to a multiple overhang scenario, the robotic system 100 may derive a combined object estimate 732 based on the candidate location 801 and the lowest estimated overhang location. The robotic system 100 may derive the combined object estimate 732 to estimate one or more attributes associated with the candidate location 801. The robotic system 100 may derive the combined object estimate 732 based on placing an object model of an object to be stacked / processed (e.g., the top package 772) at the candidate location 801 and placing object models planned to be placed below the candidate location 801, including an object model of an intermediate object 799. In some embodiments, the robotic system 100 may derive the combined object estimate 732 based on deriving a contour that coincides with or includes the outermost surface / edge of the set of placed object models. Thus, the robotic system 100 may derive a model or estimate that represents a set of overhanging stacked objects as one object.
[0168] In block 1134, the robotic system 100 may calculate the effective support and / or overhang dimensions. For example, the robotic system 100 may calculate the effective support 795 of FIG. 7C based on counting the number of discretized units 602 that overlap between the object models of stacked objects, such as top package 772 and supporting package 774, at the planned location. In the case of a multiple overhang scenario, the robotic system 100 may calculate the effective support 795 based on the overlap between the object model of top package 772 at candidate location 801 and a model of an object planned to be placed below candidate location 801. In some embodiments, the robotic system 100 may calculate the effective support 795 as the minimum amount of overlap between the model of the candidate location 801 and the model below, e.g., the supporting object furthest from the supporting wall 725. In other embodiments, the robotic system 100 may calculate the effective support 795 as the overlap between the top object and the bottom object. In yet other embodiments, the robotic system 100 may calculate the effective support 795 as the overlap of the coupled object estimate 732 with one or more objects below.
[0169] The robotic system 100 may also calculate the overhang dimension based on counting the number of discretized units 602 of the upper object model that extend beyond the periphery of the bottom object model toward the support wall 725. In some embodiments, the robotic system 100 may calculate the overhang dimension based on the portion of the upper object model (e.g., the number of discretized units 602) that remains away from the effective support 795.
[0170] At block 1136, the robotic system 100 may estimate a CoM position 782 of the object model above the candidate location. In some embodiments, the robotic system 100 may estimate the CoM position 782 based on accessing predetermined information within the object model and / or from the master data 252. Also, in some embodiments, the robotic system 100 may estimate the CoM position as a middle portion of the object model.
[0171] The robotic system 100 can further derive a relationship between the CoM location 782 and the object below. For example, the robotic system 100 can determine the CoM location 482 of the top package 772 relative to the periphery of the support package 774.
[0172] For a multiple overhang scenario, the robotic system 100 may derive a combined reference position 734 in FIG. 7C for the combined object estimate 732. The robotic system 100 may derive the combined reference position 734 based on combining CoM positions 782 of a set of stacked objects across the lateral area / dimension of the combined object estimate 732. The robotic system 100 may combine the CoM positions 782 based on calculating a weighted average or weight distribution as a function of the weights of the objects and the corresponding CoM positions 782 across the lateral area / dimension.
[0173] In block 1138, the robotic system 100 may estimate a pivot location 793 for the candidate location 801. The robotic system 100 may estimate the pivot location 793 as the portion of the supporting package 774 that has the greatest height according to the stacking scenario. If multiple portions of the supporting package 774 have the same height value or 3D state, the robotic system 100 may estimate the pivot location 793 as the portion(s) closest to the supporting wall 725. Thus, the robotic system 100 may estimate the pivot location as the perimeter of the supporting package 774.
[0174] In block 1140, the robotic system 100 may derive a shifted pose based on the candidate position 801. For example, if the candidate position 801 has the top package 772 away from (i.e., not in direct contact with) the support wall 725, the robotic system 100 may derive a shifted pose based on shifting the top object model from the candidate position 801 toward the support wall 725. The robotic system 100 may shift the top object model laterally until the model contacts the support wall 725. The robotic system 100 may also derive a shifted pose based on rotating the top object model about a pivot position. The robotic system 100 may ignore or reject the rotated pose if the CoM position 782 is above the support package 774. The robotic system 100 may maintain the rotated pose if the CoM position 782 is between the periphery of the support package 774 and the support wall 725. The shifted pose may represent, for example, the upper package 772 shifting from the candidate position 801 and / or leaning against the support wall 725 during transport of the container.
[0175] In block 1126, the robotic system 100 can derive the entry path 901 of FIG. 9A for placing the package 772 above at the candidate location 801. The robotic system 100 can derive the entry path 901 based on deriving a combination of the object model and the gripper model above. In some embodiments, the robotic system 100 can derive the model combination based on adjusting according to the engaged interface height 534 of FIG. 5C. The robotic system 100 can derive the entry path 901 based on placing a coupled model at the candidate location 801. Thus, the robotic system 100 can overlay the coupled model onto the container model and / or other object models.
[0176] In some embodiments, the robotic system 100 can derive the entry path 901 based on identifying the laterally extending lanes 912 in Figure 9C. As described above, the robotic system 100 can identify the laterally extending lanes 912 based on extending horizontal lines from the periphery / points of the coupled model toward the planned position of the robotic unit. In some embodiments, the robotic system 100 can widen the lanes 912 according to a predetermined gap distance.
[0177] Using the laterally extending lanes 912, the robotic system 100 can identify one or more potential obstacles. For example, the robotic system 100 can identify the potential obstacle as the leading object 902 in FIG. 9A (e.g., an object planned to be placed in front of the upper package 772) and / or the supporting wall 725 that overlaps the lane 912. In other words, the robotic system 100 can determine whether the laterally extending lanes 912 overlap one or more potential obstacles at the evaluated height.
[0178] As an illustrative example, the robotic system 100 can derive the entry path 901 by stepwise identifying lanes 912 at different heights as shown in block 1142, and iteratively identify potential obstacles in the lanes as shown in block 1144. In other words, the robotic system 100 can iteratively increase the height of the laterally extending lanes 912 according to the entry increment 903 if the lanes 912 overlap at least one potential obstacle. Thus, the robotic system 100 can identify a height at which the laterally extending lanes 912 clear all potential obstacles. Based on the identified height, the robotic system 100 can derive the path segment 904 of FIG. 9A and / or the final segment 906 of FIG. 9A. In this manner, the robotic system 100 can derive an entry path in reverse (e.g., from the candidate position 801 to the starting point) for simulating the transposition of the package 772 above. The laterally extending lane 912 can correspond to the space occupied by the end effector 304 and the upper package 772 during its lateral movement to the candidate location 801.
[0179] In block 1128, the robotic system 100 may validate the candidate locations 801 for object placement. The robotic system 100 may validate the candidate locations 801 when deriving placement locations for the packing plan 700. The robotic system 100 may validate the candidate locations 801 based on evaluating the estimated attributes according to corresponding rules / thresholds. In some embodiments, the robotic system 100 may identify a candidate location 801 that is directly adjacent to or in contact with a supporting wall (e.g., one or more perimeter boundaries of the object model of the candidate location 801 overlapping one or more boundaries of a container / wall). For the identified candidate location 801, the robotic system 100 may validate according to the corresponding rules. For example, the robotic system 100 may validate the candidate location 801 if the inferred attributes satisfy the wall support rule 794 of FIG. 7C and / or other related rules (e.g., the tilted support rule 796 of FIG. 7C and / or the multiple overhang rule 798 of FIG. 7C ) that represent one or more requirements for placing an object according to a predetermined relationship to a vertically oriented container portion.
[0180] For example, the robotic system 100 can validate the candidate location 801 based on determining that the effective support 795 (e.g., number of overlapping pixels) meets the overlap requirement 778 of Figure 7 for an object placed directly adjacent to a container wall and / or meets the wall support rule 794 for an object placed against a container wall. The robotic system 100 can also validate the candidate location 801 based on determining that the overhang dimension meets the overhang requirement 780 of Figure 7C for an object placed directly adjacent to a container wall and / or meets the wall support rule 794 for an object placed against a container wall. Additionally, the robotic system 100 may validate the candidate position 801 based on determining that the CoM position 782 satisfies the CoM offset requirement 784, for example, if the CoM position 782 is within a perimeter of the model of the support package(s) 774, within a threshold distance from such perimeter, and / or within a threshold distance from the CoM position of one or more support package(s) 774 (e.g., if the support package is planned to be stacked on top of other underlying objects). To validate the candidate position 801 for an object placed directly adjacent to a container wall, the robotic system 100 may additionally or alternatively validate the candidate position 801 if one or more offset poses (e.g., tilt angle 797 in FIG. 7 ) satisfy tilted support rule 796.
[0181] In some embodiments, as discussed above (e.g., with respect to block 1132), the robotic system 100 can identify a multiple overhang situation associated with or resulting from the candidate position 801. To validate the candidate position 801 associated with a multiple overhang situation, the robotic system 100 can evaluate the candidate position 801 (e.g., associated effective support 795 to the bottom, most offset, and / or other eligible underlying supporting object) according to the multiple overhang rules 798. Alternatively or additionally, the robotic system 100 can validate based on evaluating the coupled object estimation 732 according to the horizontal offset rules 776, the wall support rules 794, and / or one or more other rules described above. Thus, the robotic system 100 can validate the candidate position 801 associated with a multiple overhang situation if one or more calculated attributes satisfy the corresponding rules and requirements.
[0182] The robotic system 100 may also validate the candidate positions 801 based on the corresponding entry paths 901. The robotic system 100 may validate the candidate positions 801 that correspond to unobstructed entry paths 901 as described above. In some embodiments, the robotic system 100 may disqualify the candidate positions 801 if it is unable to successfully derive an entry path 901 from / to the candidate position 801 that avoids all potential obstacles 910. As described above, the robotic system 100 may utilize a combination of the gripper model and the corresponding object model, along with any gripping-related adjustments (e.g., considering the difference between the engaged interface height 534 and the extended interface height 532) when deriving / validating the entry path 901.
[0183] In some embodiments, the robotic system 100 may iteratively analyze a set of possible placement locations for the target object 112. As a result, the robotic system 100 may generate multiple validated locations for the same target object 112. In such a scenario, the robotic system 100 may be configured to select one validated location as the placement location for the object. For example, the robotic system 100 may calculate placement scores for corresponding locations during the validation process and select the location with the largest score. As an illustrative example, the robotic system 100 may calculate a higher placement score for a location corresponding to a larger effective support 795. Also, as an illustrative example, the robotic system 100 may calculate a higher placement score for a location associated with a shorter approach path.
[0184] As a further illustrative example, if a placed package is stacked on / over one or more processed packages, the robotic system 100 can eliminate any placement combinations 744 that violate the overlap requirement 778, overhang requirement 780, vertical offset rule 790, CoM offset requirement 784, or a combination thereof, described above. In one or more embodiments, the robotic system 100 can eliminate any placement combinations 744 that violate the fragility rating of one or more packages below the processed package, for example, by estimating the support weight on the stacked packages and comparing it to the corresponding fragility rating. The robotic system 100 can select a placement location based on the remaining combinations.
[0185] In some embodiments, the robotic system 100 may perform the method 1100, or portions thereof, offline, e.g., when an order and shipping manifest is received and before a set of objects of interest is available for real-time processing / placement. Alternatively or additionally, the robotic system 100 may perform the method 1100, or portions thereof, in real-time. For example, the robotic system 100 may perform a portion of the method 1100 for re-deriving a packing plan when a container has one or more of the unexpected features 1002 of FIG. 10. The robotic system 100 may acquire image data (e.g., sensor output 1000 corresponding to a top view image 1052 and / or a side view image 1054, all illustrated in FIG. 10) representing the container at the task location 116. The robotic system 100 may analyze the acquired image data, e.g., based on detecting and analyzing edges depicted therein, to detect or identify the presence of the unexpected features 1002. As described in more detail below, the robotic system 100 may evaluate the existing packing plan 700 for unexpected features 1002 and adjust / validate the existing packing plan 700.
[0186] If adjustments to the existing packing plan 700 are not available or cannot be validated, the robotic system 100 may perform portions of the method 1100. For example, the robotic system 100 may redetermine the packaging group (block 1106) and / or processing order (block 1108) for the objects associated with the existing packing plan 700. In some embodiments, the robotic system 100 may access the determined instances of the packaging group and / or processing order. The resulting information allows the robotic system 100 to rederiv a new 2D plan using the acquired image(s) instead of the container model(s). Thus, the robotic system 100 may derive a new instance of a packing plan that takes into account the unexpected features 1002 and replaces the existing packing plan 700.
[0187] In block 1116, the robotic system 100 can execute the packing plan 700 (derived from real-time or offline processing) for placing the available package 742 in the container(s). The robotic system 100 can execute the packing plan 700 based on communicating one or more motion plans, actuator commands / settings, or a combination thereof to corresponding devices / units (e.g., the transposition unit 104 in FIG. 1 , the actuation device 212 in FIG. 2 , the sensor 216 in FIG. 2 , etc.) according to the packing plan 700. The robotic system 100 can further execute the packing plan 700 based on executing the communicated information in the devices / units to transpose the available package 742 from the source location to the destination container. Thus, the robotic system 100 can place the available package 742 according to the corresponding 3D placement location in the packing plan 700.
[0188] FIG. 12 is a flow diagram of a second exemplary method 1200 of operating the robotic system 100 of FIG. 1 in accordance with one or more embodiments of the present technology. In some embodiments, the method 1200 can be implemented as a subroutine of a process corresponding to block 1116 of FIG. 11. For example, during or at the start of a real-time operation to place the available package 742 of FIG. 7B into a container, the robotic system 100 may obtain one or more pre-calculated packing plans (e.g., packing plan 700 of FIG. 7A), as shown in block 1201. The robotic system 100 may obtain a derived packing plan 700 (e.g., by offline calculation) before starting a real-time packing operation. The robotic system 100 may store the packing plan 700 in a storage device (e.g., storage device 204 of FIG. 2 and / or other computer-readable medium). The robotic system 100 may obtain or access an existing packing plan 700 by reading it from the storage device.
[0189] In block 1202, the robotic system 100 may acquire one or more images depicting the container (e.g., top view image 1052 and / or side view image 1054, both shown in FIG. 11 ) as shown in block 1202. As described above, the robotic system 100 may acquire images in real time via one or more of the sensors 216 associated with the task location 116 of FIG. 1 (e.g., top view sensor 310 and / or side view sensor 312 shown in FIG. 3 ). Thus, the robotic system 100 may acquire one or more real time images of a container (e.g., cart 410 or cage 420 shown in FIGS. 4A-4D ) designated to receive the available package 742 or a subset thereof. The robotic system 100 may acquire one or more images during or at the beginning of a real time operation to place the available package 742 into a container located at the task location 116. In other words, the robotic system 100 may obtain an image depicting the container before any object is placed therein or after one or more objects have been placed therein.
[0190] At decision block 1204, the robotic system 100 can determine whether one or more physical attributes of the container are as expected based on the real-time image(s). The robotic system 100 can analyze the acquired real-time image data to identify one or more physical attributes of the depicted container. For example, the robotic system 100 can implement an edge detection mechanism (e.g., a Sobel filter) to detect 2D and / or 3D edges depicted in the image data. The robotic system 100 can further identify corners and / or junctions connecting two or more edge segments. Based on the edges and corners / junctions, the robotic system 100 can identify an area enclosed by the edges as corresponding to a structure, such as a container and / or a portion thereof. The robotic system 100 can further validate the estimate of the container and / or a portion thereof based on predefined thresholds and / or templates corresponding to a specified container pose (e.g., position and / or orientation) at the task location 116, an expected size of the container, an expected dimension of the container, a set of tolerance measures, and / or other known or expected physical attributes of the container.
[0191] In estimating or recognizing the container depicted in the image data, the robotic system 100 may determine whether one or more physical attributes of the container are as expected. For example, the robotic system 100 may determine whether the location, shape, and / or orientation of the container walls (e.g., side walls and / or back wall) are as expected. The robotic system 100 may identify the state of the container based on comparing the estimated container or a portion thereof to a template. Additionally or alternatively, the robotic system 100 may calculate a confidence score associated with the estimation of the container and / or a portion thereof. The robotic system 100 may detect whether one or more physical attributes (e.g., a status of one or more container walls) are as expected if the corresponding portion is within a threshold range defined by the template and / or the corresponding confidence score meets an expected threshold. The robotic system 100 may detect an unexpected situation (e.g., an error situation associated with the container or one or more supporting walls thereof) if the corresponding portion exceeds a threshold range defined by the template and / or the corresponding confidence score fails to meet an expected threshold. The detection of an unexpected situation may refer to the detection of an unexpected feature 1002 in FIG.
[0192] In block 1206, the robotic system 100 may implement a current / active instance of the packing plan. For example, if the container at the task location 116 corresponds to the expected situation, the robotic system 100 may implement an existing instance of the packing plan 700 (i.e., one that has not been adjusted after the initial / offline calculation). Also, as described in more detail below, the robotic system 100 may implement an adjusted instance of the packing plan. The robotic system 100 may implement the packing plan based on controlling the robotic units (e.g., by sending commands / settings to the robotic units and executing the commands / settings at the robotic units) according to the packing plan 700. Thus, the robotic system 100 may place the available packages 742 in the corresponding placement positions in the containers according to the packing plan 700.
[0193] If the container at the task location 116 corresponds to an unexpected situation, the robotic system 100 may dynamically generate an actual container model, for example as shown in block 1208. In other words, the robotic system 100 can dynamically generate a container model that takes into account the real-time condition of the actual container (e.g., the unexpected feature 1002). For subsequent processing / analysis, the robotic system 100 can use the actual container model instead of the container model that represents the expected situation of the container (e.g., the container footprint model 622 in FIG. 6 and / or the container side model 624 in FIG. 6).
[0194] The robotic system 100 can dynamically generate an actual container model based on the real-time image data. For example, the robotic system 100 can dynamically generate an actual container model based on dividing the top-view image 1052 and / or the side-view image 1054 according to the discretization unit 602 of FIG. 6. The robotic system 100 can identify or estimate the reference position 604 of FIG. 6 (e.g., center and / or predetermined corner) for the container detected in the real-time image. The robotic system 100 can align or reorient the image such that one or more detected edges (e.g., edges coinciding with the reference position) having a predetermined relationship with the estimated reference position 604 are aligned with a predetermined reference direction / axis of the coordinate system and corresponding space. Based on the alignment of the reference positions and axes, the robotic system 100 can pixelate the real-time image(s) by identifying divisions based on the dimensions of the discretization unit 602.
[0195] In block 1210, the robotic system 100 may calculate the actual packing area / space within the container at the task location 116. The robotic system 100 may estimate a loading zone between the estimated container walls. For example, the robotic system 100 may identify or estimate a portion in the image data as a container wall based on one or more predetermined physical attributes of the wall (e.g., size, location, orientation, shape, color, etc.). The robotic system 100 may identify a portion in the image data between the walls as a loading zone of the actual container. In some embodiments, the robotic system 100 may identify the loading zone as a rectangular shaped area that coincides with the edge of the container wall / container bottom closest to the center of the container, aligned with one or more of the coordinate system axes. In other words, the robotic system 100 may identify the loading zone as an instance of an axis-aligned bounding box for the area / space between the container walls.
[0196] The robotic system 100 may further analyze the placement zone to calculate the actual packing area / space. For example, the robotic system 100 may calculate a size and / or a set of dimensions of the placement zone. In some embodiments, the robotic system 100 may calculate the size and / or a set of dimensions based on the discretized units 602. Thus, the robotic system 100 may express the actual packing area / space as a total amount of the discretized units 602 in the placement zone and / or a length along a coordinate system axis (e.g., a number of the discretized units 602). In calculating the size / dimension, the robotic system 100 may round down or ignore the discretized units 602 that extend beyond the placement zone (i.e., the discretized units 602 that overlap or partially include an area outside the container wall or container bottom).
[0197] At decision block 1212, the robotic system 100 can determine whether the calculated area / space is greater than one or more minimum threshold requirements for the packing area / space. For example, the robotic system 100 can compare the size / dimension of the placement zone to a minimum threshold generally applicable to all containers. Additionally or alternatively, the robotic system 100 can compare the size to the size of an existing packing plan 700.
[0198] If the available placement area / space cannot meet the compared threshold(s), then the robotic system 100 may reload or replace the container at the task location 116, as shown in block 1214, for example. For example, if the calculated placement area / space for a container at the task location 116 is below a minimum threshold, the robotic system 100 may communicate with the transport unit / robot and / or corresponding system to (1) remove the container at the task location 116 and / or (2) place a new / different container at the task location 116. If a new container is placed at the task location 116, then the robotic system 100 may acquire a container image, as described above, as shown in block 1202.
[0199] If the available placement area / space meets the minimum threshold, for example at block 1216, the robotic system 100 can calculate the pack contour. For example, the robotic system 100 can derive the AABB 730 based on the existing packing plan 700. The robotic system 100 can derive the AABB 730 as a representation of one or more physical attributes of the set of objects planned to be placed. The robotic system 100 can derive the AABB 730 according to a specified planar shape (e.g., a rectangle). The robotic system 100 can align the specified planar shape with the coordinate system axes and a perimeter point (e.g., an outermost one) of the packing plan 700. The robotic system 100 can then extend / move other / unaligned edges of the specified planar shape to match other perimeter points of the packing plan 700. In some embodiments, for example, the robotic system 100 can calculate a rectangle that represents the overall dimensions of the packing plan 700 along the coordinate system axes. Therefore, the robotic system 10 can calculate the AABB 730 that coincides with the outermost point of the existing packing plan 700.
[0200] At block 1218, the robotic system 100 may derive candidate pack placement locations. The robotic system 100 may derive candidate pack placement locations for adjusting placement of an existing packing plan in a container. In some embodiments, the robotic system 100 may derive the candidate pack placement locations as corners of the actual container model (e.g., placement area of the container). The robotic system 100 may derive the candidate pack placement locations such that the corners of the AABB 730 align with the corners of the actual container model. For example, the robotic system 100 may select the corners according to a predefined pattern / sequence. Based on the selected corners, the robotic system 100 may calculate the coordinates / offsets of the reference points of the AABB 730 and / or the actual container model such that the corresponding corners of the AABB 730 and the actual container model align or match.
[0201] Thus, the robotic system 100 may overlay the AABB 730 on the actual container model according to the candidate pack location such that the corresponding corners are aligned. At decision block 1220, the robotic system 100 may determine whether the overlaid pack contour at the candidate pack placement location fits within the available placement area / space. The robotic system 100 may determine the fit status depending on whether the AABB 730 overlays and / or extends beyond at least one perimeter of the actual container model. In some embodiments, the robotic system 100 may determine the fit status based on calculating a dimension of the AABB 730 (e.g., a number of discretized units 602 along a coordinate system axis) and comparing the calculated dimension to a dimension of the placement zone.
[0202] If the pack contour at the candidate pack placement location does not fit within the available placement area / space, for example, as shown in decision block 1222, the robotic system 100 may determine whether a termination condition has been reached. For example, the robotic system 100 may determine whether all possible candidate pack placement locations (e.g., all corners and / or other available locations associated with the actual container model) have been analyzed / processed. If the robotic system 100 determines that a termination condition has not been reached, the robotic system 100 may derive other candidate pack placement locations in block 1218. Thus, the robotic system 100 may iteratively process and analyze possible candidate pack placement locations until the fit status indicates that the AABB 730 fits within the actual container model or a termination condition is reached.
[0203] If the pack contour at the candidate pack placement location fits into the available placement area / space, for example, as shown in decision block 1224, the robotic system 100 may analyze the adjusted pack placement (e.g., packing plan 700 shifted according to the matching candidate pack placement location) as part of the validation process. For example, the robotic system 100 may analyze the adjusted pack placement based on one or more resulting entry paths and / or support requirements for one or more objects.
[0204] In some embodiments, the robotic system 100 can determine whether the existing packing plan 700 includes one or more placement locations for placing a corresponding object that is specified to be supported by a vertical wall of a container (e.g., the support wall 725 in FIG. 7A ). For example, the robotic system 100 can indicate the wall-supported locations during an initial derivation of the packing plan 700. Thus, the robotic system 100 can subsequently determine whether the existing packing plan 700 includes one or more wall-supported placement locations based on accessing the packing plan 700 and the predetermined instructions. Alternatively or additionally, the robotic system 100 can overlay the existing packing plan 700 onto an expected container model (e.g., the container footprint model 622 and / or the container side model 624 that do not take into account the unexpected feature 1002). The robotic system 100 can determine that the existing packing plan 700 includes one or more wall-supported placement locations when a portion of the existing packing plan 700 coincides with or is within a predetermined distance of a container wall portion of the expected container model.
[0205] The robotic system 100 may determine updated placement locations for the identified wall supported placement locations in the existing packing plan 700. For example, the robotic system 100 may calculate translation parameters (e.g., linear displacements along and / or rotations about one or more coordinate system axes) that represent the difference between the existing packing plan 700 and the matching candidate pack placement locations. The robotic system 100 may apply the translation parameters to the identified wall supported placement locations to determine the updated placement locations. As described further below, the robotic system 100 may analyze the updated placement locations with respect to the wall supports for validation purposes.
[0206] In some embodiments, the robotic system 100 can derive one or more updated instances of the approach path 901 of FIG. 9A corresponding to the possible adjusted position(s) of the packing plan 700 and / or its placement location. The updated instances of the approach path 901 can represent a motion plan associated with placing the corresponding object in the adjusted position corresponding to shifting the existing packing plan 700 to a compatible candidate pack position. The robotic system 100 can select one or more object placement locations for the validation analysis. For example, the robotic system 100 can select a placement location of an object that was initially placed according to the existing packing plan 700 for the validation analysis. Additionally or alternatively, the robotic system 100 can select one or more placement locations that form one or more perimeter edges or corners of the existing packing plan 700 for the validation analysis. For the selected placement location(s), the robotic system 100 can derive a corresponding approach path as described above (e.g., with respect to block 1126 of FIG. 11 ).
[0207] At decision block 1226, the robotic system 100 may determine whether the adjusted puck placement is valid. The robotic system 100 may validate the candidate puck placement locations based on the fit status. In other words, the robotic system 100 may use the fit status for preliminary validation / qualification. Thus, the robotic system 100 may eliminate any candidate puck placement locations that result in the AABB 730 fitting into the actual container model. The robotic system 100 may further validate the compatible candidate puck placement locations based on, for example, the corresponding updated entry path and / or updated wall support locations.
[0208] In some embodiments, the robotic system 100 may validate a suitable candidate puck location based on validating the updated wall supported resting location according to one or more rules configured to analyze support from vertically oriented structures (e.g., wall support rule 794, tilted support rule 796, multiple overhang rule 798, and / or other rules / requirements shown in FIG. 7C). The robotic system 100 may validate according to the rules described above (e.g., with respect to blocks 1110 and / or 1128 of FIG. 11). The robotic system 100 may validate a suitable candidate puck location if one or more or all of the updated wall supported resting locations satisfy one or more wall support related rules. Additionally or alternatively, the robotic system 100 may validate a suitable candidate puck location based on successfully deriving an updated entry path. In other words, the robotic system 100 can validate a suitable candidate puck position based on successfully deriving one or more or all of the updated instances of the approach path 901 for the selected reference position(s) that avoid the potential obstacle 910 in FIG. 9A.
[0209] If the robotic system 100 validates the candidate pack placement location, then the robotic system 100 may adjust the existing packing plan 700, as shown in block 1228, for example. The robotic system 100 may adjust the object placement location and / or the corresponding approach path 901 (e.g., motion plan) of the existing packing plan 700 in response to the validated candidate pack placement location. For example, the robotic system 100 may calculate a difference between the existing packing plan 700 and the above-mentioned matching candidate pack placement location, and a corresponding translation parameter representing the difference. The robotic system 100 may apply the translation parameter to the object placement location of the existing packing plan 700 to derive an adjusted / updated placement location associated with the validated pack placement location. In other words, the robotic system 100 may shift the existing packing plan 700 and the corresponding placement location in response to the candidate pack placement location. Thus, the robot system 100 can directly derive an updated placement position based on adjusting / shifting the initial placement position, for example, without repeating the initial processing used to derive the placement position described above (e.g., with respect to block 1110 of FIG. 11).
[0210] Alternatively or additionally, the robotic system 100 can calculate the difference between the initial and updated instances of the approach path 901 for the reference placement position. For example, the robotic system 100 can calculate the difference vector or parameters necessary to adjust the initial instance of the approach path 901 to generate its updated instance corresponding to the validated puck placement position. The robotic system 100 can adjust the remaining approach paths / motion plans for other object placements, for example, by applying the difference vector / parameters thereto. Thus, the robotic system 100 can directly derive the updated approach path / motion plan based on the difference vector / parameters, for example, without repeating the initial process used to derive the approach path 901 of the packing plan 700.
[0211] The robotic system 100 can implement the adjusted packing plan. For example, process flow can move to block 1206, where the robotic system 100 can implement the adjusted instance of the current / active instance of a packing plan, e.g., packing plan 700. Thus, the robotic system 100 can implement the adjusted packing plan for placing a set of objects into a container.
[0212] If the robotic system 100 is unable to validate a candidate pack placement location, the robotic system 100 may determine whether an end condition has been reached, for example, as shown in decision block 1222. As described above, the robotic system 100 may iteratively consider multiple candidate pack placement locations. If an end condition is reached, for example, if none of the available / analyzed candidate pack placement locations provide an AABB 730 that fits within the actual packing area / space, the robotic system may execute a solution, as shown in block 1230. In some embodiments, executing a solution may include reloading the container at the task location 116, as described above with respect to block 1214.
[0213] In some embodiments, executing the solution may include a dynamic pack planning process. In other words, the robotic system 100 may dynamically rederive a new packing plan to replace an existing packing plan. For example, the robotic system 100 may perform the method 1100 of FIG. 11 or a portion thereof to derive a new packing plan for a container associated with an unexpected feature. For dynamic rederive, the robotic system 100 may identify a set of objects originally specified to be placed in the container and models representing such objects, as shown in block 1232. The robotic system 100 may identify a unique type / category of the object originally intended to be placed in the actual container at the task location 116. The robotic system 100 may also obtain an object model (e.g., object footprint model 612 and / or object side model 614 shown in FIG. 6) representing the identified unique object type / category.
[0214] At block 1234, the robotic system 100 may obtain the object groups and / or orders. In some embodiments, the robotic system 100 may store the object groups / orders calculated during the initial derivation of the packing plan. The robotic system 100 may obtain the object groups and / or orders by accessing the stored information. Alternatively or additionally, the robotic system 100 may reprocess the groups / orders as described above (e.g., with respect to blocks 1106 and / or 1108 of FIG. 11 ).
[0215] The robotic system 100 can process the resulting information to derive a new instance of the 2D plan, for example, as described above for block 1110 of Figure 11. For the derivation, the robotic system 100 can use the actual container model instead of an assumed container model that does not take into account the unexpected features 1002.
[0216] For example, the robotic system 100 can determine candidate locations for placing the set of identified objects. The robotic system 100 can overlay the object models onto the actual container model according to the determined candidate locations. The robotic system 100 can analyze the overlayed models and validate the candidate locations based on one or more placement rules described above.
[0217] conclusion The above detailed description of embodiments of the disclosed technology is not intended to be exhaustive or to limit the disclosed technology to the precise form disclosed above. Although specific embodiments of the disclosed technology are described above for illustrative purposes, those skilled in the art will recognize that various equivalent modifications are possible within the scope of the disclosed technology. For example, although processes or blocks are presented in a given order, alternative embodiments may perform routines having steps in a different order or employ systems having blocks in a different order, and some processes or blocks may be removed, moved, added, subdivided, combined, and / or modified to provide alternative combinations or sub-combinations. Each of these processes or blocks may be implemented in a variety of different ways. Also, while processes or blocks may be shown to be performed in a sequence, 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 embodiments may employ different values or ranges.
[0218] These and other changes can be made to the disclosed technology in light of the above detailed description. Although the detailed description describes the best mode contemplated as well as specific examples of the disclosed technology, no matter how detailed the above description may appear in text, the disclosed technology can be practiced in many ways. The details of the system may vary widely in its particular embodiment and still be encompassed by the technology disclosed herein. As mentioned 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 to which the term relates. Thus, the present invention is not limited except as set forth in the appended claims. In general, the terms used in the following claims should not be construed to limit the disclosed technology to the specific examples disclosed herein, unless the above detailed description section expressly defines such terms.
[0219] Although certain aspects of the invention are presented below in particular claim forms, Applicant contemplates various aspects of the invention in any number of claim forms, and accordingly, Applicant reserves the right to pursue additional claims after filing this application to pursue such additional claim forms in this application or any continuing application.
Claims
1. 1. A tangible, non-transitory computer-readable medium having stored thereon processor instructions that, when executed by one or more processors, cause the one or more processors to perform a method, comprising: The method comprises: acquiring a real-time image representative of a container that is at a task location and that is designated to receive a set of objects according to an existing packing plan; dynamically generating a real container model based on a division of the real-time image according to discretization units; deriving candidate pack plans for adjusting placement of objects in the existing packing plans within the container based on the actual container model and / or candidate pack plans for adjusting positions of the existing packing plans within the container based on the actual container model; adjusting the existing packing plan according to the candidate pack plan; implementing the adjusted packing plan to place the set of objects within the container using a robotic arm and an end effector; 4. A tangible, non-transitory computer readable medium comprising:
2. The method comprises: detecting an unexpected situation based on analyzing an outline of the container and / or one or more walls of the container depicted in the real-time image; dynamically generating the actual container model, deriving the candidate packing plan, adjusting the existing packing plan, and implementing the adjusted packing plan are responsive to detecting the unexpected situation. The tangible, non-transitory computer readable medium of claim 1 .
3. The method comprises: calculating a packing contour based on the existing packing plan, the packing contour representing physical attributes of the set of objects; determining a match status based on comparing the packing contour at the location of the candidate pack plan to the actual container; The existing packing plan is adjusted according to the conformance status. The tangible, non-transitory computer readable medium of claim 1 .
4. The conformance status is: deriving an updated approach path representing a motion plan associated with placing a reference object within the set of objects at an adjusted position corresponding to shifting an initial packing plan to a position of the candidate pack plan; validating the candidate pack plan based on successful derivation of the updated approach path; 4. The tangible, non-transitory computer readable medium of claim 3, comprising:
5. The tangible, non-transitory computer readable medium of claim 4 , wherein the updated approach is for placing a first object in a placement sequence of the packing plan.
6. The tangible, non-transitory computer-readable medium of claim 4 , wherein the updated approach path represents the motion plan relative to a location of the reference objects that form a perimeter edge or corner of the packing plan.
7. the existing packing plan includes a set of initial locations for placing a corresponding set of objects within the container; adjusting the existing packing plan includes shifting the set of initial placement locations based on the candidate pack plan. The tangible, non-transitory computer readable medium of claim 1 .
8. Adjusting the existing packing plan includes: deriving an updated approach path representing a motion plan associated with placing a reference object within the set of objects at an adjusted position corresponding to shifting an initial packing plan to a position of the candidate pack plan; adjusting existing motion plans for remaining objects in the set of objects based on a difference between (1) the updated entry path for the reference object and (2) a previous entry path for the reference object according to the existing packing plan; 8. The tangible, non-transitory computer readable medium of claim 7, comprising:
9. The method comprises: determining whether the existing packing plan includes a location for placing an object within a threshold distance from a vertical wall of the container; determining an updated placement position based on the placement position for placing the object; adjusting the existing packing plan includes validating the updated placement locations according to one or more rules configured to analyze support from a vertically oriented structure. The tangible, non-transitory computer readable medium of claim 1 .
10. Adjusting the existing packing plan includes: obtaining an object model representing the set of objects; determining candidate locations for placing the set of objects; overlaying the object model onto the actual container model according to the candidate locations; validating the candidate locations based on one or more placement rules; 2. The tangible, non-transitory computer-readable medium of claim 1, further comprising dynamically re-deriving a new packing plan based on the packing plan.
11. a communication device configured to acquire real-time images representative of a container that is at a task location and that is designated to receive a set of objects according to an existing packing plan; at least one processor coupled to the communications device; Equipped with The at least one processor dynamically generating a real container model based on a division of the real-time image according to discretization units; deriving candidate pack plans for adjusting placement of objects in the existing packing plans within the container based on the actual container model and / or candidate pack plans for adjusting positions of the existing packing plans within the container based on the actual container model; adjusting the existing packing plan according to the candidate pack plan; implementing the adjusted packing plan to place the set of objects within the container using a robotic arm and an end effector; A robot system that performs the above operations.
12. The at least one processor calculating a packing contour based on the existing packing plan based on determining an axis aligned bounding box (AABB) for the existing packing plan, the AABB including one or more rectangles that are (1) aligned according to a set of predetermined axes and (2) coincident with outermost points of the objects represented in the existing packing plan; adjusting the existing packing plan so that the AABB is in the candidate pack plan and is contained within an accessible area defined by walls and / or boundaries of the actual container model; The robot system of claim 11 .
13. The at least one processor deriving an updated approach path representing a motion plan associated with placing a reference object within the set of objects at an adjusted position corresponding to shifting the packing plan to a position of the candidate pack plan; adjusting the existing packing plan based on successfully deriving the updated approach path; and The robot system of claim 11 .
14. The at least one processor determining whether the existing packing plan includes a location for placing an object within a threshold distance from a vertical wall of the container; adjusting the existing packing plan based on determining an updated placement location for the object; validating the updated resting position according to one or more rules configured to analyze support from a vertically oriented structure; and The robot system of claim 11 .
15. The at least one processor obtaining an object model representing the set of objects; determining candidate locations for placing the set of objects; overlaying the object model onto the actual container model according to the candidate locations; validating the candidate locations based on one or more placement rules; adjusting the existing packing plan by dynamically re-deriving a new packing plan based on The robotic system of claim 11.
16. 1. A method for operating a robotic system, comprising: acquiring a real-time image representative of a container that is at a task location and that is designated to receive a set of objects according to an existing packing plan; dynamically generating a real container model based on a division of the real-time image according to discretization units; deriving candidate pack plans for adjusting placement of objects in the existing packing plans within the container based on the actual container model and / or candidate pack plans for adjusting positions of the existing packing plans within the container based on the actual container model; adjusting the existing packing plan according to the candidate pack plan; implementing the adjusted packing plan to place the set of objects within the container using a robotic arm and an end effector; A method comprising:
17. detecting an unexpected situation based on analyzing an outline of the container and / or one or more walls of the container depicted in the real-time image; dynamically generating the actual container model, deriving the candidate packing plan, adjusting the existing packing plan, and implementing the adjusted packing plan are responsive to detecting the unexpected situation.
17. The method of claim 16.
18. calculating a packing contour based on the existing packing plan, the packing contour representing physical attributes of the set of objects; determining a match status based on comparing the packing contour at the location of the candidate pack plan to the actual container; The existing packing plan is adjusted according to the conformance status.
17. The method of claim 16.
19. Adjusting the existing packing plan includes: deriving an updated approach path representing a motion plan associated with placing a reference object within the set of objects at an adjusted position corresponding to shifting the packing plan to a position of the candidate pack plan; validating the candidate pack plan based on successful derivation of the updated approach path; 17. The method of claim 16, comprising:
20. determining whether the existing packing plan includes a location for placing an object within a threshold distance from a vertical wall of the container; Adjusting the existing packing plan includes: determining an updated placement position for the object; and validating the updated resting position according to one or more rules configured to analyze support from a vertically oriented structure.
17. The method of claim 16.
Citation Information
Patent Citations
Abnormality forecasting system for automatic freight loading device
JP1987019963A
Control device for articulated robot and its control method
JP1998080881A
Optical device for automatic loading and unloading of containers on vehicles
JP2006504595A
Interference determination method, interference determination system, and computer program
JP2019084649A
How to use a gripper robot to automatically load objects into boxes
JP2019529128A