Mobile Robot Management System
The mobile robot fleet management system addresses inefficiencies in task assignment by utilizing actual path lengths and proximity, enhancing accuracy and responsiveness through a communications module and memory-based path length database updates.
Patent Information
- Application Number
- JP2025527824
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-11-28
- Filing Date
- 2023-11-08
- Publication Date
- 2025-12-03
AI Technical Summary
Existing mobile robot management systems face inefficiencies in task assignment due to reliance on Euclidean distance and lack of real-time path length data, leading to delayed assignments and network connectivity issues.
A mobile robot fleet management system that includes a communications module, processor, and memory to store path length information, allowing for task assignment based on actual path lengths and proximity, with the ability to update and create databases of path lengths for improved efficiency.
Enhances task assignment accuracy and reduces delays by using actual path lengths and proximity, optimizing robot utilization and improving system responsiveness.
Smart Images

Figure 2025539097000001_ABST
Abstract
Description
[Technical Field]
[0001] (CROSS-REFERENCE TO RELATED APPLICATIONS) This application claims the benefit of priority to U.S. Provisional Patent Application No. 63 / 385,193, entitled "MOBILE ROBOT MANAGEMENT SYSTEMS," filed November 28, 2022. The entire contents of the above applications are incorporated herein by reference and made a part hereof for all that they disclose.
[0002] (Technical field) Some embodiments disclosed herein relate to a system for managing mobile robots, such as assigning tasks to the mobile robots. [Background technology]
[0003] Mobile robot management systems are known to assign tasks to mobile robots based on certain criteria, but there is a need for further improvement in mobile robot management systems. Summary of the Invention
[0004] Exemplary aspects of the present disclosure are summarized below for illustrative purposes. The present disclosure is not limited to the specific embodiments described herein. While aspects of the present disclosure may include several novel features, their desirable properties are not due to any one feature alone.
[0005] Various aspects of the present disclosure relate to a mobile robot fleet management system that may include a communications module configured to communicate with a fleet of mobile robots in an environment, a processor, and a computer-readable memory in communication with the processor. The memory may be configured to store a database of path length information. The memory may store instructions executable by the processor that may cause the system to receive path length information from a mobile robot as the mobile robot navigates an environment, store the received path length information in the database, identify a location for a task, identify locations of a plurality of mobile robots, retrieve path length values from the database corresponding to paths from the plurality of mobile robots to the location of the task, and assign a task to one of the plurality of mobile robots based at least in part on the path length values.
[0006] The instructions may be configured to cause the system to receive position information from the mobile robots and store the position information in a database. The instructions may be configured to cause the system to receive a path length value from a first robot's location to a task location, determine whether the database already has a previous value corresponding to the path length from the first robot's location to the task location, and, if the database already has a previous value, ignore the received path length value. The instructions may be configured to cause the system to retrieve a path length value from the database corresponding to a path from a first group of the plurality of mobile robots to the task location, identify a second group of the plurality of mobile robots for which a path length value to the task location does not exist in the database, and determine whether a number of robots in the first group meets a threshold. If the number of robots in the first group meets the threshold, the system may assign the task to a robot of the first group of the plurality of mobile robots selected based at least in part on the path length value. If the number of robots in the first group does not meet the threshold, the system may assign the task to one robot based at least in part on the robot's proximity to the task location.
[0007] The instructions may be configured to cause the system to receive from an assigned mobile robot an actual path length value corresponding to the assigned mobile robot's actual path to a task location, compare the actual path length value with a predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount, and modify the database if the difference between the actual path length value and the predicted path length value exceeds the threshold amount. The instructions may be configured to cause the system to replace the predicted path length value in the database with the actual path length value. The instructions may be configured to cause the system to erase entries in the database corresponding to a zone containing the assigned robot's location. The instructions may be configured to cause the system to create a new database of path length values.
[0008] The instructions may be configured to cause the system to instruct a mobile robot to perform path planning for a route that the mobile robot has not traveled, receive path length information for the route from the mobile robot, and store the path length information in a database.
[0009] Various aspects of the present disclosure relate to a mobile robot fleet management system, which may include a communications module configured to communicate with a fleet of mobile robots in an environment, a processor, and a computer-readable memory in communication with the processor. The memory may be configured to store a database of path length information. The memory may store instructions executable by the processor, the instructions may be configured to cause the system to identify a location of a task, identify a location of a plurality of mobile robots, retrieve from the database a path length value corresponding to a path from a first group of the plurality of mobile robots to the location of the task, identify a second group of the plurality of mobile robots for which a path length value to the location of the task is not present in the database, and determine whether the number of robots in the first group meets a threshold. If the number of robots in the first group meets the threshold, the system may assign the task to a robot of the first group of mobile robots selected based at least in part on the path length value. If the number of robots in the first group does not meet the threshold, the system may assign the task to a robot selected based at least in part on the robot's proximity to the location of the task.
[0010] The instructions may be configured to cause the system to receive path length information from the mobile robot as it navigates an environment and store the path length information in a database. The instructions may be configured to cause the system to receive position information from the mobile robot and store the position information in a database. The instructions may be configured to cause the system to receive an actual path length value corresponding to an actual path from a selected robot to an assigned mobile robot task location, compare the actual path length value with a predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount, and modify the database if the difference between the actual path length value and the predicted path length value exceeds the threshold amount. The instructions may be configured to cause the system to replace the predicted path length value in the database with the actual path length value. The instructions may be configured to cause the system to erase multiple entries in the database corresponding to a zone containing the location of the selected mobile robot. The instructions may be configured to cause the system to create a new database of path length values. The instructions may be configured to cause the system to instruct a mobile robot to perform path planning for a route not traveled by the mobile robot, receive path length information for the route from the mobile robot, and store the path length information in a database.
[0011] Various aspects of the present disclosure relate to a mobile robot fleet management system, which may include a communications module configured to communicate with a fleet of mobile robots in an environment, a processor, and a computer-readable memory in communication with the processor. The memory may be configured to store a database of path length information. The memory may store instructions executable by the processor, which may be configured to: cause the system to obtain from the database a predicted path length value for a mobile robot to travel to a task location; receive from the mobile robot an actual path length value corresponding to an actual path for the mobile robot to travel to the task location; compare the actual path length value with the predicted path length value from the database; determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount; and modify the database if the difference between the actual path length value and the predicted path length value exceeds the threshold amount.
[0012] The instructions may be configured to cause the system to replace predicted path length values in the database with actual path length values. The instructions may be configured to cause the system to erase entries in the database corresponding to a zone containing the location of a mobile robot. The instructions may be configured to cause the system to create a new database of path length values.
[0013] Various aspects of the present disclosure relate to a method for managing a fleet of mobile robots, the method may include receiving path length information from the mobile robots as they navigate an environment, storing the path length information (e.g., in a database), identifying a location for a task, identifying locations of a plurality of mobile robots, retrieving path length values from the database corresponding to paths from the plurality of mobile robots to the location of the task, and assigning the task to one of the plurality of mobile robots based at least in part on the path length values. The method may include various other features as described above or elsewhere herein.
[0014] Various aspects of the present disclosure relate to a method for managing a fleet of mobile robots, the method may include identifying a task location, identifying a location of a plurality of mobile robots, retrieving from a database path length values corresponding to paths from a first group of the plurality of mobile robots to the task location, identifying a second group of the plurality of mobile robots for which no path length values exist in the database to the task location, and determining whether a number of robots in the first group meets a threshold. If the number of robots in the first group meets the threshold, the method may include assigning the task to a robot of the first group of the plurality of mobile robots selected based at least in part on the path length values. If the number of robots in the first group does not meet the threshold, the method may include assigning the task to a robot selected based at least in part on the robot's proximity to the task location. The method may include various other features as described above or elsewhere herein.
[0015] Various aspects of the present disclosure relate to a method for managing a fleet of mobile robots, the method may include obtaining from a database a predicted path length value for a mobile robot to travel to a task location, receiving from the mobile robot an actual path length value corresponding to an actual path for the mobile robot to travel to the task location, comparing the actual path length value with the predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount, and modifying the database if the difference between the actual path length value and the predicted path length value exceeds the threshold amount. The method may include various other features as described above or elsewhere herein.
[0016] Any of the methods described above may be performed by a hardware processor executing instructions stored in a computer-readable memory (e.g., on a non-transitory medium). The methods may also be performed by an application-specific integrated circuit (ASIC) or another type of dedicated processor configured to perform the method. The methods may be performed by a single processor or by multiple processors that, for example, can cooperate to perform the method.
[0017] Certain embodiments will be described in detail with reference to the following drawings, in which like reference numerals refer to like elements throughout the drawings. These drawings are illustrative examples, and the embodiments are not limited to the specific examples shown in the drawings. [Brief explanation of the drawings]
[0018] [Figure 1] 1 illustrates an exemplary embodiment of a mobile robot. [Figure 2] FIG. 1 is a schematic diagram of an exemplary embodiment of a mobile robot. [Figure 3] FIG. 1 is a schematic diagram of a mobile robot management system in communication with a mobile robot and a user device. [Figure 4]1 illustrates an example embodiment of a mobile robot fleet controlled by a management system. [Figure 5] 1 illustrates an example embodiment of a mobile robot fleet controlled by a management system. [Figure 6] 1 is a flowchart of an exemplary method for assigning tasks to a mobile robot. [Figure 7] 1 shows an example of a managed environment divided into grid-like areas. [Figure 8] 1 illustrates an exemplary embodiment of a database with path length information. [Figure 9] 1 is a flowchart of an exemplary method for assigning tasks to a mobile robot. [Figure 10] 1 is a flowchart of an exemplary method for determining changes in an environment. [Figure 11] 1 shows an example environment containing two robots and two tasks. DETAILED DESCRIPTION OF THE INVENTION
[0019] Various features and advantages of the systems, devices, and methods of the technology described herein will become more apparent through the following description of illustrated examples. These examples are intended to illustrate the principles of the present disclosure, and the present disclosure is not limited to these illustrated examples. Features of the illustrated examples can be modified, combined, deleted, and / or substituted, as would be apparent to one skilled in the art in light of the principles disclosed herein.
[0020] A mobile robot management system can manage a fleet of mobile robots, such as by assigning tasks to various robots. The robot management system can receive task requests from a user (e.g., in response to pressing a call button or submitting a task via a user interface) or from another system. In some cases, the robot management system or another system can generate individual tasks for the robots to perform, for example, based on project parameters or other information. The robot management system may include various features disclosed in U.S. Pat. No. 10,089,586, entitled "JOB MANAGEMENT SYSTEM FOR A FLEET OF AUTONOMOUS MOBILE ROBOTS," issued October 2, 2018 (hereinafter, the "'586 Patent"), the entirety of which is incorporated herein by reference for all that it discloses.
[0021] The robot management system can assign tasks to individual robots, for example, using task assignment criteria. Task assignment criteria may include the robot's distance from the task goal or task location, the robot's status (e.g., idle or performing another task), the amount of time the robot has been idle, the robot's charge state (e.g., full charge, charge level, and / or whether the robot has enough charge to perform the task), the priority level of the task, etc. In some robot management systems, the distance from the task location to the robot may be Euclidean distance, i.e., the distance of the direct path from the robot location to the task location (e.g., the distance without considering obstacles, boundaries, or navigation rules). For example, in some cases, the management system may assign the task to the available robot closest to the goal or task location.
[0022] In some cases, a mobile robot cannot navigate directly from its current location to a task location due to, for example, obstacles, boundaries, or navigation rules (e.g., one-way zones). Therefore, the closest robot may not necessarily be the robot with the shortest path distance to the task location. In some embodiments, the management system may assign tasks based at least in part on the length of available paths from the robot to the task location. In some systems, individual robots can perform path planning to navigate between locations in the environment, and the management system does not have direct access to the path planning functionality. In some cases, the management system performs path planning, but determining the path lengths of multiple robots for each task can be time-consuming and may delay task assignment. In some cases, the management system may instruct multiple available robots to perform path planning, determine expected path distances from the robots to the task location, and report the determined path distances to the management system. This allows the management system to assign tasks based at least in part on the reported path distances. However, waiting for the robots to perform path planning and report their path distances may delay task assignment. Additionally, network connectivity issues and latency can further delay or hinder the task assignment process.
[0023] The management system may store a database of path distances between various locations (points) in the environment. As a mobile robot performs path planning in the environment, the robot may send path length information to the management system, which may enter the information into the database. As the fleet of robots performs more path planning, the database stored in the management system becomes more detailed. When a new task needs to be assigned, the management system may look up the path lengths from available robots to the task location in the database. The management system may use the path lengths when assigning tasks, such as assigning the task to an available robot with a shorter path length to the task location.
[0024] FIG. 1 is a diagram illustrating an exemplary embodiment of a mobile robot 100. FIG. 2 is a schematic diagram of the mobile robot 100. The mobile robot 100 may include a chassis or housing 102 that supports various other components of the robot 100. Some components may be disposed inside the housing 102, while some components may be disposed so that they are at least partially exposed from the housing 102 to allow interaction with entities external to the housing 102. The robot 100 may include a drive system 104. The drive system 104 may be configured to move the robot 100. For example, the robot 100 may include one or more drive wheels 106 drivable by at least one motor (not visible in FIG. 1). In some embodiments, two or more drive wheels 106 may be independently driven to move the mobile robot 100 forward, backward, turn, etc. In some embodiments, the robot 100 may be turned by a steering mechanism (e.g., swiveling wheels). In some cases, one or more non-drive wheels 108 may support the robot 100. A variety of other suitable drive systems may be used, such as crawler or leg-type.
[0025] The robot 100 may include an environmental sensor 112 that can be used to sense or measure the environment around the robot 100. The environmental sensor 112 may be, for example, a lidar system. The environmental sensor 112 may include at least one laser capable of emitting laser pulses over a range of angles. The environmental sensor 112 may include a photodetector capable of receiving light from the laser pulses reflected by the environment (e.g., objects) around the robot 100. The received light may be used to determine the position of objects around the robot 100. For example, the direction of emission of the laser pulse and / or the direction of the received light can indicate the direction of the object. The timing (time difference) of the emission of the laser pulse and / or the reception of the light (e.g., the time-of-flight of the light) can indicate the distance from the robot to the object. The housing 102 of the robot 100 may include an opening 114, such as a generally horizontal slit, that allows light (e.g., over a range of angles) to enter and exit the environmental sensor 112 of the robot 100. Various other types of environmental sensors 112 may also be used, such as cameras, video analytics systems that analyze footage from cameras mounted on the robot 100 to recognize objects and other environmental features, sonar systems, and / or thermal sensors.
[0026] The system may include a controller 116 that can operate various functions of the robot 100. For example, the controller 116 can interpret information from the environmental sensors 112 to recognize objects, determine distance to or location of objects, operate the drive system 104, perform navigation and / or collision avoidance operations, communicate with a robot management system, or perform various other features and functions of the robot 100. Various functions of the robot 100 disclosed herein may be implemented by the controller 116, even if not specifically mentioned.
[0027] The robot 100 may include at least one processor 118. The processor 118 may be a hardware processor. The processor 118 may include circuitry configured to perform operations to achieve the various functions and features described herein. In some embodiments, the robot 100 may include multiple processors 118, with different tasks being performed by different processors 118. The robot 100 may include memory 120. The memory 120 may be computer-readable memory (e.g., non-transitory computer-readable memory). The memory 120 may include RAM, ROM, non-volatile memory, flash memory, a hard disk, or any other suitable type of memory. In some embodiments, the robot 100 may include multiple memory components. The multiple memory components may store different types of information or instructions for different functions or features. The memory 120 may store instructions executable by the at least one processor 118 to operate the controller 116 and / or perform the various functions and features disclosed herein. In some embodiments, these functions and / or features may be realized by an integrated circuit or other dedicated processor specially configured to perform the functions and features disclosed herein. The controller 116 may, in some cases, include multiple control modules. Different control modules (e.g., different processors 118 and / or different software instruction sets) may perform different tasks or functions.
[0028] The robot 100 may include a communication interface 122 that can be used to transmit information from the robot 100 and / or receive information from a robot management system or other external device. The communication interface 122 may be wireless and may use Wi-Fi, Bluetooth, or other suitable wireless communication protocols. In some embodiments, the communication interface 122 may have a wired connection. For example, the communication interface 122 may include a port or plug. The port or plug may be configured to connect to a corresponding plug or port coupled to an external device, depending on the circumstances, to enable communication between the communication interface 122 and the external device. A USB port, for example, may be used as the port or plug, although various types of ports or other wired connections may also be used. In some cases, a user may couple a laptop, smartphone, or other computing device to the robot 100 via the communication interface to adjust parameters of the robot 100, diagnose problems with the robot 100, update functions of the robot 100, etc.
[0029] The robot 100 may include a user interface 124 that can be used to receive input from a user and / or provide output (e.g., information) to a user. The user interface 124 may include one or more buttons 126, switches, dials, or other user input elements, a touchscreen, a display, one or more lights, a speaker, a microphone, etc. In some cases, the user may provide input to adjust parameters of the robot 100.
[0030] The robot 100 may include a power source 128. The power source 128 may be a battery. The battery may be rechargeable, and the robot 100 may be configured to dock with a recharging station (e.g., via an electrical interface) that accommodates the battery. The power source 128 may provide power to operate the drive system 104 (e.g., one or more electric motors), various sensors, controllers, and other systems disclosed herein. The power source 128 may provide DC or AC power. Any suitable type of power source 128 may be used.
[0031] The robot 100 may include a navigation system 130. The navigation system 130 may be used to perform path planning for the robot 100. The navigation system 130 may receive a destination point and / or one or more waypoints, such as from the user interface 124 or the communication interface 122. The navigation system 130 may receive environmental information (e.g., the location of an object) from the environmental sensors 112 and use the information to determine trajectory information for navigating the robot 100 (e.g., toward the destination point). The trajectory information may include a path or route from the robot's current position to a target location (e.g., a task location or other destination or waypoint). In some cases, the navigation system 130 may determine intermediate waypoints based on the environmental information. In some embodiments, the navigation system 130 may modify the trajectory information while the robot 100 is moving. For example, if an object moves or if a new object is detected (e.g., by the environmental sensors 112), the navigation system 130 may determine a change in the path or route of the robot 100.
[0032] FIG. 3 is a schematic diagram of a mobile robot management system 200. The mobile robot management system 200 can manage a fleet of mobile robots 100. Although three mobile robots 100 are shown in FIG. 3, any suitable number of robots 100 can be managed by the system 200, such as two, four, eight, twelve, twenty, thirty, forty, fifty, or more, or any value or range between these numbers. The robot management system 200 can manage multiple robots 100 in a factory, office, hospital, retail store, warehouse, or other suitable facility where robots 100 have tasks to perform in various locations. The robot management system 200 can include or use many of the features and / or functions disclosed in the '586 patent. The robot management system 200 can include a controller 216. The controller 216 can operate various aspects of the robot management system 200 as described herein. For example, the controller 216 can manage tasks, such as by receiving, generating, and / or assigning tasks. The controller 216 may manage the database 230, as described herein. Various functions of the robot management system 200 disclosed herein may be implemented by the controller 216, even if the controller 216 is not specifically described.
[0033] The robot management system 200 may include at least one processor 218. The processor 218 may be a hardware processor. The processor 218 may include circuitry configured to perform operations to achieve the various functions and features described herein. In some embodiments, the robot management system 200 may include multiple processors 218, and different tasks may be performed by different processors 218. The robot management system 200 may include memory 220. The memory 220 may be computer-readable memory (e.g., non-transitory computer-readable memory). The memory 220 may include RAM, ROM, non-volatile memory, flash memory, a hard disk, or any other suitable type of memory. In some embodiments, the robot management system 200 may include multiple memory components. The multiple memory components may store different types of information or instructions for different functions or features. The memory 220 may store instructions executable by the at least one processor 218 to implement the controller 216 and / or perform various functions and features of the management system 200. In some embodiments, the functions and / or features of the robotic management system 200 may be implemented by integrated circuits or other dedicated processors specially configured to perform the functions and features disclosed herein. In some cases, the controller 216 may include multiple control modules. Different tasks or functions may be performed by different control modules (e.g., different processors 218 and / or different software instruction sets).
[0034] The robot management system 200 may include a communication interface 222. The communication interface 222 can be used to send information from the robot management system 200 to the robot 100 and / or other systems or devices. The communication interface 222 can receive information from the robot 100 and / or other systems or devices. The communication interface 222 may be a wireless communication interface and may use WiFi, Bluetooth, or any other suitable wireless communication protocol. In some embodiments, the communication interface 222 may have a wired connection. For example, the communication interface 222 may include a port or plug. The port or plug may be configured to connect to a corresponding plug or port coupled to an external device, depending on the circumstances, to enable communication between the communication interface 222 and the external device. For example, a USB port may be used as the port or plug, although various types of ports or other wired connections may also be used. In some cases, a user may couple a laptop, smartphone, or other computing device to the robot management system 200 via the communication interface to adjust parameters 234 of the robot management system 200, diagnose or troubleshoot problems, update functionality of the robot management system 200, etc. The robot management system 200 may communicate with the robot 100 and / or other systems or devices via a network 226. The network 226 may be a wireless network, such as a WiFi network. The network 226 may be a shared network that can communicate other types of information in addition to information related to managing a fleet of robots 100. In some embodiments, the network 226 may be a dedicated network that can be used exclusively to operate a fleet of robots.
[0035] The robot management system 200 can communicate with external systems or devices, such as user devices 300, via a network 226 or in any other suitable manner. The user devices 300 may be user terminals or other computing devices at work stations or other locations within a facility that uses a fleet of robots. For example, the user devices 300 may be computers at factory work stations, office work stations, nurse work stations, hospital rooms, point-of-sale stations, administrator desks or offices, etc. The user devices 300 may also be portable user devices, such as smartphones or tablet computers. The user devices 300 may send tasks to the robot management system 200 to be assigned to the robot 100. In some cases, multiple user devices 300 may be used. One or more of the user devices 300 may be located in the environment where the mobile robot 100 resides, or may be located remotely from the environment where the mobile robot 100 resides (e.g., communicating via the Internet or other wide area network).
[0036] The robotic management system 200 may include a user interface 224 that can be used to receive input from a user and / or provide output (e.g., information) to a user. The user interface 224 may include one or more buttons, switches, dials, or other user input elements, a keyboard, a touchscreen, a display, one or more lights, speakers, a microphone, etc. In some cases, a user can provide input to adjust parameters of the robotic management system 200 via the user interface 224 or via a user device 300.
[0037] The robotic management system 200 may include a power source 228. The power source 228 may be a wired power connection (e.g., configured to plug into an outlet, etc.). In some cases, a battery (e.g., rechargeable) may be used. The power source 228 may provide power for operating the robotic management system 200 as disclosed herein. The power source 228 may provide DC or AC power. Any suitable type of power source 228 may be used.
[0038] FIG. 4 illustrates an example in which four robots R1, R2, R3, and R4 exist in a portion of an environment. The environment includes a forbidden area (no-entry area). The forbidden area may be a wall, a ditch, an object, or other boundary that the robots are not allowed to pass through or enter. A task may have a goal or location in G1. If the robot management system 200 were to assign a task to an available robot near the G1 location, the task would be assigned to robot R2. However, robot R2 cannot navigate (proceed) directly to the G1 location because of the forbidden area. Instead, robot R2 must follow path 402, bypass the forbidden area, and then retrace its steps around the opposite side of the forbidden area to reach the G1 location. In this situation, the actual path length from robot R2 to task location G1 is several times longer than the initial distance between robot R2 and task location G1. Instead of using Euclidean distance, the robot management system 200 may compare the actual path lengths from the locations of the available robots R1, R2, R3, and R4 to task location G1. This information may be stored in memory 220, such as database 230. The robot management system 200 may instead assign the task to robot R1 that can move to task position G1 along path 404 that has the shortest path length to task position G1 (even though robots R2 and R3 are closer to the task position in Euclidean distance, for example).
[0039] FIG. 5 illustrates an example of a one-way area. The portion of the environment shown in FIG. 5 includes four robots: R1, R2, R3, and R4. The one-way area has an entrance (e.g., the left side in FIG. 5 ) and an exit (e.g., the right side in FIG. 5 ) because two opposing sides of the one-way area are surrounded by prohibited areas. A task may have a goal or location in G2. If the robot management system 200 assigns the task to an available robot close to the G2 location, the task will be assigned to robot R4. However, robot R4 cannot navigate directly to the G2 location because of the one-way area. Robot R4 is not permitted to enter the one-way area from the exit side. Instead, robot R4 must follow path 406, circle around to the entrance of the one-way area, and then navigate the one-way area to task location G2. In this situation, the actual path length from robot R4 to task location G2 is significantly longer than the initial distance between robot R4 and task location G2. The robot management system 200 may compare the actual path lengths from the locations of the available robots R1, R2, R3, and R4 to the task location G2. This information may be stored in memory 220, such as in database 230. The robot management system 200 may assign the task of Figure 5 to robot R2, which in the example of Figure 5 is generally located near the entrance to the one-way area.
[0040] FIG. 6 is a flowchart of an example method 500 for assigning tasks to robots. The method 500 may be performed by the mobile robot management system 200. In block 502, the system 200 may receive path length information from the robot(s) 100. As the robot 100 navigates through an environment, the robot 100 may transmit the path length to the robot management system 200. The robot 100 may determine the path length using the navigation system 130 on each robot 100, such as when driving to a location for a task assigned by the management system and / or when moving to other locations, such as a charging dock, repair station, etc. The path length information may include a start location, an end location, and a path length. In block 504, the system 200 may input (write) the path length information to a database. As the robot 100 performs more pathfinding in an environment, more path length information may accumulate in the database, allowing the system 200 to better select a robot with the shortest path length to a task location.
[0041] In block 506, the system 200 may identify a task location. The system 200 may receive a task from an external system or device, or the system 200 may determine the task or location based on other information (e.g., project information). In block 508, the system 200 may identify a robot location. In some cases, the system 200 may identify only available robots to which the task can be assigned (e.g., robots that are not already busy performing another task). The system may obtain location information for some busy robots or for all robots, and in some cases, the system may interrupt the task or reassign the robot to another task (e.g., based on task priority or robot expertise). In some cases, the system 200 may query the robot to determine its current location in block 508. In some cases, the system 200 may store the robot's current location (e.g., in memory 220, such as database 230). As the robot moves to a new location, it may send updates to management system 200, informing the management system of the robot's new location. In some cases, as the robot moves between locations, it may send periodic updates of its location to system 200, allowing the system to evaluate whether to interrupt its current travel path with the assignment of a new task. In some embodiments, system 200 may determine the robot's location without real-time communication with the robot (block 508), for example, because location information has been sent previously.
[0042] In block 510, system 200 may access the database to obtain the path length from the robot position to the task position. In some cases, system 200 may compare each available robot position to multiple start positions in the path length information in the database and use the closest start position (e.g., within a threshold distance) as the robot's position. System 200 may compare the task position to multiple end positions in the path length information in the database and use the closest end position (e.g., within a threshold distance) as the task position. The threshold(s) may be parameter 234. Parameter 234 may be stored in memory 220 and, in some cases, may be user-adjustable (e.g., using user interface 224). As an example, the database may not store path length values corresponding to a path from the robot's exact position to the exact position of an assigned task, but the database may store path length values corresponding to a path that starts 0.2 meters away from the robot's current position and ends 0.1 meters away from the current task position. In this case, if both thresholds were set to 0.25 meters, the system would use the path length in the database in its analysis to assign tasks. In some embodiments, the task location may be preset, in which case the task location threshold distance is not used because the task location is accurate.
[0043] In block 512, the system 200 may assign a task to one robot based at least in part on the path length from the robot location to the task location. For example, the system 200 may assign the task to the available robot with the shortest path length to the task location. In some cases, other criteria may also be used, such as the state or level of charge, the current robot status, the amount of time the robot has been idle, the history of past tasks and / or idle time, the robot's maintenance history, and the robot's suitability for the task. In some cases, the system may determine a score value for each robot for a given task and, as an example, assign the task to the robot with the highest score value. In this example, a shorter path length to the task location may result in a higher score value, while other criteria (e.g., a low battery level) may result in a lower score value. Thus, in some cases, the system may assign the task to a robot that does not have the shortest path length to the task location. For example, even if the second robot's path length to the task location is slightly longer than that of the first robot, the task may be assigned to the second robot if the second robot's battery has a higher state of charge, if the first robot has performed significantly more tasks than the second robot in the recent period, or if the second robot has a higher weight-carrying capacity.
[0044] FIG. 7 illustrates an example of an environment divided into multiple sections, such as using a grid. The areas in FIG. 7 may have nine areas along a first dimension (e.g., shown as the X-axis) and seven areas along a second dimension (e.g., shown as the Y-axis), although any suitable area size and any suitable number of areas and grid size may be used. The grid size and / or number of areas may be parameters 234. The parameters 234 may be stored in memory 220 and, in some cases, may be user adjustable (e.g., using user interface 224). In the example of FIG. 7, the goal or task position G1 is located at (X3, Y3). The four robots may be positioned in the grid as follows: robot R1 at (X7, Y1), robot R2 at (X2, Y5), robot R3 at (X5, Y6), and robot R4 at (X8, Y7). The robots need not be located at the center of their respective areas. In some cases, the center positions of the robots or other predetermined positions on the robots may be used to determine the areas to use as robot positions. In some cases, the system may treat the robot the same no matter where it is located within a grid cell.
[0045] FIG. 8 shows an excerpt from a database of path lengths from various locations to a destination point at (X3, Y3). The database may have similar information for various other destination points. In some embodiments, database 230 may include a three-dimensional array, although any suitable data structure may be used, such as one or more lookup tables, one or more lists (e.g., unordered lists), or one or more arrays. Location (X3, Y3) is a destination point, so its path cost may be zero. Some locations, such as (X1-X6, Y4), may have no value because they are within a prohibited area. System 200 may be configured to consider a database complete or sufficient even if there are no path length or path cost values for locations inside a prohibited area.
[0046] As shown in FIG. 8, many grid locations have a path cost or path length. The path cost or path length is stored at or associated with the grid location. However, in this example, the cells (X1-X4,Y6) and (X1-X9,Y7) do not have a path length / path cost value. This is likely because the robot has not yet performed a path planning navigation from these locations to the destination point (X3,Y3). If one of the robots performs a path planning from one of these locations to the destination point (X3,Y3), the database can be updated to include that information. For example, robot R4 is located at (X8,Y7). This location does not yet have a path length value to the destination point (X3,Y3). If robot R4 performs a navigation operation to find a path from (X8,Y7) to (X3,Y3), that value can be added to the database. If robot R4 determines that distance to be, for example, a path distance of 80 units, robot R4 may transmit that value (e.g., along with the start and end points) to system 200. System 200 may update the database by adding "Cost: 80" to cell (X8, Y7) in FIG. 8.
[0047] The robot may be configured to send path length information to the system 200 each time it performs a path planning. The system 200 may be configured to ignore duplicate information. For example, when the system 200 receives path planning information between two locations, the system 200 may check whether the database already has path length information corresponding to the path between the two locations. If the database already has data for that path length, the new value may be ignored, or in some cases, the new value may overwrite the old value. For example, the system may determine whether a new start location is within a threshold distance of the start location of a path length currently registered in the database for the same task location (or a task location within a threshold distance from the end location of the path in the database). If the location(s) are within the threshold(s), the system 200 may ignore the new path length information. In some cases, the new value may be compared to the previous value. If these values are within a threshold amount of each other, the system may retain either value (or its average value or some other combination of the two values). If these values differ by more than a threshold amount, the system may flag this as an indicator that something in the environment has changed, and may take action as described herein. The threshold amount for comparing the values may be a parameter 234. The parameter 234 may be stored in memory 220 and may in some cases be user adjustable (e.g., using user interface 224).
[0048] If the database is not sufficiently populated with path length information, the system may use Euclidean distance to assign tasks. FIG. 9 shows a flowchart of an example method 600 for assigning tasks to robots. Method 600 may be similar to method 500 of FIG. 6, except as described below. In block 602, a task location is identified. Referring to the examples of FIGS. 7 and 8, the task location may be (X3, Y3). In block 604, the robot location may be identified. In block 606, the path length from the robot location to the task location is determined (e.g., from a database). For some robots (e.g., robot R4), path length values may not exist in the database, while for other robots (e.g., robots R1, R2, R3), path length values exist in the database. In block 608, system 200 may, for example, evaluate the number or percentage of available robots with known path lengths to the task location compared to the number or percentage of available robots with unknown path lengths to the task location.
[0049] If the number or percentage of robots with known path lengths is above a threshold, the method proceeds to block 610, where the system may assign tasks based at least in part on the path length(s). At block 610, the system may disqualify (not assign) robots with unknown path length values (e.g., robot R4). In some cases, the system 200 may cause one or more robots (e.g., robot R4) at locations with unknown path lengths to the task location to perform navigation operations to determine the path length from those robots to the task location. This allows for the database to be built and made more complete for subsequent tasks. If the number or percentage of robots with known path lengths is below a threshold, the method proceeds to block 612, where the system may assign tasks based at least in part on Euclidean distance (e.g., direct proximity value). At block 612, path length values from the database may be ignored. The threshold amount at block 608 may be parameter 234. The parameters 234 may be stored in memory 220 and, in some cases, may be user adjustable (e.g., using the user interface 224). Referring to the example of Figures 7 and 8, if the threshold amount was set to 60%, then 75% of the available robots would have a known path length to the task location of (X3, Y3), and the system 200 would proceed to block 610.
[0050] In some embodiments, the system 200 may task an idle robot with performing a navigation operation for a path for which a path length value does not yet exist in the database 630. For example, in the example of FIGS. 7 and 8, the system 200 may assign this task to robot R1. The system may task one or more of the other available robots R2, R3, and R4 with performing a navigation operation from locations (X1-X4, Y6) and (X1-X9, Y7) to the task location of (X3, Y3). The system may task an idle mobile robot with performing path planning from a location other than the mobile robot's location. In some cases, the system may instruct an idle mobile robot to perform path planning from the mobile robot's current location. The mobile robot may perform path planning to build the database while the mobile robot is charging or while performing another task (e.g., if that task leaves excess power available for the path planning operation). When the robot 100 is in an idle state, the robot 100 may send a notification to the management system 200 that a supplemental path search is available. The system 200 may respond by providing a start and end location for which no path length values currently exist in the database 230. The robot 100 may then perform a navigation maneuver, determine a path length, and report the path length to the management system 200. The management system 200 may update the database 230 with the additional path length information. This process may be repeated while the robot is idle.
[0051] In some embodiments, the mobile robot may send path length information to the system 200 about intermediate locations along the path between the robot's start location and the task location. This feature allows for faster database construction. In some cases, values for intermediate locations along the path may be allowed as initial values, but as the robot performs dedicated navigation maneuvers relative to its start location, the initial values may be overwritten with new values. This allows for the database to be up and running quickly, while also allowing the database to mature as additional pathfinding is performed.
[0052] In some embodiments, the mobile robot management system 200 may manage multiple sub-fleets of robots. For example, an environment may be divided into multiple sub-areas. Robots in a first sub-fleet may operate in a first sub-area, robots in a second sub-fleet may operate in a second sub-area, and so on. The system 200 assigns robots in one sub-area tasks only for that sub-area, and robots in another sub-area tasks only for that other sub-area.
[0053] In some embodiments, changes in the environment may change the path lengths between locations. For example, if a new desk or stack of boxes is placed blocking a previously open aisle, the path lengths of paths that used that aisle may change. In some embodiments, system 200 may determine that something in the environment has changed. In some embodiments, system 200 may modify the database in response to the change in the environment.
[0054] 10 shows a flowchart of an example embodiment of a method 700 for determining that an environment has changed. Method 700 may include similar steps as other methods disclosed herein, except as described below. At block 702, system 200 may access a predicted path length, such as from database 230. At block 704, system 200 may assign a task to a robot, such as based at least in part on the predicted path length (e.g., obtained from database 230). Blocks 702 and 704 may use various methods for assigning tasks to a robot, such as those disclosed herein.
[0055] At block 706, the robot may perform navigation operations to find a path from the robot's current location to the task location. The actual path length used by the robot to navigate to the task location may be sent to the system and received by system 200 at block 708. At block 710, the predicted path length (e.g., from a database) may be compared to the actual path length (e.g., from the robot's navigation operations). If the path lengths are within a threshold amount of each other, the method may proceed to block 712. At block 712, it may be determined that the environment has not changed in a manner that affects the robot's path length. On the other hand, if the actual path length (e.g., from the robot's navigation operations) differs from the predicted path length (e.g., from the database) by more than a threshold amount, the method may proceed to block 714. At block 714, it may be determined that the environment has changed in a manner that affects the path length from the robot to the task location. In some embodiments, the system 200 may be notified of the change in the environment by user input or another system or device.
[0056] System 200 can respond to changes in the environment in various ways. In some embodiments, system 200 may reassign tasks or reevaluate the assignment of tasks assigned in block 704 when a change is determined in block 712. In some embodiments, system 200 may allow the robot that was assigned a task in block 706 to continue to retain the task. In some embodiments, the system may allow the robot originally assigned the task to retain the task if the difference between the predicted path length and the actual path length is less than another threshold. On the other hand, if the difference between the predicted path length and the actual path length exceeds the threshold, the system may reevaluate the assignment of tasks. The threshold may be parameter 234. Parameter 234 may be stored in memory 220 and, in some cases, may be user-adjustable (e.g., using user interface 224).
[0057] In some embodiments, the system may replace the database values with the new path length determined by the robot in block 706. Thus, system 200 may be configured to update the database on-the-fly as the robot performs navigation maneuvers. If the environment changes and changes the path length from a start location to an end location, that same change is likely to change the path lengths of other similar paths. System 200 may be configured to erase database values corresponding to a zone around the start location and / or a zone around the end location in response to determining that the environment has changed. The system may then rebuild the erased portions of the database as described herein. The size and / or shape of the zones may be parameters 234. Parameters 234 may be stored in memory 220 and, in some cases, may be user-adjustable (e.g., using user interface 224). In some cases, it may be difficult to determine which portions of the database are affected by a change in the environment. In some embodiments, a change in the environment may trigger system 200 to erase the entire database and start over. In some cases, the system may continue to use the existing database while concurrently preparing a new database that takes into account the changed environment. Once the new database reaches a threshold level of completeness, the system may transition from the previous database to the new database. This allows the system to update the database with reduced disruption while the new database is being prepared. The threshold may be a parameter 234. The parameter 234 may be stored in memory 220 and, in some cases, may be user adjustable (e.g., using user interface 224).
[0058] In some embodiments, the memory can store information about the time associated with completing a task. The system 200 can also store information about the robot's speed or travel time corresponding to various distances. The system 200 can use this information to sequentially assign multiple tasks to a single robot 100. FIG. 11 shows an example environment including two robots (R1, R2) and two tasks (G1, G2). The system 200 may assign task G1 to robot R1 because the path length from R1 to G1 is shorter than the path length from R2 to G1. In some cases, the system 200 may assign a second task G2 to robot R2 because R1 is currently busy performing a task. However, in some examples, if the time it takes for R2 to reach G2 is longer than the time it takes for R1 to travel to G1, perform a first task, and then travel to G2, the system may assign task G2 to R1 instead of R2.
[0059] In some cases, tasks may be assigned or performed in an order different from the order in which they were received or generated. In the example of FIG. 11 , if robot R1 is assigned to perform task G1 and then task G2, and another task G3 (shown in dashed lines) is received or generated near robot R2, system 200 may immediately assign task G3 to robot R2. In this example, robot R2 may perform the third task G3 before robot R1 performs the second task R2. In some cases, system 200 may withhold the assignment of the second task G2 and assign the second task G2 after assigning the third task to robot R2.
[0060] (Additional Information) In some embodiments, the methods, techniques, microprocessors, and / or controllers described herein are implemented by one or more specially designed computing devices. The specially designed computing devices may be hardwired to execute the techniques or may comprise digital electronic devices, such as one or more application-specific integrated circuits (ASICs) or field-programmable gate arrays (FPGAs), persistently programmed to execute the techniques. Alternatively, the specially designed computing devices may comprise one or more general-purpose hardware processors programmed to execute the techniques according to program instructions in firmware, memory, other storage, or a combination thereof. The instructions may be stored in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, a hard disk, a removable disk, a CD-ROM, or any other form of non-transitory computer-readable storage medium. Such specially designed computing devices may combine custom hardwired logic, ASICs, or FPGAs with custom programming to achieve the techniques. The specially designed computing devices may be desktop computer systems, server computer systems, portable computer systems, handheld devices, network devices, or other devices or combinations of devices incorporating hardwired and / or program logic to implement the techniques.
[0061] The microprocessors or controllers described herein may be coordinated by operating system software, such as iOS, Android, Chrome OS, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, Windows Server, Windows CE, Unix, Linux, SunOS, Solaris, iOS, Blackberry OS, VxWorks, or other compatible operating systems. In other embodiments, the computing device may be controlled by its own operating system. Traditional operating systems provide a variety of functions, such as controlling and scheduling computer processes, providing memory management, file system, networking, I / O services, and providing user interface functionality, such as a graphical user interface ("GUI"), for executing computer processes.
[0062] The microprocessors and / or controllers described herein may implement the techniques described herein using customized hardwired logic, one or more ASICs or FPGAs, firmware, and / or program logic that custom-tailor the microprocessor and / or controller. According to some embodiments, portions of the techniques disclosed herein are performed by the controller in response to execution of one or more sequential instructions contained in a memory. Such instructions may be loaded into the memory from another storage medium, such as a memory device. Execution of the sequences of instructions contained in the memory causes the processor or controller to perform the process steps described herein. In alternative embodiments, hardwired circuitry may be used in place of or in combination with software instructions.
[0063] Furthermore, the various illustrative logic blocks and modules described in connection with the embodiments disclosed herein may be implemented or executed by a machine designed to perform the functions described herein, such as a processor device, a digital signal processor (DSP), an application-specific integrated circuit (ASIC), a field-programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or a combination thereof. The processor device may be a microprocessor, but alternatively, the processor device may be a controller, microcontroller, or state machine, combinations thereof, etc. The processor device may comprise electrical circuitry configured to process computer-executable instructions. In another embodiment, the processor device comprises an FPGA or other programmable device that performs logical operations without processing computer-executable instructions. The processor device may be implemented as a combination of computing devices, such as a combination of a DSP and a microprocessor, multiple microprocessors, one or more microprocessors in combination with a DSP core, or any other such configuration. While described herein primarily with respect to digital technology, a processor unit may comprise primarily analog components. For example, some or all of the technology described herein may be implemented with analog circuitry or mixed analog and digital circuitry.
[0064] Unless the context clearly requires otherwise, throughout this specification and claims, terms such as "comprises," "includes," "includes," and the like are intended to be inclusive, rather than exclusive or exhaustive, meaning "including, but not limited to." Additionally, the terms "coupled" or "connected," as generally used herein, refer to two or more elements, either directly connected or connected via one or more intermediate elements. Furthermore, the terms "herein," "above," "below," and similar terms, when used in this application, refer to this application as a whole, not to specific portions of this application. Where the context permits, words using singular or plural numbers herein can also include the respective plural or singular numbers. The word "or" in reference to a list containing two or more items is intended to encompass any item in the list, all items in the list, and any combination of items in the list. All numerical values provided herein are intended to encompass similar values within the limits of measurement error.
[0065] While the present disclosure includes specific embodiments and examples, those skilled in the art will understand that the scope of the present disclosure extends beyond the specifically disclosed embodiments to other alternative embodiments and / or applications, as well as obvious modifications and equivalents thereof. Moreover, while several variations of the embodiments have been shown and described in detail, other modifications will be readily apparent to those skilled in the art based on this disclosure. It is also intended that various combinations or subcombinations of specific features and aspects of the embodiments be made and still fall within the scope of the present disclosure. It should also be understood that various features and aspects of the disclosed embodiments can be combined with or substituted for one another to form embodiments of various aspects. Any methods disclosed herein need not be performed in the order described. Therefore, it is not intended that the scope of the present disclosure be limited to the specific embodiments described above.
[0066] Conditional expressions such as "can," "could," "might," or "may," unless otherwise specified or understood otherwise by the context in which they are used, are generally intended to indicate that certain features, elements, and / or steps are included in one embodiment, but may not be included in other embodiments. Thus, such conditional expressions are generally not intended to imply that the features, elements, and / or steps are in any way required by one or more embodiments, or that one or more embodiments necessarily include logic for determining whether those features, elements, and / or steps are included or performed in a particular embodiment, with or without user input or prompting. Headings used herein are for the convenience of the reader and are not intended to limit the scope.
[0067] Furthermore, the devices, systems, and methods described herein are susceptible to various modifications and alternative forms, specific examples of which are shown in the drawings and described in detail herein. However, it should be understood that the disclosure is not limited to the particular forms or methods disclosed, but rather includes all modifications, equivalents, and alternatives falling within the spirit and scope of the various embodiments described. Furthermore, disclosure herein of particular features, aspects, methods, properties, qualities, attributes, elements, etc., associated with an example or embodiment can be used in all other examples or embodiments disclosed herein. The methods disclosed herein need not be performed in the order described. While the methods disclosed herein may include specific acts performed by a practitioner, these methods may also include, explicitly or implicitly, the direction of those acts by a third party.
[0068] Ranges disclosed herein also encompass all overlaps, subranges, and combinations thereof. Phrases such as "up to," "at least," "greater than," "less than," and "between" may include the stated numerical value. Numerical values preceded by terms such as "about" or "approximately" are inclusive of the stated numerical value and should be interpreted accordingly (e.g., as precisely as reasonably possible under the circumstances, e.g., ±5%, ±10%, ±15%, etc.). For example, "about 3.5 mm" includes "3.5 mm." Phrases preceded by terms such as "substantially" are inclusive of the stated phrase and should be interpreted accordingly (e.g., as precisely as reasonably possible under the circumstances). For example, "substantially constant" includes "constant." Unless otherwise specified, all measurements are conducted under standard conditions, including ambient temperature and pressure.
Claims
1. 1. A system for managing a mobile robot fleet, comprising: a communications module configured to communicate with a fleet of mobile robots in an environment; a processor; a computer-readable memory in communication with the processor; the memory is configured to store a database of path length information; The memory stores instructions executable by the processor, the instructions providing the system with: receiving path length information from the mobile robot as the mobile robot navigates the environment; storing the received path length information in said database; Identify the location of the task determining the locations of a plurality of said mobile robots; retrieving from the database path length values corresponding to paths from the plurality of mobile robots to the location of the task; a mobile robot fleet management system configured to cause the task to be assigned to one of the plurality of mobile robots based at least in part on the path length value.
2. The mobile robot fleet management system of claim 1 , wherein the instructions are configured to cause the system to receive location information from the mobile robot and store the location information in the database.
3. The instructions may include: receiving a path length value from a position of a first robot to a position of the task; 2. The mobile robot fleet management system of claim 1, configured to determine whether the database already has a previous value corresponding to a path length from a location of the first robot to a location of the task, and to ignore the received path length value if the database already has the previous value.
4. The instructions may include: obtaining from the database a path length value corresponding to a path from a first group of the plurality of mobile robots to a location of the task; identifying a second group of the plurality of mobile robots whose path length values to the task location are not present in the database; determining whether the number of robots in the first group meets a threshold; assigning the task to a robot of the first group of the plurality of mobile robots selected based at least in part on the path length value if the number of robots in the first group meets the threshold; 10. The mobile robot fleet management system of claim 1, configured to cause the task to be assigned to one robot based at least in part on the robot's proximity to a location of the task if the number of robots in the first group does not meet the threshold.
5. The instructions may include: receiving an actual path length value from the one assigned mobile robot corresponding to the actual path of the one assigned mobile robot to the task location; comparing the actual path length value with a predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount; The mobile robot fleet management system of claim 1 , configured to cause the database to be modified if the difference between the actual path length value and the predicted path length value exceeds the threshold amount.
6. 6. The mobile robot fleet management system of claim 5, wherein the instructions are configured to cause the system to replace the predicted path length value in the database with the actual path length value.
7. 6. The mobile robot fleet management system of claim 5, wherein the instructions are configured to cause the system to erase entries in the database corresponding to a zone containing the location of the assigned one robot.
8. The mobile robot fleet management system of claim 5 , wherein the instructions are configured to cause the system to create a new database of path length values.
9. The instructions may include: instructing a mobile robot to perform a route search for a route that has not been traveled by the mobile robot; 10. The mobile robot fleet management system of claim 1, configured to receive path length information of the route from the one mobile robot and store the received path length information in the database.
10. 1. A system for managing a mobile robot fleet, comprising: a communications module configured to communicate with a fleet of mobile robots in an environment; a processor; a computer-readable memory in communication with the processor; the memory is configured to store a database of path length information; The memory stores instructions executable by the processor, the instructions providing the system with: Identify the location of the task determining the locations of a plurality of said mobile robots; obtaining from the database a path length value corresponding to a path from a first group of the plurality of mobile robots to a location of the task; identifying a second group of the plurality of mobile robots whose path length values to the task location are not present in the database; determining whether the number of robots in the first group meets a threshold; assigning the task to a robot of the first group of the plurality of mobile robots selected based at least in part on the path length value if the number of robots in the first group meets the threshold; if the number of robots in the first group does not meet the threshold, cause the task to be assigned to a robot selected based at least in part on the robot's proximity to a location of the task.
11. The instructions may include: receiving path length information from the mobile robot as the mobile robot navigates the environment; The mobile robot fleet management system of claim 10 , configured to cause received path length information to be stored in the database.
12. 11. The mobile robot fleet management system of claim 10, wherein the instructions are configured to cause the system to receive location information from the mobile robot and store the location information in the database.
13. The instructions may include: receiving an actual path length value corresponding to an actual path from the selected robot to a location of the assigned mobile robot for the task; comparing the actual path length value with a predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount; The mobile robot fleet management system of claim 10 , configured to cause the database to be modified if the difference between the actual path length value and the predicted path length value exceeds the threshold amount.
14. 14. The mobile robot fleet management system of claim 13, wherein the instructions are configured to cause the system to replace the predicted path length value in the database with the actual path length value.
15. 14. The mobile robot fleet management system of claim 13, wherein the instructions are configured to cause the system to erase a plurality of entries in the database corresponding to a zone containing the location of the selected mobile robot.
16. The mobile robot fleet management system of claim 13 , wherein the instructions are configured to cause the system to create a new database of path length values.
17. The instructions may include: instructing a mobile robot to perform a route search for a route that has not been traveled by the mobile robot; 11. The mobile robot fleet management system of claim 10, configured to receive path length information for the route from the one mobile robot and store the received path length information in the database.
18. 1. A system for managing a mobile robot fleet, comprising: a communications module configured to communicate with a fleet of mobile robots in an environment; a processor; a computer-readable memory in communication with the processor; the memory is configured to store a database of path length information; The memory stores instructions executable by the processor, the instructions providing the system with: obtaining from the database a predicted path length value for one mobile robot to travel to a task location; receiving an actual path length value from the one mobile robot corresponding to an actual path of the one mobile robot to a location of the task; comparing the actual path length value with the predicted path length value from the database to determine whether a difference between the actual path length value and the predicted path length value exceeds a threshold amount; a mobile robot fleet management system configured to cause the database to be modified if a difference between the actual path length value and the predicted path length value exceeds the threshold amount;
19. 20. The mobile robot fleet management system of claim 18, wherein the instructions are configured to cause the system to replace the predicted path length value in the database with the actual path length value.
20. 20. The mobile robot fleet management system of claim 18, wherein the instructions are configured to cause the system to erase entries in the database corresponding to a zone containing the location of the one mobile robot.
21. 20. The mobile robot fleet management system of claim 18, wherein the instructions are configured to cause the system to create a new database of path length values.
Citation Information
Patent Citations
Moving body allocating method
JP1998020935A
Mobile body controller
JP2020004342A
Delivery system having a robotic vehicle with a temperature and humidity controlled compartment
JP2021532480A
Travelling parameter optimization system and travelling parameter optimization method
JP2022045453A