Posted by @cwrx777:
Hi,
Does RMF support the following scenario?
There is one fleet of robots. This fleet is used for performing deliveries of sterile surgical instruments (clean delivery) from Central Sterile Supply Unit (CSSU) to Operating Theatre (OT) and deliveries of used surgical instruments (dirty delivery) from OT to CSSU.
When a robot is tasked to perform clean delivery, the robot must use ‘clean routes’ and ‘clean lifts’. For dirty delivery, the robot must use ‘dirty routes’ and ‘dirty lifts’. As there is only one fleet, both clean and dirty routes, and clean and dirty lifts will be in the same navgraph.
Ideally, there should be two navgraphs as they are using different routes and lifts.
Chosen answer
Answer chosen by @cwrx777 at 2023-08-02T07:21:18Z.
Answered by @mxgrey:
That’s an interesting use case. Filtering lanes based on the current task is not something that’s currently implemented in RMF, but I can add that to the roadmap for next generation features.
In the meantime, there are a few different ways you might approach this depending on further details.
Multiple “Fleets”
Even if all robots belong to the same fleet in a material and procurement sense, there wouldn’t be anything wrong with assigning them to separate “fleets” within RMF, one “fleet” for dirty deliveries and one “fleet” for clean deliveries. This would work if the physical robots are supposed to be separated between ones that perform clean deliveries and ones that perform dirty deliveries.
This would not work if the robots are supposed to switch between doing clean deliveries and dirty deliveries ad hoc.
Topological Separation
This would be a more difficult solution, but it would work. You would need to create pickup/drop-off waypoints that have one-way lanes going to and from them, where those one-way lanes connect to disjoint nav graphs. Here’s a diagram to illustrate:
It’s completely fine if there is geometric overlap between the lanes and the vertices of the clean/dirty/neutral paths, as long as their graphs are disjoint. For example, pickup_clean
and dropoff_dirty
must be two different waypoints which are both in the CSSU. It is okay for them to perfectly overlap each other in space, but they must be kept as separate vertices in the graph, and pickup_clean
must be used as the pickup point for clean deliveries, while dropoff_dirty
must be used as the dropoff point for dirty deliveries.