Method, system and device for controlling movement of conveyance device
The system optimizes container placement and movement in warehouse environments using path-finding algorithms and machine learning to enhance storage density and operational efficiency.
Patent Information
- Application Number
- JP2025127129
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2014-06-03
- Filing Date
- 2025-07-30
- Publication Date
- 2025-12-03
AI Technical Summary
Existing storage and retrieval systems for multiple product lines have low storage density due to the need for aisle space, which affects the efficiency and scalability of warehouse operations.
A system and method for controlling the movement of transport devices that optimize routes, avoid collisions, and distribute containers based on demand and accessibility, utilizing path-finding algorithms, machine learning, and congestion mitigation techniques.
Enhances storage density and operational efficiency by optimizing container placement and movement, reducing travel distances, and minimizing collisions in warehouse environments.
Smart Images

Figure 2025176005000001_ABST
Abstract
Description
[Technical Field]
[0001] The present invention relates to a method system and apparatus for controlling the movement of a conveying device. More particularly, but not exclusively, the invention relates to a storage system and method for retrieving units from the storage system. In particular, but not exclusively, the invention further relates to a system and method for coordinating and controlling product movement. Summary of the Invention
[0002] Certain commercial and industrial activities require systems that allow for the storage and retrieval of a large number of different products.
[0003] One known system for storing and retrieving items in multiple product lines involves placing storage bins or containers on rows of shelves arranged in aisles, each holding one or more products of one or more product types. The aisles provide access between the rows of shelves so that requested products can be retrieved by workers or robots patrolling the aisles.
[0004] However, it will be appreciated that the need to provide aisle space for access to the products means that the storage density of such systems is relatively low - in other words, the amount of space actually used for product storage is relatively small compared to the amount of space required for the storage system as a whole.
[0005] For example, online retail businesses selling multiple product lines, such as online grocery stores and supermarkets, need systems that can store dozens, hundreds, or even thousands of different product lines. The supply chain and warehouse operations of these businesses depend heavily on their ability to organize, retrieve, and return items to and from various containers.
[0006] In certain implementations of various warehouse and storage facility designs, containers may be stacked on top of one another and the stacks may be arranged in rows, which may then be accessed from above, eliminating the need for aisles between rows and allowing additional containers to be stored in a given volume or area.
[0007] In some of these implementations, the containers are accessed by one or more robotic or automated means that move through a grid of paths to access the containers for a variety of different operations, such as moving the containers from one location to another for handling, performing operations on the containers, returning the containers to positions in the warehouse, etc.
[0008] Coordination of the movement of one or more robotic or otherwise automated means may be an important consideration in determining the overall efficiency and scalability of the system for storage and retrieval of a large number of different products.
[0009] U.S. Patent No. 6,654,662 and European Patent No. 1,037,828 describe storage and retrieval systems in which "parallel pipe-shaped" containers are "deeply stacked and interlocked" in a vertical framework forming several horizontal layers of containers in which the positions of the containers are always random. A computer system continuously monitors and records the positions of the containers, retrieves desired containers from the top of the framework, and unwanted containers are moved one at a time and repositioned in temporary locations until the desired container is retrieved, at which point the temporarily repositioned containers are returned to the same stack and in the same relative order, at which point the desired container is (eventually) returned to the top of the original stack.
[0010] The systems described in U.S. Patent No. 6,654,662 and EP 1 037 828 have several horizontally coordinated layers of containers in which the positions of the containers are always random. Furthermore, temporarily rearranged containers are returned to their original stacks so that their relative order is maintained and the desired container is returned to the top of the stack.
[0011] In contrast to the system provided, it may be advantageous to provide planned container placement that may be optimized in horizontal and vertical regions based on different criteria such as traffic flow, frequency of access (historical, current, and predicted), specific container groupings, access times, fire resistance, and / or other environmental classifications.
[0012] Therefore, there is a need for a system and process that coordinates and controls the movement of products.
[0013] According to some embodiments of the invention, a system is provided for controlling the movement of one or more transport devices transporting a plurality of objects and operating in a facility having a plurality of paths, the system comprising: one or more computers configured to execute computer instructions; When executed, the computer instructions one or more utilities that determine and reserve routes for moving one or more transport devices through a plurality of paths; One or more utilities provide a clearance system that allows or stops the movement of one or more transport devices to avoid collisions.
[0014] In some embodiments, the system further comprises one or more utilities configured to optimize the movement and actions of one or more transport devices through the multiple paths.
[0015] In some embodiments, the system further comprises one or more utilities configured to optimize placement of a plurality of objects by one or more transport devices in the facility.
[0016] In some embodiments, the system further comprises one or more utilities that control movements or actions that occur within one or more workstations.
[0017] In some embodiments, one or more utilities that optimize movement and actions utilize a path-finding algorithm.
[0018] In some embodiments, one or more utilities use congestion mitigation techniques to optimize travel and actions.
[0019] In some embodiments, one or more utilities use machine learning techniques to optimize movements and actions.
[0020] In some embodiments, the one or more utilities optimize the placement of a plurality of objects within the facility and update inventory levels for the facility based on the placement of one or more of the plurality of objects within the facility.
[0021] In some embodiments, one or more utilities control the movement of one or more of the transport devices based at least on the throughput of one or more workstations.
[0022] In some embodiments, the one or more utilities provide a clearance system configured to tolerate missed communication with at least one of the one or more transport devices.
[0023] In some embodiments, one or more utilities determine and book routes and command multiple transport devices to cooperate in transporting one or more of the multiple objects.
[0024] In some embodiments, one or more utilities determine and reserve routes and move idle transport devices off otherwise optimal routes relative to other transport devices.
[0025] In some embodiments, one or more of the plurality of objects are stored in a plurality of containers.
[0026] In some embodiments, the facility stores multiple containers in multiple stacks.
[0027] In some embodiments, one or more utilities determine and reserve routes for transporting one or more of the plurality of containers.
[0028] In some embodiments, one or more utilities determine and book routes and control one or more of the plurality of transport devices to retrieve one or more of the plurality of containers from within one or more of the plurality of stacks.
[0029] In some embodiments, removing one or more containers from one or more stacks further requires moving one or more other containers in the stacks before accessing the one or more containers for removal.
[0030] In some embodiments, placing the one or more other containers includes placing each of the one or more other containers in an optimized position within the facility.
[0031] In some embodiments, the facility is divided into multiple sub-grids to reduce processing complexity.
[0032] In some embodiments, one or more control commands for controlling movement of the plurality of transport devices are provided to the plurality of transport devices prior to movement of the plurality of transport devices.
[0033] In various aspects, the disclosure herein provides methods, systems, and corresponding machine-executable coded instruction sets for coordinating and controlling product movement in at least semi-automated order fulfillment systems having facilities for holding. In various aspects, the disclosure provides improvements in coordinating and controlling the movement of various cargo-handling robots in fulfilling orders, which may, in some instances, include various items having different sizes, weights, fragility, and other characteristics.
[0034] In various embodiments above and in other aspects, such holding facilities can include one or more storage devices. In the same or other embodiments, at least a portion of the holding facilities can be configured to move dynamically.
[0035] In the same or other embodiments, the holding equipment may be shared between two or more workstations.
[0036] The invention is now described with reference to the accompanying diagrammatic drawings, which are intended to be illustrative and not restrictive, and in which like references are intended to refer to like or corresponding parts. [Brief explanation of the drawings]
[0037] [Figure 1] FIG. 1 is an illustrative diagram providing a general computer hardware and software implementation of certain embodiments detailed in the description. [Figure 2] FIG. 2 provides a sample block diagram of a system according to some embodiments of the invention. [Figure 3] FIG. 3 provides a sample block diagram of a more detailed robotic control system according to some embodiments of the invention. [Figure 4]FIG. 4 provides an example workflow for an example iterative pathfinding algorithm according to some embodiments of the invention. [Figure 5] FIG. 5 provides a sample heat map according to some embodiments of the invention. [Figure 6a] 6a provides a table demonstrating how the estimated cost of a search branch can vary as a result of using different coefficients in the path search algorithm, which can be derived using machine learning techniques refinement according to some embodiments of the invention. [Figure 6b] FIG. 6b illustrates how the use of different cost factors demonstrated in FIG. 6a changes which branch is selected by the next iteration of the search algorithm. [Figure 7] FIG. 7 provides a perspective view of a sample warehouse according to some embodiments of the invention. [Figure 8] FIG. 8 provides a sample diagram of a robot with a winch and a container, according to some embodiments of the invention. Detailed Description
[0038] Preferred embodiments of methods, systems and apparatus suitable for use in practicing the invention are described through reference to the drawings.
[0039] Automated and semi-automated cargo storage and retrieval systems, various aspects of which are sometimes referred to as "order fulfillment," "storage and retrieval," and / or "order picking" systems, can come in a wide variety of types and forms. One method of providing access to stored cargo for automated and / or semi-automated retrieval includes, for example, placing the cargo, which may be of any desired type, in bins or other containers (hereinafter collectively referred to as containers), stacking and / or otherwise arranging the containers vertically in racking or in layers, such that individual containers may be accessible by a fully or partially automated container retrieval system.
[0040] In some embodiments, the system may include systems beyond cargo storage and retrieval, such as systems that process, repair, manipulate, assemble, sort cargo, etc., requiring movement of cargo, products, parts, components, and subcomponents both within the facility and / or to other facilities or vehicles.
[0041] For purposes of this specification, a storage facility for storing, retrieving, processing, and / or fulfilling orders, where access to such cargo is provided by fully or semi-automated retrieval, is referred to as a "hive." A "hive" may consist of a grid-like layout of potential paths for movement of robotic elements or devices ("robots") through and to perform operations at various locations in the "hive" (referred to as a "grid").
[0042] This specification is not limited to systems having only "hibs," "lattices," and / or "robots," but may also contemplate systems that broadly control and / or coordinate the movements and / or activities of multiple devices. These devices may be configured for the transport of various items, such as cargo and / or products, and / or for the transport of containers that may be empty and / or hold such cargo and / or products. These devices may also involve order fulfillment, but may also involve some other type of activity, such as transporting containers to and from workstations, moving objects from source locations to target locations, etc.
[0043] As shown, the devices may be robotic and configured to move around the Hib and / or communicate with a control system to coordinate / receive instructions for their movement. In some embodiments, the devices may be configured to communicate among themselves and / or coordinate their movement among themselves. Thus, the devices may have various transport means, communication means, powering means, processing means, processor means, sensor means, monitoring means, on-board workstations, electronic / physical storage means, and / or lifting / transporting means (such as winches, arms, etc.).
[0044] A device may be configured to receive instructions from a system, but there may be situations where the device loses communication with the system, degrades the communication path, and / or does not receive communication from the system within a particular time frame.
[0045] In some embodiments, devices may also be configured to communicate among themselves and / or sense each other's presence. For example, these communications and / or sensory inputs may be utilized in crowdsourcing information about the environment, verifying instructions, etc., providing an extra communication channel.
[0046] Order fulfillment may include various operations such as, but not limited to, assembling the order, such as for a grocery store chain where various products are purchased and aggregated for delivery to a customer; assembling a product having various subcomponents; performing various operations on the product (such as bonding components together); sorting the product, etc.
[0047] For example, an order may be returned if it is canceled, if delivery fails, etc. In some scenarios, an order may be canceled while the order is in the process of fulfillment within HIB, and product items may need to be returned. In some scenarios, items may need to be placed back into the container, and the container may need to be moved to various locations. In some scenarios, a workstation may need to perform tasks to reject / rework product when an order is returned or canceled.
[0048] Additionally, as noted above, individual containers may be in vertical layers, and their locations in "Hibs" may use coordinates in three dimensions to represent the position of the robot or container and the depth of the container (e.g., (X, Y, Z), container at depth W). In some embodiments, locations in "Hibs" may be shown in two dimensions to represent the position of the robot or container and the depth of the container (e.g., (X, Y), container at depth Z).
[0049] "Hibs" itself may be a "dynamic" environment in the sense that robot and workstation locations may be associated with different parts of Hibs to engage in actions. For example, a robot may need to access a particular container at a particular location in the Hibs dimensions (e.g., a container at (X, Y, Z), depth W) to fulfill a particular order or to store a product in "Hibs." This involves moving the robot along a variety of possible paths, for example, along the top of a grid and then at a selected depth in a stack to access a particular container.
[0050] Accessing a particular container at a selected depth in the stack may require movement of containers that may otherwise impede the ability to access the particular container (e.g., if containers are stacked, multiple containers must first be moved to allow access to containers that are not at the accessible end of the stack). In some embodiments, it may be advantageous to configure the system to provide new position evaluation and optimization for each container that is to be removed to access the target container.
[0051] A container that has been moved out of a stack does not need to be moved back into the stack it came from.
[0052] One potential advantage is the ability to modify the distribution of containers so that containers can be positioned in more easily accessible or otherwise more convenient locations.
[0053] This may help maintain an optimal distribution of containers within the facility, for example, by biasing containers that are expected to be in higher demand to be in more easily accessible locations, such as locations close to or within a workstation, to reduce travel distances.
[0054] FIG. 7 provides a perspective view of a sample warehouse according to some embodiments of the invention.
[0055] The robots may have a variety of shapes, sizes, and configurations and may have a variety of communications means, sensors, and tools. In some embodiments, each robot may be able to communicate with a control system over a set of frequency channels established through a set of base stations and base station controllers. The robots may utilize a variety of tools, including, for example, winches for carrying containers, to move and retrieve containers from the stack.
[0056] FIG. 8 provides a sample diagram of a robot with a winch and a container, according to some embodiments of the invention.
[0057] The grid is not limited to rectangular grid elements, but may also consist of curved tracks, undulating tracks, etc. The grid paths may have intersections and may be accessed by more than one robot.
[0058] Each grid may be physically or logically segmented into one or more sub-grids.
[0059] The grid may consist of one or more workstations, which may be manual, semi-automated, or fully automated, and may comprise locations or areas where operations such as moving products in or out of the Hib, manufacturing products, assembling products, processing products into their components, providing staging locations to support other steps or operations, etc., are performed within the Hib or in relation to the Hib, containers, or products.
[0060] Workstations may include, for example, locations where items are moved from inbound carriers, locations where products have various operations performed on them (e.g., component assembly, painting, sorting, packaging, removal, reworking product, fixed packaging, relocating product in canceled orders, rejecting returned product, placing product), locations where products are moved to outbound carriers, locations with cooling capabilities, locations where components or objects are assembled, locations used to stage or pre-empt product, locations where robots are repaired and maintained, locations where robots are charged, locations where workers "pick" products to be placed in containers, locations where workers "pick" products to be removed from containers in order fulfillment, locations where bags are placed in containers, etc.
[0061] If an item / product is returned to Hib, the system may support and / or control the process of returning the product again, reworking the product, and / or disposing of the product if rejected. Scenarios may involve processing the returned container (which may be a shipping tote or other object as well) at a workstation in some embodiments to determine whether the product can be accepted back into the system, whether the product requires rework / repackaging, and / or whether the product should be disposed of instead (e.g., a perishable product is expired).
[0062] A workstation may have one or more workers or robots present to perform various tasks, such as picking items for order fulfillment.
[0063] In some embodiments, the workstations may be conveyor, refrigeration, stations with various tooling technologies, and / or other technologies for manipulating, painting, securing, repairing, freezing, heating, chemically exposing, refrigerating, filtering, assembling, disassembling, sorting, packaging, scanning, testing, transporting, storing, or processing cargo, containers, etc.
[0064] Workstations may have their own paths within the facility, may share paths with the facility, etc. Workstations may also have various input and output paths or other types of entry / exit points within the facility.
[0065] In some embodiments, the workstation communicates with one or more warehouse management systems to provide information and data related to the status of the workstation, workflow, required containers, issues, products being held or otherwise manipulated (e.g., subcomponents being assembled together), etc.
[0066] Upon receipt of a customer order for multiple items stored in the storage and retrieval system, a fully automated or semi-automated container handler may retrieve storage containers containing the associated items from a grid, racking, or other arrangement of ordered storage containers and deliver them to one or more workstations.
[0067] At the workstation, items may be removed from the storage container and placed in an intermediate holding facility before being picked into a shipping container.
[0068] As noted throughout this specification, it may be advantageous to distribute containers so that containers that are likely to be inputs to certain workstations are located in close proximity to those workstations.
[0069] Picking of items from containers may be done manually by a human picker, or may be done in a semi-automated or fully automated manner with the assistance or participation of various mechanical or robotic elements.
[0070] When individual containers are stacked vertically in layers, accessing a container that is not in the top layer requires an additional set of operations to move containers stored in the layer above the desired container before the desired container can be accessed. For example, if the desired container is one level below the top layer, a container residing in the top layer may need to be moved to another location before the desired container can be accessed. As indicated throughout this specification, it may be advantageous to distribute containers in a way that biases containers holding items in higher demand toward more easily accessible positions (e.g., the top level in the case of a vertical stack of containers). In some embodiments, the optimization module provides optimal locations for these containers to be positioned.
[0071] In a typical product picking operation adapted to handle a wide variety of items, such as a grocery store order processing system, it is sometimes found that a wide range of items of different sizes, shapes, weights, and other characteristics must be handled or otherwise accommodated, and that these items must be moved around the equipment to various stations to perform various operations during the fulfillment of one or more orders. Depending on the size, organization, and layout of the equipment, the movement of these items may be advantageously optimized so that items are moved efficiently, collisions are avoided, and dependencies are resolved (e.g., objects are picked and unloaded in the proper order).
[0072] The various actions involved in these work groups, such as placing items in different types of containers, storing containers within Hib, and sorting / distribution as described, can result in various movements of containers that are contained within Hib but also include placing containers at different locations. These actions may include inbound / outbound activities for Hib (e.g., transporting items to and from the warehouse) and associated sorting / distribution systems, such as managing the transportation of products off-board vehicles for storage / distribution and on-board vehicles for order fulfillment.
[0073] In other embodiments of the invention, workstations may be utilized to provide other types of item or container handling, such as workstations that perform actions on items (e.g., assembly, removal, modification, sorting, drying, freezing, testing, chemical exposure, physical manipulation, fastening, repair, printing, painting, cutting, packaging, storing, treating, welding, tempering, reprocessing). These workstations may be manual, semi-automated, or automatic and may have various parameters associated with their operation or performance, such as throughput, required input, required output, load balance, required delay (e.g., drying time), etc.
[0074] Control over the various movements of the robot, placement of the container / object, and selection of when to remove products from the container may be controlled and optimized by one or more control systems. This control may include, for example: centralized management of one or more robots; managing the robot not only to retrieve containers for processing but also to "pre-fetch" containers to more convenient locations, for example, closer to or within the workstation; Path optimization through the application of one or more path discovery algorithms (e.g., branch and bound techniques); Path optimization through the application of one or more heuristic techniques to one or more path discovery algorithms (e.g., in one embodiment of the invention, lowest predicted cost for congestion relief on the grid when viewed as a whole, where the cost may be calculated as a function of total time to target and total "accumulated heat"); Scheduling / preprocessing travel routes in advance; Conducting simulations to determine the optimal depth of analysis when scheduling / preprocessing travel paths; The application of machine learning techniques to optimize indices and coefficients applied to the cost functions of one or more algorithms. In some embodiments, this may include path finding, container placement, and workstation load balancing algorithms; Just-in-time robot path conflict resolution system; Subdivision of the robot population into separate control groups, each containing one or more robots; Container location optimization through various means such as application of scored selection algorithms using weighted cost factors; Optimizing the allocation of work to workstations; It may include the implementation of various strategies, including pre-processing of tasks and actions for scheduling future tasks and actions.
[0075] In an exemplary environment using one or more robots for fully or semi-automated retrieval, storage, and movement of objects, a warehouse may first have to determine how to distribute container loads among different robots or groups of robots.
[0076] For example, the allocation of tasks across various groups of robots and picking stations may be optimized depending on the particular layout of the warehouse, the placement of items, the particular characteristics of the cargo (e.g., whether the item is expired or potentially hazardous), and the workflow ordering.
[0077] For example, it would be desirable to have a system that intelligently compares potential paths for a robot to take relative to its destination, taking into account, among other things, potential congestion along the path, the time required to complete an operation, the likelihood of a collision, objects held in a particular robot's inventory, predicted future operations, and characteristics of the particular robot (e.g., battery level, service issues).
[0078] Additionally, it would be desirable to have a system that intelligently adapts to various conditions in Hib, such as idle robots, obstacles that may impede or block the robot's path, or other robots reserving the path a particular robot is seeking to pass through.
[0079] Additionally, it would be further desirable to have a system that intelligently positions containers based on algorithms to bias the system toward container distribution that assists in efficient retrieval of items (e.g., keeping containers with items of high demand SKUs near the top and close to the container workstations for ease of access).
[0080] These are not limiting examples and any optimization method, arrangement or consideration may be implemented.
[0081] Referring to Figure 2, a schematic diagram of a sample automated and semi-automated cargo storage and retrieval system is provided in accordance with some embodiments of the invention. Figure 2 is provided to illustrate an exemplary implementation at a high level. Various implementations of system 200 may involve more or fewer components, and Figure 2 is provided merely as an example.
[0082] System 200 is comprised of a robot control system 202, a maintenance / monitoring system 204, a base station controller 206, one or more base stations 208a and 208b, one or more robots 210a, 210b, and 210c, and one or more charger stations 230. While only two base stations 208a and 208b and three robots 210a, 210b, and 210c are shown, it should be understood that in other embodiments of the system there may be more or fewer robots and base stations.
[0083] There may be one or more warehouse management systems (WMS) 232, order management systems 234, and one or more information management systems 236. The warehouse management system 232 may contain information such as items needed for an order, SKUs in the warehouse, expected / projected orders, items missing on an order, when the order will be loaded onto a conveyor, expiration dates of items, what items are in which containers, whether the items are fragile or large and bulky, etc.
[0084] In some embodiments, the warehouse management system 232 may be in communication with the workstations and may also include information related to the operation of the workstations, such as the status of the workstations, what products and / or containers the workstations need to receive at a particular time, what products and / or containers the workstations need to move to another location at a particular time, the expected workflow for operations at the workstations, and the number of robots currently waiting to deliver containers to the workstations.
[0085] The robot control system 202 may be configured to control the navigation / routing of the robot, including, but not limited to, moving from one location to another, collision avoidance, optimizing travel paths, controlling activities to be performed, etc. The robot control system 202 may be implemented using one or more servers, each including one or more processors, configured based on instructions stored on one or more non-transitory computer-readable storage media. The robot control system 202 may be configured to send control messages to one or more robots, receive one or more updates from one or more robots, and communicate with one or more robots using a real-time or near-real-time protocol. The robot control system 202 may receive information indicating robot location and availability from one or more base stations 208a and 208b. The robot control system 202 may be configured to track the number of available robots, the status of one or more robots, the location of one or more robots, and / or their current instruction sets. The robotic control system 202 may also be configured to process and / or send control messages to one or more robots in anticipation of future movements, potentially reducing processor load and also proactively managing traffic load on communication links. Such an implementation may be advantageous given the complex algorithms used by the robotic control system 202 in determining optimal paths for containers, calculating optimal locations, and / or determining reservations and / or clearances.
[0086] In some embodiments, the server may utilize a "cloud computing" type platform for distributed computing. Cloud-based implementations may offer one or more advantages, including openness, flexibility, and extensibility; centralized manageability; reliability; scalability; optimization for computing resources; the ability to aggregate information across multiple users; and the ability to connect across multiple users to find subgroups with matching interests. Although embodiments and implementations of the present invention may be discussed in specific, non-limiting examples with respect to the use of a cloud to implement aspects of the system platform, a local server, a single remote server, a software service platform, or any other computing device may be used in place of a cloud.
[0087] In some embodiments, the movement optimization module may utilize one or more control groups to segregate the robots into one or more groups. The use of control groups for wide grids may provide certain advantages, such as the ability to maintain very wide grid operation whenever real-time calculations cannot keep up with re-planning after a control outage, such as when (i) a wireless communication link cuts off more sequential packets than allowed in planning; (ii) one or more robots fail; or (iii) one or more robots operate outside of predetermined tolerances on performance.
[0088] Control stop messages may be broadcast to robots in a particular "control group" as opposed to sending individual messages. Potential benefits from broadcasting messages may include improved communication through the use of multiple transmission slots and potentially higher signal-to-noise.
[0089] In some embodiments, the robot control system 202 may be configured to dynamically assign the robot to different "control areas" as the robot moves across the grid.
[0090] The maintenance / monitoring system (MMS) 204 may be configured to provide monitoring functions, including receiving alerts from one or more robots or one or more base stations and establishing connections to query robots. The MMS 204 may provide an interface for configuring monitoring functions. The MMS 204 may interact with the robot control system 202 to indicate when a robot should be retrieved.
[0091] The base station controller 206 may store master routing information for mapping robots, base stations, and grids. In some embodiments, there may be one base station controller 206 per warehouse, while in other embodiments of the invention, there may be multiple base station controllers. The base station controller 206 may be designed to provide high availability. The base station controller may be configured to manage dynamic frequency selection and allocation of one or more base stations 208a and 208b.
[0092] Base stations 208a and 208b may be organized as a pool of base stations, which may then be configured to standby and active or to monitor the system. Messages may be routed to / from the robot through various communication means. The communication means may be any communication means, and in some embodiments, the communication means may be a radio frequency link such as those under the wireless standard 802.11. Base stations 208a and 208b may further include processing units 212a, 212b, digital signal processors 214a, 214b, and radios 216a, 216b.
[0093] One or more robots 210a, 210b, and 210c may be configured to move around the grid and perform operations, which may include moving containers from one stack to another, going to charging stations for recharging, etc. One or more robots may be assigned to communicate with one or more base stations 208a and 208b.
[0094] The one or more robots 210a, 210b, and 210c do not all need to be the same type of robot: there may be different robots with a variety of shapes, designs, and purposes, such as a robot with a single grid position footprint that winches a container to an interior storage location, a cantilever robot, a bridge robot, a retrieval robot, etc.
[0095] In some embodiments, one or more of the robots 210a, 210b, and 210c may have winches on them that may be used to hold a container for movement from one position on the grid to another.
[0096] The robots 210a, 210b, and 210c may each have a radio 218a, 218b, 218c, a digital signal processor 220a, 220b, 220c, a processor 222a, 222b, 222c, a real-time controller 224a, 224b, 224c, a battery 226a, 226b, 226c, and motors, sensors, connectors, etc. 228a, 228b, 228c.
[0097] One or more charger stations 230 may be configured to provide power to charge batteries on one or more robots 210 a, 210 b, and 210 c. One or more charger stations 230 may be further configured to provide high speed wired data access to one or more robots, and several charger stations may be located around the perimeter of a grid for use by one or more robots 210 a, 210 b, 210 c.
[0098] 3, a block diagram provides a control system 202 according to some embodiments of the invention. The block diagram is provided for illustrative purposes to identify in more detail some of the components of control system 202. However, not all of the identified modules or interfaces may be required, and more or fewer modules may be included in various embodiments.
[0099] The control system 202 may be configured to evaluate how to improve work allocation, product movement, and product placement. According to various embodiments of the invention, optimizations may be run in real time while others are run periodically during downtime or at less active times, for example.
[0100] Control system 202 may be configured to schedule when certain types of movements should occur and for what orders they should occur, depending on the application of various business rules indicating priorities, etc. Control system 202 may be configured to determine both inbound and outbound factors when making decisions, even for product placement, for example. For example, control system 202 may act on the estimated delivery location of a product supply and on the estimated outbound delivery of the product. The control system may make decisions and send signals for execution by an automated system and / or efficiently allocate tasks to humans (pickers, loaders, etc.).
[0101] The control system 202 may determine that one or more robots or one or more pickers should perform one or more actions in fulfilling an order or for any other purpose. One or more robot actions may require a robot to traverse a grate and / or perform an action such as retrieving a container.
[0102] The control system 202 may be configured to analyze various paths in the grid to determine one or more paths that may potentially be preferred over other paths given a set of constraints and conditions. These preferred paths may then be provided to the robot once, periodically, and / or dynamically to control the robot's movement throughout the grid.
[0103] A path may be preferred for a number of reasons, including, but not limited to, less travel distance, higher expected average robot speed, lower likelihood of encountering traffic (i.e., congestion), less total time required, lower likelihood of collision, less power usage, ease of switching to change route, ability to avoid obstructions (e.g., broken robot, dropped item, broken path, portion of path under repair, etc.).
[0104] The control system 202 may use various algorithms to identify, design, and / or control the movements of the various robots to which it is connected. In some embodiments, the control system is implemented using one or more servers, each including one or more processors configured to execute one or more sets of instructions stored on one or more non-transitory computer-readable media. Potential advantages to computer implementation include, but are not limited to, scalability, the ability to handle large amounts of processing and computational complexity, increased reaction speed, the ability to make decisions quickly, the ability to perform complex statistical analysis, and the ability to perform machine learning, among others.
[0105] These algorithms are discussed further in depth herein, and example path-finding algorithms and heuristic approaches are provided in accordance with some embodiments of the invention.
[0106] Constraints may include the current layout of the grid, the physical characteristics of the robot (e.g., maximum speed, turning range, turning speed, maximum acceleration, maximum deceleration), congestion (e.g., expected traffic load at a certain route or intersection), established "highways," the impact of objects being carried by the robot (e.g., large, bulky, or fragile objects), robot status and condition (including battery condition, damage, maintenance issues), and station status (e.g., destination station is full or temporarily blocked).
[0107] The control system 202 may be a real-time or near-real-time control system (controlling the actions of various units, including robots, and optionally other associated units, such as conveyors, pickers, and humans). The control system 202 may be comprised of one or more modules. The one or more modules may include a control interface 302, a movement optimization module 304, a product placement optimization module 306, a robot physics model module 308, a business rules module 310, a clearance module 312, a reservation module 314, a command generation and scheduling module 316, a robot communication module 318, a charging manager module 320, and an alert / notification module 322. These modules may be implemented in various ways and, in some embodiments, as applications stored as instructions on one or more computer-readable media to be executed by one or more processors.
[0108] Control system 202 may provide real-time or near real-time control of work allocation, workstation operations, robot movements, and / or container placement according to some embodiments of the invention. Work allocation, container movement, and placement may be expedited by actions related to activity within the warehouse, such as order fulfillment, redistribution of containers to more easily accessible positions, estimated dispatch sequences, maintenance operations, workstation operations, anticipation of future orders, etc.
[0109] Control interface 302 provides an interface to various external systems to provide instructions and information into control system 202. Control interface 302 may, in various embodiments, provide an interface to a human user and / or interfaces to interface with various machines and systems.
[0110] The human interface may include, for example, a keyboard, a visual display, a command prompt, and the like.
[0111] Interfaces to machines and systems may include Application Programmable Interfaces (APIs) implemented using different specifications, including, but not limited to, Sample Access Object Protocol (SOAP) and Representational State Transfer (REST) services, and / or interfaces written in various programming languages. The control interface 302 may interact with various external databases, including, but not limited to, various warehouse management systems and order management systems. It may also receive information from various robots (e.g., the robot is malfunctioning, the robot needs charging, the robot is en route to its destination, the robot has encountered an unexpected obstacle, etc.).
[0112] The control interface 302 may receive and send information to and from a warehouse management system (WMS) related to the control and movement of robots and containers. Such information includes, but is not limited to, grid locations and sizing, sub-grid establishment, master records of inventory and orders, workstation locations, parameters associated with workstations, and / or dispatch sequences (e.g., when an order needs to be dispatched). The control interface 302 provides updates to the WMS when actions are performed, containers are delivered to workstations, workstation operations are completed, delivery totes are filled, etc. In some embodiments, there is a confirmation process between the WMS and the control interface 302. These updates to the WMS may include, for example, updated stock levels associated with particular SKUs, updated container positions, updated object positions within containers, updated equipment status, etc.
[0113] In some embodiments of the system, in addition to the WMS, there may be a separate ordering system that contains and provides information regarding the various orders entering the system, order fulfillment, workstation operations, upcoming orders, and forecasted orders.
[0114] The control interface 302 may also receive commands to stop operation of a particular robot, a group of robots, or all robots (e.g., in the event of a malfunction, emergency, etc.).
[0115] The movement optimization module 304 may be configured to optimize the movement of the robot through applying various algorithms to determine potentially advantageous routes from one location to another. Potential advantages may include shorter travel distances, lower likelihood of encountering congestion, shorter required time, less power consumption, coordination with other robot movements, routing around obstacles such as broken robots or cut-off areas of tracking, coordination with various workstation operations, etc.
[0116] The movement optimization module 304 may be configured to include work allocation, planning and scheduling functionality, and creating a set of tasks, which then determines which picking stations to select or which tasks a robot should perform. For example, this may be based on where the robot or picking station is located, the specific capabilities of the robot or picking station, etc. It may also determine the specific sequence and set of actions required to fulfill a particular order and deploy the actions / tasks to one or more robots and / or one or more picking stations. Functionality may include, among other things, delivering empty containers to an inbound station, placing loaded containers with cargo around the warehouse, transporting containers to picking stations or other areas, moving containers from one location to another within the warehouse, etc.
[0117] The movement optimization module 304 may be configured to interact with the product placement optimization module 306 in determining a set of potentially advantageous locations for placing objects. For example, for a container containing items of a particular SKU that are frequently requested, the product placement optimization module 306 may indicate that the container should be placed in a certain location in a certain stack that is more accessible for retrieval. Conversely, if the container contains items of a particular SKU that are less frequently requested, the product may be determined to be placed at a lower depth in a grid location that is less easily accessible.
[0118] When optimizing a move, the move optimization module 304 may be configured to consider various factors involved in both the move and the execution of the action, such as the expected time required to get to a particular location, how deep the container is in the stack, how long it will take to dig the container out of the stack, various actions that may be required to move the overlying container to another location, etc.
[0119] The movement optimization module 304 may also be provided with a set of inputs from the robot physics model module 308, which may communicate a set of constraints on the robot's movement depending on various factors (e.g., if the robot is currently carrying a fragile object, the robot may only move at 50% of its maximum speed). The movement optimization module 304 may coordinate the movement of the box into, out of, and within the grid.
[0120] In some embodiments, the movement optimization module 304 may dynamically recalculate the preferred paths during the robot's course of travel, potentially determining an updated set of paths as conditions and constraints change over time.
[0121] In some embodiments, the grid may be pre-processed by the movement optimization module 304 to potentially increase processing speed and / or load processing. Other methods of reducing load processing are also contemplated, such as reducing search depth / width, dividing the grid into sub-grids, distributing processing, caching future routes, simplifying the grid (e.g., reducing the number of nodes under analysis), reducing path recalculation, etc.
[0122] In some embodiments, the movement optimization module 304 may divide the grid into multiple smaller sub-grids for analysis. Such division may ease processing power demands, which may be particularly useful when the grid size is very large; for example, a 1000x1000 grid may be divided into 100, 100x100 grids, and each grid may be analyzed separately. This may be even more useful when the system is attempting to control a very large number of robots or take into account a large number of conditions.
[0123] The movement optimization module 304 may interact with the clearance module 312 and the reservation module 314 in determining whether navigation of a proposed path will encounter problems with clearance and reservation of other robots, and also in determining a path that may reduce the chance of encountering these problems.
[0124] If desired containers are located within the stack at various depths within the stack, the movement optimization module 304 may need to control one or more robots in moving the containers out of the stack so that the desired containers are accessible. The movement optimization module 304 may coordinate movement across one or more robots so that the one or more robots cooperate in moving the containers out of the stack.
[0125] In some embodiments, the movement optimization module 304 may not need or even be desired to return the containers onto the stack. Rather, the containers being moved out of the stack may have an optimal position as determined by the product placement optimization module 306 and may be moved there by one or more robots. A potential advantage of such an embodiment is that increased efficiency may be found when containers are not returned to their original positions, but rather are placed in more optimal positions.
[0126] In some embodiments, the clearance module 312, reservation module 314, and movement optimization module 304 are utilized in conjunction with a path conflict resolver, where the movement optimization module 304 generates paths and then reserves the paths using the reservation module 314, and the clearance module 312 provides a just-in-time approach to determining preferences when the robot is engaged in potentially conflicting paths.
[0127] In some embodiments, the movement optimization module 304 is configured to handle a situation in which a robot is attempting to load a container onto a full station. In this situation, the movement optimization module 304 is configured to instruct the robot to take a nearby container to be held by the robot until the station can accept the container. When the station can accept the container, the container is unloaded. In these embodiments, the held container may be unloaded in priority order.
[0128] In some embodiments, if a station becomes free for unloading a held container before it reaches its held location, the movement optimization module 304 will replan to directly unload the container without holding it.
[0129] In some embodiments, the movement optimization module 304 is further configured to preempt operations, moving containers closer to stations before they are required at the stations, where they are then ready to be dropped off when required, which may reduce the uncertainty of the time of drop-off.
[0130] In some embodiments, the system may be configured to plan the robot path and efficiently establish the robot path reservation far into the future, allowing the algorithm to complete.
[0131] In some embodiments, some of the required transfer planning may be calculated by simulation.
[0132] Simulation may be used to trade off (in a statistical sense) between the efficiency gains of planning far into the future against the efficiency losses that come with the higher likelihood of having to re-plan when robots are unable to maintain their plans due to various reasons such as short-term communication packet loss and / or the robots being operated outside of allowed tolerances.
[0133] The product placement optimization module 306 may be configured to determine a set of potentially advantageous locations for placing a particular container containing a particular item. The product placement optimization module 306 may utilize relevant information such as grid layout, frequency with which a particular item is requested, future ordering, predicted future ordering, workstation locations, charging station locations, and congestion levels of particular areas and branches of the path, among other factors, in determining the set of potentially advantageous locations for placing a particular container containing a particular item.
[0134] The robot may be tasked with transporting one or more containers, each of which may contain one or more items to satisfy the needs of one or more service picking stations. Each container may be provided with an index associated with a stack location so that particular containers may be biased toward particular stack locations.
[0135] The distribution and positioning of containers within a stack or relative to a grid layout may contribute to the overall operational efficiency of the warehouse.
[0136] There are various situations that require containers to be placed somewhere within a facility, and these situations present opportunities to reevaluate and / or optimize the distribution of container positions within a facility.
[0137] There are a variety of considerations that may indicate a position is better or worse than another, which may include, but are not limited to, distance to the workstation, level of congestion in the area, which containers are blocked by certain containers, logical grouping of containers relative to environmental factors (e.g., containers containing flammable objects may require special positioning), and intelligent preemption of locations by the workstation.
[0138] These considerations may be utilized by the system to compare one position to another, for example, by using a weighted algorithm or any other suitable method.
[0139] For example, when a new container is introduced into the equipment, when a container is returned to the equipment, when one or more containers are moved by a robot attempting to access an item stored deep within a stack, when an item is placed in / removed from a container, when a container is marked as damaged, when a container is marked as dirty, etc.
[0140] This optimization can occur at various times, for example, in some embodiments, optimization is performed to determine new positions for all containers that must be moved, such as a container that must be removed to gain access to a particular container below.
[0141] For example, if for each given SKU, frequently ordered items, only a certain number of items are distributed in the areas of the warehouse that are easiest to access (e.g., the locations closest to each picking station and / or the top of a stack of containers), the number of robotic movements and operations can potentially be reduced.
[0142] The "active window" is defined as the number of orders worth keeping a container in an active state (ready for a service workstation) and is determined by the system. The product placement optimization module 306 may be configured to assign scores to containers that bias the overall Hib layout toward a top layer of active containers with reserved inventory underneath.
[0143] This scoring system may be determined by the business rules module 310 and may be set based on information such as inventory expiration dates. Historical orders, among other information, may be used to factor in calculating a score for a container, which may be updated on an ongoing basis whenever SKU inventory levels change. This scoring system may be used to help bias container positions to maintain optimal container positioning within the facility.
[0144] In some embodiments, the system may be configured to control robotic movements to maintain an "active" pool of one or more containers per SKU to meet the demands of one or more service workstations. When the "active" pool is depleted, "reserved" containers may be promoted into the "active" pool.
[0145] In some embodiments of the system, the system may be configured to use a "put away algorithm" to determine the "best match" stack location from an available pool of empty locations to control robot movement when placing a container.
[0146] In some embodiments, an "active" pool may be configured to support concurrent demand from one or more service workstations.
[0147] In some embodiments, the product placement optimization module 306 may also balance orders among picking stations.
[0148] The robot physics model module 308 may be configured to store a set of variables configured to model certain physical characteristics associated with a robot. For example, the model may represent physical characteristics such as the length, weight, height, and width of the robot, the robot's maximum carrying capacity, the robot's rotational speed, the robot's winch cycle time, the robot's maximum speed and acceleration, the robot's ability to perform certain actions given a set amount of battery life, etc. The robot physics module 308 may interface with the business rules module 310 in determining constraints on certain characteristics of the robot's movement, including the robot's maximum speed, maximum acceleration, and maximum rotational speed. For example, a robot carrying multiple cartons of eggs may be required to accelerate / decelerate at only 25% of the robot's maximum acceleration / deceleration due to the eggs' fragility and breakability due to physical forces.
[0149] The business rules module 310 creates and applies a set of business rules based on the particular environment of the warehouse, robot, and communication system. For example, the business rules module 310 may provide that for certain classes of items, various constraints are valid for the robot physics model module 308 to potentially reduce the amount of damage sustained by cargo in transit. Examples of cases where business rules may be implemented include high-risk products (e.g., acid, bleach, etc.), containers with aerosols, and containers with flammable contents, among others. Empty containers may also be treated differently from other containers.
[0150] Business rules may include actions such as cleaning a container before reusing it, slowing down a robot containing an object, and so on.
[0151] The business rules module 310 may also be configured to create and apply a set of rules that govern product placement. For example, different rules may be in place for high-frequency items or items that may soon be picked by an incoming order.
[0152] The clearance module 312 may be configured to store and provide clearances to various robots. The clearance system may be accessed to determine whether a path is clear for a robot to pass through. The clearance module 312 may be implemented as a passive collision avoidance system, whereby a robot is only given the minimum amount of work possible without affecting performance.
[0153] When providing a robot with new instructions, the clearance module 312 checks that there will be no chance of a collision with another robot, based on, for example, the grid dimensions, the grid position, the movement commands generated by planning, the cancellation of movement commands (generated on events such as controlled stops), the current position and speed of the robot, the braking capabilities of the robot, as well as the places that are clear for the robot to visit.
[0154] The clearance module 312 may be configured to issue "just-in-time" clearances and may be used to grant robots permission to continue along their planned paths. New clearances may be generated (or suppressed) in response to each robot status report. The clearance module 312 may therefore act as a path conflict resolver. When clearance is needed, the clearance module 312 may interact with the move optimization module 304 to dynamically re-plan a route to resolve or avoid the conflict.
[0155] The clearance module 312 may provide notification to the control interface 302 of what clearance there is for a path, when a clearance is issued (e.g., to a planning system, when this may allow dynamic re-planning from the end of the current clearance), when to suppress a clearance (e.g., to identify error cases and the need for re-planning), and to an alert system (because there is a potential problem with the robot, robot communications, or control system 202).
[0156] The clearance module 312 may be configured to devise a clearance scheme based on a set of tolerances including missing messages, processing times, clock synchronization, and mismatch of the robot with the physical model, among others.
[0157] The clearance module 312 may provide a set of safe entry times for one or many positions on the grid based on the robot's position and speed updates and the given / constrained clearances. The set of safe entry times may be dynamically updated as grid conditions change.
[0158] In some embodiments, the clearance module 312 may be configured to only provide clearance to the robot for a predetermined period of time (e.g., 3 seconds). The clearance given to the robot may be configured such that the period of time is sufficient for the robot to stop without risking a collision.
[0159] In some embodiments, the clearance module 312 may be configured to provide a clearance such that the control system 202 may miss a configurable number of status messages from the robot and still allow the robot to continue operating for a short period of time. This design may result in a system that may be more tolerant of missed packets, which may be advantageous in having continued operation even if communication encounters some problems. A configurable number may be set so that there is a high probability that the control system 202 will receive a status message from the robot before the robot autonomously slows down to a stop at the end of its clearance.
[0160] In some embodiments, if the robot begins to slow down, it will be allowed to stop, and the control system 202 may then cancel the previous reservation and re-plan its path through the grid.
[0161] The reservation module 314 reserves various paths on the grid (e.g., robot A plans to take path X and reserves path X for the expected transit time; robot B, upon learning that robot A has reserved path X, chooses path Y instead). The reservation module 314 may be designed to generate non-conflicting robot movement plans and may be configured to work together with the clearance module 312 and the movement optimization module 304.
[0162] The reservation module 314 may be configured to provide reservations for robots to grid locations during a time span, taking into account, among other things, tolerance for a robot being slightly off plan, tolerance for lost robot communication messages, and tolerance for clock mismatches, where two robots should not be given overlapping reservations.
[0163] In some embodiments, especially when there are a large number of robot actions and tasks occurring simultaneously, the reservation module 314 may be used to reserve routes in advance to ensure that the robots are not planning to take conflicting paths. The reservation module 314 may be configured to allow sufficient margin for any robot to come to a stop under controlled braking without risking a collision.
[0164] The reservation module 314 may be configured to interact with the move optimization module 304 to establish robot path reservations far enough in the future to enable advance planning. In some embodiments, the reservation module 314 and the move optimization module 304 allow for advance planning far enough to complete calculations of the move algorithm.
[0165] The command generation and scheduling module 316 generates a set of instructions to be sent to one or more robots. These instructions may include, for example, that robot A is requested to travel to location B to retrieve container C, bring container C to a workstation, and then return container C to a particular location D. These instructions may be sent in a near-real-time / real-time configuration to enable planned / scheduled routes, in a just-in-time configuration, and / or provided ahead of time. Additionally, in some embodiments, the command generation and scheduling module 316 coordinates reservations and clearances to help the robots rapidly progress their way through the facility.
[0166] The command generation and scheduling module 316 may be configured to provide a command set comprising multiple operations to execute on a single path or on more than one path and / or at various locations. The command generation and scheduling module 316 provides these commands to the robot communication module 318 to be provided to individual robots. In some embodiments, the command generation and scheduling module 316 may pre-store instructions for a particular robot, and these instructions may then be provided to the robot through the robot communication module 318 to be executed in the future.
[0167] The robot communication module 318 may be configured to transmit information back to and from the robot via one or more base stations and the base station controller 206. In some embodiments, the robot communication module 318 may communicate through the use of wireless signals. As indicated above, these instruction sets need not be just-in-time, but may also be sent for the coordination of future movements.
[0168] The robot communication module 318 may receive status reports from various robots. The robot communication module 318 may be implemented in a variety of ways, such as utilizing synchronous, asynchronous, polling, push, or pull methodologies. Furthermore, various implementations may or may not include the use of "handshake" communication.
[0169] In some embodiments, without the "handshake," the communication system may not guarantee message delivery, resulting in lost packets. Potential benefits to such a system may include reduced bandwidth requirements and submission of commands on a best-effort basis. Various schemes may be implemented to minimize the impact of lost packets, such as timed rebroadcast of command packets, sending overlapping command packets that include parity information or other validation schemes, or other flow control and retransmission schemes.
[0170] In other embodiments of the invention, a "handshake" may be used to ensure that packets are received.
[0171] The command to the robot may be issued prior to the start time of the action to be performed by the robot, and this time between the start time and the issuance of the command may be a configurable parameter.
[0172] In some embodiments, to ensure delivery, the command may be repeated to the robot, and the robot may provide an acknowledgment that the command was received.
[0173] If the message is not received before the scheduled start time, the robot may be configured to ignore the command or return a status message indicating that the command was received too late. In this case, the robot control system 202 may be configured to cancel any existing reservations for the robot and re-plan the task for the robot.
[0174] In some embodiments, the robot returns a normal status message acknowledging the last command received (e.g., by command sequence number). The robot control system 202 may, in some embodiments, be configured to prevent new commands from being issued to a particular robot until the last command issued has been acknowledged by the robot. If a command has not been acknowledged by the robot after a certain period of time (e.g., a configurable timeout period), the robot control system 202 may be configured to cancel an existing reservation for the robot. When (command) communication is re-established with the robot, the robot control system 202 re-plans an action for the robot.
[0175] Upon receipt of each robot status message, the robot control system 202, through the clearance module 312, may be configured to increase the robot's current movement clearance.
[0176] The charging manager module 320 may be configured to generate a trip plan for recharging the robots. The charging manager module 320 may be configured to estimate when the robots will have a specified minimum charge and ensure that all robots are charged at or before that point.
[0177] The alert / notification module 322 may be configured to provide alerts or notifications to the control interface 302 when a potential problem occurs or based on predetermined business rules, e.g., a predetermined number of clearances being constrained by a conflict.
[0178] The present systems and methods may be implemented in various embodiments. A suitably configured computing device and associated communications networks, devices, software, and firmware may provide a platform for enabling one or more embodiments as described above. By way of example, FIG. 1 illustrates a generic computing device 100 that may include a central processing unit (“CPU”) 102 connected to a storage unit 104 and to a random access memory 106. The CPU 102 may process an operating system 101, an application program 103, and data 123. The operating system 101, the application program 103, and the data 123 may be stored in the storage unit 104 or loaded into the memory 106 as may be required. The computing device 100 may further include a graphics processing unit (GPU) 122, which may be operatively connected to the CPU 102 and to the memory 106 to offload intensive image processing computations from the CPU 102 and run these computations in parallel with the CPU 102. An operator 107 may interact with computing device 100 using a video display 108 connected by video interface 105 and various input / output devices, such as a keyboard 115, a mouse 112, and a disk drive or solid state drive 114, connected by I / O interface 109. In known manner, mouse 112 may be configured to control cursor movement on video display 108 and to operate various graphic user interface (GUI) controls that appear in video display 108 with mouse buttons. Disk drive or solid state drive 114 may be configured to accept computer-readable medium 116.Computing device 100 may form part of a network via network interface 111, allowing computing device 100 to communicate with other appropriately configured data processing systems (not shown). One or more different types of sensors 135 may be used to receive input from a variety of sources.
[0179] The present system and method may be implemented in virtually any manner on a computing device, including a desktop computer, laptop computer, tablet computer, or wireless handheld. The present system and method may also be implemented as a computer-readable / usable medium containing computer program code for enabling one or more computing devices to implement each of the various process steps in a method according to the present invention. In the case of more than one computing device performing the entire operation, the computing devices are networked to distribute the various steps of the operation. The term computer-readable or computer-usable medium is understood to comprise one or more of any type of physical embodiment of the program code. In particular, the computer-readable / usable medium may comprise program code embodied on one or more data storage sections of a computing device, such as memory associated with a computer and / or storage system, on one or more portable storage articles of manufacture (e.g., optical disks, magnetic disks, tapes, etc.).
[0180] The mobile application of the present invention may be implemented as a web service where the mobile device includes a link to access the web service rather than the application itself.
[0181] The described functionality may be implemented for any mobile platform, including the iOS® platform, Android®, Windows®, or Blackberry®.
[0182] Those skilled in the art will appreciate that other variations of the embodiments described herein may be implemented without departing from the scope of the invention. Accordingly, other modifications are possible.
[0183] Branch and bound algorithms, constraint programming, local search, heuristics, graph traversal, dynamic path learning advisor techniques, pruning techniques, and Bayesian graph search techniques, Dijkstra's algorithm, Bellman-Ford algorithm, Warshall-Floyd algorithm, Johnson's algorithm, breadth-first recursive search, depth-first recursive search, weighted paths, A * Search Algorithm,A * Variations on the search algorithm (e.g., D * , Field D * , IDA * , Fringe, Fringe Saving A * , Generalized Adaptation A * , Lifelong Planning A * , simplified memory bounded A * , Jump Point Search, Theta * Many different algorithms and techniques may be used in determining a preferred path for the robot to take, including, but not limited to:
[0184] In the following sections, example search algorithms and heuristics according to some embodiments of the invention are provided. Example Search Algorithms
[0185] In this section, sample, simplified algorithms according to some embodiments of the invention are provided.
[0186] For illustrative purposes, an algorithm according to some embodiments of the invention is provided diagrammatically as a workflow under Figure 4. It should be understood that this sample algorithm is provided merely as an illustrative example of the concepts as described above, and is not a limiting example.
[0187] The algorithm may be an iterative search algorithm that may utilize a branch-and-bound search, or may apply a "near-best-first" heuristic model that includes a "heat map" for congestion avoidance. Branches may be selected using a weighted cost function, and the algorithm may be loosely coupled to the grid / robot shape / size.
[0188] In some embodiments, the branches may be kept in sorted collections.
[0189] According to an embodiment of the algorithm, the following recursive branch and bound function is applied: On each iteration, (a) Select branch b with the lowest cost (b) Branch b in all directions to generate a new branch B (c) For each branch b' in B, If b' reaches the target, Back to b Otherwise, Add b' and search The cost comparator allows tracking of the lowest cost branch for the next iteration.
[0190] When performing a path search, various heuristics may be applied to reduce the computation required by relying on the applied heuristics, eliminating branches entirely, or performing less computationally intensive analyses. Example heuristic techniques are provided in later sections of this specification.
[0191] If the new branch has a conflict with a path that another robot might take, or a conflict with an idle robot, the search algorithm: May change branches to overtake competing reservations (if the acceleration profile allows); The branch may be modified to include waiting at any position along the path; or The branch may be discarded as infeasible.
[0192] In some embodiments, a path may be selected if the robots are waiting at their starting points.
[0193] In doing so, it may not properly exhaust the search space (e.g., if there is currently no acceptable path for the robot to take to its destination, a path may be selected in which the robot waits until a non-conflicting path becomes available).
[0194] The search algorithm may be configured to prioritize and balance any number of goals, such as taking the shortest possible time, addressing congested areas, etc.
[0195] The following provides sample, non-limiting examples of the application of the use of heuristics to illustrative purposes.
[0196] In an embodiment of the invention, each search may track the current lowest cost branch and may use a weighted cost function to bias the selection ordering of branches based on various heuristics, which may include (a) projected shortest path time and (b) accumulated heat projected based on a heat map. While other heuristic techniques are contemplated, for illustrative purposes, we will provide further details on the two identified above.
[0197] (a) Planned shortest path time For any branch, the control system may determine the shortest possible path time from the current branch tip to the destination. The projected time cost may then be determined as the total time to the branch so far (e.g., including any required wait time, etc.) added to the time for the shortest, unconstrained, possible path to the target.
[0198] (b) Planned minimum heat (based on heat map) In creating a heat map, a "heat" value may be assigned to each coordinate approximating a model of congestion at a point on the grid, or for a particular area of the grid.
[0199] FIG. 5 provides a sample heat map according to some embodiments of the invention.
[0200] In some embodiments, the "heat" value may be determined using proximity to the workstation, however, in other embodiments of the invention, "heat" may be observed / learned / calculated / predicted using a variety of other techniques, some of which may be dynamic or iterative techniques.
[0201] Similar to planned shortest paths, aggregated paths may be planned to a destination.
[0202] Then, a planned minimum heat is determined. In some embodiments, the planned heat cost is the sum of the heats of all visited coordinates in the current branch added to the "coldest" (least hot) heat of the planned path. Exemplar weighted cost function
[0203] In some embodiments, the algorithms used are based on weighted cost functions, and such algorithms may be susceptible to optimizing the associated cost coefficients by studying the results of a large number of simultaneous simulations in the cloud configured to use different coefficients and / or by applying various machine learning approaches and techniques, possibly using a large set of observed and / or simulated data.
[0204] In some embodiments, the search algorithm has two cost factors: (a) a planned shortest path time factor (C t ), and (b) the minimum planned thermal coefficient (C h ).
[0205] In some embodiments, the search algorithm may include the following equation:
[0206] Branch cost = C t * PSP+C h * PMH (where PSP refers to the shortest planned path time and PMH refers to the minimum planned heat).
[0207] In some embodiments, cost functions may be utilized in conjunction with configurable or machine-learned derived indices that model complex relationships. A sample simplified cost function provided for illustrative purposes is: Branch cost = C t * PSP × +C h * PMH y where x and y may further be configurable and / or machine-learned exponents.
[0208] 6a provides a table demonstrating how the projected costs of a search branch can vary as a result of using different coefficients in the path search algorithm, which can be derived using refinement with machine learning techniques according to some embodiments of the invention.
[0209] FIG. 6b illustrates how the use of different cost factors demonstrated in FIG. 6a changes the branch that will be selected by the next iteration of the search algorithm.
[0210] In some embodiments, the control system 202 may be further configured to develop, adapt, and apply a set of rules over time to refine the set of machine-learned coefficients and / or indices. The use of machine-learned coefficients and / or indices may potentially increase the efficiency of heuristic techniques over a period of time. Exemplar Shunting Search
[0211] The system may be configured to adjust the robot path to account for the position of idle robots. In some embodiments, there may be idle robots that may be tracked independently of robots with tasks. These idle robots may not have planned paths and associated reservations and may need to be considered separately.
[0212] When the task is finalized, another "shunt search" may be performed, which may consist of finding a path to move the robots that are currently idling or will soon be idling in the path of the tasked robot (hereafter referred to as the main robot) to a location where they may continue to be idle and that does not block the path of the main robot.
[0213] This "shunt search" comprises, in some embodiments, performing a search, for each robot that is currently idling or will become idling in the path of the main robot, which may be considered resolved when it finds a location where the robot can remain indefinitely.
[0214] The "branch search" may use the same branch-and-bound search algorithm as the main robot's path search, but may have different cost factors and solution criteria. If the robot cannot move out of the path in time, a waiting time may be added to the start of the main robot's path, and the main robot's path may be recalculated. Example Storage Algorithm
[0215] An algorithm may be used to determine the stack location for the container to be returned. Containers may be returned for a variety of reasons, and the location to which the container is returned may be optimized for various benefits, such as improving distribution of objects / containers among the Hibs.
[0216] All stack locations in Hib are Average distance (measured in robot operating time) from all workstations; Distance (measured in robot motion time) from the nearest workstation; and (If depth > 0) Approximate mining cost; may be scored with a configurable, weighted cost function.
[0217] The system may keep a "HibPlan" of the current end state of Hib after all actions in the plan have been executed.
[0218] "Hibuplan" may also track the "available surface" on which the robot can place containers. In the total ordered set of containers as defined by the product placement optimization module 306, each container has an index for its position.
[0219] Each stack location has an equal index in the total ordered set of stacks as defined by the weighted cost function.
[0220] These indices are remapped to the range 0 to 1 by dividing by the size of their respective sets, and then ranking the stack locations in the available surface by how closely their indices match those of the container's indices.
[0221] The final choice is made through a weighted cost function of the difference between these indexes, as well as through other factors such as how long the ideal path from the source to the stack location is and how long the stack is reserved for in the current plan.
[0222] Other business rules can be implemented at this stage, such as limiting the total weight of the stack, controlling the position of hazardous or special materials (e.g., aerosols or flammable materials), etc. Sample Return Scenarios
[0223] The following provides a sample return process that may be supported / controlled by the system. This process applies when an order is canceled, the tote does not leave Hib, and the order is returned by the customer or is not delivered to the customer. Other situations may also be contemplated. The returned product (which may be in a container, other holding device such as a tote, etc.) can be processed at a workstation that provides for rework or rejection of the product.
[0224] The container / tote may be scanned so that the controller can position the storage bins that are expected to be needed near the workstation. Supply bins may be selected based on SKU and expiration date. Product items may be removed and scanned one by one by a picker. When the container arrives at the workstation, the picker (automated or manual) may be commanded / controlled to place the items into the container.
[0225] The picker may be asked to verify that no further pieces of this SKU are left before the container is opened.
[0226] Products that are no longer suitable for return to stock may be picked into containers which may be removed at the workstation when full or at various times such as the end of the day and the contents sent to another area such as the staff shop or sent to disposal as appropriate.
[0227] While the disclosure has been provided and illustrated in connection with specific, presently preferred embodiments, many variations and modifications may be made without departing from the spirit and scope of the invention disclosed herein. Accordingly, the disclosure and invention should not be limited to the precise components or details of the methodology or configurations set forth above. Except to the extent necessary or inherent in the process itself, no particular order to the steps or stages of the methods or processes described in this disclosure, including the drawings, is intended or implied. In many cases, the order of process steps may be varied without altering the purpose, impact, or import of the methods described. The scope of the invention is defined solely by the appended claims, giving due consideration to the theory of equivalents and related theories.
Claims
1. 1. A system for controlling movement of one or more transport devices, comprising: the transport device transports containers stored in a facility, the facility stores the containers in a plurality of stacks, the facility further has a plurality of paths arranged in a grid structure on top of the stacks, the one or more transport devices operate on the grid structure; The system comprises: one or more computers configured to execute computer instructions; The computer instructions, when executed, determining and reserving routes for moving the one or more transport devices through the plurality of routes by one or more utilities, and determining and reserving routes for moving the one or more transport devices when transporting one or more of a plurality of containers; one or more utilities determining and booking routes and controlling one or more of the plurality of transport devices to remove one or more of the plurality of containers from within one or more of the plurality of stacks; The one or more retrieval utilities are configured to instruct one or more of the transport devices to move one or more containers from within one or more stacks to an alternative position either within the stack or outside the stack, and the utility is further provided with means for ensuring that, when moving one or more containers before accessing the one or more containers for retrieval, the one or more containers being returned to the stacks are placed in a position within any one of the stacks other than the stack from which the or each container was removed.
2. 2. The system of claim 1, wherein the or each of the containers contains an object, the object being stored in the container in the stack for subsequent retrieval.
3. 3. The system of claim 1 or 2, further comprising one or more utilities providing a clearance system that allows or stops movement of the one or more transport devices to avoid collisions.
4. 4. The system of claim 1, 2 or 3, further comprising one or more utilities configured to optimize movement and actions of the one or more transport devices through the plurality of paths.
5. 10. The system of any preceding claim, further comprising one or more utilities configured to optimize placement of the plurality of containers by the one or more transport devices in the facility.
6. 10. The system of any preceding claim, further comprising one or more utilities that control movements or actions taking place within one or more workstations.
7. 10. The system of any preceding claim, wherein the one or more utilities that optimize the movements and actions utilize one or more path-finding algorithms.
8. 10. The system of any preceding claim, wherein the one or more utilities use one or more congestion mitigation techniques to optimize the movements and actions.
9. 10. The system of any preceding claim, wherein the one or more utilities use one or more machine learning techniques to optimize the movements and actions.
10. 10. The system of any preceding claim, wherein the one or more utilities optimize placement of the plurality of containers within the facility and update inventory levels of the facility based on wear and tear of one or more of the plurality of objects within the facility.
11. The system of claim 5 , wherein the one or more utilities control movement of one or more of the transport devices based at least on a throughput of the one or more workstations.
12. 10. The system of any preceding claim, wherein the one or more utilities provide a clearance system configured to tolerate missed communication with at least one of the one or more transport devices.
13. 10. The system of any preceding claim, wherein the one or more utilities determine and reserve routes and command a plurality of transport devices to cooperate in transporting one or more of the plurality of containers.
14. 10. The system of any preceding claim, wherein the one or more utilities determine and reserve routes to move idle transport devices from routes that would otherwise be optimal for other transport devices.
15. 10. The system of any preceding claim, wherein the facility is divided into multiple sub-grids to reduce computational complexity.
16. 10. The system of any preceding claim, wherein one or more control commands for controlling movement of the plurality of transport devices are provided to the plurality of transport devices prior to movement of the plurality of transport devices.
17. 10. The system of any preceding claim, wherein the one or more utilities optimize the return of the container to the most optimal of the available positions in the Hib.
18. 10. The system of any preceding claim, wherein the one or more utilities are from a replacement container in the stack to dynamically replace damaged or missing objects.
19. 1. A method for controlling movement of one or more transport devices carrying a plurality of containers, comprising: the device operates in an installation, the installation including the plurality of containers arranged in a plurality of stacks, the installation further having a plurality of paths arranged in a grid structure on top of the stacks, the one or more transport devices operating on the grid structure; The method comprises: determining and reserving routes for moving the one or more transport devices through the plurality of paths; determining and reserving a route for moving the transport device when transporting one or more of the plurality of containers; determining and reserving a route and controlling one or more of the plurality of transport devices to remove one or more of the plurality of containers from within one or more of the plurality of stacks; removing the one or more containers from the one or more stacks further requires moving one or more other containers in the stacks before accessing the one or more containers for removal; The method wherein moving the one or more other containers includes placing each of the one or more other containers in an optimized position within the facility, excluding the stack from which the or each container was removed.
20. 20. The method of claim 19, wherein the container comprises an object for storage within the facility and for retrieval from the facility.
21. 21. The method of claim 19 or 20, further comprising the step of providing a clearance system to allow or stop movement of the one or more transport devices to avoid collisions.
22. 22. The method of claim 19, 20 or 21, further comprising optimizing the movements and actions of the one or more transport devices through the plurality of paths.
23. 21. The method of any one of claims 19 to 20, further comprising optimizing placement of the plurality of containers by the one or more transport devices in the facility.
24. 24. A method according to any one of claims 19 to 23, further comprising the step of controlling movements or actions taking place within one or more workstations.
25. 25. A method according to any one of claims 19 to 24, wherein optimizing the movements and actions comprises using one or more path-finding algorithms.
26. 26. The method of any one of claims 19 to 25, wherein optimizing the movements and actions includes using one or more congestion mitigation techniques.
27. 27. The method of any one of claims 19 to 26, wherein optimizing the movements and actions comprises using one or more machine learning techniques.
28. 28. The method of any one of claims 19 to 27, wherein optimizing the placement of the plurality of containers within the facility to update inventory levels of the facility is based on wear and tear of one or more of the plurality of objects within the facility.
29. 25. The method of claim 24, wherein controlling the movement of one or more of the transport devices is based at least on the throughput of the one or more workstations.
30. 30. The method of any one of claims 19 to 29, comprising providing clearance to allow for missed communication with at least one of the one or more transport devices.
31. Decide on a route and make a reservation, 31. The method of any one of claims 19 to 30, including commanding a plurality of transport devices to cooperate in transporting one or more of the plurality of containers.
32. 32. A method according to any one of claims 19 to 31, comprising determining and reserving a route for moving an idle transport device from an otherwise optimal route for other transport devices.
33. 33. A method according to any one of claims 19 to 32, wherein the facility is divided into a number of sub-grids to reduce computational complexity.
34. 34. A method according to any one of claims 19 to 33, wherein one or more control commands for controlling movement of the plurality of transport devices are provided to the plurality of transport devices prior to movement of the plurality of transport devices.
35. 10. A system or method according to any preceding claim, providing one or more utilities to determine further optimization of the remainder of the stack upon a cost function analysis.