Integrating multi lift with RMF (#316)

Posted by @Magiccofee:

Hi,

I am looking to use RMF in an environment where there are 3 lifts in the same lift lobby that the robot can utilise. When testing this, the path always seem to be planned to the closest lift.

However, I have a lift controller that determines which lift to dispatch for the task. I want the lift controller to handle the lift assignments instead of RMF.

Currently I have three lifts in the building yaml as shown in the picture below.

Is there a way for RMF to make use of this information from the lift controller then command the robot to take the dispatched lift.

Thank you.

Posted by @VigashiniDotworld:

@mxgrey Is there a way for this in RMF can you suggest?

Posted by @mxgrey:

I’ve been thinking this over, and I’m afraid with the current generation of Open-RMF there’s only one approach I can think of which might work, but it will require you to manually handle a lot of the lift control logic:

  1. In the traffic editor, reduce the 3 lifts down to 1 lift.
  2. Give the Dock property to the point inside the lift.
  3. When the docking command gets called, run your own procedure to request a lift, send the robot into the correct lift when it arrives at the entry floor, and drive the robot out when the lift arrives at the destination floor.
  4. Once the robot is fully out of the lift and ready to continue its task, update its position and then trigger a replan for the robot.

I’m afraid that this will be a considerable amount of logic for you to implement yourself, but I don’t see an alternative without forking the rmf_ros2 source code and rewriting some substantial portions of it.

This problem with the rigidity of the current implementation is a big part of why we’re working towards a service-oriented architecture for the next generation rewrite of Open-RMF. In that architecture, you’d be able to inject your own logic for how lifts are chosen and interacted with, and you’d be able to put that logic together by defining a workflow using building blocks that we provide. Unfortunately this is still at least a few months away from a working prototype being available.

Posted by @VigashiniDotworld:

@mxgrey Thanks for the suggestion will try.