RMF simplifies task allocation and management across multi-fleet systems. When a user submits a new task request, RMF will intelligently assign it to the robot in the fleet that can best perform the task. When
RMF supports three types of task requests out of the box:
- Clean: For robots capable of cleaning floor spaces in facilities
- Delivery: For robots capable of delivering items between locations in facilities
- Loop: For robots capable to navigating back and forth between locations in facilities
Note: A single robot may be capable of performing one of more of the above tasks and fleet adapters can be configured to reflect the capability of its robots. For more information on the supported task types, click here
In RMF version 21.04 and above, tasks are awarded to robot fleets based on the outcome of a bidding process that is orchestrated by a Dispatcher node,
When the Dispatcher receives a new task request from a dashboard or terminal, it sends out a
rmf_task_msgs/BidNotice message to all the fleet adapters. If a fleet adapter is able to process that request, it submits a
rmf_task_msgs/BidProposal message back to the Dispatcher with a cost to accommodate the task. An instance of
rmf_task::agv::TaskPlanner is used by the fleet adapters to determine how best to accommodate the new request. For more information on the task planner, click here
The Dispatcher then compares all the
BidProposals received and submits a
rmf_task_msgs/DispatchRequest message with the fleet name of the robot that the bid is awarded to. There are a couple different ways the Dispatcher evaluates the proposals such as fastest to finish, lowest cost, etc which can be configured.
Battery recharging is tightly integrated with the new task planner.
ChargeBattery tasks are optimally injected into a robot's schedule when the robot has insufficient charge to fulfill a series of tasks. Currently we assume each robot in the map has a dedicated charging location as annotated with the
is_charger option in the traffic editor map.