Patent Description:
This application contains subject matter that is related to the subject matter of the following applications, which are assigned to the same assignee as this application:
"<NPL>, et al.

This invention relates in general to order fulfillment systems, and more particularly to a system and method for order fulfillment to transport and manipulate inventory to fulfill orders. An example of system known in the art can be found in <CIT>.

A system for order fulfillment using one or more robots includes: a server configured to receive an order comprising an order item; inventory storage operably connected to the server, the inventory storage comprising order items; an actor robot operably connected to and selected by the server, the actor robot configured to perform one or more of picking the order item from inventory storage, moving the order item, and positioning the order item; and an order robot operably connected to the server, the order robot configured to collect the order item, wherein the order item is positioned by the actor robot so as to be accessible to the order robot, so as to perform order fulfillment using one or more robots.

Preferably, but not necessarily, the actor robot is configured to pick and move the order item. For example, the actor robot comprises a mobile actor robot. For example, the actor robot comprises a mobile actor robot configured to carry the order item. For example, the actor robot comprises a stationary actor robot. For example, the actor robot comprises a stationary actor robot configured to move the order item.

A system for order fulfillment using one or more robots includes: a server configured to receive an order comprising an order item; an inventory robot operably connected to the server, the inventory robot comprising order items; an actor robot operably connected to and selected by the server, the actor robot configured to perform one or more of receiving from the server and generating a currently planned path for the actor robot, the actor robot further configured to perform one or more of picking the order item, moving the order item, and positioning the order item; and an order robot operably connected to the server, the order robot configured to collect the order item, wherein the order item is positioned by the actor robot so as to be accessible to the order robot, so as to perform order fulfillment using one or more robots.

A method for order fulfillment using robots includes: receiving, by a server, an order comprising an order item; selecting, by the server, a task robot to perform a task relating to fulfillment of the order; receiving, by the server, position information from the task robot; determining, by the server, using the position information, that the task robot is positioned so as to be ready to perform the task; transmitting, by the server, the task to the task robot; and receiving, by the server, from the task robot, a task confirmation confirming that the task has been completed.

A method for order fulfillment using robots includes: receiving, by a task robot, from a server, a selection by the server of the task robot; computing, by the task robot, a currently planned path configured to enable the task robot to reach the destination while optimizing criteria of interest; executing, by the task robot, the currently planned path; communicating position information, by the task robot, to the server; determining, by the task robot, using the position information, that the task robot is positioned so as to be ready to perform a task relating to fulfillment of an order; receiving, by the task robot, from the server, the task; performing the task, by the task robot; and sending, to the server, by the task robot, a task confirmation confirmed that the task has been completed.

A method for order fulfillment using robots includes: receiving, by a server, an order comprising an order item; selecting, by the server, a task robot to perform a task relating to fulfillment of the order; determining, by the server, a destination for the task robot; computing, by the server, a currently planned path for the task robot configured to enable the task robot to reach the destination while optimizing criteria of interest; transmitting, by the server, the currently planned path to the task robot; receiving, by the task robot, from the server, the currently planned path; executing, by the task robot, the currently planned path; communicating position information, by the task robot, to the server; receiving, by the server, position information from the task robot; determining, by one or more of the server and the task robot, using the position information, that the task robot is positioned so as to be ready to perform the task; transmitting, by the server, the task to the task robot; receiving the task, by the task robot, from the server; performing the task, by the task robot; sending, to the server, by the task robot, a task confirmation confirmed that the task has been completed; receiving, by the server, from the task robot, the task confirmation; and determining, by the server, that the task robot is not to be sent to another destination.

While the present invention is susceptible of embodiment in many different forms, there is shown in the drawings and will herein be described in detail one or more specific embodiments, with the understanding that the present disclosure is to be considered as exemplary of the principles of the invention and not intended to limit the invention to the specific embodiments shown and described. In the following description and in the several figures of the drawings, like reference numerals are used to describe the same, similar or corresponding parts in the several views of the drawings.

The system comprises a robot and a server configured to control the system. The server may be located in a warehouse. The server may be connected to the warehouse via one or more of a network connection, the cloud, a wired connection, and another connection. For example, the robot may comprise a robot base. According to an alternative set of embodiments, the robot base may not be constrained to the plane and may fly using one or more propellers. According to another alternative set of embodiments, the robot may move using actuated legs. According to yet another set of embodiments, the robot may move itself by balancing on a ball.

The system includes a plurality of components such as one or more of electronic components, hardware components, and computer software components. A number of such components can be combined or divided in the system. An example component of the system includes a set and/or series of computer instructions written in or implemented with any of a number of programming languages, as will be appreciated by those skilled in the art.

The system in one example employs one or more computer-readable signal-bearing media. The computer-readable signal bearing media store software, firmware and/or assembly language for performing one or more portions of one or more implementations of the invention. The computer-readable signal-bearing medium for the system in one example comprises one or more of a magnetic, electrical, optical, biological, and atomic data storage medium. For example, the computer-readable signal-bearing medium comprises one or more of floppy disks, magnetic tapes, CD-ROMs, DVD-ROMs, hard disk drives, downloadable files, files executable "in the cloud," electronic memory, and another computer-readable signal-bearing medium.

According to embodiments of the invention, the system receives an order. For example, the order comprises one or more items. For example, the order comprises an inventory management job. For example, the system comprises the inventory manager. For example, the system does not comprise the inventory manager.

According to embodiments of the invention, a server receives the order. For example, the server receives the order from a customer. For example, the server receives the order from an inventory manager.

According to further embodiments of the invention, using the order, the server transmits a task to a robot. For example the task is related to the order. For example, the task comprises an order fulfillment task related to the order.

According to other embodiments of the invention, the robot accepts the task from the server. According to further embodiments of the invention, the robot performs the task. For example, the task comprises a direction to a robot to pick one or more items comprised in the order. For example, the robot picks the one or more items from one or more inventory storages that comprises the one or more items. Inventory storage comprises one or more of an inventory robot, a box, a bin, a fixed shelf, a non-fixed shelf, a rack, a conveyor, a warehouse, another inventory storage location, and other inventory storage.

Packing of the one or more items may be performed. For example, the packing may be performed by a packing robot. Shipping of one or more of the one or more items may be performed. For example, the shipping may be performed by a packing robot.

According to further embodiments of the invention, the one or more robots may be configured to move one or more inventory items. According to other embodiments of the invention, the one or more robots may be configured to manipulate one or more inventory items. For example, the one or more inventory items may be located in one or more warehouses. According to yet other embodiments of the invention, the one or more robots may communicate wirelessly with the server.

According to further embodiments of the invention, the system comprises software.

For example, the software comprises one or more of order fulfillment software and inventory management software. For example, the software may be comprised in one or more of a server, one or more of the one or more robots, in the cloud, and in other software locations.

The software may be configured to assign one or more orders to one or more specific robots. The software may be further configured to select an inventory item. For example, the software may be configured to select an inventory item that comprises an order item. The software may be further configured to assign the order item to a designated robot. For example, an action may comprise one or more of locating an order item, picking an order item, transporting an order item, and packing an order item. For example, picking an order item comprises picking an order item from storage. For example, the server may parse an order out to a robot as a pick order. For example, a pick order comprises one or more of locating an order item and picking an order item. For example, when a robot has completed a designated action, it may send a confirmation to the system that it has completed the designated action. For example, when a robot has completed a pick, it may send a confirmation to the system that it has completed the pick. For example, the server may split among more than one robot the assignment of the items of an order. According to another set of embodiments, the server may also cancel an assignment of a robot to one or more of a designated action and a designated item.

According to other embodiments of the invention, the server is configured to plan a path for execution by one or more robots of one or more assignments. For example, the path may be an optimal path. For example, the path may be a time optimal path. For example, the path may be a cost optimal path. For example, the system may comprise optimization software. For example, one or more of the server, one or more of the one or more robots, the cloud, and other software locations may comprise the optimization software.

For example, the optimization software may plan a path that avoids one or more obstacles. For example, the one or more obstacles may comprise one or more of a human, another robot, a structure, and another obstacle. For example, following the path planned by the optimization software, the robot may execute the path while avoiding the one or more obstacles. For example, the optimization software may plan the path using one or more of a laser scanner, a depth camera, a red-green-blue (RGB) camera, another camera, an ultrasonic sensor, a radar sensor, and another sensor. For example, the sensor may be a time of flight sensor. For example, the system may be configured, in case an order is canceled, to re-plan a new path. For example, the new path may be re-planned between one or more new destination locations. For example, the system may be configured to dynamically re-plan the new path. For example, the robot may be configured to dynamically re-plan the path.

According to other embodiments of the invention, the system may use position information received from a task robot to prepare a task. The task robot comprises one or more of an inventory robot, an order robot, an actor robot, and a packer robot. For example, the system may use the position information to prepare a task for a robot. For example, the system may use the position information to prepare a task for a robot to perform one or more of pausing, waiting for a designated duration of time, and waiting until a designated event occurs. For example, the designated event may comprise an arrival of a robot at a designated location. For example, preparing a task for a robot to wait until the arrival of a robot at a designated location may help perform one or more of avoiding interference with other robots and minimizing interference with other robots.

According to further embodiments of the invention, an order can be fulfilled in a number of several different ways. For example, a pick order can be fulfilled in a number of different ways. For example, a pick order can be fulfilled in a number of different ways depending on details of one or more of a warehouse and another inventory storage location. For example, a pick order can be fulfilled in a number of different ways depending on an automation configuration of one or more of a warehouse and another inventory storage location. For example, one or more of items and inventory may be moved around the inventory storage location by one or more robots.

According to other embodiments of the invention, the robots comprise one or more of inventory robots, order robots, actor robots, and packer robots. According to further embodiments of the invention, the actor robots comprise one or more of stationary actor robots and mobile actor robots.

According to still further embodiments of the invention, inventory robots may comprise robots configured to perform one or more of transportation of inventory and manipulation of inventory. For example, an inventory robot may comprise an inventory robot base.

For example, the inventory robot may be configured to move inventory. For example, the inventory robot may be configured to carry inventory. For example, the inventory robot may be configured to carry inventory on top of itself. For example, the inventory robot may be configured to carry inventory inside itself. In some embodiments, inventory may be contained within one or more of boxes, bins, shelves, and the like.

According to yet other embodiments of the invention, order robots may comprise robots configured to collect order items. For example, an order robot may comprise one or more of an order bin, an order shelf, and an order box. For example, the order robot may comprise an order robot base. For example, an order robot may comprise a mobile order robot base. For example, a mobile order robot may transport one or more of an order bin, an order shelf, and an order box.

According the invention, an actor robot may be configured to perform one or more of picking one or more order items from inventory storage, moving the order item, and positioning the order item so as to be accessible to an order robot. An actor robot comprises one or more of a stationary actor robot and a mobile actor robot. An order item may comprise one or more of an inventory item, a product, and another order item. For example, the actor robot may be configured to transfer an order item between two robots. For example, the actor robot may be configured to pick an order item from one or more of an inventory robot and an order robot to one or more of an inventory robot and an order robot. As another example, the actor robot may be configured to transfer an order item between a robot and the inventory storage. As a further example, the actor robot may be configured to transfer an order item between two inventory storages. The inventory storage may comprise one or more of one or more of a box, a bin, a fixed shelf, a non-fixed shelf, a rack, and other inventory storage.

For example, a stationary actor robot may comprise one or more arms. For example, one or more of the one or more arms may be mobile. For example, one or more of the one or more arms may be fixed. For example, one or more of the one or more arms may be configured to pick an order item.

According to further embodiments of the invention, one or more actor robots may meet at a pick location in an inventory storage location where inventory is picked by one or more of the one or more stationary actor robots. For example, the inventory may be picked from one or more of a robot and inventory storage. For example, the inventory may be transferred to one or more of a robot and inventory storage. An order may thereby be partially or completely filled.

According to other embodiments of the invention, a packer robot may be configured to pack one or more picked order items into a box or other container to be shipped.

Any logic or application described herein that comprises software or code can be embodied in any non-transitory computer-readable medium for use by or in connection with an instruction execution system in a computer system or other system. In this sense, the logic may comprise, for example, statements including instructions and declarations that can be fetched from the computer-readable medium and can be executed by the instruction execution system. In the context of the present disclosure, a computer-readable medium can be any medium that can contain, store, or maintain the logic or application described herein for use by or in connection with the instruction execution system. For example, the computer-readable medium may comprise one or more of random access memory (RAM), read-only memory (ROM), hard disk drive, solid-state drive, USB flash drive, memory card, floppy disk, optical disc such as compact disc (CD) or digital versatile disc (DVD), magnetic tape, and other memory components. For example, the RAM may comprise one or more of static random access memory (SRAM), dynamic random access memory (DRAM), magnetic random access memory (MRAM), and other forms of RAM. For example, the ROM may comprise one or more of programmable read-only memory (PROM), erasable programmable read-only memory (EPROM), electrically erasable programmable read-only memory (EEPROM), and other forms of ROM.

<FIG> are a set of flow charts of a method <NUM> for order fulfillment using robots.

<FIG> is a flow chart of a method <NUM> for order fulfillment using robots.

The order of the steps in the method <NUM> is not constrained to that shown in <FIG> or described in the following discussion. Several of the steps could occur in a different order without affecting the final result.

In step <NUM>, a server receives an order. For example, the server receives a pick order instructing an actor robot to pick one or more order items ordered by a user. For example, the pick order is received from another part of the system. For example, the pick order is received directly from the user. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server selects a task robot to perform a task relating to fulfillment of the order. For example, the task robot comprises an order robot. For example, the task comprises a pick order for a task robot to pick an order item. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot receives from the server the selection of the task robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server determines a destination for the task robot. The destination is determined so as to enable the task robot to perform its task. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, one or more of the server and the task robot computes a currently planned path configured to enable the task robot to reach the destination while optimizing criteria of interest. For example, the currently planned path comprises an initial planned path. For example, the currently planned path comprises a revised planned path. For example, the criteria of interest comprise one or more of the expense of the currently planned path and the time required to execute the currently planned path. For example, the currently planned path optimizes one or more of the expense of the currently planned path and the time required to execute the currently planned path. For example, the currently planned path minimizes one or more of the expense of the currently planned path and the time required to execute the currently planned path. For example, the currently planned path is computed assuming an obstacle-free path to the destination. For example, the currently planned path is computed assuming a path to the destination that is obstacle-free apart from one or more known obstacles. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server transmits the currently planned path to the task robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot receives the currently planned path from the server. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot executes the currently planned path. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot communicates position information to the server. For example, the position information comprises a position of the task robot. For example, the position information comprises a present position of the task robot. For example, the position information comprises a past position of the task robot. For example, the position information comprises a future position of the task robot. For example, the position information comprises position information affecting the task robot's currently planned path. For example, the position information comprises position information regarding an obstacle affecting the task robot's currently planned path. For example, the position information comprises position information regarding an obstacle preventing timely and cost-effective execution of the task robot's currently planned path. For example, the position information comprises position information regarding an obstacle blocking the task robot's current planned path.

For example, the task robot may communicate position information comprising one or more planned future positions to the server. For example, the task robot may communicate with an intermediary server that then communicates with the server. For example, the task robot may communicate wirelessly with the server. For example, the task robot may communicate non-wirelessly with the server. Block <NUM> then transfers control to block <NUM>.

In block <NUM>, the server receives the position information from the task robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, one or more of the server and the task robot determines whether the task robot is positioned so as to be ready to perform the task. If no, the process loops back to step <NUM> for computation of a new currently planned path. If yes, the process proceeds to block <NUM>.

In step <NUM>, the server transmits the task to the task robot. For example, the server transmits to the task robot a pick order instructing the task robot to pick an order item. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot receives the task from the server. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot performs the task. For example, the task robot picks the order item. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot sends a task confirmation to the server confirming that the task has been completed. For example, the actor robot sends a pick confirmation confirming that the order item has been picked. If an expected task confirmation is not received, the server can stimulate its sending by requesting that the task robot send the server the task confirmation. <FIG>, <FIG> provide more detail regarding the picking process. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server receives the task confirmation from the task robot. For example, the server receives the pick confirmation from the order robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server determines whether the task robot is to be sent to another destination. If yes, the process loops back to step <NUM> for computation of a new currently planned path. If no, the process terminates. Alternatively, the process proceeds to optional block <NUM>.

In optional step <NUM>, the task robot completes a final task. For example, if the task comprises a pick order, the order robot loaded with picked order items transports itself to a packing station, where one or more packing robots pack the picked order items. For example, the packing robot packs the picked order items into boxes to be shipped to the customer. For example, the packing robot packs the picked order items into boxes to be shipped to the customer. <FIG> provide more detail regarding the packing process. Block <NUM> then terminates the process.

<FIG> is a flow chart showing exemplary sub-steps of step <NUM> in <FIG> of the method <NUM> for order fulfillment using robots.

The order of the sub-steps in the step <NUM> of the method <NUM> is not constrained to that shown in <FIG> or described in the following discussion. Several of the sub-steps could occur in a different order without affecting the final result.

In step <NUM>, the server asks the robot to determine whether the path of the task robot to the destination is clear. If no, the process loops back to step <NUM> in <FIG> for computation of a new currently planned path. If yes, the process proceeds to block <NUM>.

In step <NUM>, it is queried whether another robot other than the task robot is already occupying the task robot's destination. If yes, the process proceeds to block <NUM>. If no, the process proceeds to step <NUM> in <FIG>.

In block <NUM>, the task robot waits in queue for a time increment. For example, the time increment is predetermined. For example, the time increment is calculated using predetermined parameters. The process then loops back to block <NUM>.

<FIG> are a set of pictures that depict a system <NUM> for order fulfillment using one or more robots as used in a sequence of events in which a stationary actor robot picks ordered inventory from one or more inventory robots and positions the ordered inventory on an order robot. The system <NUM> includes a server <NUM> configured to receive an order comprising an order item.

<FIG> depict an order robot <NUM> that is operably connected to the server <NUM>, a stationary actor robot <NUM>, a first inventory robot <NUM> comprising a first inventory storage <NUM> that is operably connected to the server <NUM>, a second inventory robot <NUM> comprising a second inventory storage <NUM> that is operably connected to the server <NUM>, and a third inventory robot <NUM> comprising a third inventory storage <NUM> that is operably connected to the server <NUM>. Additionally, or alternatively, one or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> is operably connected to the server <NUM>. Optionally, one or more of the first inventory storage <NUM>, the second inventory storage <NUM>, and the third inventory storage <NUM> comprises one or more inventory shelves. As depicted, only the first inventory storage <NUM> comprises one or more inventory shelves 257A, 257B, 257C, 257D, and 257E.

One or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> is used to move one or more of a first order item <NUM>, a second order item <NUM>, and a third order item <NUM>. As shown, the first inventory robot <NUM> comprises the first order item <NUM> and is used to move the first order item <NUM>, the second inventory robot comprises the second order item <NUM> and is used to move the second order item <NUM>, and the third order robot <NUM> comprises the third order item <NUM> and is used to move the third order item <NUM>. The depicted stationary actor robot <NUM> comprises a stationary robot arm <NUM>. Optionally, and as depicted, the stationary robot arm <NUM> is mounted on a vertical lift <NUM>.

Preferably, but not necessarily, the inventory robot <NUM>, <NUM>, <NUM> is configured to pick and move the order item <NUM>, <NUM>, <NUM>.

The order robot <NUM> may comprise order storage <NUM>. The order storage <NUM> may comprise one or more of an order bin, an order shelf, and an order box. For example, the order robot <NUM> may comprise the order robot base. For example, the order robot <NUM> may comprise a mobile order robot base.

The actor robot <NUM> comprises one or more of a stationary actor robot <NUM> and a mobile actor robot <NUM>. The actor robot <NUM> is configured to perform one or more of receiving from the server <NUM> and generating a currently planned path for the actor robot <NUM>. For example, the actor robot <NUM> may be configured to transfer an order item <NUM>, <NUM>, <NUM> between two robots. For example, the actor robot <NUM> may be configured to transfer an order item <NUM>, <NUM>, <NUM> from the respective inventory robot <NUM>, <NUM>, or <NUM> to one or more of the inventory robot <NUM>, <NUM>, or <NUM> and the order robot <NUM>. As another example, discussed in detail in <FIG>, the actor robot <NUM> may be configured to transfer an order item <NUM>, <NUM>, <NUM> between a robot and the inventory storage. As another example, the actor robot <NUM> may be configured to transfer an order item <NUM>, <NUM>, <NUM> between two inventory storages. As another example, the actor robot <NUM> may be configured to perform one or more of picking the order item <NUM>, <NUM>, <NUM> from inventory storage, moving the order item <NUM>, <NUM>, <NUM>, and positioning the order item <NUM>, <NUM>, <NUM>. The inventory storage may comprise one or more of one or more of an inventory robot, a box, a bin, a fixed shelf, a non-fixed shelf, a rack, and other inventory storage.

For example, a stationary actor robot <NUM> may comprise one or more arms <NUM>. For example, one or more of the one or more arms <NUM> may be mobile. As depicted, the arm <NUM> is mobile. For example, one or more of the one or more arms <NUM> may be fixed. For example, one or more of the one or more arms <NUM> may be configured to pick an order item <NUM>, <NUM>, <NUM>.

For example, as depicted here, the second inventory robot <NUM> has the same design as the first inventory robot <NUM>. For example, the second inventory robot <NUM> has a different design from the first inventory robot <NUM>. For example, as depicted here, the third inventory robot <NUM> has the same design as one or more of the first inventory robot <NUM> and the second inventory robot <NUM>. For example, the third inventory robot <NUM> has a different design from the design of one or more of the first inventory robot <NUM> and the second inventory robot <NUM>.

One or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> may comprise an inventory robot base. For example, an inventory robot may comprise a mobile inventory robot base. As depicted, the first inventory robot <NUM> comprises an inventory robot base <NUM>. As depicted, the second inventory robot <NUM> comprises an inventory robot base <NUM>. As depicted, the third inventory robot <NUM> comprises an inventory robot base <NUM>. For example, one or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> may be configured to carry inventory. For example, one or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> may be configured to carry inventory on top of itself. For example, one or more of the first inventory robot <NUM>, the second inventory robot <NUM>, and the third inventory robot <NUM> may be configured to carry inventory inside itself. In some embodiments, as shown in more detail in <FIG>, inventory may be contained in inventory storage that may comprise, for example, one or more of boxes, bins, shelves, and the like, the inventory being given to the order robot. According to alternative embodiments, as shown in more detail in <FIG>, inventory may be picked from more than one inventory storage and given to the order robot. According to alternative embodiments, as shown in <FIG>, the order robot loaded with picked order items transports itself to a packing station, where packing robots pack the picked order items. For example, the packing robot packs the picked order items into boxes to be shipped to the customer.

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which the stationary actor robot <NUM> picks ordered inventory items <NUM>, <NUM>, <NUM> from the one or more inventory robots <NUM>, <NUM>, <NUM> and positions the ordered inventory items <NUM>, <NUM>, <NUM> on the order robot <NUM>. The order robot <NUM> comprises order storage <NUM>. As shown, the order storage <NUM> comprises order shelves <NUM>.

In <FIG>, the stationary actor robot <NUM> picks from the order a first order item <NUM> from the first inventory storage <NUM> comprised in the first inventory robot <NUM>.

Alternatively, or additionally, separate inventory storage (not shown) may be positioned so as to be available to the stationary actor robot <NUM> so that it may be used for temporary storage of inventory items. For example, the inventory storage may comprise one or more of an inventory robot, a box, a bin, a fixed shelf, a non-fixed shelf, a rack, and other inventory storage. <FIG> and <FIG> provide more detail regarding this alternative possibility.

In <FIG>, the stationary actor robot <NUM> positions the first order item <NUM> so as to be accessible the order robot <NUM>. For example, the stationary actor robot <NUM> positions the first order item <NUM> on the order storage <NUM> comprised in the order robot <NUM>. For example, the stationary actor robot <NUM> positions the first order item <NUM> inside the order storage <NUM> comprised in the order robot <NUM>.

In <FIG>, the stationary actor robot <NUM> picks the second order item <NUM> in the order from the second inventory storage <NUM> comprised in the second inventory robot <NUM>.

In <FIG>, the stationary actor robot <NUM> positions the second order item <NUM> so as to be accessible to the order robot <NUM>. For example, the stationary actor robot <NUM> positions the second order item <NUM> on the order storage <NUM> comprised in the order robot <NUM>. For example, the stationary actor robot <NUM> positions the second order item <NUM> inside the order storage <NUM> comprised in the order robot <NUM>.

In <FIG>, the stationary actor robot <NUM> picks the third order item <NUM> in an order from the third inventory storage <NUM> comprised in the third inventory robot <NUM>.

In <FIG>, the stationary actor robot <NUM> positions the third order item <NUM> so as to be accessible to the order robot <NUM>. For example, the stationary actor robot <NUM> positions the third item <NUM> on the order storage <NUM> comprised in the order robot <NUM>. For example, the stationary actor robot <NUM> positions the third order item <NUM> inside the order storage <NUM> comprised in the order robot <NUM>.

Typically, although not necessarily, the order robot and actor robot stay near each other for more than one loop. For example, inventory robots move from actor robot to actor robot delivering inventory items, which the actor robot then brings to the order robot. For example, the actor robot stays near the inventory storage after the actor robot picks an order item from the inventory storage. For example, after the actor robot picks an order item from the inventory storage, the actor robot picks a second order item from the inventory storage.

For example, a mobile inventory robot moves between at least two actor robots. For example, at least one of the actor robots picks an order item from the mobile inventory robot. For example, the order robot comprising an order item drives itself to a packing station. For example, the order robot positions the order item so as to be accessible to the packer robot. Alternatively, or additionally, the packer robot picks the order item from the order robot. For example, at the packing station, a packer robot packs the order item into a container to be shipped.

For example, the order robot <NUM> then moves from one stationary actor robot <NUM> to another stationary actor robot <NUM>, collecting different order items <NUM>, <NUM>, <NUM>. For example, an order may comprise the different order items <NUM>, <NUM>, <NUM>. For example, a first order may comprise some of the different order items, and a second order may comprise the rest of the order items. For example, a first order may comprise first order item <NUM> and second order item <NUM>, and a second order may comprise third order item <NUM>. For example, the different order items <NUM>, <NUM>, <NUM> may be distributed across three or more different orders.

<FIG> are a set of pictures that depict a system <NUM> for order fulfillment using one or more robots. The system <NUM> again includes the server <NUM>.

As depicted in <FIG>, the stationary actor robot <NUM> is again operably connected to the server <NUM>. Inventory storage comprises a conveyor <NUM> that is operably connected with the server <NUM>. The stationary actor robot <NUM> is positioned at the end of the conveyor <NUM>. For example, the conveyor <NUM> may comprise one or more of a conveyor belt <NUM> and another type of conveyor <NUM>. The stationary actor robot <NUM> picks order items <NUM>, <NUM>, <NUM> from the conveyor <NUM>. The stationary actor robot <NUM> positions the picked order items <NUM>, <NUM>, <NUM> so as to be available to the order robot <NUM>. Alternatively, or additionally, the stationary actor robot <NUM> positions the picked order items <NUM>, <NUM>, <NUM> so as to be available to an inventory robot (not pictured).

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which the stationary actor robot <NUM> picks ordered inventory <NUM> comprising the first order item <NUM>, the second order item <NUM>, and the third order item <NUM>, from a conveyor <NUM> and positions the ordered inventory <NUM> on the order robot <NUM>. The depicted stationary actor robot <NUM> again comprises the stationary robot arm <NUM> mounted on the vertical lift <NUM> at the inventory storage location <NUM>.

In <FIG>, the stationary actor robot <NUM> picks a first order item <NUM> in an order from the conveyor <NUM>. Ordered inventory <NUM> comprises the first order item <NUM>, a second order item <NUM>, and a third order item <NUM>. The depicted stationary actor robot <NUM> again comprises a stationary robot arm <NUM> mounted on a vertical lift <NUM> at a predetermined pick location.

Alternatively, or additionally, inventory storage (not shown) may be positioned so as to be available to the stationary actor robot <NUM> so that it may be used for temporary storage of the ordered inventory <NUM>. For example, the inventory storage may comprise one or more of one or more of an inventory robot, a box, a bin, a fixed shelf, a non-fixed shelf, a rack, and other inventory storage. <FIG> and <FIG> provide more detail regarding inventory storage.

In <FIG>, the stationary actor robot <NUM> positions the first order item <NUM> so as to be accessible the order robot <NUM>. For example, the stationary actor robot <NUM> positions the first order item <NUM> on the order robot <NUM>. For example, the stationary actor robot <NUM> positions the first order item <NUM> inside the order robot <NUM>.

In <FIG>, the stationary actor robot <NUM> picks a second order item <NUM> in the order from the conveyor <NUM>.

In <FIG>, the stationary actor robot <NUM> positions the second order item <NUM> so as to be accessible to the order robot <NUM>. For example, the stationary actor robot <NUM> positions the second order item <NUM> on the order robot <NUM>. For example, the stationary actor robot <NUM> positions the second order item <NUM> inside the order robot <NUM>.

In <FIG>, the stationary actor robot <NUM> picks a third order item <NUM> in the order from the third inventory robot <NUM>.

In <FIG>, the stationary actor robot <NUM> positions the third order item <NUM> so as to be accessible to the order robot <NUM>. For example, the stationary actor robot <NUM> positions the third order item <NUM> on the order robot <NUM>. For example, the stationary actor robot <NUM> positions the third order item <NUM> inside the order robot <NUM>.

<FIG> are a set of pictures that depict a system <NUM> for order fulfillment using one or more robots. The system again includes the server <NUM>. The first inventory robot <NUM> again comprises inventory storage <NUM>. As shown, the inventory storage <NUM> comprises one or more inventory shelves <NUM>.

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which a mobile actor robot <NUM> that is also the mobile order robot <NUM> picks the first order item <NUM> from the first inventory storage <NUM> comprised in the first inventory robot <NUM> and positions the first order item <NUM> so as to be accessible to the mobile order robot <NUM>. The mobile actor robot <NUM> comprises actor storage <NUM>. As shown, the actor storage <NUM> comprises actor shelves <NUM>.

For example, one or more mobile actor robots <NUM> may meet at a pick location in an inventory storage location where one or more order items <NUM>, <NUM>, <NUM> is picked by one or more of the one or more mobile actor robots <NUM>. For example, the one or more order items <NUM>, <NUM>, <NUM> may be transferred between a robot and inventory storage. For example, the inventory may be transferred to one or more of a robot and inventory storage. An order may thereby be filled.

In <FIG>, the mobile actor robot <NUM>, using a mobile actor robot arm <NUM>, picks the first order item <NUM> in an order from the inventory robot <NUM>.

In <FIG>, the mobile actor robot <NUM>, using the mobile actor robot arm <NUM>, positions the first order item <NUM> so as to be accessible to the mobile actor robot <NUM>. Here the mobile actor robot <NUM> also effectively acts as the order robot. For example, the mobile actor robot <NUM> positions the first order item <NUM> on the actor storage <NUM> comprised in the mobile actor robot <NUM>. For example, the mobile actor robot <NUM> positions the first order item <NUM> inside the actor storage <NUM> comprised in the mobile actor robot <NUM>. The order storage <NUM> comprises one or more actor shelves <NUM>.

<FIG> are a set of pictures that depict a system <NUM> for order fulfillment using one or more robots. The system again includes the server <NUM>.

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which a mobile actor robot <NUM> that is also effectively the inventory robot picks the first order item <NUM> from the mobile actor robot <NUM> and positions the first order item <NUM> so as to be accessible to the order robot <NUM>. The order robot <NUM> comprises order storage <NUM>. The mobile actor robot <NUM> comprises actor storage <NUM>. As shown, the actor storage <NUM> comprises actor shelves <NUM>.

In <FIG>, the mobile actor robot <NUM> picks the first order item <NUM> in an order from the mobile actor robot <NUM>.

In <FIG>, the mobile actor robot <NUM> positions the first order item <NUM> so as to be accessible to the order robot <NUM>. Here the mobile actor robot <NUM> also effectively acts as an inventory robot. For example, the mobile actor robot <NUM> positions the first order item <NUM> on the order storage <NUM> comprised in the order robot <NUM>. For example, the mobile actor robot <NUM> positions the first order item <NUM> inside the order storage <NUM> comprised in the order robot <NUM>.

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which a mobile actor robot <NUM> that is also the mobile order robot <NUM> picks the first order item <NUM> from inventory storage <NUM> and positions the first order item <NUM> so as to be accessible to the mobile order robot <NUM>. The mobile actor robot <NUM> again comprises actor storage <NUM>.

The inventory storage <NUM> may be positioned so as to be available to the mobile actor robot <NUM> so that it may be used for temporary storage of the ordered inventory <NUM>. For example, the inventory storage <NUM> may comprise one or more of an inventory robot <NUM>, a box <NUM>, a bin <NUM>, a fixed shelf <NUM>, a non-fixed shelf <NUM>, a rack <NUM>, and other inventory storage <NUM>. As depicted, the inventory storage <NUM> comprises the fixed shelf <NUM>.

In <FIG>, the mobile actor robot <NUM>, using a mobile actor robot arm <NUM>, picks the first order item <NUM> in an order from the inventory storage <NUM>.

In <FIG>, the mobile actor robot <NUM>, using the mobile actor robot arm <NUM>, positions the first order item <NUM> so as to be accessible to the mobile actor robot <NUM>. Here the mobile actor robot <NUM> also effectively acts as the order robot. For example, the mobile actor robot <NUM> positions the first order item <NUM> on the actor storage <NUM> comprised in the mobile actor robot <NUM>. For example, the mobile actor robot <NUM> positions the first order item <NUM> inside the actor storage <NUM> comprised in the mobile actor robot <NUM>.

<FIG> depict the system <NUM> for order fulfillment using robots as used in a sequence of events in which the mobile actor robot <NUM> picks the first order item <NUM> from a first inventory storage <NUM> and positions the first order item <NUM> so as to be accessible to the order robot <NUM>, then picks the second order item <NUM> from a second inventory storage <NUM> and positions the second order item <NUM> so as to be accessible to the order robot <NUM>. Alternatively, or additionally, multiple actor robots may be involved in the process, so that a first order robot receives the first order item <NUM> and a second order robot receives the second order item <NUM>. The order robot <NUM> again comprises order storage <NUM>.

In <FIG>, the mobile actor robot <NUM>, using a mobile actor robot arm <NUM>, picks the first order item <NUM> in an order from the first inventory storage <NUM>.

In <FIG>, the mobile actor robot <NUM>, using the mobile actor robot arm <NUM>, positions the first order item <NUM> so as to be accessible to the order robot <NUM>. For example, the mobile actor robot <NUM> positions the first order item <NUM> on the order robot <NUM>. For example, the mobile actor robot <NUM> positions the first order item <NUM> on the order storage <NUM> that is comprised in the order robot <NUM>.

For example, the order robot may then move from one stationary actor robot to another stationary actor robot, collecting different order items. For example, an order may comprise the different order items. For example, a first order may comprise some of the different order items and a second order may comprise the rest of the order items. For example, the different order items may be distributed across three or more different orders.

In <FIG>, the mobile actor robot <NUM> picks the second order item <NUM> in an order from the second inventory storage <NUM>.

In <FIG>, the mobile actor robot <NUM> positions the second order item <NUM> so as to be accessible to the order robot <NUM>. For example, the mobile actor robot <NUM> positions the second order item <NUM> on the order robot <NUM>. For example, the mobile actor robot <NUM> positions the second order item <NUM> on the order storage <NUM> that is comprised in the order robot <NUM>.

<FIG> are a set of pictures that depict an order robot that is loaded with picked order items driving itself to a packing station pursuant to a system for order fulfillment using one or more robots, where a packer robot packs one or more of the order items into boxes to be shipped.

In <FIG>, the order robot <NUM> comprising one or more picked order items drives from a pick location <NUM> to a packing station <NUM>. For example, as pictured, the order robot <NUM> comprising the first order item <NUM> and the second order item <NUM> drives from the pick location <NUM> to the packing station <NUM>.

In <FIG>, the order robot <NUM> comprising the first order item <NUM> and the second order item <NUM> arrives at the packing station <NUM>.

In <FIG>, the order robot <NUM> positions the first order item <NUM> so as to be accessible to a packer robot <NUM>. Alternatively, or additionally, the packer robot <NUM> picks the first order item <NUM> from the order robot <NUM>.

In <FIG>, the packer robot <NUM> packs the first order item <NUM> in a first box <NUM>.

In <FIG>, the order robot <NUM> positions the second order item <NUM> so as to be accessible to a packer robot <NUM>. Alternatively, or additionally, the packer robot <NUM> picks the second order item <NUM> from the order robot <NUM>. Alternatively, or additionally, the packer robot <NUM> that picks the first order item <NUM> from the order robot <NUM> can be a first packer robot and the packer robot <NUM> that picks the second order item <NUM> from the order robot <NUM> can be a second packer robot. Commonly, but not necessarily, the first box <NUM> and the second box <NUM> will be the same box. Alternatively, or additionally, the packer robot <NUM> packs the second order item <NUM> before packing the first order item <NUM>. That is, the packer robot <NUM> is not bound to follow the same sequence used during the picking process.

In <FIG>, the packer robot <NUM> packs the second order item <NUM> in a second box <NUM>.

<FIG> is a flowchart of a method <NUM> for order fulfillment using robots. The order of the steps in the method <NUM> is not constrained to that shown in <FIG> or described in the following discussion. Several of the steps could occur in a different order without affecting the final result.

In step <NUM>, a server receives an order. For example, the order comprises one or more items. For example, the order comprises an inventory management job. For example, the server receives the order from a customer. For example, the server receives the order from an inventory manager. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server selects a task robot to perform a task relating to fulfillment of the order. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server receives position information from the task robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, using the position information, the server determines that the task robot is positioned so as to be ready to perform the task. Block <NUM> then transfers control to block <NUM>.

In block <NUM>, the server transmits one or more of the task and the destination to the task robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the server receives from the task robot, a task confirmation confirming that the task has been completed. Block <NUM> then terminates the process.

Additional optional steps may be performed after step <NUM>. The server may compute a currently planned path for the task robot configured to enable the task robot to reach the destination while optimizing criteria of interest. Then the server may transmit the currently planned path to the task robot. Alternatively, the task robot determines the currently planned path itself without recourse to the server for generation of the currently planned path.

In step <NUM>, a task robot receives from a server one or more of a selection of the task robot and a destination. The task robot again comprises one or more of an inventory robot, an order robot, an actor robot, and a packer robot. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot computes a currently planned path configured to enable the task robot to reach the destination while optimizing criteria of interest. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot communicates position information to the server. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot determines, using the position information, that the task robot is positioned so as to be ready to perform a task relating to fulfillment of an order.

In step <NUM>, the task robot performs the task. Block <NUM> then transfers control to block <NUM>.

In step <NUM>, the task robot sends a task confirmation confirming that the task has been completed. Block <NUM> then terminates the process.

According to additional embodiments of the invention, the robots may provide logging data to the server. When a robot interacts with an order item, optionally it can perform one or more information captures. The robot can then send the one or more information captures to the server. The information capture can comprise one or more of a camera image, a video, a depth image, a laser measurement, and another information capture.

A destination may comprise one or more of a destination bin, a destination robot, and another destination.

The server is configured to track data points comprising one or more of inventory items, robots, destinations, and inventory storage. The server is further configured to receive a query.

The server is further configured to provide an answer to a query. For example, the server provides the answer to the query. For example, the query comprises a question regarding one or more data points. Queries may be entered by a human. Queries may be entered by a robot. Data may be stored indefinitely. Alternatively, data may be stored for a predetermined maximum time period, which may vary based on inventory item details such as purchase date, type of inventory item, buyer, and other inventory item details. For example, data may be stored until a final return date has expired, at which point data may not be needed as the seller may at that point be free of potential liability for any inventory items that may have been damaged in transit to the buyer.

In addition to tracking inventory, robots may also track other inventory items in the warehouse, such as forklifts. When a forklift is seen by a robot, the robot may transmit its location and other relevant information to the server. Relevant information may comprise one or more of forklift condition, dates and times when the forklift was used, inventory items that were transported using the forklift, overall forklift usage information, and other relevant forklift information. The server may then use the software to determine when forklift maintenance may be required. The server may then use the software to determine when forklift replacement may be required.

Data collected by the robots may comprise sensor data relating to a particular inventory storage, for example, a particular warehouse. Sensor data may comprise metrics and other sensor data. Metrics relating to a particular inventory storage may comprise one or more of a humidity, a percentage of air particulates, a temperature, and another metric. The robot may also use the sensor data to monitor the "health" of the inventory storage, for example, of the warehouse. If a robot detects conditions differing by preset parameters from preset conditions, the robot may alert the server through the network. The server may then alert an inventory storage manager.

For example, it will be understood by those skilled in the art that software used by the system and method for order fulfillment using robots may be located in any location in which it may be accessed by the system. It will be further understood by those of skill in the art that the number of variations of the network, location of the software, interactions of robots and humans, and the like are virtually limitless. It is intended, therefore, that the subject matter in the above description shall be interpreted as illustrative and shall not be interpreted in a limiting sense.

While the above representative embodiments have been described with certain components in exemplary configurations, it will be understood by one of ordinary skill in the art that other representative embodiments can be implemented using different configurations and/or different components.

For example, it will be understood by one of ordinary skill in the art that the order of certain steps and certain components can be altered without substantially impairing the functioning of the invention. For example, in <FIG>, more than one stationary actor robot may do the picking. For example, in <FIG>, more than one order robot may receive the picked order items. For example, one or more of the actor robot, the order robot, the inventory robot, and the packer robot may be the same. For example, the actor robot may be the same as the packer robot, with the order robot being a second distinct type of robot and the inventory robot being a third distinct type of robot. For example, one robot may communicate position information regarding a second robot.

Claim 1:
A system for order fulfillment using one or more robots, comprising:
a server configured to receive an order comprising an order item;
inventory storage operably connected to the server, the inventory storage comprising order items and an inventory robot configured to perform one or more of transportation of inventory and manipulation of inventory;
an actor robot which includes a robotic arm that is operable to transfer the order item, characterized in that said actor robot is operably connected to and selected by the server and which communicates position information to the server, and which is configured to perform one or more of picking the order item from the inventory storage, moving the order item, and positioning the order item and,
wherein the server is configured to determine, using the position information, that the actor robot is positioned so as to be ready to perform a task relating to fulfillment of an order, the server is configured to generate a currently planned path along which the actor robot is configured to move, wherein the server is configured to transmit the currently planned path to the actor robot,
the actor robot being configured to perform one or more of receiving from the server a currently planned path for the actor robot and to execute the currently planned path, the actor robot further being configured to perform the task relating to fulfillment of an order, which is one or more of picking the order item from inventory storage, moving the order item, and positioning the order item; and
an order robot operably connected to the server, the order robot being configured to collect the order item, wherein the order item is positioned by the actor robot directly onto the order robot so as to be accessible to the order robot, so as to perform order fulfillment using one or more robots,
wherein the position information comprises a position of the robots.