Currently RMF has 2 types of sample workcells, namely: Dispenser and Ingestor.

Message TypesROS2 TopicDescription
rmf_dispenser_msgs/DispenserRequest/dispenser_reqeustsDirect requests subscribed by the dispenser node
rmf_dispenser_msgs/DispenserResult/dispenser_resultsResult of a dispenser request, published by the dispenser
rmf_dispenser_msgs/DispenserState/dispenser_statesState of the dispenser published by the dispenser periodically
rmf_ingestor_msgs/IngestorRequest/ingestor_requestsDirect requests subscribed by the ingestor node
rmf_ingestor_msgs/IngestorResult/ingestor_resultsResult of a ingestor request, published by the ingestor
rmf_ingestor_msgs/IngestorState/ingestor_statesState of the dispenser published by the ingestor periodically

In rmf_demos world, both TeleportDispenser and TeleportIngestor plugins act as workcell adapter nodes.

Workcells currently work alongside with Delivery Task. In fleet_adapter.lauch.xml, perform_deliveries needs to be true for the robot to accept a delivery task.

A Full Delivery:

  1. The robot will first move to the pickup_waypoint
  2. Requests a DispenserRequest till receives a DispenserResult. (Done Dispensing)
  3. Continue delivery and moves to dropoff_waypoint
  4. Requests a IngestorRequest till receives a IngestorResult. (Done Ingesting)