Patent ID: 12234092

DESCRIPTION

Among other benefits, the technology provides robotic devices, systems, methods, and other aspects that can more efficiently process goods (e.g., items in a distribution facility) based on demand, available capacity, and other dynamic factors in the resources and equipment of the distribution facility. Further, the technology can reduce the number of irrelevant items carried simultaneously with relevant items and provide automated guided vehicle(s) (AGV(s)) that are configured to efficiently carry items.

Implementations of the technology described herein include example AGVs that carry items. In some implementations, a cart AGV116may autonomously transport a cart onto which items or batches of items may be picked, so that a picker may remove individual items from the cart and place them into a carton (e.g., at a cartless, goods-to-person, pick-cell, or finalization station).

Features of the technology described herein can be integrated into any logistics system, dispatch system106, warehouse execution system102, warehouse management system104, a robot execution server132, etc., to coordinate the provision of to-be-picked items in a fulfillment center. This technology beneficially improves productivity and throughput, increases asset utilization, and lowers cycle time and labor costs. These benefits, in turn, lead to shorter delivery times and result in significant value.

The technology described herein allows more efficient preparation of cartons in a fulfillment center. For example, an order to be fulfilled may be split into one or more orders or cartons that may be shipped to a customer. Each carton may include one or more items, which may be represented by stock keeping units (SKUs) or SKU identifiers. For instance, a SKU may represent an item of a particular type (e.g., brand X paper or brand Y package of pens). In some implementations, a cart carrying cartons or shipping boxes is transported through a pick-to-cart area302of a fulfillment center and items are picked from storage into the cartons. However, for cartons that have only one SKU (whether one or multiple of a certain item/SKU), this operation may use a large quantity of carts to carry many cartons with single pick lines (e.g., picks of cartons having only a single SKU). Accordingly, some implementations of the technology described herein improve efficiency by introducing batch-picking carts. For example, a particular carton may have 5 of a certain type of toner, which may be stored together at a single location of a fulfillment center and, rather than carrying the carton to the location, the 5 toners may be retrieved by a batch-picking cart and transported to a station where they are picked from the batch-picking cart and placed into a shipping carton. The technology intelligently tracks the operations, providing instructions and receiving confirmation from various computing devices and/or automated guided vehicles to coordinate these operations.

The technology described herein improves throughput over placing single pick line cartons on a cart. A batch-picking cart reduces processor cycles used to group products together into a single carton or cart and increases resource utilization and flexibility. In some implementations, the technology directs a client picking device, cart, or AGV to retrieve items from several single pick line (e.g., task) orders together and bring them to a finalization station where they are placed into individual cartons. For instance, 300 cartons with a single pick-line may be carried by 10 carts (e.g., 30 cartons per cart) or the items from the 300 cartons may be placed together on a single batch cart that carries the items (e.g., together in one or more bulk containers) to a finalization station where they are placed into shipping cartons. For instance, an AGV may bring the items to a finalization station where cartons are prepared and the items are removed from the batch-picking cart and placed into the cartons, as described below.

The technology described herein may reduce the overall quantity of carts being used and increase pick density (e.g., a number of units/items picked from a location or stop of a cart over an amount of time, or a number of times a cart stops) and therefore improve overall productivity of equipment in a fulfillment center.

The technology described herein may dynamically assign cartons to the cart either before or during picking to the cart. For example, even while a batch-picking cart is being transported through a pick-to-cart area302, the system100may receive order data and assign picks from that order data to the batch-picking cart.

In some implementations, pick tasks (based on the SKUs/locations to be picked, as described below) are assigned to a cart and corresponding instructions are sent to a picking client device one or two at a time, for example, a subsequent task instruction may be loaded on the client device during or before completion of a current task, so that when the current task is completed, the next task (e.g., instructions for the task on the client device) is already queued up on the device to be displayed to the picker. In some implementations, the technology may accordingly incrementally assign picks/items/SKUs/pick locations to a batch-picking cart as the cart moves through the pick-to-cart area302. In some instances, a picker may indicate when a maximum cart capacity is reached, thereby ensuring maximum utilization of resources, such as a cart, picker, and/or a cart AGV.

Further, it should be noted that while operations herein are described in reference to a robotic system, some aspects and implementations may be applied in systems using manual pickers (e.g., human warehouse associates), conveyor mechanisms, etc., while still providing significant benefits to these systems.

With reference to the figures, reference numbers may be used to refer to components found in any of the figures, regardless whether those reference numbers are shown in the figure being described. Further, where a reference number includes a letter (e.g., suffix) referring to one of multiple similar components (e.g., component 000a, 000b, and 000n), the reference number may be used without the letter to refer to one or all of the similar components.

FIG.1is a block diagram of an example system100and data communication flow for system-directed single line pick batching. The system100includes a warehouse execution system (WES)102. The WES102is coupled to equipment110(e.g., conveyor controls, conveyor scanners, conveyors, automated induction equipment, other warehouse equipment, etc.), a warehouse management system (WMS)104, a data store120storing warehouse management, execution, dispatch, picking, carton, order, item, AGV, map, and/or other data, a picking system108(e.g., pick-to-voice, pick-to-light, etc.), a robot execution server (REX)132, and a dispatch system106.

The WES102may, in some implementations, include one or more hardware and/or virtual servers programmed to perform the operations, acts, and/or functionality described herein. The components of the WES102may comprise software routines storable in one or more non-transitory memory devices and executable by one or more computer processors of the WES102to carry out the operations, acts, and/or functionality described herein. In further implementations, these routines, or a portion thereof, may be embodied in electrical hardware that is operable to carry out the operations, acts, and/or functionality described herein.

The REX132may, in some implementations, include one or more hardware and/or virtual servers programmed to perform operations, acts, and/or functionality described herein. The REX132may generate a schedule that defines the route for an AGV during a picking session, as described herein. For a given cart AGV116a. . .116n, depending on the items (e.g., identified by stock keeping units or SKUs) to be placed in the cartons of that cart, the REX132generates a schedule and transmits it to the dispatch system106, which in turn deploys a cart AGV116according to the schedule, for instance. In some implementations, the dispatch system106instructs the AGV to proceed through one or more of the picking zones of the distribution facility according to the schedule. The schedule of the AGVs may be coordinated such that an optimal flow can be achieved, as discussed elsewhere herein.

The WES102may store productivity information for points in the distribution facility in a database (e.g., a non-transitory data store120). The productivity information may reflect the mechanical capacity of that given point of the AGV system. In some cases, the mechanical capacity may be dynamic based on current conditions (e.g., system health, staffing levels (e.g., number of associates working in zone), stock levels, operational state, etc.).

The dispatch system106may be electronically communicatively coupled to a plurality of AGVs. In some implementations, the dispatch system106, or elements thereof, may be integrated with or communicatively coupled with the REX132. The dispatch system106includes hardware and software configured to dispatch the AGVs, and is coupled for communication the components of the system100to receive instructions and provide data. The dispatch system106may calculate a route to execute the task considering traffic and resources. In some cases, it adjusts the route or the task to keep the route optimum.

The AGVs may be robotic vehicles including drive units providing motive force for moving the AGVs (and, in some instances, carts, modular storage units, AGV racks, AGV shelves, etc.), guidance systems for determining the positions of the AGVs within the distribution facility, and equipment for carrying items. The equipment for carrying items may include carton holders, AGV shelves, modular storage unit holders, etc., such as carts, shelves, etc., as described in further detail in reference toFIGS.10A and10B, for example.

A modular storage unit (also referred to simply as a storage unit) may be a container in which items are stored, for example, in high-density storage304. In some instances, the modular storage unit may be transported by a modular storage fetching (MSF)-AGV114. For example, a modular storage unit may comprise a pallet or tote, which may be a holding vessel to support items designed to be picked up by an MSF-AGV114using a container or item handling mechanism. For example, a modular storage unit may include a pallet and a holding structure that supports items designed to be picked up by an AGV with forks or another carrying surface. In some implementations, a pallet may be stackable. In some implementations, a pallet may be attachable to a container to form a modular storage unit.

A cart AGV116may be an automated guided vehicle or robot configured to autonomously transport carton from a preparation or induction area308to a pick-to-cart area302of the distribution facility, a goods-to-person station, and/or finalizing area314(e.g., as described in reference toFIG.3). The cart AGV116may include a drive unit adapted to provide motive force to the cart AGV116and a guidance system adapted to locate the cart AGV116in the distribution facility. In some implementations, the cart AGV116is adapted to autonomously transport a batch-picking cart or holder (e.g., a cart or shelves) that is, in turn, adapted to hold items. For example, a cart AGV116may push/pull a cart holding containers or items around a pick-to-cart area302and/or goods-to-person area310and may automatically stop at storage bays of the pick-to-cart area302where items to be picked are stored, so that a picker in the pick-to-cart area302can easily place items onto a cart. In some instances, the cart AGV116may transport the cart to a goods-to-person, finalization, or pick-cell station316to receive additional items from high-density storage (e.g., from modular storage units in high-density storage, as described below) or to place the items into shipping cartons. In some instances, the cart AGV116may move at walking speed next to, behind, or in front of a picker walking through the pick-to-cart area302of the distribution facility. Additional details of example cart AGVs116are shown and described in reference toFIGS.10A and10B.

An MSF-AGV114a. . .114nmay include an automated guided vehicle or robot that may be configured to autonomously transport items from a high-density storage area304of the distribution facility to a goods-to-person station (e.g., a pick-cell station316or cartless station326), replenishment area318, and/or finalizing area314. The MSF-AGV114may include a drive unit adapted to provide motive force to the MSF-AGV114, a guidance system adapted to locate the MSF-AGV114in the distribution facility, and a shelving unit, which may be adapted to hold modular storage units. The MSF-AGV114may include a container handling mechanism (CHM) that retrieves items or modular storage units from storage shelves (e.g., in the high-density storage area), places items on an item holder (e.g., an AGV shelf) coupled with the MSF-AGV, and replaces items on storage shelves or at a goods-to-person station. In some implementations, an MSF-AGV114may autonomously retrieve modular storage unit(s) containing items to be picked in an order from the high-density storage area. For instance, the MSF-AGV114may transport the modular storage unit(s) to a pick-cell station316, so that a picker at the pick-cell station316can pick items from the modular storage unit(s) and place them on a cart. For example, a cart AGV116may transport a carton to a bay in the pick-to-cart area302having a first item in an order, then to a pick-cell station316where a separate MSF-AGV114has delivered or will deliver a second item (e.g., in a modular storage unit) in the order, so that a picker can place the second item into the carton with the first item, and so on and so forth. The process may be repeated as necessary, depending on the number of items to be placed in the carton(s) of the pick-cell station316. The system100may coordinate the timing, placement, and movement of the cartons, modular storage units, pick-cell station316workload, and AGVs to bring cartons and modular storage units having items corresponding to an order to the same pick-cell station316during the same time window, as described in further detail herein.

The WMS104may, in some implementations, include one or more hardware and/or virtual servers or software routines storable in one or more non-transitory memory devices and executable by one or more processors to perform the operations, acts, and/or functionality described herein. The WMS104may be configured to store and maintain carton data124in the data store120. The carton data124includes information about cartons and/or containers in the system100, such as a unique identifier for each carton or container, a carton or container type, the zones or areas a carton will visit, the number of pick lines a carton proceeds through, and the priority for the carton. Some cartons or orders may have a higher priority relative to other cartons and the system100may expedite handling of those cartons with higher priority relative to other cartons by the system100. The carton data124may include a picklist defining the items the carton will contain. The WMS104may store data mapping items to the different pick zones (e.g., the pick-to-cart area302, the high-density storage area304, a particular modular storage unit, a particular location at a particular goods-to-person station, etc.). In some implementations, the WMS104may be configured to communicate the carton data124with the WES102, the picking system108, and/or dispatch system106in real time, in batches, as requested by these components, etc.

In some implementations, the system100may include a release logic engine142, although it should be noted that the features and operations of the release logic engine142may be implemented on or distributed among other components of the system100. The release logic engine142may include computer systems and/or logic that perform operations described herein. For instance, the release logic engine142may receive data describing capacity and performance of system resources, such as workstations that print cartons, cart AGVs that transport carts, goods-to-person stations (e.g., pick-cell stations316or cartless stations326), picking system client devices, conveyors, etc., and may direct operations of the resources.

The release logic engine142may receive a trigger to release a batch of cartons for a cart (e.g., a cart may hold 30 cartons) and may, based on priority, pick location, replenishment, cycle times, affinity, etc., select the batch of cartons for the cart. The release logic engine142may also release cartons to goods-to-person stations (either using carts or without using carts) in the fulfillment center. It should be noted that, although many of the operations are described herein in reference to a robotic system, the release logic engine142may also instruct human pickers and other distribution facility/center associates to prepare the cartons, transport carts, etc., as described herein, for example, by transmitting data to picking computing devices of the human associates instructing the computing devices to display instructions for carton preparation.

The picking system108may, in some implementations, include one or more hardware and/or virtual servers or software routines storable in one or more non-transitory memory devices and executable by one or more processors to perform the operations, acts, and/or functionality described herein. In some implementations, the picking system108may include a client picking device, which may be a handheld or mobile device, for example, that may output audible or graphic instructions, receive input, scans, or other confirmations, and/or perform other operations. The picking system108may receive pick confirmations, for example, from pickers or operators (e.g., using barcode scanners, NFC, RFID chips, or other sensors or input methods) working within a pick zone (e.g., a pick-to-cart area302, goods-to-person station, etc.) confirming that picks for a given carton have been performed, as described in further detail below. An example picking system108may include an available pick-to-voice or a pick-to-light system. The picking system108may be configured to communicate the pick confirmation data with the WES102, WMS104, or other components of the system100in real time, in batches, as requested by the components of the system100, etc.

The picking system108may receive confirmatory input (e.g., pick confirmations) from pickers working within a pick zone or on a certain cart. The confirmatory input confirms that picks for a given cart or carton have been completed. The picking system108transmits the confirmatory input to the WES102. The confirmatory input may include a timestamp reflecting completion of the picks, a unique identifier identifying the picker (operator), a unique identifier identifying the pick, a unique identifier identifying the AGV, and/or a unique identifier identifying the carton (e.g. a carton number), etc.

The data store120is an information source for storing and providing access to data. The data stored by the data store120may be organized and queried using various criteria including any type of data stored by it. The data store120may include data tables, databases, or other organized collections of data. An example of the types of data stored by the data store120may include, but is not limited to map data122, AGV data128, carton data124, order data126, modular storage unit data, etc. In some instances, the data store120may also include, conveying system attributes, picking data, picker attributes, sensor data, etc.

The data store120may be included in the WES102, WMS104, REX132, or in another computing system and/or storage system distinct from but coupled to or accessible by the WES102, WMS104, REX132, or other components of the system100. The WES102, picking system108, REX132, and/or dispatch system106, for example, may store and maintain map data122, order data126, carton data124, and AGV data128. The data store120can include one or more non-transitory computer-readable mediums for storing the data. In some implementations, the data store120may store data associated with a database management system (DBMS) operable on a computing system. For example, the DBMS could include a structured query language (SQL) DBMS, a NoSQL DMBS, various combinations thereof, etc. In some instances, the DBMS may store data in multi-dimensional tables comprised of rows and columns, and manipulate, e.g., insert, query, update and/or delete, rows of data using programmatic operations.

The map data122may include data reflecting the 2 or 3-dimensional layout of the facility including the location of modular storage units, picking areas, lanes, equipment110, storage shelving units, items, AGVs, etc. Map data122may indicate the attributes of the distribution facility, including attributes of resources (e.g., one or more pick-to-cart areas302, high-density storage areas304, induction areas308, finalizing areas314, goods-to-person stations, replenishment areas318, etc.). For example, attributes of zones may include the number, quantity, and location of shelving units or bays, modular storage units, items, guidance system locators or markers, etc.

The order data126includes data about picking including orders, items picked, items to be picked, picking performance, picker identities, pick confirmations, locations items are picked from, etc. Order data126may indicate the quantity and identity of items in orders, shipping addresses, order priority, progress of order fulfillment, number of cartons in an order, etc.

Item data130may describe items available for picking in a distribution facility. The item data130may include unique identifiers for these items, the item volume (e.g., the total amount picked in a given window (e.g., in an hour, day, etc.)), the item velocity (e.g., number of different times item picked in a given window (e.g., per hour, day etc.), the unique location of the items within the distribution facility (aisle, shelf, shelf position, etc.), other attributes of the item (e.g., size, description, weight, quantity of items in a package, color, etc.), item inventory, mapping of items of modular storage units, etc. In some implementations, the item data130may include the quantity of particular items a modular storage unit contains, the current location of a modular storage unit, a preferred storage location of items and/or modular storage units, a threshold inventory level of items to be satisfied before autonomously transporting the modular storage unit to a replenishment area318by an MSF-AGV114(e.g., to restock the items in the modular storage unit).

The AGV data128may describe the state of an AGV (operational state, health, location, battery life, storage capacity, items being carried, cartons, etc.), whether picker is assigned to it, etc.

The components of the system100may be coupled to exchange data via wireless and/or wired data connections. The connections may be made via direct data connections and/or a computer network. The computer network may comprise any number of networks and/or types of networks, such as wide area networks, local area networks, virtual private networks, cellular networks, close or micro proximity networks (e.g., Bluetooth, NFC, etc.), etc. In some implementations, one or more of these components may be coupled via a data communications bus.

FIG.2is a flowchart of an example method for system-directed single line pick batching. It should be noted that the operations of the method may be performed by various components of the system100, such as the release logic engine142, WES102, or picking system108. In some implementations, the operations may be split between different components or otherwise distributed. Additional or alternative details or operations of the method ofFIG.2may be described in reference toFIGS.4A-9herein, for example, by combining, exchanging, augmenting, removing, or reordering the operations and features, although other implementations are possible and contemplated herein.

In some implementations, the system100may receive order data representing a set of orders. For instance, the first order data may indicate stock keeping units (“SKUs”) included in the set of orders. The order data may be received continuously as individual orders are received or in waves from another system or component of the system100. The SKUs, for example, may be types of items represented by SKU identifiers, which may be codes, for instance, that identify the SKUs.

For instance, the data may describe a set of orders having one or more SKU identifiers associated with one or more items. The system100may receive first order data representing an initial set of orders and sort the initial set of orders into an eligible set of orders that are eligible for a single-line batch release using a batch-picking cart. For instance, the initial set of orders may be sorted based on those orders having a single SKU identifier per order. For example, the orders may include only a single item or may include multiple copies of the same item with the same SKU identifier. For instance, the orders may have no variation in items in each individual order. In some instances, although each individual order may include only a single SKU, the SKUs may vary across a group of orders. It should be noted that other quantities, variations, specific sub-sets of SKUs, etc., may be used to determine order eligibility.

In some implementations, the system100may use additional or alternative criteria for determining eligibility of an order, group of orders, picking tasks, or single item pick. For instance, eligible orders or item picks may be determined based on their locations in a pick-to-cart area302, their size or weight, their inventory level, or other factors.

At202, the system100may identify a cart for single-line batch picking. In some implementations, the system100may determine, from a database and/or communication with carts (e.g., with cart AGVs or computing devices coupled with the carts) whether a cart is available. In some instances, the system100may receive scan data from a client picking device, which indicates a particular cart for use as a single-line batch-picking cart.

The cart may hold totes, buckets, shelves, or other mechanisms for holding items that are picked onto the cart. For example, a cart may be a cart packed with reusable totes.

In some instances, the system100may dispatch a single-line batch-picking cart in a fulfillment center. The cart may or may not be coupled with a cart AGV116. In some implementations, the system100may transmit an instruction to a cart AGV to couple with a batch-picking cart and navigate within the fulfillment center while transporting the batch-picking cart.

In some implementations, the system100may receive scan data from a client device, such as a picker's client device, identifying the cart. The system100may determine the cart and/or a current location of the cart in a fulfillment center, for example, based on the scan data, a beacon in the fulfillment center (e.g., in the fulfillment center or attached to the cart), or another localization method.

In some implementations, an AGV, as described further below, may navigate to the location of the cart, couple with the cart (although, in some instances, the AGV may be already coupled with the cart), and transport the cart. For instance, the cart may be dispatched from its current location (e.g., a parking spot in an induction or preparation area) to another location, such as the pick-to-cart area302in a fulfillment center, using a cart AGV116.

In some implementations, at204, the system100may determine an order (e.g., an online order of a product, a pick task, a group of tasks, etc.). For instance, the order may be determined based on a SKU identifier, a variation of SKU identifiers in a single order, or another criteria to identify, for example, an eligible order, as described above.

In some implementations, the system100may determine a first order from the set of orders based on a quantity of different SKUs in the first order. For instance, individual orders in the set of orders may include one or multiple different SKUs. The system100may filter the orders based on how many different SKUs each order includes. In some instances, only orders with single SKUs may be selected (whether a single or multiple instances of the SKU). For example, a first order may include a package of Brand Y pens (a first SKU), which are stored at a certain location in the pick-to-cart area302of the fulfillment center.

In some implementations, the system100may additionally or alternatively sort the orders available for batch picking based on their locations in the pick-to-cart area302of the fulfillment center. For instance, as described below, certain locations associated with SKUs may be sorted based on those locations that are located after a current cart location along a path through the pick-to-cart area302, common locations of previously assigned (e.g., to the cart) SKU picks, proximity to previously assigned locations, etc.

At206, the system100may assign an order, item, or location in the pick-to-cart area302to a task queue of the identified cart based on the SKU identifier(s) in the order(s). Assigning the location may be based on a first item (e.g., corresponding to a first SKU identifier) being located at or near the location. For instance, the data store120may store a table matching each SKU stored in the pick-to-cart area302with its location, available inventory, size, attributes, or other information.

In some implementations, assigning the first location to the task queue of the first cart includes determining the first order from among the set of orders based on a quantity of different SKU identifiers in each of the set of orders. The system100may then determine the first location based on a location at which the first item having the first SKU identifier is stored in the pick-to-cart area302. For instance, the order may be selected based on it having on a single SKU identifier.

In some instances, the system100may group a plurality of orders by their SKUs in order to determine a quantity of SKUs to be picked to the cart across the orders assigned to the cart. The system100may assign a location having one or a plurality of instances of the same SKU to the single-line batch-picking cart, as described below. For example, in some implementations, the system100may determine a first quantity of the first SKU in the first order, a second quantity of the first SKU in a second order and sum the first and second quantities to determine a total quantity of the SKU to be picked from the first location to the cart.

In some implementations, the system100may assign multiple locations to the cart at the same time (e.g., prior to navigating the cart to a next location). For instance, the system100may assign two pick locations (e.g., two SKUs) to a task queue of the cart. Responsive to the defined number of locations are assigned, the system100may dispatch an AGV coupled with the cart to a first location in the pick-to-cart area302.

In some implementations, if there are two batch-picking carts that receive picks at the same time, the system100may intelligently assign locations to each cart. For instance, if a certain location to be assigned to a cart is ahead (at a future point along the path of the cart) or is eligible for either cart, it may be first assigned to the cart that is further along a path through the pick-to-cart area302in order to increase picking opportunities and efficiency of the carts. For instance, if the first batch-picking cart is 1% through the pick-to-cart area302, the second batch-picking cart is 50% through the pick-to-cart area302, and the new location is 51% through the pick to cart area, the system100may assign the new location to the second batch-picking cart, so that the location is picked sooner and does not reduce the picking potential (i.e., the potential number of items that could be assigned to a cart due to its capacity or time constraints) of the first batch-picking cart.

At208, the system100may navigate the cart to the location in the pick-to-cart area302. For example, the system100may couple an AGV with the cart and use the AGV to transport the cart, although, in some instances, it may additionally or alternatively issue instructions to a client device indicating for a picker to guide the cart. As described above, the AGV may have having a drive unit adapted to propel the AGV, a guidance system adapted to locate the AGV in an operating environment (e.g., in the pick-to-cart area302), and/or a controller adapted to receive instructions and navigate a cart using the drive unit and the guidance system based on the instructions.

At210, the system100may instruct a picker to pick an item having the SKU identifier at the assigned location in the pick-to-cart area302. For example, the system100may transmit (e.g., using the picking system108) an instruction to a picker client device to display an instruction to a picker. For instance, the system100may transmit a first pick instruction to a client device associated with the batch-picking cart. The first pick instruction may indicate a first quantity of the first SKU stored at the first location. For example, the system100may assign a location and, in some instances, a quantity of the first SKU to the particular batch-picking cart. A picking instruction indicating the assignment may be digitally pushed to (or retrieved by) a client picking device, which may be a computing device mounted to the cart, the cart AGV, or fixed shelving in the pick-to-cart area302or a mobile computing device carried with a human picker. For instance, the client picking device may be a handheld computer that receives picking instructions, outputs/displays SKU descriptions (e.g., identification, attributes, quantity, location, etc.), receives scans of the storage locations, items (e.g., a barcode), or a cart, and/or receives user input indicating picks have been completed.

Although not illustrated in the figures, it should be noted that, in some implementations, a picker may be a robotic device adapted to manipulate items to move them from a first location to a second location (e.g., from a storage shelf to a tote or other container on a cart).

In some implementations, as a pick is being performed, the client picking device may receive one or two sequential pick instructions, so that when a current pick is complete, a second pick is queued and ready to be performed without delay (e.g., due to calculation or downloading of the subsequent pick instruction). By pre-loading the next pick instruction, downtime is reduced. Additionally, by reducing the quantity of pre-loaded or assigned pick instructions, the system100increases flexibility of the cart and future assignments.

In some implementations, a location assigned to the batch-picking cart in a picking instruction may include a larger quantity of the SKU than a picker can easily count or carry from the storage location to the cart. For instance, a picking instruction may include 25 industrial toner cartridges to be picked to the cart for one or multiple cartons (e.g., from one or multiple orders) while the picker may only be able to reasonably carry three cartridges at a time. In such instances, the client picking device may display a graphical user interface providing the option to split the pick/quantity into multiple picks of reduced quantities.

In some implementations, the system100may receive, from the client picking device, a first input requesting to split the pick of the first quantity of the first SKU from the first location into multiple picks. For instance, the input may include a picker selecting a graphical element requesting to “split pick” or indicating “hands full.”

In some instances, the system100may also receive a second input indicating a second quantity of the first SKU for at least one split pick (e.g., one of multiple picks into which a single pick may be divided), for example, the user may request a number of items (e.g., cartridges, packages, etc.) to pick per split pick. The system100may divide the first quantity by the requested number/quantity to determine a quantity of split picks used to complete picking of the first quantity of the first SKU. For instance, instead of a single task of 25 items, it may be split into multiple tasks, each of which have fewer items (e.g., 3, 3, 3, 3, 3, 3, 3, 3, 1).

In some instances, the system100(e.g., via the client picking device) may issue individual instructions and/or receive individual pick confirmations (e.g., inputs via a GUI, scans of items, scans of the cart, etc.) for each split pick. For example, the system100may receive a confirmation message after each split pick and track progress of the split picks based on the confirmation messages, as described in reference to212below.

Accordingly, while picking a large quantity of a given SKU may cause pick errors, especially when a picker has to make multiple trips between the storage location and the cart in order to complete a single pick instruction, splitting the pick task into split picks and tracking each split pick/subtask may reduce these errors. Further, by tracking incremental completion of portions/created subtasks of picks of multiple items, the system100may allow a picker to pause (e.g., for a break) or a new picker to be assigned to the cart mid-way through picking the items.

In some implementations, the system100may automatically surface an option in a displayed GUI on the client picking device to split the pick based on attributes of the pick. For example, if a quantity and/or size of the item exceeds a threshold, the system100may ask the picker if s/he wishes to split the pick.

At212, the system100may receive one or more confirmation input(s) indicating completion of a pick of the item having the SKU identifier. For example, the system100may receive, from the client picking device, one or more confirmation messages indicating completion of the pick of the first quantity of the first SKU from the first location to the batch-picking cart. For instance, a user may scan the item (e.g., a UPC or barcode) and/or cart to indicate that the pick of that item to the cart has been completed. In some instances, if the pick is split, the user may receive and track completion of each portion (e.g., a quantity of copies of an item) of the pick.

In some implementations, the confirmation may include receiving item scan data from a picker client device. For instance, a picker may scan a UPC (universal product code), RFID (radio frequency identification) tag, label, or other identifier on the item, capture an optical image, or provide another input, which the system100may use to identify a SKU of a physical item. The system100may use the item scan data to identify a picked item (and/or item quantity), so that the system100may match the assigned SKU identifier and verify that the correct item has been picked.

Additionally or alternatively, the system100may receive a cart confirmation input from a picker client device, cart AGV116, or computing device coupled with the cart, for example, to indicate that the item is placed into the cart. In some implementations, a picker client device may scan a label (e.g., UPC, RFID tag, or other identifier) attached to or associated with the cart to confirm that the item is placed into/onto the correct cart.

In some implementations, a confirmation input may include a confirmation that a cart is full. For instance, when a cart has a sufficient quantity of items held thereon, for example, to satisfy its capacity, it may be automatically or manually marked as complete or full. For example, after a certain number of items picked or distance through the pick-to-cart area302traveled, the system100may automatically surface a graphical user interface on a picker client device asking if the cart's capacity has been reached. If the user provides an input confirming that the cart is full, the system100may cease assigning items, picks, or locations to the cart. In some instances, the system100may then navigate the cart (e.g., using a cart AGV116) or instruct it to be transported to a finalization area314of a fulfillment center, as described in reference to216and218below.

At214, the system100may determine whether another SKU identifier has been received and/or assigned to the cart. In some implementations, if another SKU identifier has been received, the system100may return to204or206, for instance, to assign the item and/or location to the cart (or, potentially, a second cart). Additional example, operations for assigning a new carton, order, or SKU to the cart are described in further detail in reference toFIGS.7A-9below.

In some implementations, the system100may assign a new location or SKU during transit of the batch-picking cart or after another pick to the cart has been performed. For example, the system100may receive, after dispatching the batch-picking cart, order data representing a second order where the second order includes a pick of an item having a second SKU.

The system100may determine a second location at which the second SKU is stored in the pick-to-cart area302. In some instances, the system100may determine that the second location is located after the first location on a path of the batch-picking cart. For instance, as a cart moves through a pick-to-cart area302, locations may be assigned that do not require the cart to backtrack. In response to determining that the second location is eligible to be assigned to the batch-picking cart, the system100may transmit a second pick instruction to the client device, for example, indicating a second quantity of the second SKU stored at the second location.

In some instances, the second item may be the same SKU as the first item and, when the second item is assigned, the system100increases the quantity of items at the location to be picked.

For example, after dispatching a cart (e.g., using a cart AGV116), the system100may receive order data (e.g., while the cart AGV116is already moving through the pick-to-cart area302or receiving picks) representing a second order. The second order may include a second SKU identifier. As described above, the system100may determine a location of an item with the second SKU identifier and determine that the location or item is eligible for the particular cart. For instance, the second location may be located after one or more already assigned and/or picked locations on a task queue/list and/or path of travel for the cart. In some implementations, if the second location or second item are selected (e.g., based on location, cart capacity, pick priority, etc.), the system100may assign the second location to the cart/its task queue. In some instances, the system100may transmit a second pick instruction to one or more client devices associated with a picker. The second pick instruction may describe the items, a quantity to pick, attributes of the items, etc.

In some implementations, the system100may assign the order, SKU, or location to a second cart. For instance, the system100may identify a second cart and assign a second location to the second task queue of the second cart. The system100may select to which cart to assign the second location based on the cart that is currently closer to the second location, whether the cart has passed the second location along its path of travel through the pick-to-cart area302, an available capacity of the cart(s), a relative amount in carts' task queues (e.g., to balance workload among carts or reduce travel time of some carts), or another criteria.

At216, the system100may navigate the cart to an end point, for example, in response to receiving a confirmation input or message indicating pick completion or otherwise determining satisfaction of a condition for finalizing the picks on the cart. For example, as noted above, the input may indicate that the cart is full or has reached the end of the pick-to-cart area302and, in response, the system100may transport the cart to a finalization station (e.g., using an AGV).

For example, a cart AGV116may transport the batch-picking cart to a goods-to-person, cartless, pick-cell, or finalization station at which items may be picked from the cart into cartons. In some implementations, the system100may receive, from the client device, a message indicating that the batch-picking cart is full and, in response, transport the batch-picking cart to a finalization station, for example, using a cart AGV116. For instance, by allowing a picker to determine when the batch-picking cart is at maximum capacity or that a time threshold associated with a priority of the cart or picks has been met, the system100allows flexibility while increasing utilization of the cart.

At218, the system100may finalize the picks on the cart. In some implementations, the system100may finalize cartons with SKUs at a finalization station where the system100may coordinate instructions sent to client devices instructing a picker (whether the same picker that picked items to the cart or a different picker, robotic device, or fulfillment center associate) to remove an item from the cart and place it into a carton. For instance, the system100may identify a carton associated with the SKUs picked to the cart, for example, as determined at204, and issue an instruction identifying the SKU and/or carton to a client device or picking robot.

The system100may determine that the cart is at a finalization station at which it may receive a scan of an item and identify an order having a SKU identifier corresponding to the item. For instance, based on the item scan, it may automatically perform operations, such as printing a carton shipping label, building a shipping carton, etc. For example, the system100may receive scan data identifying an item, determine an associated order, and automatically print a label associated with the first order. For instance, the system100may automatically print or issue a shipping label, packing slip, hazmat sticker, or other item based on the scan or other input. In some instances, the system100may also automatically print or build a carton or otherwise instruct the picker to prepare the shipping carton. For example, the system100may transmit a finalization instruction to a client computing device of the finalization station indicating to prepare a shipping carton including placing the item in the shipping carton and attaching the label to the shipping carton.

For example, a picker at the finalization station may retrieve an item from the cart and scan the item. Using the scan, the system100may automatically identify an order and/or carton that includes the item/SKU, and print a label associated with the order and/or carton. The system100may also issue an instruction to the picker to prepare a carton including placing the item into the carton, placing the printed label on or in the carton, and/or erecting the carton. In some instances, the user may then place the prepared carton on a separate AGV or conveyor that carries the carton to a delivery vehicle or other subsequent step.

In some instances, when the picker scans the item, the system100may determine that a carton includes a single instance of the SKU and automatically proceed, as described above, to print the label and/or prepare the carton. If, on the other hand, the system100determines that there are multiple copies of the scanned SKU assigned to a single carton, the system100may additionally direct the picker to pick the additional copies of the SKU to the carton.

It should be noted that the operations described in reference to the method inFIG.2may be changed, re-ordered, or removed from the process without departing from the scope of the technology described herein, and that the operations are not inclusive of all possible operations. The operations described in reference toFIG.2may be illustrated and/or described in more detail the example methods ofFIGS.4A-9.

FIG.3is a schematic of an example configuration of a distribution facility layout, which may be an operating environment of one or more pickers, MSF-AGVs114, and/or cart AGVs116. It should be noted that the distribution facility may also be referred to as a fulfillment center herein and may represent a building or group of buildings in which items may be picked into cartons and/or from which cartons are shipped to fulfill orders. In some instances, some or all of the operating environment may be divided into one or more zones or areas, as described above. It should be understood that various distribution facilities may include different picking areas having different stocking infrastructure and picking configurations. For instance, high-volume and/or velocity items (e.g., items appearing above a defined threshold of frequency in orders) may be stored in a pick-to-cart area302and be available for immediate picking, and relatively moderate and/or low-volume and/or velocity items may be stored in high-density storage area304on modular storage units which may be retrieved by MSF-AGVs114for an upcoming pick.

The layout depicted inFIG.3includes various areas: an induction area308, a pick-to-cart area302, a goods-to-person area310, a goods-to-person staging area312, a high-density storage area304, a finalizing or finalization area314, and a freight or modular storage unit elevator (not shown) for multi-level access when the layout includes multiple floors. In some cases, the layout may include multiple levels of mezzanine with one or more of the different zones/areas. In some implementation, cart AGVs116are staged in the induction area308and are set up for picking sessions. In some implementations, cartons are assembled, labeled with unique scannable visual identifiers to associate them with specific orders, and are placed on the supports (e.g., cart shelves) of the cart AGVs116in the induction area308. In some implementations, an induction area308may include one or more workstations for creating and/or printing one or more cartons, as described above.

The pick-to-cart area302may be configured for high-velocity and/or volume items and advantageously reduces capital associated to handle this type of item class. Inventory may be stored in high-volume storage in containers or pallets, for example. High-velocity items may be divided into pick zones or aisles and each zone or aisle may include a plurality of bays (e.g., 4, 5, 6+), which may be balanced by the SKU routing engine and/or WES102based on demand by the SKU routing engine. Cart AGVs116may be scheduled by the REX132to autonomously visit these zones, and pickers accompanying the cart AGVs116may be guided by the picking hardware (e.g., pick-to-voice and/or pick-to-light) controlled by the WES102. In an example, a cart AGV116is instructed by the REX132to stop directly in front of a bay location. The cart AGV116may self-locate using a guidance system. For example, the guidance system may include guidance system locators or markers, such as guide tape (magnetic, colored, etc.), laser target navigation, inertial navigation, vision guidance, geolocation, QR codes on the floor of the order fulfillment center, RFID (radio frequency identification) tags, beacons, etc., that can be used to locate and navigate AGVs in the order fulfillment center. Further, the AGVs may include guidance system components configured to read the guidance system locators, such as a QR code reader, wireless radio, etc.

After the picker picks the item and confirms the pick with the picking hardware, the cart AGV116autonomously moves to the next sequential bay until the picks are complete. As shown inFIG.3, a cart AGV116has the capability to bypass zones, bays, shelves, etc., without picks.

In some implementations, the goods-to-person area310may include pick-cell stations316aand316bsituated along path(s) via which the cart AGVs116are routed. In some implementations, the goods-to-person area310may include one or more cartless stations326in which cartons are built and/or items are picked to cartons, for example, modular storage units may be brought to cartless station326, as described above. Although the goods-to-person stations are shown positioned in a row, they may be located anywhere in the distribution facility. For instance, pick-cell station(s)316may be located between the pick-to-cart area302and the high-density storage area304and the goods-to-person station(s)326may be located near a conveyor, the high-density storage area304, the finalization area314, or another location in the distribution facility.

In some instances, a goods-to-person station326may have equipment for building and/or printing cartons and/or their labels. In some implementations, a goods-to-person station326may include or be adjacent to a conveyor or other mechanism for sending cartons to the cartless station326or receiving picked cartons from the goods-to-person station326. In some instances, a pick-cell station316may serve as a goods-to-person station326, for example.

InFIG.3, the pick-cell stations316are situated opposing a portion of the pick-to-cart area302and the cart AGVs116may be routed to visit one or more of these pick-cell stations316depending on the items that are assigned to be picked and placed in the cartons of these cart AGVs116. In the case that in given cart AGV116does not include any items from the goods-to-person area310, it may bypass it entirely and proceed to the finalizing area314.

In some implementations, for a given picking session, the REX132may establish a single line picking configuration in which the picker and the cart travel through an inventory pick path along a single line until the picks are fulfilled. In further implementations, based on demand, a fast-moving area may be established by the REX132that includes multiple routes: a higher speed line that includes single line picking for low-demand items and another area for high demand items. This combination can advantageously balance daily labor.

The layout may also include a replenishment area318in which modular storage units are replenished with items. For instance, item inventory in a given modular storage unit may be replenished by an MSF-AGV114that picks the modular storage unit from static shelves and transports them to the replenishment area318where a case may be opened and items from the case placed directly into the modular storage units. One or more items (whether of the same type of item or different types) can be placed in a given modular storage unit. In some cases, the modular storage unit may be replenished while it is in the static shelf. Having multiple options (manual or AGV) for replenishment has more flexibility to adjust to resource allocation and schedule. Additionally or alternatively, the MSF-AGV114can swap out the modular storage unit with another containing the same SKUs which has been prepared ahead of time and staged for that purpose.

In some implementations, the REX132may instruct MSF-AGVs114to replenish and distribute modular storage units in different locations of the high-density storage area304based on order history. In these implementations, items with high order frequency orders may be distributed in more locations than items with lower order frequency. The WES102may maintain a moving minimum based on order quantity minimizing the need to use inventory from two locations to fulfill an order, and the REX132may schedule the AGVs accordingly.

The modular storage units storing items may be moved by MSF-AGVs114from high-density storage area304into a staging area312and staged for movement into a goods-to-person station for an upcoming pick. In some implementations, the storage units of faster-moving items may be moved directed to a pick cell316in a given pick-cell station316or cartless station326(e.g., a cartless station326may also include pick cells316).

In further implementations, the REX132may instruct an MSF-AGV114to transfer a modular storage unit between cells of a pick-cell station316, or between goods-to-person stations316or326without having to expend the time to return the modular storage unit to the high-density storage area304.

FIG.3also illustrates example paths of AGVs through the order fulfillment center. The paths are represented by dotted lines, cart AGVs116are represented by ovals, and MSF-AGVs114a. . .114dare represented by diamonds.

Example cart AGV paths are illustrated inFIG.3, for example, a cart AGV116may navigate from an induction area308on a path through the pick-to-cart area302and then to one or more pick-cell stations316. Once the picks for the cart AGV116have been completed, it may navigate to a finalizing area314where cartons are prepared for shipment, for example. In some implementations, the finalizing/finalization area314may include one or more carton removal mechanisms, as described above, and conveyors or other mechanisms for conveying cartons away from the carton removal mechanism(s). Once the cartons have been removed from the cart AGV116, the cart AGV116may return to the induction area308to start through the process again.

Example MSF-AGV paths are also illustrated inFIG.3, for example, an MSF-AGV114amay transport a modular storage unit E from a first pick-cell station316ato a replenishment area318for replenishment. An MSF-AGV114bmay retrieve a first modular storage unit A from a first location, navigate to a second location, retrieve a second modular storage unit B, and transport both the first and second modular storage units A and B to a pick-cell station316b. An MSF-AGV114cmay retrieve a modular storage unit C from a first pick-cell station316aand transport it to a second pick-cell station316b. An MSF-AGV114dmay retrieve a modular storage unit D and transport it back to the high-density storage area304. It should be understood that these paths and implementations are provided as examples and that other combinations are possible and contemplated herein. For example, one or more MSF-AGVs114may perform some or all of the paths illustrated as well as others not illustrated inFIG.3. Further, as described elsewhere herein, the automation of the MSF-AGV114may be performed in synchronization with other actions (e.g., automation of cart AGVs116, picking sessions or windows, movement of other AGVs or pickers, etc.) in the hybrid modular storage fetching system.

FIGS.4A-4Billustrate a flowchart of an example method for inducting orders into the system100. For instance, the system100may use the operations of the example inFIGS.4A-4Bto select locations, SKUs, or picks and/or launch carts, among other features. For example, the release logic engine may assign cartons, SKUs, or locations to a batch-picking cart. It should be noted that the operations of the method may be performed by various components of the system100, such as the release logic engine142.

At402, the system100may start an induction flow and, at404, the system100receive a notification that a cart has arrived at an induction station in the induction area308. The notification may be based on a location (e.g., based on a beacon, scan, communication with cart computing device, or communication with a cart AGV116) of the cart. In some instances, the notification may be based on a scan of the induction station and/or scan of the cart, which links the induction station to the particular cart. The induction station may be one of a plurality of stations or parking areas.

The system100may, at406, receive input requesting to release the cart, for example, via a client device of a picker. For instance, the system100may select an available cart in an induction station for release.

In some implementations, at408, the picker or an automated robot may place totes or other containers onto the cart to hold items. In some instances, an eligible batch-picking cart may be a cart with built in, permanently affixed, or already placed containers to hold items on the cart.

In some instances, at410, the system100(e.g., a client device of the picking system108) may output a message requesting identification of the cart, for example, in response to a confirmation of message indicating that containers are in the cart, that the cart is ready for release, and/or the release input at406. For instance, the system100may receive, at412, a scan of a label or other identifier (e.g., UPC, QR code, RFID, etc.) identifying the cart, for example, from a label reader of a client device. The cart label scan data may identify the cart or its availability/eligibility for a batch picking release (e.g., for the operation at404,406, or410).

In some instances, the method may navigate back from410to406or repeat, for example, one or more of these operations.

The system100may, at414, request identification of a cart parking spot, induction station, or other location of the cart in an induction area308, for example, by a cart AGV116or picker client device. For instance, at416, the system100may receive a parking spot scan data and associate the spot or other location with the identified cart. For instance, the system100may receive a scan of a QR code, RFID tag, etc., on a floor of the induction area308from a cart AGV116or picker client device. Other operations for identifying a location of the cart are possible, such as optical recognition, wireless beacon proximity, LIDAR, etc.

In some implementations, the system100(e.g., the REX server132or dispatch system106) may use the location of the cart to navigate a cart AGV116to couple with the cart and/or compute a path of the cart to one or more assigned pick locations.

In some instances, the method may navigate back from416to412or repeat, for example, one or more of these operations.

At418, the system100may sort orders (or individual cartons for fulfilling the orders) in the system100to determine those that are batch eligible (e.g., having only one SKU as described above) and/or by pick locations. For instance, the system100may determine those orders with items in the pick-to-cart area302, determine the locations of each item, and sort the locations, for example, based on a path through the pick-to-cart area302.

In some implementations, at420, the system100may assign one or more cartons or orders with a pick at a next location to the cart. The system100may additionally or alternatively assign locations. For instance, a location may be determined based on whether the location is ahead of the cart along a path through the pick-to-cart area302, balancing of cart workload(s), pick priority, or other factors. The system100may add the order or carton to the task queue of the cart. If the SKU or location is already assigned to the cart, a quantity of the SKU in the order may be added to the quantity of the SKU already assigned to the cart. As picks or locations are assigned to the carton, the system100may automatically generate a path or list of stops/locations in its task queue.

At422, the system100may determine whether there are batch-eligible cartons or orders remaining to be assigned and/or picked. If there are no remaining eligible orders to be picked, the system100may direct the cart to proceed to finalizing at426, for example, in the finalization area314. In some instances, a release flow may start from424.

If there are additional orders or cartons remaining, the system100may sort batch-eligible cartons by pick location and then add all the cartons for the next location to the cart, for example, to the task queue of the cart, at428. In some instances, the system100may proceed, at430, to picking, such as picking the items from the pick-to-cart area302, as described below.

In some implementations, the system100may detect errors at various points of the method and output error messages, correct the errors, or repeat operations. For instance, after406, the system100may determine whether sufficient cartons are available for a cart. After412, the system100may determine whether the cart is still active, picks are remaining on the cart, the cart is not finalized, or the cart label does not match the mask. After416, the system100may determine whether a parking spot or induction station does not exist or is not available for the cart. It should be noted that other automatic error detecting or mitigation operations are possible and contemplated herein.

FIGS.5A and5Billustrate a flowchart of an example method for picking SKUs to a single-line batch-picking cart. It should be noted that the operations of the method may be performed by various components of the system100, for example, the vision or picking system108may use the operations illustrated inFIGS.5A and5Bto issue picking instructions, receive pick confirmations, and perform other operations shown.

At502, the system100may start a picking flow and, at504may navigate the cart, such as using a cart AGV116or providing instructions to a client device for transporting the cart to a next location.

In some implementations, at506, the system100may receive scan data of the cart, such as a label on the cart scanned by a picker client device. The scan of the cart may associate the cart with the picker client device, so that the particular picker client device receives certain instructions for performing various tasks and receiving various inputs (e.g., by automatically surfacing graphical user interfaces with instructions or input fields). In some instances, in response to receiving the scan of the cart, the system100may transmit instructions to the picker client device directing the user to the location and/or directing the user to pick a defined quantity of the item from the location at508.

In some instances, if there are no picks remaining or if the user indicates that the cart is full or there is not enough room on the cart for the quantity of the item, the system100may move to a finalizing workflow at510and, for instance, instruct the cart to be transported to a finalization area314, as noted elsewhere herein.

At512, the system100may determine whether there is a label (e.g., a universal product code or UPC, an RFID, or other identifier) for the item that is assigned/associated with the item and physically present. For instance, if a picker indicates that they cannot find a UPC on the item, they may indicate, using a client device, that no UPC is present. The system100may, at514, receive user input validating product elements (e.g., attributes identifying the item) and/or scanning the location to confirm the item. If the user or picking robot cannot validate or find the item, the system100may return to504or508to move to the next location.

At516, the system100may receive an input identifying the item, for example, a scan of the label coupled with the item from a client device. The scan may be of a UPC, which the system100may associate (e.g., in a database, as described elsewhere herein) with a SKU identifier, order, or carton.

At518, the system100may transmit an instruction to the picker client device indicating a total quantity of the item to pick to the cart at the location. For instance, if the cartons or orders assigned to the cart have a certain cumulative quantity, the picker client device may output the quantity for the picker to pick.

In some implementations, at520, the system100may determine whether there is enough inventory for the quantity, for example, based the inventory levels indicated in a database or a picker input. If there is not sufficient inventory, the system100may determine whether there is any inventory of the item at422, for example, at the location. If the system100determines that there is no inventory, it may receive user confirmation at524and move to the release or finalization flow at538.

In some implementations, at526, if there is some inventory but not sufficient for the total quantity, the system100may receive user input adjusting the pick quantity down. In some instances, the system100may automatically determine lower or minimum quantities for the item based on orders or cartons assigned to the cart. For instance, if a minimum quantity (e.g.,5boxes of pens) of the SKU that are in any order assigned to the cart, the system100may allow, via a graphical user interface on the client device, the pick quantity may be reduced to either the minimum (e.g.,5boxes of pens) or zero or any other increment based on quantities of the SKU in orders assigned to the cart. In some instances, the system100may reassign or defer picking of orders for which there is insufficient inventory.

In some implementations, at528the system100may determine whether the picker (or a carrying apparatus used by the picker) can carry the quantity of the item based on a threshold quantity of the item, a size of the item, or a user input. For instance, at530, the system100may receive a user input splitting the pick and/or indicating of a quantity of to pick. For instance, the picker may indicate to split the pick of the total quantity into multiple picks of sub-quantities, as described in reference toFIG.2.

At532, the system100may receive an input (e.g., from the client device) indicating a pick of a sub-quantity of the item, for example, using a scan of the item and/or cart (e.g., a label or RFID tag thereon). For example, at534, the system100may receive a cart scan confirming that the pick of the sub-quantity to the item.

At536, the system100may determine whether there are any split picks, sub-quantities, or remaining items of a given SKU to pick from the location. The system100may repeat the split picks until the items have been picked. For instance, if32packages of Brand-X blue pens are assigned to the cart, the user may split the picks into groups of 10 and the system100may instruct the user to pick 10, 10, 10, and 2 (or an equal or relatively equal division less than the quantity, such as 4 picks of 8). The system100may confirm each split pick.

If there are no additional split picks, the system100may proceed to release, at538, the cart to a next location, to receive a newly assigned location (or carton or order), or release the cart to finalizing.

In some implementations, the system100may detect errors at various points of the method and output error messages, correct the errors, or repeat operations. For instance, after506, the system100may determine whether the cart is still being built in the system100or is not yet built, if there are no picks, or if the location is already assigned. After514, the system100may determine whether an item is at the wrong location. After516, the system100may determine whether an incorrect label was scanned or if the scan does not match the SKU identifier. After534, the system100may determine whether the cart scanned is an incorrect or wrong cart. It should be noted that other automatic error detecting or mitigation operations are possible and contemplated herein.

FIGS.6A-6Cillustrate a flowchart of an example method for finalizing cartons using a batch-picking cart. It should be noted that the operations of the method may be performed by various components of the system100, for example, the vision or picking system108may use the operations illustrated inFIGS.6A-6Cto pick items from the batch-picking cart and place them into cartons.

At602, the system100may start a finalizing flow, for example, at604, the system100may receive scan data indicating arrival of the cart at the finalization station. At606, the system100may determine whether there are any items on the cart, for example, which have been picked to the cart and/or are remaining on the cart. For instance, at608, the system100may determine whether there are unpicked cartons or orders (e.g., orders with items) remaining on the cart.

At610, if there aren't remaining items for cartons on the cart, the system100may instruct a user (e.g., by transmitting instructions to a client device at the finalization station) to move remaining item(s) to a separate bin at the finalization station, for example, to be replaced in the pick-to-cart area302, picked manually, or another action performed thereon.

In some implementations, at612, if there are items on the cart (e.g., determined based on a user input indicating such) for unpicked cartons, the system100may request a scan of a label of the item, such as of a UPC on the item, from the user via the client device. At614, the system100may instruct the user to remove the item(s) from the cart and, in some instances, proceed to626.

In some implementations, if there are no items remaining on the cart, at616, the system100may determine whether there are unpicked carton assigned to the cart, for example, if there are cartons assigned to the cart for which there are insufficient items on the cart. If there are no unpicked cartons, the system100may proceed to an induction flow, for example, by navigating the cart back to an induction station.

If there are insufficient items on the cart, the system100may receive, at618, a “short remaining” input from the user indicating that there are not enough of an item with a given SKU identifier. The system100may, at620, display carton adjustments, for example, the REX132may display a graphical user interface that presents a list of carton adjustments that may be made. For instance, the system100may ship a carton with fewer than an ordered quantity, pick another item from the pick-to-cart area302, or request manual correction of the order from a human picker. At622, the system100may receive a change or confirmation input indicating that the adjustments have been made, for example, by changing the order or correcting the pick. The method may then proceed to an induction flow at624.

In some implementations, at626, the system100may determine whether the item has a label (e.g., in the same way or based on the above-noted determination), such as a UPC. If there is a label, the system100may receive UPC/label scan data at628. In some instances, at630, the system100may determine whether there are a sufficient quantity of the item for an order (e.g., determining an order with a certain quantity) and, if there are a sufficient quantity, the system100may print a carton shipping label at634and/or proceed to650. If there aren't sufficient quantity, the system100may direct, at632, a user to replace an item on the cart, for example, for a smaller order or error handling.

If the system100determines, at626, that there isn't a label or UPC on the item, the system may receive input from the user, for example, via a graphical user interface on a picker device, such as on a manual verification button at636. In response, the system100may present a list of SKUs or attributes thereof (e.g., titles, colors, sizes, images, etc.) on the client device at638.

At640, the system100may determine a closest match for the SKU, for example, based on user input selecting the SKU from the presented list. In some implementations, the system100may display, at642, item attributes for verification, for example, by asking whether a product has a certain color, shape, brand, etc. At644, the system100may determine whether the attribute has been verified, such as, when a user indicates and/or confirms the attribute at646thereby confirming its identity.

In some implementations, if the item cannot be identified or matched to an order in the cart, such as when it was accidentally picked, the system100may automatically pass off the pick task for that item or order to a specialized picker for error or manual handling at648. In some instances, the method may proceed to a next item, for example, at606.

At650, the system100may print a packing slip for a carton, if needed. For instance, the system100may identify an order associated with the scanned item, retrieve packing slip and/or shipping data, and automatically communicate a printer at the finalization station to print the packing slip. In some instances, the printer may be placed over an open shipping carton into which prints may automatically fall when the print is complete. In some implementations, other documents such as hazard stickers, advertisements, or other information may be printed and/or provided for the carton based on the identification of the order.

At652, the system100may display, on a client device, packing and/or carton information instructing the user how to prepare a carton, place the item into the cart, which documentation to place on or in the cart, or other instructions. At654, the user may build a carton and apply a shipping label for the order, for example, based on the instructions. In some instances, a shipping carton building machine may automatically build and/or label a carton.

At656, the picker or a robot may place the item(s) into the carton and, at658, the system100may receive carton label scan data, for example, from the client device. The carton label scan data may confirm completion of the carton. In some instances, the system100may proceed to process the next item, for example, at604.

In some implementations, the system100may detect errors at various points of the method and output error messages, correct the errors, or repeat operations. For instance, after604, the system100may determine whether the cart is active, complete, or is the wrong cart. After628, the system100may determine whether the UPC is not present on the particular cart, no more cartons are the particular SKU identifier are on the cart, or that a carton/order has been canceled. After658, the system100may determine if there are any problems with the carton, such as an incorrect size or configuration.

FIGS.7A-7Billustrate a flowchart of an example method for assigning cartons to the cart. The system100may use the operations illustrated inFIGS.7A-7Bto select and assign cartons, SKUs, and/or locations to a batch-picking cart. Some of the operations ofFIGS.7A-7Bare described in further detail above, for example, in reference toFIG.2, so their description here is abbreviated.

At702, the system100may transport an empty cart to an induction station, for example, using a cart AGV116. At the induction station, the cart may be filled with containers on which items may be transported at704. In some instances, at706, the system100may receive input instructing the system100to perform a release.

In some implementations, at708, the system100may request a scan of a cart label, for instance, to confirm identity of the cart and/or its availability for release for batch picking. At710, the system100may receive the cart label scan data identifying the cart. In some instances, at712, the system100may determine a cart parking spot at which the cart is located and, for example, based on the parking spot and/or identification of the cart (and an associated cart AGV116or computing device for communication), navigate the cart from the induction or build station at714.

In some implementations, at716, the system100may determine whether there are remaining locations assigned to the cart and, if there are remaining locations, navigate the cart to the next SKU location at718. At720, the system100may receive cart scan data identifying the cart and, at722, instruct a user to travel to the location of an item in the pick-to-cart area302.

In some implementations, at724, the system100may receive label or UPC scan data identifying the item and, at726, output identification of a quantity of items with the UPC or SKU identifier assigned to the order and/or cart. At728, the system100may receive cart and/or UPC scan data confirming the picks, for example, to confirm that the items are placed into the correct cart. Once the pick at the location is complete, the method may return to716for a next location for a next pick in a task queue of the cart.

At730, in some instances, if there are no remaining locations assigned to the cart, the system100may proceed to navigate the cart to a finalization station in the finalization area314. In some instances, at any point during the picking process (e.g., at722,724, or726), the system100may determine (e.g., based on defined cart capacity or user input) that a cart is full and may cease picking or assigning locations and navigate the cart to finalization.

In some implementations, at732, the system100may receive cart scan data identifying the cart and/or its presence at the finalization station. The system100may determine, at734, whether there is an item remaining on the cart. If there are no remaining items on the cart, the method may proceed to the operation at702to return the cart to the induction area308.

In some implementations, at736, the system100may request and/or receive item identification, such as a UPC scan, from a client device at the finalization station. The identified item may be removed from the cart to be placed in the carton at738. At740and742, the system100may print a carton shipping label and/or packing slip and prepare a shipping box with the item(s). In some instances, the system100may receive carton label confirmation scan data confirming that the carton is prepared with the item at744.

FIG.8illustrates a flowchart of an example method for dynamically assigning cartons to the cart. Some of the operations ofFIG.8are described in further detail above, for example, in reference toFIG.2, so their description here is abbreviated.

In some implementations, at802, the system100may transport an empty carto to an induction station, and, at804, may fill the empty cart with containers or totes. At806, the system100may receive input indicating to perform a release, for example, of a batch-picking cart. The system100, at808and810may request and receive a label scan or other identification of the cart. The system100may, at812, determine a parking spot or other location for the cart, for example, in the induction area308.

In some implementations, at814, the system100may select two locations in the pick-to-cart area302, for example, using a filtering algorithm. For instance, the system100may filter out orders based on whether their quantity of SKUs satisfy a threshold, whether they have picks outside the pick-to-cart area302, whether they have replenishment holds, whether they are batch eligible, whether the quantity of items in the order satisfy a threshold, based on their attributes, how quickly they need to be picked (e.g., a cut time), or other factors. The system100may select locations with SKUs to be picked, for instance, based on one or more of these filters816.

In some implementations, at818, the system100may set a finalization station for single-line batching, for instance, for receiving a batch-picking cart. For example, the finalization station may be configured to perform operations described in reference toFIGS.6A-6C.

The system100may update the status of cartons, for example, to be finalized at the finalization station, at820. In some implementations, at822, the system100may build the cart, for example, the system100may assign tasks to the cart, assign pickers to the cart, or perform other operations, such as those described in reference toFIGS.2-9herein. For instance, the cart may be configured in the REX132, picking system108, or other component(s) of the system100.

FIG.9illustrates a flowchart of an example method for using the release logic engine to add locations, for example, to a cart's task queue. Some of the operations ofFIG.9are described in further detail above, so their description here is abbreviated.

In some implementations, at902, the system100may receive an instruction add a next location, for example, after a pick at a first location has been completed. At904, the system100may select one or more next locations, for instance, using a filtering algorithm, as described in reference toFIG.8.

At906, the system100may select cartons or orders that have items stored at the selected location. In some instances, the system100may select the cartons/orders based on other criteria, such as that described above. For instance, cartons or orders may be selected based on how soon they need to be picked, an order in which they were received, or other filtering criteria.

The system100may update a status of the selected carton(s) or order(s), for instance, to indicate that they are assigned to the cart, at908. In some instances, the system100may add the select carton(s), order(s), or associated task(s) to a task queue of a cart. For instance, the selected order, its SKU identifier(s), and/or the selected location(s) may be assigned, at910, to a cart that is already navigating through the pick-to-cart area302.

FIGS.10A and10Bare illustrations of example cart AGVs1002aand1002b(e.g., also referred to herein as116). The examples may include a cart AGV1002or robot configured to autonomously transport pick-to-cart items, as described above. The cart AGV1002may include or be adapted to autonomously transport a carton holder1004aor1004b(e.g., a cart or shelves) that is adapted to hold cartons (not shown inFIG.10A or10B). For example, a cart AGV1002may push/pull a carton holder1004. In some implementations, a carton may be a box placed on a shelf of the carton holder1004.

As illustrated inFIGS.10A and10B, the cart AGV1002may include a substantially rectangular body and may include or be couplable to a connectable cart having shelves, such as the carton holder1004aor1004b. The cart AGV1002may couple to a connectable cart via a coupling mechanism and matching coupling component, for example, a latch mechanism coupling the cart AGV1002to the connectable cart. In some instances, the shelves may be angled for easy loading of cartons to be filled with picked items.

In some implementations, the cart AGV1002may also include a guidance system that may detect, for instance, a human picker associated with the cart AGV1002(e.g., via a tracking device on the picker, optical recognition, etc.), determine the picker's position, and reposition itself automatically based on the picker's position by comparing the cart AGV's1002position and the picker's position, and a pre-determined offset (e.g., a distance in front of, behind, and/or next to the picker). This advantageously allows the cart AGV1002to follow the picker.

The cart AGV1002may include drive units that move the cart AGV1002in an operating environment. Although other implementations are possible, the drive unit may include turn tables each with one or more drive motors. For instance, the cart AGV1002may include two turn tables, each of which may include one or more drive motors coupled to one or more wheels, tracks, treads, etc. The turntables may be motorized to allow them to rotate. The turntables may allow the cart AGV1002to maneuver along any horizontal trajectory (e.g., forward, backward, sideways, rotate, etc.)

FIG.11is a block diagram illustrating an example computing system1100. The example computing system1100may correspond to a WES102, a WMS104, a dispatch system106, a picking system108, or a REX132, a client device, or a component of the system100, for example.

The code and routines1112may include computer logic executable by the processor1104on a computing system1100to provide for the functionality described in reference to one or more of the components of the system100. For instance, in some implementations, the release logic engine142may include code and routines.

As depicted, the computing system1100may include a processor1104, a memory1106, a communication unit1102, an output device1116, an input device1114, and database(s)1108, which may be communicatively coupled by a communication bus1110. The computing system1100depicted inFIG.11is provided by way of example and it should be understood that it may take other forms and include additional or fewer components without departing from the scope of the present disclosure. For instance, various components of the computing devices may be coupled for communication using a variety of communication protocols and/or technologies including, for instance, communication buses, software communication mechanisms, computer networks, etc. While not shown, the computing system1100may include various operating systems, sensors, additional processors, and other physical configurations. Although, for purposes of clarity,FIG.11only shows a single processor1104, memory1106, communication unit1102, etc., it should be understood that the computing system1100may include a plurality of one or more of these components.

The processor1104may execute software instructions by performing various input, logical, and/or mathematical operations. The processor1104may have various computing architectures to method data signals including, for example, a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, and/or an architecture implementing a combination of instruction sets. The processor1104may be physical and/or virtual, and may include a single core or plurality of processing units and/or cores. In some implementations, the processor1104may be capable of generating and providing electronic display signals to a display device, supporting the display of images, capturing and transmitting images, performing complex tasks including various types of feature extraction and sampling, etc. In some implementations, the processor1104may be coupled to the memory1106via the bus1110to access data and instructions therefrom and store data therein. The bus1110may couple the processor1104to the other components of the computing system1100including, for example, the memory1106, the communication unit1102, the input device1114, the output device1116, and the database(s)1108.

The memory1106may store and provide access to data to the other components of the computing system1100. The memory1106may be included in a single computing device or a plurality of computing devices. In some implementations, the memory1106may store instructions and/or data that may be executed by the processor1104. For example, the memory1106may store the code and routines1112. The memory1106is also capable of storing other instructions and data, including, for example, an operating system, hardware drivers, other software applications, databases, etc. The memory1106may be coupled to the bus1110for communication with the processor1104and the other components of computing system1100.

The memory1106may include a non-transitory computer-usable (e.g., readable, writeable, etc.) medium, which can be any non-transitory apparatus or device that can contain, store, communicate, propagate or transport instructions, data, computer programs, software, code, routines, etc., for processing by or in connection with the processor1104. In some implementations, the memory1106may include one or more of volatile memory and non-volatile memory (e.g., RAM, ROM, hard disk, optical disk, etc.). It should be understood that the memory1106may be a single device or may include multiple types of devices and configurations.

The bus1110can include a communication bus for transferring data between components of a computing device or between computing devices, a network bus system including a network or portions thereof, a processor mesh, a combination thereof, etc. The software communication mechanism can include and/or facilitate, for example, inter-method communication, local function or procedure calls, remote procedure calls, an object broker (e.g., CORBA), direct socket communication (e.g., TCP/IP sockets) among software modules, UDP broadcasts and receipts, HTTP connections, etc. Further, any or all of the communication could be secure (e.g., SSH, HTTPS, etc.).

The communication unit1102may include one or more interface devices (I/F) for wired and wireless connectivity among the components of the system100. For instance, the communication unit1102may include various types known connectivity and interface options. The communication unit1102may be coupled to the other components of the computing system1100via the bus1110. The communication unit1102may be electronically communicatively coupled to a network (e.g., wiredly, wirelessly, etc.). In some implementations, the communication unit1102can link the processor1104to a network, which may in turn be coupled to other processing systems. The communication unit1102can provide other connections to a network and to other entities of the system1001100using various standard communication protocols.

The input device1114may include any device for inputting information into the computing system1100. In some implementations, the input device1114may include one or more peripheral devices. For example, the input device1114may include a keyboard, a pointing device, microphone, an image/video capture device (e.g., camera), a touch-screen display integrated with the output device1116, etc.

The output device1116may be any device capable of outputting information from the computing system1100. The output device1116may include one or more of a display (LCD, OLED, etc.), a printer, a 3D printer, a haptic device, audio reproduction device, touch-screen display, etc. In some implementations, the output device is a display which may display electronic images and data output by the computing system1100for presentation to a user, such as a picker or associate in the order fulfillment center. In some implementations, the computing system1100may include a graphics adapter (not shown) for rendering and outputting the images and data for presentation on output device1116. The graphics adapter (not shown) may be a separate processing device including a separate processor and memory (not shown) or may be integrated with the processor1104and memory1106.

The database(s) are information source(s) for storing and providing access to data. The data stored by the database(s)1108may be organized and queried using various criteria including any type of data stored by them, such as the data in the data store120and other data discussed herein. The database(s)1108may include file systems, data tables, documents, databases, or other organized collections of data. Examples of the types of data stored by the database(s)1108may include the data described herein, for example, in reference to the data store120.

The database(s)1108may be included in the computing system1100or in another computing system and/or storage system distinct from but coupled to or accessible by the computing system1100. The database(s)1108can include one or more non-transitory computer-readable mediums for storing the data. In some implementations, the database(s)1108may be incorporated with the memory1106or may be distinct therefrom. In some implementations, the database(s)1108may store data associated with a database management system (DBMS) operable on the computing system1100. For example, the DBMS could include a structured query language (SQL) DBMS, a NoSQL DMBS, various combinations thereof, etc. In some instances, the DBMS may store data in multi-dimensional tables comprised of rows and columns, and manipulate, e.g., insert, query, update and/or delete, rows of data using programmatic operations.

It should be noted that the components described herein may be further delineated or changed without departing from the techniques described herein. For example, the processes described throughout this disclosure may be performed by fewer, additional, or different components.

It should be understood that the methods described herein are provided by way of example, and that variations and combinations of these methods, as well as other methods, are contemplated. For example, in some implementations, at least a portion of one or more of the methods represent various segments of one or more larger methods and may be concatenated or various steps of these methods may be combined to produce other methods which are encompassed by the present disclosure. Additionally, it should be understood that various operations in the methods are iterative, and thus repeated as many times as necessary generate the results described herein. Further the ordering of the operations in the methods is provided by way of example and it should be understood that various operations may occur earlier and/or later in the method without departing from the scope thereof.

In the above description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. However, it should be understood that the technology described herein can be practiced without these specific details in various cases. Further, various systems, devices, and structures are shown in block diagram form in order to avoid obscuring the description. For instance, various implementations are described as having particular hardware, software, and user interfaces. However, the present disclosure applies to any type of computing device that can receive data and commands, and to any peripheral devices providing services.

In some instances, various implementations may be presented herein in terms of algorithms and symbolic representations of operations on data bits within a computer memory. An algorithm is here, and generally, conceived to be a self-consistent set of operations leading to a desired result. The operations are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout this disclosure, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, refer to the action and methods of a computer system that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices.

A data processing system suitable for storing and/or executing program code, such as the computing system and/or devices discussed herein, may include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories that provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution. Input or I/O devices can be coupled to the system100either directly or through intervening I/O controllers. The data processing system may include an apparatus may be specially constructed for the required purposes, or it may comprise a general-purpose computer selectively activated or reconfigured by a computer program stored in the computer.

The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the specification to the precise form disclosed. Many modifications and variations are possible in light of the above teaching. It is intended that the scope of the disclosure be limited not by this detailed description, but rather by the claims of this application. As will be understood by those familiar with the art, the specification may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, routines, features, attributes, methodologies, and other aspects may not be mandatory or significant, and the mechanisms that implement the specification or its features may have different names, divisions, and/or formats.

Furthermore, the modules, routines, features, attributes, methodologies, and other aspects of the disclosure can be implemented as software, hardware, firmware, or any combination of the foregoing. The technology can also take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. Wherever a component, an example of which is a module or engine, of the specification is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as firmware, as resident software, as microcode, as a device driver, and/or in every and any other way known now or in the future. Additionally, the disclosure is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure is intended to be illustrative, but not limiting, of the scope of the subject matter set forth in the following claims.