Multi-agent path planning using real robot dynamics and interdependent tasks

The automated system optimizes navigation robot paths in complex environments by using IPP and VP* algorithms to manage multiple robots with interdependent tasks, ensuring efficient and collision-free operation.

JP2026041692APending Publication Date: 2026-03-10NAVER CORP
View PDF 0 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Applications
Current Assignee / Owner
Filing Date
2025-08-22
Publication Date
2026-03-10

AI Technical Summary

Technical Problem

Existing navigation robot systems struggle to efficiently manage multiple robots in complex environments with interdependent tasks and realistic robot dynamics, leading to collisions and suboptimal path planning.

Method used

An automated system and method for controlling multiple navigation robots that includes a control module to order tasks, allocate resources, and determine paths considering precedence constraints and robot dynamics, using algorithms like Interleaved Path Planning (IPP) and Via-Point Star (VP*) to avoid collisions and optimize trajectories.

Benefits of technology

The solution enables efficient, collision-free path planning for multiple robots in constrained spaces, optimizing task completion times and throughput by considering interdependent tasks and realistic robot dynamics.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 2026041692000001_ABST
    Figure 2026041692000001_ABST
Patent Text Reader

Abstract

Providing an automation system for the space. [Solution] The system includes k navigation robots (k is an integer greater than or equal to 2, and the space includes one or more waiting areas where any navigation robot can wait without interfering with the movement of other navigation robots) that operate to execute an order set within a space, and a control module configured to receive the order set and communicate to the k navigation robots a path p for the k navigation robots to execute the order set, wherein each order in the order set includes one or more tasks including a sequence of operations to be performed at a location in the space, has an order availability time after which any task of the order is started, and is associated with a set of precedent constraints arising from at least one of the relationships between the orders and the resources of the orders.
Need to check novelty before this filing date? Find Prior Art

Description

[Technical Field]

[0001] This application claims the benefit of U.S. Provisional Application No. 63 / 687,036, filed August 26, 2024, the disclosure of which is incorporated herein by reference in its entirety.

[0002] The present disclosure relates to navigation robots, and more particularly to systems and methods for controlling multiple navigation robots in a space. [Background technology]

[0003] The background discussion provided herein is intended to generally present the context of the disclosure. The work of the presently named inventors, to the extent that it is described in the background of the present invention, is not admitted expressly or impliedly as prior art to the present disclosure, as well as aspects of the discussion that do not qualify as prior art at the time of filing.

[0004] A navigation robot is a mobile robot that explores its environment without colliding with objects during its movement.

[0005] Navigation robots are used in a variety of industries, including package handling robots that explore indoor spaces (e.g., warehouses) to transport one or more packages to their destination, and autonomous vehicles that explore outdoor spaces (e.g., roads) to transport one or more passengers from a boarding point to a destination. Summary of the Invention [Means for solving the problem]

[0006] In one aspect, an automated system for a space includes k navigation robots operating to execute an order set within a space, k being an integer greater than or equal to two, the space including one or more waiting areas where any navigation robot can wait without interfering with the movement of any other navigation robot; and a control module configured to receive the order set and communicate a path p for the k navigation robots to execute the order set, wherein each order in the order set (I) includes one or more tasks including a sequence of actions to be performed at a location in the space; (II) has an order availability time after which any task in the order may be initiated; and (III) is associated with (i) a relationship between the orders and (ii) a set of antecedent constraints arising from at least one of the resources of the orders; and the control module, wherein the moves communicated by the control module to the k navigation robots are determined for each order in the order set by a procedure including: (A) ordering the orders in the order set as a function of the set of antecedent constraints. (B) allocating resources to complete each task of each order in the order set according to the sequence of actions associated with that task; (C) ordering the tasks in the task set for each order in the order set; (D) assigning one of the k navigation robots to each task of each order in the order set; (E) for each task t of each order in the order set and its assigned navigation robot r, while satisfying the ordered order order and the ordered task order, (i) calculating a best start time for task t based on task t and the position of navigation robot r in space; (ii) if the best start time for task t is greater than the completion time of the final action performed by navigation robot r, (1) exploring and reserving a path for navigation robot r to move to one of the waiting areas; (2) calculating a waiting time for navigation robot r to wait in the waiting area to start task t while satisfying order availability times and precedence constraints; and (3) assigning to navigation robot r a waiting time greater than or equal to the waiting time.(iii) determining a path p starting from the current location of the navigation robot r while taking into account previously reserved paths, continuing the path p according to the sequence of positions associated with the sequence of operations of the task t, and completing the path p at (a) a waiting area of ​​the navigation robot r or (b) the final position of the final operation in the sequence of operations, where the waiting time associated with the path p takes into account the movement time and operation execution time of the navigation robot r; and (iv) reserving the determined path p for performing the task t associated with the order.

[0007] As an additional feature, the k navigation robots are configured to move along respective ones of the paths p assigned to respective ones of the k navigation robots.

[0008] As an additional feature, the precedence constraint is defined by one or more actions of the first order finishing within a predetermined time period of at least zero seconds before one or more actions of the second order begin.

[0009] As an additional feature, the precedence constraints are based on using the same resource for multiple different orders.

[0010] As an additional feature, the same resource is the same workstation.

[0011] As an additional feature, the resources are available for less than the entire time.

[0012] As an additional feature, the precedence constraint is based on a first task of a first type not being able to start before a second task of a second type is finished.

[0013] As an additional feature, the control module is configured to allocate resources to the operation of the order, the resources including one or more of a robot and a workstation.

[0014] As an additional feature, the control module is further configured to reserve a path p between a starting position of a navigation robot r, which is one of the k navigation robots, and a waiting area of ​​the navigation robot r.

[0015] As an additional feature, the control module is configured to determine a path p such that the navigation robot r performs the corresponding action within a time period at least equal to the duration of the action while avoiding collision with reserved paths of other navigation robots among the k navigation robots.

[0016] As an additional feature, the non-collision of the navigation robot r with the reserved paths of other navigation robots among the k navigation robots is verified by checking that the bounding box of the navigation robot r does not collide with the reserved paths of other navigation robots among the k navigation robots.

[0017] As an additional feature, the bounding box is larger than the bounding box based on the actual size of the navigation robot r.

[0018] As an additional feature, the control module is configured to determine the best start time for task k based on (a) the completion time of the task for which the path is booked, (b) the order start time corresponding to task t, and (c) a set of precedence constraints.

[0019] As an additional feature, the control module is configured to determine a path p for the navigation robot r to one of the waiting areas based on previously booked paths of other robots.

[0020] As an additional feature, one waiting area is assigned to one navigation robot.

[0021] As an additional feature, the control module is configured to assign a waiting area to multiple navigation robots of the k navigation robots.

[0022] As an additional feature, the total number of the one or more waiting areas is either greater than k or less than k.

[0023] As an additional feature, a resource may be used by a predetermined maximum number of operations at a given time, and the next operation on the resource may not start earlier than the minimum finish time of the operations using the resource.

[0024] As an additional feature, the control module is further configured to reserve one or more paths for one or more moving obstacles.

[0025] As an additional feature, the control module is configured to receive a first graph representing a geometric structure of a space, determine a second graph using the first graph, and determine paths for the k navigation robots in the second graph.

[0026] As an additional feature, the second graph contains more nodes and more arcs than the first graph to indicate rotation in a given direction.

[0027] As an additional feature, the second graph includes two nodes for one or more nodes in the first graph, the two nodes including a first node for directions away from the node and a second node for directions toward the node.

[0028] As an additional feature, the second graph includes one or more shortcut arcs that bypass the straight line nodes.

[0029] As an additional feature, the second graph includes one or more shortcut arcs that bypass nodes of the paths in the second graph.

[0030] As an additional feature, the control module is configured to determine a path based on the second graph and the dynamics of the k navigation robots.

[0031] As an additional feature, the control module is configured to determine the path based on the geometry of the k navigation robots.

[0032] As an additional feature, the control module is configured to determine a path further based on the respective directions for movement.

[0033] As an additional feature, the control module is configured to determine the route further based on a direction for the waiting area.

[0034] As an additional feature, the control module is configured to determine the path further based on a maximum velocity of the navigation robot through the arcs of the second graph or at the nodes of the second graph.

[0035] As an additional feature, the control module is configured to determine the path further based on time-dependent maximum velocities of the k navigation robots at least one of: (a) through arcs of the second graph; and (b) at nodes of the second graph.

[0036] As an additional feature, the control module is configured to determine the path of the navigation robot further based on the navigation robot not coming within a predetermined distance of any other navigation robot among the k navigation robots while moving along its respective path.

[0037] As an additional feature, the control module is configured to determine paths for the k navigation robots further based on progressively constructing partial paths by adding elements to the ends of previously calculated paths.

[0038] As an additional feature, the control module is configured to determine the route based on a comparison of the partial routes.

[0039] As an additional feature, the control module is configured to compare the partial paths further based on their heap scores using a heap score function that includes a weighted sum of penalties.

[0040] As an additional feature, the heap score function further includes a weighted sum of lower bounds on the duration of the shortest path from the end of the subpath to the destination that passes through all unreached locations in the sequence of locations and stays at each location for at least the waiting time.

[0041] As an additional feature, the penalty is based on the number of remaining unreached locations in the sequence of locations and on staying at each location for at least the minimum required time.

[0042] As an additional feature, the penalty is based on preventing collisions between some of the k navigation robots.

[0043] As an additional feature, preventing collisions is based on at least one of (a) the dynamics of the k navigation robots, and (b) the geometric configuration of the k navigation robots.

[0044] As an additional feature, the control module is configured to compare some of the partial paths based on one or more criteria for the partial paths, the criteria being arranged in a hierarchical order.

[0045] As an additional feature, the control module is further configured to compare one or more of the reference values ​​based on at least one of (a) the reference values ​​being within the same predetermined value interval, and (b) a difference between the reference values ​​being less than a threshold value.

[0046] As an additional feature, the first criterion in the hierarchical order is best finish time.

[0047] As an additional feature, the criteria include at least two auxiliary criteria, in hierarchical order, one of the auxiliary criteria being a minimum time for travel.

[0048] As an additional feature, the space is one of a physical space or a virtual space.

[0049] As an additional feature, the control module is configured to determine a feasible path for the navigation robot r in step (E)(iii) based on reserving positions in space at time for previously planned paths of other navigation robots among the k navigation robots in the reservation table and avoiding those positions at those times.

[0050] As an additional feature, the control module is configured to determine a feasible path for the navigation robot r in step (E)(iii) based on reserving positions in space during a period for previously planned paths of other robots among the k navigation robots in a reservation table and avoiding those positions during that period.

[0051] As an additional feature, the control module is configured to determine a path for the navigation robot r in step (E)(iii) based on reserving areas in space during time for previously planned paths of other robots among the k navigation robots in a reservation table and avoiding those areas during that time.

[0052] As an additional feature, the control module is configured to determine a feasible path for the navigation robot r in step (E)(iii) based on reserving areas in space during a period for previously planned paths of other robots among the k navigation robots in a reservation table and avoiding the areas during the period.

[0053] As an additional feature, a task for an order in the order set has exactly two actions, the first action being a pick-up action and the second action being a delivery action.

[0054] As an additional feature, the control module is configured to receive at least a portion of the resource allocation.

[0055] As an additional feature, the control module is configured to receive at least a portion of the robot assignment.

[0056] As an additional feature, the control module is configured to receive at least a portion of the task order.

[0057] As an additional feature, the control module is configured to receive at least a portion of the order sequence.

[0058] As an additional feature, the control module is further configured to update the set of predecessor constraints in step (B).

[0059] In one aspect, an automated method for a space includes: k navigation robots operating in a space to execute a set of orders, k being an integer greater than or equal to two, the space including one or more waiting areas where any navigation robot can wait without interfering with the movement of any other navigation robot; and receiving the set of orders and communicating to the k navigation robots a path p for the k navigation robots to execute the set of orders, each order in the set of orders (I) including one or more tasks including a sequence of actions to be performed at a location in the space; (II) having an order availability time after which any task in the order may be initiated; and (III) being associated with a set of antecedent constraints arising from (i) relationships between the orders and (ii) at least one of the resources of the orders, wherein the movements communicated to the k navigation robots are determined for each order in the set of orders by a procedure including: (A) ordering the orders in the set of orders in function of the set of antecedent constraints; (B) ordering each task in each order in the set of orders based on the sequence of actions associated with the task. (C) ordering the tasks in the task set for each order in the order set; (D) assigning one of the k navigation robots to each task in each order in the order set; (E) for each task t of each order in the order set and the navigation robot r assigned thereto, (i) calculating a best start time for task t based on task t and the position of the navigation robot r in space, while satisfying the ordered order order and the ordered task order; (ii) if the best start time for task t is greater than the completion time of the final operation performed by the navigation robot r, (1) searching for and reserving a path for the navigation robot r to move to one of the waiting areas; (2) calculating a waiting time for the navigation robot r to wait in the waiting area to start task t, while satisfying the order availability time and the precedence constraint; and (3) assigning a waiting time to the navigation robot r that is greater than or equal to the waiting time; (iii) determining a path p starting from the current location of the navigation robot r, while taking into account previously reserved paths;The procedure includes the steps of: continuing the path p according to the sequence of positions associated with the sequence of operations of the task t, and completing the path p at (a) a waiting area of ​​the navigation robot r, or (b) the final position of the final operation in the sequence of operations, where the waiting time associated with the path p takes into account the movement time and operation execution time of the navigation robot r; and (iv) reserving the determined path p for performing the task t associated with the order.

[0060] In one aspect, an automated method for a space includes k navigation means operating to execute an order set within the space, k being an integer greater than or equal to two, the space including one or more waiting areas where any navigation means can wait without interfering with the movement of any other navigation means; and means for receiving the order set and communicating to the k navigation robots a path p for the k navigation means to execute the order set, wherein each order in the order set (I) includes one or more tasks including a sequence of actions to be performed at a location in the space; (II) has an order availability time after which any task in the order may be initiated; and (III) is associated with a set of antecedent constraints arising from (i) relationships between the orders and (ii) at least one of the resources of the orders; wherein the moves communicated to the k navigation means are determined for each order in the order set by a procedure including: (A) ordering the orders in the order set as a function of the set of antecedent constraints; (B) ranking each task of each order in the order set as a function of the set of actions associated with the task; (C) ordering the tasks in the task set for each order in the order set; (D) assigning one of the k navigation means to each task in each order in the order set; (E) for each task t of each order in the order set and the navigation means r assigned thereto, (i) calculating a best start time for task t based on task t and the position of the navigation means r in space, while satisfying the ordered order order and the ordered task order; (ii) if the best start time for task t is greater than the completion time of the final operation performed by the navigation means r, (1) searching for and reserving a route for the navigation means r to move to one of the waiting areas; (2) calculating a waiting time for the navigation means r to wait in the waiting area to start task t, while satisfying the order availability time and the precedence constraint; and (3) assigning a waiting time to the navigation means r that is greater than or equal to the waiting time; (iii) determining a route p starting from the current location of the navigation means r, while taking into account previously reserved routes;The method includes the steps of: continuing a path p according to a sequence of positions associated with a sequence of operations of a task t, and completing the path p at (a) a waiting area of ​​the navigation means r, or (b) a final position of a final operation in the sequence of operations, the waiting time associated with the path p taking into account the travel time of the navigation means r and the operation execution time; and (iv) reserving the determined path p for performing the task t associated with the order.

[0061] Additional areas of applicability of the present disclosure will become apparent from the detailed description, claims, and drawings. The detailed description and specific embodiments are merely exemplary and should not be construed as limiting the scope of the disclosure. [Brief explanation of the drawings]

[0062] The present disclosure will become more fully understood from the detailed description and the accompanying drawings, wherein: [Figure 1] FIG. 1 is a functional block diagram illustrating an exemplary implementation of a navigation robot. [Figure 2] FIG. 1 is a functional block diagram illustrating an exemplary implementation of a collection control system for an indoor space. [Figure 3] A diagram showing three example arrangements for shelves and workstations. [Figure 4] FIG. 1 is an exemplary diagram showing a portion of a routing graph including nodes and arcs. [Figure 5] FIG. 10 includes pseudocode for the Interleaved Path Planning (IPP) algorithm used to determine a path for fulfilling an order. [Figure 6] FIG. 1 is a diagram including pseudocode for the VP* (Via Point Star) algorithm used to determine via points for the shortest path. [Figure 7] FIG. 1 illustrates an exemplary collision detection method based on robot position and dynamics. [Figure 8]FIG. 1 illustrates the operation of the IPP algorithm. [Figure 9] FIG. 1 illustrates the operation of the IPP algorithm. [Figure 10] 1 illustrates the pre-processing (graph transformation) of the warehouse graph to obtain the routing graph.Reference numbers in the drawings may be used repeatedly to identify similar and / or identical elements. DETAILED DESCRIPTION OF THE INVENTION

[0063] Robot navigation can combine the domains of vision and control. Navigation can involve finding a path from a start location to a destination location while avoiding collisions. A navigation robot includes a control module configured to move the navigation robot based on input from one or more sensors (e.g., cameras, light detection and ranging (LIDAR), etc.) and / or based on external movement instructions for the robot.

[0064] Multi-Agent Path Finding (MAPF) can be an optimization problem underlying the placement of robots in indoor spaces such as automated warehouses or factories. When solving optimization problems by planning a robot's path, significant simplification of the environment and / or robot dynamics makes it difficult for the real-world setting to follow the planned path without collisions.

[0065] This application is applicable to online order delivery within a building (e.g., a warehouse), where multiple (e.g., a fleet) robots transport products belonging to each order from shelves to workstations for packing and shipping. This involves a stream of interdependent pickup and delivery tasks, and the associated MAPF problem involves determining realistic collision-free robot trajectories to accomplish such tasks. This application relates to an extension of the Prioritized Planning (PP) algorithm, also known as Interleaved Path Planning (IPP), to handle interdependent tasks, including the Via-Point Star (VP*) algorithm for computing optimal dynamics-compliant robot trajectories to visit a sequence of goal locations while avoiding moving obstacles and collisions. This application is applicable to picking up from a shelf with delivery at a workstation, picking up from a workstation with delivery at a shelf, and picking up from a shelf with delivery at a shelf. While this application provides such an example task, it is also applicable to other types of tasks. A task involves a sequence of operations to be performed at a specific location. The task should not be limited to transport, picking up, and dropping off, but includes other types of tasks.

[0066] As described above, MAPF involves planning a set of collision-free paths for a team of agents (e.g., navigation robots) to reach a sequence of goal locations while minimizing travel time. Example scenarios in which MAPF is used include, but are not limited to, automated warehouses, video games, unmanned aerial vehicle (UAV) traffic management, autonomous vehicles, and other scenarios. A simplified environment is considered, modeled as a four-neighborhood grid in which each agent occupies one cell at a time and can move to adjacent cells or wait in place at each discrete time step. However, despite this simplification, finding an optimal solution to the MAPF problem has been challenging and time-consuming.

[0067] This application is applicable to automated warehouse scenarios in which a navigation robot moves heavy objects in a spatially constrained workspace. Orders for the navigation robot are received over time, and each order may include multiple products that the navigation robot must pick up at a specific shelf and location and deliver to a workstation. Each workstation can process only one order at a time. This creates a stream of interdependent pickup and delivery operations. Furthermore, this application is applicable to the reverse scenario: from workstation to shelf or from shelf to shelf.

[0068] The control described here is based on several different parameters. For example, depending on the weight of the navigation robot, it may take several seconds (and even several meters) to accelerate and decelerate at maximum (or zero) linear and angular velocities. Because the objects being carried are heavy, speed and acceleration also depend on the robot's load. When pathfinding is planned on a graph, a heavy robot cannot always stop at the nearest node at maximum speed. Furthermore, large robots will likely occupy multiple graph nodes and edges. Large robots may have to bypass each other in narrow corridors or may not have the space to turn in place. If the robot is picking up or dropping off an object using only one side of itself, the plan must predict the rotation so that the robot enters the corridor with the correct orientation for picking up or dropping off. Simplifying assumptions about robot dynamics stem from these concepts, which can produce trajectories that, when executed by realistic robots, quickly degenerate into collisions.

[0069] This application includes a MAPF solution that takes into account the above-mentioned characteristics. The MAPF approach is based on a prioritized planning (PP) algorithm, which involves arranging agents in a specific order of priority and then determining the shortest path for each agent, avoiding the trajectories of previously planned agents (considered as moving obstacles). PP is highly suitable because the shortest path is calculated for each robot individually and can accommodate kinematic constraints. However, PP itself cannot handle the cooperation between robots for the interdependent tasks considered here. Therefore, an extension of PP, also known as interleaved path planning (IPP), may be used, which dynamically assigns priorities throughout the planning process.

[0070] A shortest path algorithm (e.g., VP*) can determine the optimal trajectory for a robot to visit a sequence of waypoints while avoiding moving obstacles and satisfying kinematic constraints. The shortest path algorithm can be a goal-oriented tree search algorithm that includes a heuristic evaluation for the minimum cost of sub-paths to the goal. Such an evaluation can be performed by calculating the optimal robot trajectory while ignoring collisions. A custom routing multigraph and fixing the robot's velocity profile can be utilized to solve the polynomial problem, thus providing an efficient heuristic evaluation for VP*.

[0071] In summary, this application relates to an approach for solving the MAPF problem in realistic and challenging warehouse settings with constrained spaces, interdependent tasks, and complex real-robot dynamics. This application relates to an Interleaved Path Planning (IPP) algorithm for MAPF with interdependent tasks. The VP* algorithm determines the shortest single-robot trajectory that satisfies kinematic constraints to visit a sequence of locations while avoiding moving obstacles.

[0072] FIG. 1 is a functional block diagram illustrating an exemplary implementation of a navigation robot 100. The navigation robot 100 is merely one example of an agent, and the present application is applicable to other types of agents. The navigation robot 100 is a mobile vehicle. The navigation robot 100 may include a camera 104 that captures images within a predetermined field of view (FOV) in front of the navigation robot 100. The operating environment of the navigation robot 100 may be an indoor space or an outdoor space. In various embodiments, the navigation robot 100 may include multiple cameras and / or one or more other types of sensing devices (e.g., LIDAR, radar, etc.).

[0073] The camera 104 may be, for example, a grayscale camera, an RGB camera, or any other suitable type of camera. In various embodiments, the camera 104 may capture depth (D) information, such as a grayscale-D camera or an RGB-D camera. The camera 104 may be fixed to the navigation robot 100 so that the orientation and FOV of the camera 104 relative to the navigation robot 100 remain constant.

[0074] The navigation robot 100 includes one or more propulsion devices 108, such as one or more wheels, one or more treads / tracks, one or more mobile legs, one or more propellers, and / or one or more other types of devices configured to propel the navigation robot 100 forward / backward / left / right / up / down. One or a combination of two or more of the propulsion devices 108 may be used to move the navigation robot 100 forward or backward, turn the navigation robot 100 right, turn the navigation robot 100 left, and / or raise and lower the navigation robot 100 vertically. The navigation robot 100 is configured to transport objects. The navigation robot 100 may include one or more actuators 110 configured to grasp, lift, lower, push, and hold objects.

[0075] The camera 104 may update (capture images) at a predetermined frequency, such as 60 Hz, 120 Hz, or other suitable frequency. The control module 112 may update a labeled map (described below) each time the input from the camera 104 is updated. The navigation robot 100 may also include a light detection and ranging (LIDAR) sensor 116. In various embodiments, the LIDAR sensor 116 and one of the cameras 104 may be omitted.

[0076] A navigation robot may use one or more sensors to position itself in space and follow a navigation path determined therefor, as described below.

[0077] The control module 112 is configured to control the propulsion devices 108 to explore a space (e.g., an indoor real space). The control module 112 may autonomously explore the space using a map or representation of the space, or / and may additionally follow instructions received via the transceiver module 124. The control module 112 controls the propulsion devices 108 to explore the space along a path determined for the navigation robot 100, as described below, to perform a sequence of localized operations, such as collecting items for an order and returning the items to a workspace or other target location. The control module 112 controls the operation of the actuators 110 to grasp, pick up, put down, push, hold, and otherwise manipulate items to be collected and transported by the navigation robot 100 at the workspace or other target location.

[0078] For example, the control module 112 may, in some circumstances, operate the propulsion devices 108 to move the navigation robot 100 forward a predetermined distance. The control module 112 may, in some circumstances, operate the propulsion devices 108 to move the navigation robot 100 backward a predetermined distance. The control module 112 may, in some circumstances, operate the propulsion devices 108 to turn the navigation robot 100 right a predetermined angle. The control module 112 may, in some circumstances, operate the propulsion devices 108 to turn the navigation robot 100 left a predetermined angle. The control module 112 may, in some circumstances, not operate the propulsion devices 108 so that the navigation robot 100 does not move. The control module 112 may, in some circumstances, operate the propulsion devices 108 to move the navigation robot 100 up. The control module 112 may, in some circumstances, operate the propulsion devices 108 to move the navigation robot 100 down. The control module 112 may operate the propulsion devices 108 to prevent the navigation robot 100 from contacting certain objects or walls in a space. In various embodiments, the control module 112 may operate the propulsion devices 108 to move in two or more directions simultaneously. The control module 112 may also determine a velocity command, such as a linear velocity and / or an angular velocity, and determine the motor(s) speed based on the velocity command(s). In various embodiments, the control module 112 may determine the motor(s) speed directly.

[0079] The navigation robot 100 may include one or more sensors 120 that determine the position (e.g., xy) of the navigation robot 100 in space and the orientation (e.g., yaw) of the navigation robot 100. Examples of position sensors include triangulation sensors, resolvers, and other types of sensors.

[0080] Navigation robot 100 may include one or more transceivers, such as transceiver module 124, configured to communicate wirelessly via one or more antennas, such as antenna 128. For example, navigation robot 100 may transmit one or more of its operational parameters (e.g., position) to a collection control module that controls the movement of navigation robot 100 and one or more other navigation robots in space.

[0081] An example of a navigation robot is NAVER Corporation's SeRo navigation robot, and an example of a task or order includes moving a server around a building.

[0082] FIG. 2 is a functional block diagram illustrating an exemplary implementation of a collection control system for an indoor space, such as a building or warehouse. As described above, a navigation robot 100 and one or more other robots 200 explore a space 204 to collect order items and deliver each order item to a target location or workstation. The navigation robots may be identical to one another in various embodiments. Shelves are indicated by 208. While an exemplary number of shelves and navigation robots are shown, the present application is applicable to a different number of shelves and navigation robots. The present application is also applicable to different arrangements of shelves. The present application is also applicable when other static obstacles exist in the space in which the robot operates. The present application is also applicable when moving obstacles (other than the planned robot) exist in the space, provided that their positions in time and space are known during the planned period. An exemplary workspace is indicated by an X in FIG. 2. Examples of static obstacles include shelves, desks, fire extinguishers, etc.

[0083] Figure 3 illustrates three example locations for shelf 208 and workspace X. Figure 3 also includes an example station 304, such as a charging station or target location.

[0084] 2 and 3, the collection control module 220 controls the movement of the navigation robots within the space 204 to collect items for orders each assigned to the navigation robot. In various embodiments, one or more cameras and / or other sensors within the space 204 (e.g., overhead) may be used to monitor the location and movement of objects (e.g., navigation robots and other types of objects) within the space 204.

[0085] The collection control module 220 communicates wirelessly with the navigation robot via one or more transceivers, such as a transceiver module 228, configured to communicate wirelessly via one or more antennas, such as antenna 232. The collection control module 220 may, for example, provide commands for movement to the navigation robot, receive position information for the navigation robot, and communicate with the navigation robot for one or more different reasons.

[0086] A navigation robot, also referred to as an agent, is a type of agent. An agent may follow or approximately follow a communicated trajectory / path. In various embodiments, the navigation robot may be a differential drive robot and may be configured to move forward, backward, and rotate in place, as described above. The navigation robot may include one or more actuators for picking up (and dropping off) objects to and from shelves or stations. The navigation robot may include one or more actuators for performing actions specific to one or a set of locations (e.g., an action to water a plant may be performed only when the robot is close enough to the plant). Actions may include, but are not limited to, picking up and dropping off objects, and in various embodiments, may be performed only when the navigation robot is not moving (zero velocity).

[0087] The collection control module 220 may include a dynamics model for the navigation robot so that the trajectory, travel time, and time to perform the action from an initial state (e.g., position and velocity) to a goal state are determined by the collection control module.

[0088] Regarding the graph of the space, the graph of the space 204 may be a general directed graph Gw=(Vw, Aw). The vertices (or nodes) of the graph are associated with physical locations where the navigation robot can stop (e.g., in front of a shelf or workstation) or rotate (if there is enough space) to pick up and drop off objects. Exemplary vertices (or nodes) are shown as dots in FIG. 3.

[0089] Mathematically speaking, an arc may be a directed edge. While the warehouse graph includes edges (e.g., but not arcs), the routing graph includes arcs (e.g., but not edges). Arcs and edges represent segments traveling between vertices. Lines between vertices represent exemplary arcs or edges in FIG. 3 . In various embodiments, the graph need not be a simple rectangular grid (although it can be). The fact that the graph does not have to be a rectangular grid does not impose any restrictions on the warehouse layout or the distances between vertices. This generality also extends to cases where a robot simultaneously occupies multiple vertices and arcs. However, such graphs are not directly used by the collection control module 220; rather, they represent input data used to construct more complex routing graphs, as described below.

[0090] The collection control module 220 assigns orders to the navigation robot. An order may be a set of tasks, where each task consists of a sequence of actions to be performed at a given location. For example, an order may be a set of objects to be picked up from some shelves and dropped off at a (e.g., single) workstation, or conversely, an order may be to drop off multiple objects at a workstation to one or more different shelves. In such an example, the task is the displacement of objects, and the list of actions associated with such a task includes pickup and drop-off actions. In various embodiments, multiple objects may be transported from one or more shelves to one or more different shelves. Orders are received by the collection control module 220 at different times via the Internet or other suitable network.

[0091] In an example where the task is object pickup and delivery, an order o∈O containing k objects is represented by a tuple (r o ,{(p1 o ,d1 o ),…,(p k o ,d k o )}), where r o is the release date of the order, and p j o is the vertex corresponding to the shelf location where the jth object is picked up or delivered, and d j o is the duration of the corresponding pickup or delivery operation. The duration for an operation (pickup or delivery) performed at a workstation for each object may be defined as workstation or object specific. Also, the duration may be object specific at the shelf, robot specific, or robot specific at the workstation.

[0092] In an example where the task is object pickup and delivery, the task may be for a navigation robot to pick up an object at an initial location and deliver it to a target location. A set of tasks corresponding to a given order are said to be interdependent because they share the same workstation as an initial or target location and all of their pickup or delivery operations must be completed at the workstation before the workstation can be used for other orders. In other words, if tasks share the same workstation as an initial or target location, they are said to be interdependent because one or more operations of the tasks must all be completed before the workstation can be used for other orders.

[0093] An operation may include additional resources used by a robot. For example, if an order requires one or more robots to pick up multiple objects at a station and deliver them to a shelf, a station resource may be used to perform the pickup. This is occupied by the order's objects until the last object is removed, during which time it cannot be used for any other order. In various embodiments, some resources may be shared among orders, tasks, or operations, having non-single capacity defined by the resource's capacity and satisfying the maximum number of orders, tasks, or operations that can use it at the same time. In various embodiments, an order, task, or operation may use multiple resources simultaneously. A resource for an order may be a resource for any operation of that order, and a resource for a task may be a resource for any operation of that task.

[0094] In the example described above, for a task consisting of two operations (picking up an item at a station and delivering it to a shelf), the station is occupied by the first order as long as one object from the first order remains at the station. This makes the station a resource for the first order. Assume that only items from a single order remain at the station, and the station is used for the pickup operation of the first order and for the pickup operation of the next order that uses the station. In this case, the pickup operation of the second order may begin after the last pickup of the first order has been completed (by placing the corresponding object at the station for pickup). A precedence constraint exists between any pickup operation of the first order and any pickup operation of the second order, in the sense that the pickup operation of the second order cannot begin before all pickup operations of the first order have been completed.

[0095] More generally, task a's behavior a i and behavior a' of task a' j Precedence constraints between (a i ,a' j ) is a' j When the start of i is at least δ i,j A sequence of actions (a1, a2,..., a K ) and a sequence of actions (a'1, a'2,..., a' K’ The precedence constraint (a, a') between tasks a and a' with the same predecessor constraint set {(a i ,a' j )|1≦i≦K, 1≦j≦K′}, or any subset of the precedence constraints in that set. In this application, if a precedence constraint (a,a′) exists between task a and task a′, then (a,a′) is the empty set. Similarly, a precedence constraint (o,o′) between orders o and o′ may be defined based on the existence of a precedence constraint between the actions or tasks of orders o and o′.

[0096] For a MAPF with interdependent tasks, given a set of agents (navigation robots), a warehouse graph, and a stream of orders and their associated tasks, the goal of the collection control module 220 is to find a collision-free sequence of trajectories for the agents to perform their tasks, such that only one order is processed at a workstation at a time to maximize throughput, minimize mean order time, and / or additionally minimize regret. In some applications, other optimization criteria may be considered.

[0097] A MAPF problem with interdependent tasks includes two optimization subproblems: (i) task allocation, which includes which agents should perform tasks and which workstations should be used for each task (order), and (ii) MAPF, which is how agents should move (in space and time) to perform those tasks. These two interdependent subproblems may be considered separately by the collection control module 220. To process the stream of orders, the collection control module 220 may solve / update the subproblems at predetermined (e.g., user-specific) intervals. More specifically, the collection control module 220 may find a solution to a new instance of the same subproblem each time, although the subproblem (e.g., MAPF) may be the same, and the instances share the same environment but not necessarily the same agents, and in most cases different orders.

[0098] The collection control module 220 determines a plan and begins execution from a point in time, then repeats the process of replanning given the current state of the system, including newly released orders. For simplicity, the following describes one plan / execution iteration. For each iteration, the orders are known, and the goal of the collection control module 220 is to minimize the makespan, i.e., the maximum completion time of all known tasks, minimize completion time, minimize regret, and / or achieve one or more other goals.

[0099] The MAPF algorithm used by the collection control module 220 is also called IPP (Interleaved Path Planning). The VP* algorithm is used by the collection control module 220 to route agents without collisions, starting with a graph model and collision check that allows the collection control module 220 to manage the dynamics of the navigation robot. The VP* algorithm takes as input a graph (called a routing graph), whose arc weights are pre-calculated using the robot's dynamics. Using the collision check module of the collection control module 220, the collection control module 220 may check whether a robot will collide with other robots based on the robot's dynamics for a given displacement by one arc, based on information stored in a collision table. In various embodiments, other collision check methods may be used to verify whether a robot's displacement will collide with other robots based on information about pre-planned robot displacements. In various embodiments, the collision check may be based on the displacement of moving objects and the previously planned robot displacement.

[0100] To optimize task allocation, the collection control module 220 solves an underlying idealized scheduling problem that assumes that the navigation robots use the shortest path, ignoring potential collisions. There are various paths with the same minimum arrival time; the navigation robot may use all of them. The collection control module 220 may use rule-based heuristics. For example, the collection control module 220 may map the system state S to the agent state S. agents :={(τ a ,v a ):a∈A}(where τ a is the time when agent a becomes available, and v a is the time τ a , and the time τ when each workstation becomes available. w workstation state S with WS :={τ w :w∈W}. The assignment may be based on the challenges discussed above. The VP* algorithm works whatever the assignment.

[0101] At the start of the day, agents are in their initial positions and have zero availability. Orders are sorted by the collection control module 220, for example, in a FIFO manner, by increasing release date (date and time of receipt). For each order, the collection control module 220 assigns the earliest available workstation. For each task (pickup and delivery) of an order, the collection control module 220 assigns the earliest available agent and updates its status based on product pickup and drop-off times and ideal travel times. After all tasks for an order have been assigned, the collection control module 220 updates the workstation availability and moves on to the next order.

[0102] To avoid workstation congestion, the collection control module 220 may limit the number of agents assigned to an order. From the complete schedule, the collection control module 220 may extract the assignment of orders to workstations and the sequence of tasks assigned to each robot.

[0103] In a different PP algorithm, the collection control module 220 may assign a predetermined priority to the agents, and then, in descending order of priority (starting with the robot with the highest priority, followed by the robot with the next highest priority), the collection control module 220 may determine the shortest path for each agent, avoiding previously planned trajectories of the agent (which are considered moving obstacles). Thus, the collection control module 220 determines the shortest path for each robot individually based on the descending order of priority and the kinematic constraints.

[0104] Consider an exemplary scenario of three navigation robots, one workstation, and a sequence of 10 orders, each containing three items. To process the orders as quickly as possible, the collection control module 220 may divide the task of each order (item pick-up) among multiple robots. After using PP to schedule 10 pickups and deliveries for the first and second robots, the last scheduled robot may experience delays (e.g., due to numerous moving obstacles). In this case, because multiple robots are used to fulfill the same order simultaneously, it cannot be guaranteed that objects from different orders will not be mixed at the workstation.

[0105] The present application avoids this situation by using Interleaved Prioritized Planning (IPP), where priorities are dynamically assigned throughout the planning process by the collection control module 220. The method is as follows.

[0106] Based on the task assignments, the collection control module 220 reinitializes the agent and workstation states, adds to each agent's state the sequence of its assigned tasks, and for each workstation, adds the sequence of its assigned orders. For each order (ordered by FIFO), the collection control module 220 considers the subset of agents assigned to that order (tasks).

[0107] The earliest available agent a is assigned priority for path planning by the collection control module 220. Such an agent's path is set by the collection control module 220 to visit the sequence of goal locations of its next task t, and optionally end at its waiting location (e.g., a workstation). To determine its start time, the collection control module 220 considers the availability of the associated workstation. The list of start times and goal locations is input to the VP* algorithm, described below, and executed by the collection control module 220, which computes a trajectory for the agent that avoids collisions with previously planned trajectories.

[0108] Given a trajectory, the collection control module 220 updates the availability of agents and workstations and discards task t from the tasks of agent a. The collection control module 220 updates the previously planned trajectory with the complete trajectory information, including the final portion of the path (towards the waiting position). The collection control module 220 repeats until all tasks for the order have been planned, then moves on to the next order.

[0109] The final part of each path is optional in the sense that if the robot can go directly from the delivery location of the previous task to the pick-up location of the next task, the go-to-waiting-spot part of the path can be discarded, allowing the collection control module 220 to save time and increase throughput, although this part may be used and kept (return to the waiting spot) to ensure that a feasible solution is always found.

[0110] Detailed pseudo-code for the IPP executed by the collection control module 220 is shown in FIG.

[0111] Lines 1-12 contain the input data for the algorithm. For example, line 1 contains the neighbors A(v) of any vertex v in the routing graph. Line 2 contains the duration τ(v,v',l) of each arc (v,v') when the robot is loaded (l=1) or not loaded (l=0). Line 3 is a lower bound function for the path time between any two vertices v and v' when the robot is loaded (l=1) or not loaded (l=0):

number

[0112] Line 13 includes setting the availability time of each robot to the start time of the plan (e.g., time 0). If the reservation table is not free, it may be obtained from the robot's configuration (line 10).

[0113] Line 14 involves initializing each robot's path as an empty set.

[0114] Lines 14-20 involve calculating, for each robot r in a given order (e.g., provided as input to the algorithm), a path from the robot's starting position and orientation (given by its initial configuration l(r)) to a waiting location wl(r), updating the reservation table with such a path, and recording it for further use.

[0115] Lines 21-50 involve iterating through each order 0 with decreasing priority to calculate the path associated with each task for each order.

[0116] Line 22 involves retrieving the workstation assigned to order 0.

[0117] Line 23 involves retrieving tasks with order 0.

[0118] Line 24 involves ordering the tasks in decreasing priority.

[0119] Lines 25-47 involve repeating the other tasks in T to calculate the path of the robot assigned when processing this task.

[0120] Line 26 involves searching from the tasks remaining to be scheduled for the task with the highest priority.

[0121] Line 27 involves retrieving the robot r assigned to the task.

[0122] Line 28 involves checking whether the robot can start processing a task immediately after finishing a previous task.

[0123] Lines 30 to 35 involve adding to the robot's path that the robot will head to the waiting location during the given duration if the robot r cannot start the task immediately, thereby updating the reservation table and the robot's availability time.

[0124] Line 30 involves adding the pre-computed path to robot r's waiting location to the path of robot r.

[0125] Line 31 involves updating the robot's availability time to the arrival time of r at the robot's waiting location.

[0126] Line 32 involves calculating an estimate of the waiting time wt that robot r will wait at the waiting location to ensure that robot r does not arrive at the workstation before the previous ticket (order) has been completed.

[0127] Line 33 involves updating the reservation table and path of robot r to wait over wt at wl(r).

[0128] Line 34 involves increasing the availability of r by wt time units.

[0129] Line 36 involves obtaining the current configuration l(r) of robot r, the current task, and the list VP of waypoints associated with the waiting location wl(r) of robot r.

[0130] Line 37 involves using the VP* algorithm to calculate the shortest path associated with the list of passing points VP.

[0131] Line 38 involves checking whether VP* was able to return a route.

[0132] If VP* is able to return a path, lines 39-42 include recording the path at the end of robot r's path (line 40), updating robot r's waiting path (line 41), and recording the path and waiting path calculated by the VP* algorithm in a reservation table.

[0133] Line 48 involves updating the availability time of workstation ws with the finish time of the last operation of order 0 performed at ws.

[0134] Line 51 involves returning the calculated route.

[0135] Assume that each robot has a designated waiting location where it can wait without interfering with the trajectories of other robots. The IPP algorithm is complete if the robot is at the robot's waiting location at the start of the plan. To prove that the algorithm is complete, we must prove that the IPP algorithm always returns a feasible solution (a path for the robot that satisfies all constraints). Two constraints to consider are: (i) the paths of the two robots must not collide, and (ii) all tasks of an order must be completed at a workstation before a new task can be started at that workstation. In various embodiments, other time precedence constraints on tasks or orders may be considered. The robots may start from the waiting location. The planned trajectory may include the reservation of the waiting location by the robot during the planning period, but need not include other information. Therefore, in such an environment, each robot can wait at its starting position for an unlimited time without interfering with the paths of other robots. The time τ1 assigned to robot r is 0 First order o1 first task o released on 1,1 The workstation w assigned to it is available for order o1 or at a given time τ w The robot r can be available for a certain time τ. r Given τ, we may use a shortest path algorithm or waypoint search to calculate the earliest time τ to start executing the task to satisfy the availability constraints, assuming that the agent does not wait once it leaves the waiting location.

[0136] The algorithm in Figure 5 schedules the navigation robot to wait until τ, and then, starting from τ, calculates the waypoints for the task and the path for the robot to return to its waiting location. Assuming the graph is connected because there are no other robots with planned movements, there is always such a path that satisfies constraint (i) above. By the definition of τ, it also satisfies constraint (ii) above. The collection control module 220 calculates the robot's available time τ rUpdate the task's end time so that it resumes at its final position. If there are other tasks in the order, they will have the same available time τ w may be used by the collection control module 220 for the workstation in determining when to start from the waiting location. The determined time τ is an optimistic estimate based on the collision-free travel time from the robot's current location. This means that if the robot has to avoid other robots, the workstation will not be able to wait for τ w (ii) is guaranteed to be satisfied because the robot may arrive later than the current location. If the robot needs to wait, the collection control module 220 may send the robot to wait at its waiting location. If the waiting location is different from the current location, the collection control module 220 may reserve a path for the robot to head to the waiting location during the planning of the robot's previous task. This ensures that constraint (i) is met by the existence of a feasible path. The robot may always wait until all planned trajectories are complete for movement. When all tasks for one order have been planned by the collection control module 220, the collection control module 220 updates the workstation availability time with the end time of the order's final operation and ensures that no tasks for other orders are started before that time. Therefore, tasks for the next order are planned by the collection control module 220 based on the same logic while satisfying the constraints. The above also holds true if the robot starts from a location other than the waiting area and a path from the robot's current location to the waiting area is reserved in the planned trajectory, or such a path is determined for each agent by a priority given to the algorithm to initialize the planned trajectory.

[0137] Figure 4 is an example diagram showing the nodes and arcs of a routing graph. The original nodes of the warehouse graph are shown as large circles, while the new routing nodes are shown as small circles. Some of the dotted lines are shown curved for illustrative purposes, but they represent straight arcs, and solid lines represent rotation arcs. Each solid rotation arc in node C represents two arcs, one for counterclockwise rotation and the other for clockwise rotation.

[0138] Routing is performed on the warehouse graph G as shown in Figure 3. w However, because robots may occupy multiple nodes, may not be able to rotate everywhere, may take time to rotate, and may have non-trivial dynamics, the collection control module 220 generates a specific routing graph to integrate its elements into its structure. To this end, the collection control module 220 generates a specific routing graph for integrating its elements into its structure. w may be transformed into a directed routing multigraph, where G wEach vertex in the warehouse graph (e.g., node C in FIG. 4) is represented by multiple vertices and associated arcs of different types, including: (i) start and stop nodes (shown only for node A in FIG. 4) for starting the plan at that location or ending the plan at that location; (ii) for each adjacent node in the warehouse graph (e.g., node D), the collection control module 220 generates two nodes, one for departing from the node and one for heading toward the node, connected by an additional arc that allows the robot to move backward without changing direction; (iii) where a turn is possible, the collection control module 220 adds a rotation arc that allows the robot to reverse direction (i.e., make a U-turn); and (iv) at a node where two non-parallel edges meet (e.g., node C), the collection control module 220 adds two rotation arcs per node-triplet (two for node BCD and two for node DCB), one for rotating clockwise and one for rotating counterclockwise. One of these arcs changes the robot's travel direction. The robot may stop to turn to avoid slipping, tilting, and potentially dropping a heavy load. However, if the robot is traveling in a straight line, the collection control module 220 may control the robot to patrol a long path without stopping, possibly passing through multiple nodes. To this end, the collection control module 220 may extend the routing graph with additional shortcut edges between nodes on a straight line. With shortcut edges in place, the collection control module 220 may set the initial and final linear and angular velocities at all nodes to zero. The collection control module 220 may use the robot's dynamics to associate two travel times with each arc: one for an empty robot (not carrying any objects) and one for a loaded one (carrying one or more items for an order).The time for traversing each arc may be determined by the collection control module 220 based on accelerating the robot at a predetermined maximum linear / angular velocity within edge-specific speed limits and decelerating it back to a velocity of zero. In various embodiments, other velocity constraints and acceleration and deceleration schemes may be used, which may be different for other arcs in the graph. If the velocity at each node is zero and the arc travel time is fixed, computing the shortest path free of moving obstacles for a single robot may be performed by the collection control module 220 using polynomials (as opposed to the general case of shortest paths with kinematics). The collection control module 220 may utilize this property to quickly determine a lower bound on the duration of a collision-free path. In various embodiments, the transformation from the warehouse graph to the routing graph may be performed by a transformation module external to the collection control module 220. FIG. 10 illustrates the transformation from the warehouse graph to the routing graph.

[0139] With respect to collision detection and avoidance, the collection control module 220 may make strong assumptions about the routing graph to avoid robot collisions. Under these assumptions, robots at adjacent nodes cannot collide, and rules regarding robot movement may be enforced by the collection control module 220 to ensure that collisions are avoided when determining paths. In the determined routing graph, adjacent nodes may be so close that two robots occupying them will collide, or so far apart that two robots traveling the same edge will not collide.

[0140] Therefore, the collection control module 220 may enforce a more spatially explicit collision checking method. Position of each robot:

number

number

number

[0141] As shown in Figure 7, collision checking involves the use of a reservation table containing recorded, planned trajectories (e.g., including current times and locations) for navigation robots. Planning a new path for robot X proceeds edge-by-edge in the routing graph, so when considering moving an edge from a current location and angle to a next location and angle, robot X's trajectory is first calculated by collection control module 220 based on robot dynamics. Collision checking is then performed by collection control module 220 by comparing each determined segment (at each time and location) of robot X's trajectory with the trajectories (at each time and location) of other robots in the reservation table. Such checking may be performed by collection control module 220 by dividing the time during which robot X traverses an edge by a fixed interval (e.g., 1 second, or other suitable time), determining the robot's positions at the start of interval I and the end of interval I, and reserving a bounding box of such positions for interval I. If the collection control module 220 identifies a collision (e.g., at least a partial overlap) of the bounding box with the bounding box of another trajectory recorded in the reservation table at one time, the collection control module 220 discards that edge and explores other possible edges to determine a new path for robot X.

[0142] At any given time τ, the collection control module 220 may check whether the spaces occupied by two different robots intersect. For example, the collection control module 220 may divide continuous time into intervals and model the space occupied by a robot during an interval by a union (e.g., a superset) of the set of spaces occupied by the robot during each interval. Checking whether a robot collides with another robot at time τ may be conservatively approximated by the collection control module 220 by checking whether the space occupied by the robot intersects with the space occupied by the other robot during the interval that includes τ. The collection control module 220 may also add some time safety margin by reserving some adjacent intervals.

[0143] FIG. 6 is pseudocode illustrating an exemplary implementation of the VP* algorithm executed by the collection control module 220, for example, as in line 36 of FIG.

[0144] Lines 1-7 contain the input data for the algorithm. For example, line 1 contains the neighbors A(v) of any vertex v in the routing graph. Line 2 contains the duration τ(v,v',l) of each arc (v,v') when the robot is loaded (l=1) or not loaded (l=0). Line 3 contains the pass points that should be passed in order on the returned route, their associated nodes v i , including but not limited to the direction required when arriving at waypoint i, and these in-configurations c i in , the desired direction when leaving the waypoint i, and the load state when leaving the waypoint i, and these out-configurations c i out , and the operation duration d at the passing point i i Line 4 defines the path time lower bound function between any two vertices v and v' when the robot is loaded (l=1) or not loaded (l=0):

number

[0145] Line 8 involves initializing a dictionary of previous configurations, which for a given robot configuration, returns the configuration at the previous vertex of the path.

[0146] Line 9 involves initializing the minimum arrival time of the solution found so far by the algorithm to infinity.

[0147] Line 10 involves initializing to unknown the configuration that will be used to search Prev_c for a path that corresponds to the minimum arrival time solution found so far by the algorithm.

[0148] Line 11 involves calculating the initial configuration of the robot at the start of the path.

[0149] Line 12 involves calculating the heap score of the initial configuration.

[0150] Line 13 involves adding an element corresponding to such an initial configuration to the queue, with a pass point index of 0 (passing only the first pass point).

[0151] Lines 14-46 involve iterating over the queue elements in order of increasing heap point number.

[0152] Line 15 involves popping out (eg, selecting) the element with the lowest heap score from the queue.

[0153] Line 16 involves checking whether the optimistic estimate of the duration of the path from the element's configuration to the destination is higher than the minimum arrival time of any solution found so far by the algorithm. Line 18 involves, if so, proceeding to the next queue element.

[0154] Line 20 involves checking whether the element corresponds to arriving at the destination waypoint.

[0155] If so, line 21 involves checking whether the robot can stay there for the required time using reservation table R. If so, line 23 updates the minimum arrival time and its configuration, and line 24 involves proceeding to the next queue element.

[0156] Line 27 includes a process for checking whether the element corresponds to reaching the next pass point.

[0157] If so, line 28 includes checking whether the robot can stay there for the required time using reservation table R. If so, lines 30-32 update the configuration, and lines 36-45 include incrementing by 1 the pass point index for the next queue element generated from the current configuration.

[0158] Lines 36-45 involve iterating over the arcs leaving the routing graph of node v of the current heap element in any order.

[0159] Line 37 involves checking whether traversing arc (v, v') of A(v) at time c does not conflict with any planned path of R. If not, line 38 computes a new configuration c' at node v' obtained from c by traversing arc (v, v'), and obtains a tentative new queue element in line 39. Line 39 checks whether the new element has already been added to the queue previously. If not, lines 40-42 compute the heap score of the new queue element, add the heap score to the queue, and update the dictionary of previous configurations.

[0160] Line 47 involves reconstructing the optimal path from the dictionary of previous configurations, Prev_c, and the recorded min_c configuration.

[0161] To plan the robot's displacements for a given task, the collection control module 220 may determine a path that considers not only the locations of static obstacles (modeled in the graph by non-existent edges) but also the locations of other robots moving in space at the same time the collection control module 220 plans the navigation robot's path. Waypoints. For each task, the collection control module 220 may plan multiple successive displacements of the robot (e.g., heading to an aisle between shelves to pick up an item, heading to a workstation to deliver an item, moving to a waiting area to wait for the next task, etc.). The locations visited in sequence may be referred to as waypoints. If a shortest path algorithm with collision avoidance is used for each successive pair of waypoints in turn, it cannot guarantee that a path will be found for all displacements in the sequence. Selecting the shortest path for the first pair in the sequence may prevent the robot from finding a feasible path to the remaining waypoints. In this application, the collection control module 220 determines the shortest path in a single computation instant by passing through a sequence of waypoints based on the robot dynamics, real robot loads, and position and orientation in space, which is based on collision checking for vertices and swapping collisions.

[0162] Even though the arc weights are pre-calculated based on the robot's dynamics, the collection control module 220 may use precise displacement information when checking for collisions of the current robot against already planned robot paths (moving obstacles), which affects the speed of the algorithm. The space occupied by the robot along such planned paths is calculated by the collection control module 220 and recorded in a reservation table for future collision checking when other paths for other robots are calculated.

[0163] The orientation of a navigation robot is important. To pick up or drop off an object at a shelf or workstation (or, in various embodiments, when performing other actions), the robot may be oriented in a specific direction to perform the action (pickup or drop off). However, due to spatial constraints, the robot may not be able to rotate in the aisle, so an appropriate orientation is required when entering the aisle. If the orientation is known or to be controlled, it may be considered by the collection control module 220 in the robot's configuration or in the waypoint description and in the routing multigraph. Additionally, because the robot's speed may differ when loaded, the collection control module 220 may use weights that are added to the waypoint information. Each waypoint may be defined by a node in the graph (and its physical location), a partial in configuration indicating the desired yaw and load when arriving at the node, a partial out configuration indicating the desired yaw and load when leaving the node, and the desired time at the waypoint to perform the associated action. A waypoint may be the only point at which the robot can perform an action. In various embodiments, one or more parameters, such as load, direction, and / or one or more other parameters, may not be used in describing a way point.

[0164] The collection control module 220 may determine the shortest path by passing through a sequence of two or more waypoints. The goal is to find the best arrival path, starting from the first waypoint, passing through each waypoint in the order of the sequence, arriving at the last waypoint while satisfying the constraints imposed by the subconfiguration of each waypoint, stopping at each waypoint within a time period defined for each waypoint, and avoiding collisions with moving obstacles whose configurations are known at each time instance from the reservation table. In various embodiments, the only moving obstacles may be other navigation robots. However, collision checking may be performed by the collection control module 220 for any type of moving obstacle whose occupied space is recorded in the reservation table.

[0165] Travel times may be continuous or discrete with high accuracy to avoid cumulative errors for multiple paths calculated in sequence during planning. To reduce computation time, when the robot is waiting at a given point, the waiting time may be discretized in seconds by the collection control module 220. If a node allows waiting, the graph may include an additional arc from the node to itself with a duration equal to the selected minimum waiting period.

[0166] Let G = (V,A) denote the routing graph, where V is the set of nodes and A is the set of arcs between nodes. For a given node v, A(v) denotes the outgoing arcs of v, i.e., the set of arcs {(v,w)∈A|w∈V}. The weight value T(a,l) of arc (v,v') is the time duration to travel along arc (v,v') when l=1 if the robot is loaded and 0 otherwise. The angle θ(v,v') is the rotation angle of the edge if it allows the edge to rotate in a given direction, and 0 otherwise. A path is the sequence of arcs (v0,v1),(v1,v2),…,(v i-1 ,v i )

[0167] The duration of path p is

number

number

[0168] The VP* algorithm of the collection control module 220, as described above, is shown in FIG. 6. This algorithm iterates over the priority queue, which searches toward the most promising element. The priority queue contains a tuple (v, c, vp, fs), where v is a node, c is the configuration at that node, vp is the index of the last traversal point reached, and fs is the heap score of the tuple. At the start of the search, the collection control module 220 initializes the queue with a tuple (v0, c0, vp0, fs0) containing the origin node v0 (the first traversal point), the initial configuration c0 (obtained from the partial-out configuration of the first traversal point and the path start time), vp0=0, and the heap score of the element fs0. During the search phase, the collection control module 220 determines and pops the heap element (v, c, vp, fs) with the lowest heap score through the VP* algorithm and searches its neighbor node A(v) in the search graph. The collection control module 220 may first check a lower bound on the duration of the path from (v, c, vp) to the destination. If it is greater than the duration of the best path found so far, the search may be pruned by proceeding to the next stage. Otherwise, the collection control module 220 may check whether the next waypoint has been reached in the correct direction, i.e., whether node v is the next waypoint and whether configuration c has the same direction as the configuration of the next waypoint. If it is at the next waypoint, the collection control module 220 may determine / verify whether the navigation robot can remain at node v without collision for the duration of the operation it performs at that waypoint. If it is possible and the robot is at the destination, the collection control module 220 may update the earliest known arrival time for the path and proceed to the next stage. If the robot is not at the destination, the collection control module 220 may increment the index of the last-reached waypoint, update the configuration time τ to the time spent at the waypoint before searching v's neighbors, and update the load from the out-configuration of the waypoint.

[0169] For each neighbor node v' of node v, the collection control module 220 may verify whether an arc (v, v') starting at time τ can be used without collision, using the robot's dynamics to calculate the robot's position in time and space while traversing the edge. If there is no collision, the collection control module 220 may check whether the configuration obtained at w has never been added to the queue. If not, the collection control module 220 may determine the heap score and add the obtained new element to the queue. The VP* algorithm may complete by stopping when the queue is empty. In various embodiments, the collection control module 220 may use these or other stopping criteria. In various embodiments, additional stopping criteria may be added, such as finding the first feasible path, popping the maximum number of elements from the queue, or consuming a specific amount of time. The first stopping criterion reduces the optimality of the algorithm, and the last two reduce the completeness of the algorithm because the algorithm may return before finding the first feasible solution when one exists.

[0170] In various embodiments, the collection control module 220 may stop searching as soon as the first solution is found. In fact, this can be faster because the algorithm does not need to completely empty the queue before returning a solution. This can provide superior results at the MAPF algorithm level, and in some cases, even better than when using an optimal path (empty queue), but it also implies that locally optimizing a given robot's path may make planning paths for other agents more difficult.

[0171] The heap score for an element may be determined by the collection control module 220 based on or as the sum of an estimated time for the shortest path to reach the destination after passing through all way points and a penalty p(vp), which is higher when there are more way points remaining to be passed and zero when only the last way point remains to be passed. The purpose of this penalty is to favor finding the first feasible path between the origin and the destination that passes through all way points by constructing a depth-first similarity search. Therefore, the score differs from heap scores in other algorithms because it is not necessarily a lower bound on the duration of the path from the current heap element to the destination. However, because the heap score is not used and a lower bound on the travel time is used to prune the search, the VP* algorithm remains optimal if it is run until the queue is empty.

[0172] The VP* algorithm offers additional advantages. Because the robot can periodically wait to avoid collisions, the VP* algorithm implemented as described above may lead to an optimal solution in terms of path duration, but may not be satisfactory to a human observer. Spending the wait time stationary or moving is equivalent according to the path duration criterion. When the present application involves discretizing the wait time (by setting the duration of loop arcs in the graph), movement (instead of waiting in place) may improve the minimum path duration by allowing the robot to return to a node slightly earlier than it would have been able to if it had remained stationary. To avoid this, the collection control module 220 may determine the shortest path based on a secondary criterion—the minimum total time the robot spent moving—which is used to resolve ties between equivalent solutions. The collection control module 220 may also discretize the arrival time so that solutions that are close in terms of arrival time are considered equivalent by these criteria. Then, from among solutions that are equivalent according to this first criterion, the collection control module 220 may select the solution with the lowest total travel time. How this is achieved is described in more detail below.

[0173] Due to the tie-breaking properties of the discretization and auxiliary criteria, the collection control module 220 obtains solutions of comparable quality in shorter execution times.

[0174] In various embodiments, other auxiliary criteria may be similarly implemented, including, but not limited to, minimum total distance or minimum energy consumption. In various embodiments, a list of two or more ordered criteria may be similarly implemented and checked in order to resolve ties between solutions that are equivalent on previously checked criteria. Such criteria are said to be in a pre-deviation order, in that the solutions are first differentiated on the main (initial) criterion, and if equivalent, then on the auxiliary criterion, and if equivalent on the main and auxiliary criteria, then on the tertiary criterion, and so on, until the solutions are either not equivalent or equivalent on all criteria. In this manner, the criteria may be considered hierarchical.

[0175] In various embodiments, the collection control module 220 may limit the linear acceleration A of the robot to the interval [Adec, Aacc]. The value of A may vary depending on the loading status of the robot, since a more heavily loaded robot cannot accelerate as quickly as a more lightly loaded one. If the robot always accelerates or decelerates as quickly as possible towards the target velocity, the collection control module 220 may limit the linear acceleration A of the robot to the interval [Adec, Aacc]. i Starting from , the shortest time ts taken to travel a line segment of length d while satisfying acceleration constraints, segment-specific velocity limits V, and maximum velocity Vf at the end of the segment may be determined. The calculation may be done for a pure rotational arc that changes only the robot's direction θ. In this case, the collection control module 220 may perform the calculation with acceleration limits [Aθdec, Aθacc], angular distance dθ, and maximum angular velocity Vθ.

[0176] For all arcs in the routing graph, the initial and maximum final velocities may be 0. Using this, the collection control module 220 can determine accurate travel times. In various embodiments, the maximum linear / angular velocity is 0.2 m / s; rad / s, and 0.25 m / s when the robot is loaded. 2 ;rad / s 2 ], otherwise a constant (acceleration / deceleration) rate of 0.5 may be used.

[0177] [Table 1]

[0178] Table 1 shows the results with and without the imposition of the above-mentioned penalty, showing that the use of the penalty reduces the number of visited states and the execution time. Multiple heap elements may correspond to the same location, for example, with different arrival times or different directions.

[0179] For large robots, drive noise can increase the likelihood of movements that deviate from the planned trajectory. This can lead to collisions, especially if the actual movement is slower or faster than the planned movement. To reduce collisions due to noise, the collection control module 220 may reserve adjacent time intervals around the actual time for each robot position in the reservation table. In other words, when the collection control module 220 reserves an area for the robot for a given instance τ, the collection control module 220 reserves it for a predetermined number (Δ) of seconds before and after τ. Adding more time margin to the plan increases the time to collision, in various embodiments. Unlike makespan, which is relatively unaffected by different levels of margin, planning time increases with larger margins.

[0180] To validate the above concepts in a realistic use case, experiments were conducted in a real warehouse environment with a layout similar to the leftmost layout in Figure 3. The routing graph contained 668 nodes and 2103 edges. Each experiment involved two robots navigating the warehouse. The experiments used maximum linear and angular velocities of 0.2 m / s and 0.2 rad / s, respectively, with a maximum linear and angular velocity of 0.25 m / s for the loaded and unloaded robots. 2 ;rad / s 2 In the experiment, the limits of the robot motion were set to 0.8 m / s for linear velocity and 0.8 rad / s for angular velocity, resulting in a constant (acceleration / deceleration) velocity of 0.45 m / s 2 ;rad / s 2 ] was used, but other suitable parameters may be used.

[0181] To achieve time discretization with respect to the auxiliary criterion of travel time, equivalence between multiple solutions may be defined in terms of arrival time. In various embodiments, two solutions may be considered equivalent in terms of arrival time if the difference in arrival time is smaller than a given precision. In this case, it should be noted that when the precision is zero, the solutions are equivalent in terms of the criterion only if they are exactly the same. In other examples, the time horizon is divided into consecutive intervals of the same size, and two arrival time values ​​in the same interval may be considered equivalent. Although a precision of 2 seconds was used in the experiments, this merely corresponds to the width of the interval, and other precisions may also be used.

[0182] The VP* algorithm may be modified to take the auxiliary criterion into account as follows: First, the value of the auxiliary criterion, e.g., travel time, may be added to the weight values ​​of different graph arcs in the routing graph. This allows the collection control module 220 to quickly calculate the auxiliary criterion value of a partial solution by incrementally updating it, for example, as is done for arrival time when total travel time is the auxiliary criterion. The auxiliary criterion value may be recorded in the queue element by the collection control module 220 and used to compare a temporary new element with all elements previously added to the queue. Instead of checking whether a queue element has already been added to the queue with the exact same value, the collection control module 220 may check whether an element with a lower or the same auxiliary criterion value has already been added to the queue, all other values ​​being equal. At the destination, the collection control module 220 may update the minimum arrival time and minimum travel time if the current solution is better than the current best route in terms of arrival time, or is equal but better in terms of the auxiliary criterion value. When checking whether the current heap element for pruning can improve the current best path, the collection control module 220 may ensure a lower arrival time, or, if the arrival times are comparable, a lower auxiliary criterion for the auxiliary criterion to be minimized, or a higher auxiliary criterion for the auxiliary criterion to be maximized. Due to discretization, the number of visited states may be reduced in the bi-criterion realization, which leads to a shorter execution time of the algorithm. The makespan will be only minimally affected, which was the case in the experiments.

[0183] A system and method are presented for obtaining a routing graph by processing a graph that represents the geometry of a building (e.g., a warehouse) or other bounded space, includes nodes (e.g., aisle entrances, workstations, etc.) around which a robot can turn or perform a movement, and includes an edge between two such nodes when a straight line between the two nodes is possible without colliding with a static obstacle (e.g., a section of a shelf). The collection control module 220 may expand the graph's nodes and add arcs between them to model rotation durations and constraints, as described above. In one embodiment, the collection control module 220 may also add some loop arcs to nodes where waiting is possible, as described above. The collection control module 220 may determine a set of shortest-path arcs between nodes that are collinear in the geographic representation of the graph, as described above. The collection control module 220 may also obtain the straight-line distance and rotation angle for each new arc. This application is also applicable to elevators and other devices, where some arcs between two nodes (entrances / exits) of fixed duration may be included. This may indicate that the robot gets on some kind of house train to travel between rooms. In such cases, the arc's travel duration may also be fixed.

[0184] The VP* algorithm is executed by the collection control module 220 to determine the shortest collision-free path for a robot with moving obstacles (when one exists) in a routing graph, visiting a sequence of n waypoints, where n is an integer greater than or equal to 1, each waypoint described by a node and / or location in the graph, a duration at the waypoint (the possibly null duration of the action performed at the waypoint), and additional information such as, but not limited to, a direction for arrival, a load on arrival, a direction for departure, and a load on departure, given the robot's geometry, and a given set of velocity profiles for each arc. If a location in space describes a waypoint and no graph node describes the waypoint, the node describing the waypoint may be obtained by projecting the location onto the nearest node in the graph.

[0185] The collection control module 220 determines the space occupied by the robot at each / any instant t and performs collision checking to verify whether the space occupied by the robot intersects / collides with a moving obstacle (e.g., another robot). The collection control module 220 updates the collision checking information with a set of robot positions and orientations to consider it as a moving obstacle in the next iteration. In various embodiments, the collision checking may record a summary of the robot's position and orientation during an interval (e.g., 1 second), and a bounding box that contains the space occupied by the robot at any instance within that time interval.

[0186] The collection control module 220 executes the VP* algorithm to determine the routing graph as described above. For each arc, the collection control module 220 may determine the travel time for each speed profile in the set of speed profiles, or a subset of that set. If a minimum wait time is imposed, the collection control module 220 may add an arc from each node to itself with a travel time equal to the minimum wait duration, no distance, and no angle. The collection control module may determine the robot's position at each instant and perform collision checking using its dimensions. The collection control module 220 may integrate the robot's direction as part of the algorithm's queue element. The collection control module may execute the VP* algorithm using a penalty that depends on the number of remaining way points to be reached and a heap score function to order the heap, which is a weighted sum of lower-bound estimates of the duration of a path that visits all remaining way points while satisfying constraints from the heading state.

[0187] The collection control module 220 executes an IPP algorithm to determine a trajectory / path for the navigation robot to execute a set of orders, where each order consists of one or more tasks, each of which includes one or more actions to perform at a specific location in space. In various embodiments, the list of actions for one task includes exactly two actions: picking up an object at a given location (e.g., a shelf or workstation) and delivering it to another location (e.g., a shelf or workstation). The collection control module 220 may reserve one or more locations for an order until pickup or delivery is completed for all tasks of the order. In various embodiments, a partial order for completing an order may be defined due to precedence constraints between tasks or actions of other orders.

[0188] The collection control module 220 may determine or receive as input a set of rules for defining the initial order for completing orders and the second order for performing the tasks of the orders. The collection control module 220 arranges the orders and the tasks for each order in their respective order sequences. The collection control module 220 assigns each order (and its respective task) to one navigation robot and one workstation based on a lower-bound estimate of travel time. The IPP includes priorities that are dynamically defined throughout the planning process by the robot setting dynamic task priorities based on the initial order and task priorities and resource availability. The collection control module 220 determines the path for each task using the VP* algorithm based on the dynamic task priorities, includes a final path to a waiting location in the task's set of waypoints, used when the robot needs to wait before starting the next task, and reserves a physical location for the robot assigned to that task.

[0189] In various embodiments, the collection control module may add multiple parallel arcs to the graph showing different velocity profiles. Such arcs may be obtained by the collection control module 220 in different ways, such as by selecting from a set of predefined velocity profiles (in this case, the collection control module 220 may consider velocity profiles that result in at least δ seconds more than the fastest path, where δ is a predetermined value greater than 0), or by selecting from a set of predefined additional times for the arc (in this case, the collection control module 220 may determine the velocity profile by adjusting the acceleration, deceleration, and maximum velocity for the arc while maintaining the velocity profile trapezoidal).

[0190] The collection control module 220 may schedule the navigation robot to wait at some nodes, or just a subset of nodes, for different minimum durations for each node. For collision checking, the collection control module 220 may reserve a larger space than the space currently occupied by the navigation robot.

[0191] The collection control module 220 may perform collision checking based on pre-calculated trajectories for each arc or a portion of the arcs in the routing graph. For each arc, the collection control module 220 may determine a trajectory of the robot for each or a portion of the velocity profiles. In the VP* algorithm, the position of the robot for a given arrival time at the origin (start) node of the arc may be determined by moving the pre-calculated position of the navigation robot in time according to the arrival time at the origin (start) node of the arc.

[0192] In various embodiments, an order may not require any resources. For example, if a task consists of pickup and delivery operations, the order does not need to be delivered to a workstation or picked up there. In various embodiments, where a task includes pickup and delivery operations, all tasks in a given order may be of the same type, including all pickup and drop-off typologies, such as shelf-table-workstation, or workstation-table-shelf, or shelf-table-shelf. In various embodiments, an order may request and reserve one or more resources, for example, requesting a different resource for each operation or requesting two or more resources for a single operation.

[0193] In various embodiments, the collection control module 220 may order orders based on priority rules, such as FIFO. Tasks for an order may be ordered by the collection control module 220 according to priority rules. In various embodiments, the order for tasks and orders may be received through user input.

[0194] In various embodiments, the waiting position may be omitted or the same waiting location may be used by more than one navigation robot, in which case the waiting location may be reserved by the collection control module only when the robot is there, and the robots may be given different starting positions.

[0195] In various embodiments, the assignment of tasks to a robot may be received through user input.

[0196] In the VP* algorithm, a queue element has multiple attributes (e.g., a graph node, an angular position at that node, a pass point index, and a heap point number). When determining whether an element has already been added to the queue, the collection control module 220 may check whether the element has already been added, i.e., whether it is sufficiently close in terms of one or more attributes (e.g., time and angular position), and whether all other elements are identical, instead of checking equality of all elements. When determining whether an element has already been added to the queue, the collection control module 220 may check whether the element has already been added, i.e., whether it is in a given discrete interval for one or more attributes (e.g., time and / or angular position), and whether all other elements are the same, instead of checking equality of all elements. In various embodiments, the attributes must be sufficiently close in terms of value, some must belong to the same interval, and some must be identical.

[0197] The collection control module 220 may add auxiliary criteria to check for equivalence in the queue of the VP* algorithm. When an element is equivalent to an element previously added to the queue, the auxiliary criteria may be used to determine whether it should nevertheless be added to the queue. In such cases, the element is added based on a condition on one or more other criteria. For example, an element may be added by the collection control module 220 if its total distance (to the queue element's node) is less than that of the previously added element. In such an example, the second criterion is minimum distance. Other possible criteria include minimum energy consumption or minimum travel time. One criterion may be considered an auxiliary criterion if solution S1 is better in the main criterion, and if S1 and S2 are equally good in the main criterion and S1 is better than S2 in the auxiliary criterion, then solution S1 is better than solution S2.

[0198] In various embodiments, the collection control module 220 may determine the heap score based on additional criteria, such as distance from the origin, in which case the collection control module 220 may determine the heap score as a weighted sum of the penalty, the estimated duration to the destination, and the additional criteria.

[0199] 8 and 9 illustrate the operation of the IPP algorithm. First, order prioritization is performed. The collection control module 220 may iterate through the order to assign the current order to a task station and assign the current order's tasks to a robot. After that (once assigned), the collection control module 220 may iterate through the order to define priorities for the current order's tasks and use the VP* algorithm to determine collision-free routes (using and subsequently updating the reservation table in the process).

[0200] 8 and 9, the input is a set of orders. Each order contains a set of tasks. In general, certain orders may be executed before other orders based on the order's priority or precedence constraints. First, the collection control module 220 may order the orders so that such priority and constraints (if any) are met. In FIG. 8, the orders are arranged as rows based on their ordered position. For example, task o1 1 and o2 1 First order including 1 is located on the first line.

[0201] Prior to route planning, the collection control module 220 allocates resources (e.g., workstations, waiting positions, etc.) to the orders. In Figure 8, this is indicated by the colors in the first column (before allocation there is no color, but after allocation some are allocated to workstations shown, for example, in blue, and some are allocated to workstations shown, for example, in red).

[0202] Once resources are allocated to an order, the collection control module assigns robots to tasks. Figure 8 shows three robots: one shown in, for example, blue, one shown in, for example, green, and one shown in, for example, purple. Different tasks for one order may be assigned to different robots, and one robot may be assigned to tasks for different orders.

[0203] Planning the robot paths may be performed by the collection control module 220, one task at a time per order. The collection control module 220 selects the next task to be planned based on the current state of the robots and resources. Once selected, the VP* algorithm plans a collision-free path or task for all robots based on the starting configuration, which contains information about previously planned paths, and the reservation / collision table. After the path is planned, the collection control module 220 updates the reservation table, and as new states exist for the workstations and robots, the collection control module 220 selects the next task (if any) and proceeds. Figure 9 is similar to Figure 8, but shows a loop instead of the ellipsis in Figure 8.

[0204] In terms of precedence or precedence constraints, certain items must be executed before other items. Naturally, such requirements are not cyclical. More formally, precedence constraints between items (orders, tasks within orders, actions between tasks, etc.) require a strict partial order within the itemset, i.e., for every a, b, c in S, not a <a; if a <b,then not b<a; if a It may be defined by a two-parameter relation < on a set S, satisfying

[0205] With respect to ordering the items according to the precedence constraints, the collection control module 220 determines an order that is completely compatible with the partial order induced by the precedence constraints. More formally, for all a and b in the set S, not a<*a; if a≠b,then a<*b or b<*a but not both; if a <b,then a<*b Find a two-party relation <* for P that satisfies

[0206] ​The precedence constraints may be required to be feasible, such as not interfering with other navigation robots (e.g., when expressed as a directed graph, there are no cycles in the graph).

[0207] FIG. 7 shows the implementation of collision checking.

[0208] FIG. 10 illustrates a graph transformation. In FIG. 10, shelves are provided to explain where nodes in the warehouse graph come from and may not be part of the routing graph. The input to the algorithm is a graph layout (the warehouse graph) that includes nodes, their positions, and undirected edges between adjacent nodes. To efficiently perform pathfinding, even when considering real robot dynamics, the warehouse graph may be transformed / converted into a routing graph. In this transformation, original nodes in the warehouse graph are replaced with multiple new nodes in the routing graph at the same positions as the original nodes. The new nodes are connected by directed arcs to model rotations and movements between collinear nodes. Such a transformation generates a directed multigraph with multiple arcs from one node to another (instead of one as in the warehouse graph). In various embodiments, traveling an arc takes a specific time, determined by the collection control module 220 using the robot dynamics. Because such determination of arc travel times is made by the collection control module 220 before planning any of the paths, the collection control module 220 may use an algorithmic approach based on searching paths from a weighted graph.

[0209] The foregoing description is merely exemplary in nature and is not intended to limit the disclosure, its application, or uses. The broad scope of the disclosure may be embodied in various forms. Thus, even if this disclosure includes specific examples, other modifications will become apparent upon study of the drawings, specification, and appended claims, and the true scope of the disclosure should not be limited thereby. It should be understood that one or more steps in any method can be performed in a different order (or simultaneously) without altering the principles of the disclosure. Furthermore, although each embodiment has been described as having specific features, any one or more of the described features of any embodiment of the disclosure may be implemented with and / or combined with features of any other embodiment, even if that combination is not explicitly described. In other words, the above-described embodiments are not mutually exclusive, and the order of one or more embodiments is within the scope of this disclosure.

[0210] Spatial and functional relationships between elements (e.g., modules, circuit elements, semiconductor layers, etc.) are described using various terms such as "connected," "coupled," "adjacent," "laterally," "over," "above," "below," and "disposed." Unless expressly described as "directly," when a relationship between a first element and a second element is described in the disclosure, the relationship may be direct, with no other intervening elements present between the first and second elements, or indirect, with one or more intervening elements (spatial or functional) present between the first and second elements. As used herein, at least one of A, B, and C should be interpreted to mean a non-exclusive logical OR (A OR B OR C), and not to mean "at least one of A, at least one of B, and at least one of C."

[0211] In drawings, the direction of an arrow generally indicates the flow of information (such as data or instructions) that is the subject of the illustration. For example, if element A and element B exchange various information, and information sent from element A to element B is relevant to the illustration, the arrow will point from element A to element B. Such a unidirectional arrow does not mean that other information is not sent from element B to element A. Furthermore, in response to information sent from element A to element B, element B may send a request or confirmation of receipt of that information to element A.

[0212] As used herein, the following definitions are included, and the term "module" or "controller" may be substituted for the term "circuitry." The term "module" may refer to, be a part of, or include: an application specific integrated circuit (ASIC), digital, analog, or mixed analog / digital discrete circuitry, a digital, analog, or mixed analog / digital integrated circuit, a combinational logic circuit, a field programmable gate array (FPGA), a processor circuit (shared, dedicated, or group) that executes code, a memory circuit (shared, dedicated, or group) that stores code to be executed by the processor circuitry, other suitable hardware components that provide the functionality described above, or a combination of some or all of the above, such as a system on a chip (SoC).

[0213] A module may include one or more interface circuits. In some examples, the interface circuit may include a wired or wireless interface connected to a local area network (LAN), the Internet, a wide area network (WAN), or a combination thereof. The functionality of a module described in this disclosure may be distributed among multiple modules connected via interface circuits. For example, multiple modules may allow for load balancing. As a further example, a server (also called a remote or cloud) module may perform some functions on behalf of a client module.

[0214] The term "code" may include software, firmware, and / or microcode and may refer to programs, routines, functions, classes, data structures, and / or objects. The term "shared processor circuit" includes a single processor circuit that executes some or all code from multiple modules. The term "group processor circuit" includes a processor circuit that executes some or all code from one or more modules in combination with additional processor circuits. References to multiprocessor circuits include multiple processor circuits on each die, multiple processor circuits on a single die, multiple cores of a single processor circuit, multiple threads of a single processor circuit, or combinations thereof. The term "shared memory circuit" includes a single memory circuit that stores some or all code from multiple modules. The term "group memory circuit" includes a memory circuit that stores some or all code from one or more modules in combination with additional memory.

[0215] The term "memory circuit" is a subset of the term "computer-readable medium." As used herein, the term "computer-readable medium" does not include transitory electrical or electromagnetic signals propagated through a medium (such as on a carrier wave). Thus, the term "computer-readable medium" may be considered tangible and non-transitory. Non-limiting examples of non-transitory, tangible computer-readable media include non-volatile memory circuits (such as flash memory circuits, erasable programmable read-only memory circuits, or mask read-only memory circuits), volatile memory circuits (such as static random access memory circuits or dynamic random access memory circuits), magnetic recording media (such as analog or digital magnetic tape or hard disk drives), and optical recording media (such as CDs, DVDs, or Blu-ray discs).

[0216] The apparatus and methods described in this application may be implemented, in part or entirely, by a special-purpose computer created by configuring a general-purpose computer to perform one or more specific functions embodied in a computer program. The functional blocks, flowchart components, and other elements described above function according to software specifications, which may be translated into a computer program by the routine work of a skilled engineer or programmer.

[0217] A computer program includes processor-executable instructions recorded on at least one non-transitory, tangible, computer-readable medium. A computer program may depend on or include recorded data. A computer program may include a basic input / output system (BIOS) that interacts with hardware in a special-purpose computer, device drivers that interact with particular devices in a special-purpose computer, one or more operating systems, user applications, background services, background applications, etc. A computer program may include: (i) parsed technical text such as HTML (Hypertext Markup Language), XML (Extensible Markup Language), or JSON (Javascript Object Notation), (ii) assembly code, (iii) object code generated from source code by a compiler, (iv) source code for execution by an interpreter, (v) source code for compilation and execution by a just-in-time (JIT) compiler, etc. By way of example, the source code may be written using syntax of languages ​​including C, C++, C#, Objective-C, Swift, Haskell, Go, SQL, R, Lisp, Java®, Fortran, Perl, Pascal, Curl, OCaml, JavaScript®, HTML5 (Hypertext Markup Language Fifth Revision), Ada, ASP (Active Server Pages), PHP (Hypertext Preprocessor), Scala, Eiffel, Smalltalk, Erlang, Ruby, Flash®, Visual Basic®, Lua, MATLAB, SIMULINK, and Python®.

Claims

1. 1. An automated system for a space, comprising: k navigation robots operating to execute the order set within the space, k being an integer equal to or greater than 1, the space including one or more waiting areas where any navigation robot can wait without interfering with the movement of any other navigation robot; a control module configured to receive the order set and communicate paths p for the k navigation robots to fulfill the order set, wherein each order in the order set (I) includes one or more tasks including a sequence of operations to be performed at a location in the space, (II) has an order availability time after which any task of the order may be initiated, and (III) is associated with a set of antecedent constraints arising from at least one of (i) relationships between orders, and (ii) resources of the orders; Including, The movements communicated by the control module to the k navigation robots are determined for each order in the order set by a procedure including: (A) ordering the orders in the order set by a function of the set of precedence constraints; (B) allocating resources to complete each task for each order in the order set according to the sequence of operations associated with that task; (C) ordering the tasks of the task set for each order in the order set; (D) assigning one of the k navigation robots to each task for each order in the order set; and (E) for each task t of each order in the order set and its assigned navigation robot r, while satisfying the ordered order sequence and the ordered task sequence, (i) calculating an earliest start time for the task t based on the task t and the position of the navigation robot r in the space; (ii) if the best start time of the task t is greater than the completion time of the final operation performed by the navigation robot r, (1) searching for and reserving a path for the navigation robot r to move to one of the waiting areas, (2) calculating a waiting time for the navigation robot r to wait in the waiting area to start the task t while satisfying the order availability time and the precedence constraint, and (3) allocating a waiting time to the navigation robot r that is greater than or equal to the waiting time; (iii) determining a path p starting from the current location of the navigation robot r while taking into account previously reserved paths, continuing the path p according to a sequence of positions associated with a sequence of actions of the task t, and ending the path p at (a) a waiting area of ​​the navigation robot r, or (b) the last position of a final action in the sequence of actions, wherein the waiting time associated with the path p takes into account the movement time and action execution time of the navigation robot r; and (iv) reserving the determined path p for performing a task t associated with the order; An automated system determined by a procedure including:

2. 2. The automated system of claim 1, wherein the k navigation robots are configured to travel along each of the paths p assigned to a corresponding one of the k navigation robots.

3. 2. The automated system of claim 1, wherein the precedence constraint is defined by one or more actions of a first order finishing within a predetermined period of at least zero seconds before one or more actions of a second order begin.

4. The automated system of claim 1 , wherein the precedence constraint is based on using the same resource for multiple different orders.

5. The automated system of claim 4 , wherein the identical resource is an identical workstation.

6. The automated system of claim 4 , wherein the resource is available for a time period that is less than the total time period.

7. The automated system of claim 1 , wherein the precedence constraint is based on a first task of a first type not being able to start before a second task of a second type is finished.

8. 10. The automated system of claim 1, wherein the control module is configured to allocate resources to the operation of the order, the resources including one or more of a robot and a workstation.

9. The automated system of claim 1 , wherein the control module is further configured to reserve a path p between a starting position of a navigation robot r, which is one of the k navigation robots, and a waiting area of ​​the navigation robot r.

10. 2. The automated system of claim 1, wherein the control module is configured to determine the path p such that the navigation robot r performs a corresponding action within a time period at least equal to the duration of the action without colliding with reserved paths of other navigation robots among the k navigation robots.

11. The automated system of claim 10, wherein the non-collision of the navigation robot r with the reserved paths of other navigation robots among the k navigation robots is verified by checking that the bounding box of the navigation robot r does not collide with the reserved paths of other bounding boxes among the k navigation robots.

12. The automated system of claim 11 , wherein the bounding box is larger than a bounding box based on actual dimensions of the navigation robot r.

13. 2. The automated system of claim 1, wherein the control module is configured to determine an optimal start time for task t based on (a) a completion time of a task for which a route is booked, (b) an order start time corresponding to task t, and (c) the set of precedence constraints.

14. The automated system of claim 1 , wherein the control module is configured to determine a path p for a navigation robot r to one of the waiting areas based on previously reserved paths of other robots.

15. The automated system of claim 1 , wherein one waiting area is assigned to each navigation robot.

16. The automated system of claim 1 , wherein the control module is configured to assign a waiting area to multiple navigation robots among the k navigation robots.

17. The automated system of claim 1 , wherein the total number of the one or more waiting areas is one of greater than k or less than k.

18. 10. The automated system of claim 1, wherein a resource may be used by a predetermined maximum number of operations at a given time, and a next operation of the resource cannot start earlier than a minimum finish time of an operation using the resource.

19. The automated system of claim 1 , wherein the control module is further configured to reserve one or more paths for one or more moving obstacles.

20. The control module receiving a first graph representing a geometric structure of the space; determining a second graph using the first graph; The automated system of claim 1 , configured to determine paths for the k navigation robots in the second graph.

21. 21. The automated system of claim 20, wherein the second graph includes more nodes and more arcs than the first graph to indicate a rotation in a given direction.

22. 21. The automated system of claim 20, wherein the second graph includes, for one or more nodes in the first graph, two nodes including a first node for directions away from the node and a second node for directions toward the node.

23. 21. The automated system of claim 20, wherein the second graph includes one or more shortcut arcs that bypass straight-line nodes.

24. 21. The automated system of claim 20, wherein the second graph includes one or more shortcut arcs that bypass nodes of paths in the second graph.

25. The automated system of claim 20 , wherein the control module is configured to determine the path based on the second graph and dynamics of the k navigation robots.

26. 26. The automated system of claim 25, wherein the control module is configured to determine the path further based on the geometry of the k navigation robots.

27. 26. The automated system of claim 25, wherein the control module is configured to determine the path further based on respective orientations for the movements.

28. 26. The automated system of claim 25, wherein the control module is configured to determine the path further based on a direction for the waiting area.

29. 26. The automated system of claim 25, wherein the control module is configured to determine the path further based on a maximum velocity of the navigation robot along an arc of the second graph or at a node of the second graph.

30. 26. The automated system of claim 25, wherein the control module is configured to determine the path further based on time-dependent maximum velocities of the k navigation robots at least one of: (a) along arcs of the second graph; and (b) at nodes of the second graph.

31. 2. The automated system of claim 1, wherein the control module is configured to determine a path for the navigation robot further based on the navigation robot not coming within a predetermined distance of any other navigation robot among the k navigation robots while moving along its respective path.

32. 2. The automated system of claim 1, wherein the control module is configured to determine paths for the k navigation robots further based on progressively constructing partial paths by adding elements to ends of previously calculated paths.

33. 33. The automated system of claim 32, wherein the control module is configured to determine the route based on a comparison of the partial routes.

34. 34. The automated system of claim 33, wherein the control module is configured to compare the partial paths based on their heap scores using a heap score function that includes a weighted sum of penalties.

35. 35. The automated system of claim 34, wherein the heap score function further comprises a weighted sum of lower bounds of durations of shortest paths from endpoints of the partial paths to a destination that pass through all unreached locations in the sequence of locations and stay at each location for at least the wait time.

36. 35. The automated system of claim 34, wherein the penalty is based on the number of remaining unreached locations in the sequence of locations and staying at each location for at least a minimum required time.

37. 35. The automated system of claim 34, wherein the penalty is based on preventing collisions between some of the k navigation robots.

38. 38. The automated system of claim 37, wherein the preventing collisions is based on at least one of: (a) the dynamics of the k navigation robots; and (b) the geometry of the k navigation robots.

39. 34. The automated system of claim 33, wherein the control module is configured to compare portions of the partial paths based on one or more criteria for the partial paths, the criteria being arranged in a hierarchical order.

40. 40. The automated system of claim 39, wherein the control module is further configured to compare one or more of the criteria based on at least one of: (a) the criteria values ​​being within the same predetermined range of values; and (b) the difference between the criteria values ​​being less than a threshold value.

41. 41. The automated system of claim 40, wherein a first criterion in the hierarchical order of the criteria is best finish time.

42. 41. The automated system of claim 40, wherein the criteria include at least two secondary criteria, one of the secondary criteria in the hierarchical order being a minimum time for travel.

43. The automated system of claim 1 , wherein the space is one of a physical space and a virtual space.

44. The control module reserving positions in the space in time for previously planned paths of other navigation robots of the k navigation robots in a reservation table; 2. The automated system of claim 1, configured to determine a feasible path for the navigation robot r in step (E)(iii) based on avoiding the locations at the times.

45. The control module reserving positions in the space for previously planned paths of other robots of the k navigation robots in a reservation table during a time period; 2. The automated system of claim 1, configured to determine a feasible path for the navigation robot r in step (E)(iii) based on avoiding the positions during the time period.

46. The control module reserving regions in the space in time for previously planned paths of other robots of the k navigation robots in a reservation table; 2. The automated system of claim 1, configured to determine a path for the navigation robot r in step (E)(iii) based on avoiding the region at the time.

47. The control module reserving regions in the space for previously planned paths of other robots of the k navigation robots during a time period in a reservation table; 2. The automated system of claim 1, configured to determine a feasible path for the navigation robot r in step (E)(iii) based on avoiding the region during the period.

48. 10. The automated system of claim 1, wherein each task for one order in the order set has exactly two actions, a first action being a pickup action and a second action being a delivery action.

49. The automated system of claim 1 , wherein the control module is configured to receive at least a portion of the resource allocation.

50. The automated system of claim 1 , wherein the control module is configured to receive at least a portion of the navigation robot assignments.

51. The automated system of claim 1 , wherein the control module is configured to receive at least a portion of the order of the tasks.

52. The automated system of claim 1 , wherein the control module is configured to receive at least a portion of the order sequence.

53. The automated system of claim 1 , wherein the control module is further configured to update the set of predecessor constraints during step (B).

54. 1. An automated method for a space, comprising: operating, by k navigation robots, to execute an order set within the space, where k is an integer greater than or equal to 2, and the space includes one or more waiting areas where any navigation robot can wait without interfering with the movement of any other navigation robot; receiving the order set and communicating to the k navigation robots paths p for the k navigation robots to fulfill the order set, each order in the order set (I) including one or more tasks including a sequence of actions to be performed at a location in the space; (II) having an order availability time after which any task of the order may be initiated; and (III) associated with a set of precedence constraints arising from at least one of (i) relationships between orders and (ii) resources of the orders; Including, The movements communicated to the k navigation robots are determined for each order in the order set by a procedure that includes: (A) ordering the orders in the order set by a function of the set of precedence constraints; (B) allocating resources to complete each task for each order in the order set according to the sequence of operations associated with that task; (C) ordering the tasks of the task set for each order in the order set; (D) assigning one of the k navigation robots to each task for each order in the order set; and (E) for each task t of each order in the order set and its assigned navigation robot r, while satisfying the ordered order sequence and the ordered task sequence, (i) calculating a best start time for the task t based on the task t and the position of the navigation robot r in the space; (ii) if the best start time of the task t is greater than the completion time of the final operation performed by the navigation robot r, (1) searching for and reserving a path for the navigation robot r to move to one of the waiting areas, (2) calculating a waiting time for the navigation robot r to wait in the waiting area to start the task t while satisfying the order availability time and the precedence constraint, and (3) allocating a waiting time to the navigation robot r that is greater than or equal to the waiting time; (iii) determining a path p starting from the current location of the navigation robot r while taking into account previously reserved paths, continuing the path p according to a sequence of positions associated with a sequence of actions of the task t, and ending the path p at (a) a waiting area of ​​the navigation robot r, or (b) a final position of a final action in the sequence of actions, wherein the waiting time associated with the path p takes into account the movement time and action execution time of the navigation robot r; and (iv) reserving the determined path p for performing a task t associated with the order; An automated method, determined by a procedure including:

55. 1. An automated system for a space, comprising: k navigation means operating to execute the order set within the space, k being an integer equal to or greater than 1, the space including one or more waiting areas where any navigation means can wait without interfering with the movement of any other navigation means; means for receiving the set of orders and communicating to the k navigation means a route p for the k navigation means, wherein each order in the set of orders (I) includes one or more tasks including a sequence of actions to be performed at a location in the space, (II) has an order availability time after which any task of the order may be initiated, and (III) is associated with a set of precedence constraints arising from at least one of (i) relationships between the orders and (ii) resources of the orders; Including, The trips communicated to the k navigation means are determined for each order in the order set by a procedure comprising: (A) ordering the orders in the order set by a function of the set of precedence constraints; (B) allocating resources to complete each task for each order in the order set according to the sequence of operations associated with that task; (C) ordering the tasks of the task set for each order in the order set; (D) assigning one of the k navigation means to each task for each order in the order set; and (E) for each task t of each order in the order set and its assigned navigation means r, while satisfying the ordered order sequence and the ordered task sequence: (i) calculating a best start time for the task t based on the task t and the position of the navigation means r in the space; (ii) if the best start time of the task t is greater than the completion time of the last operation performed by the navigation means r, (1) searching for and reserving a route for the navigation means r to travel to one of the waiting areas, (2) calculating a waiting time for the navigation means r to wait in the waiting area to start the task t while satisfying the order availability time and the precedence constraints, and (3) assigning a waiting time to the navigation means r that is greater than or equal to the waiting time; (iii) determining a path p starting from the current location of the navigation means r while taking into account previously booked paths, continuing the path p according to a sequence of locations associated with a sequence of actions of the task t, and terminating the path p at (a) a waiting area of ​​the navigation means r, or (b) a final location of a final action in the sequence of actions, the waiting time associated with the path p taking into account the travel time and action execution time of the navigation means r; and (iv) reserving the determined path p for performing a task t associated with the order; An automated system determined by a procedure including: