Posted by @cwrx777:
HI,
rmf release: iron 20231229
I can’t provide any more detail at this moment, but we encountered a few issues in interactions with lift with multiple robots:
- When a robot was having a lift session and then the task was cancelled, and the lift session didn’t get released. After another task to go to a waypoint that is on the same leve was sent, the robot still received path request to enter lift waypoint. the path requests consisted of less than 4 waypoints, from current position to the lift waypoint even though there are multiple intermediate points, including named ones. I have configured the bulding yaml to use docking to enter and exit lift.
Path request:

-
A robot (
robot-1) currently holding a lift session and waiting at the lift entrance position was ‘forced’ to deconflict by another robot (robot-2) that wanted to go to that position and result in deadlock (ie.robot-1hold the lift, butrobot-2was at lift entrance waiting for the lift to be released byrobot-1). -
A robot entered lift when it’s not having a lift session.
-
When there are two robots on different floors queueing for the same lift, to which robot the lift will be given? is it based on based on the request time? or based on the lift position? we encountered situations whereby a lift is bring down a robot (
robot 1) tolevel 1, androbot 2is alredy waiting for the lift atlevel 1to go tolevel 5androbot 3is waiting for lift atlevel 5. afterrobot 1exit the lift, the lift session is given torobot 3(i.e. the lift went tolevel 5empty when it could’ve broughtrobot 1tolevel 5also). -
is there a chance that robot need to go toother floor to perform deconflict? we encountered that a robot was sent to a floor that is not included in the list of waypoins in a task. in the log below,
door_08_osu58_01is on different floor from robot current floor.
[WardRobot_FlAdpt]: Planning for [WardRobot/WardRobot_101] to [CART_W56_01] from one of these locations:
[WardRobot_FlAdpt]: Ensuring door [door_08_58_01] is open for [WardRobot/WardRobot_101] after a replan
[WardRobot_FlAdpt]: Executing go_to_place [CART_W56_01] for robot [WardRobot/WardRobot_101]
[WardRobot_FlAdpt]: Opening door [door_08_58_01] for [WardRobot/WardRobot_101]
[WardRobot_FlAdpt]: Robot [WardRobot/WardRobot_101] will release door [door_08_58_01] after a replan because it is no longer needed.
- With reference to the above traffic lanes, when there is obstacle in front of the lift while robot is docking into the lift (with
finish_waypoint=LIFT_ROBOT_POS, my implementation is that the docking will timeout and the robot will be sent to theLIFT_ROBOT_EXIT_POSand the fleet adapter will not calldocking_finished_calbackbut call replan API so that replan gets triggered. The replan did get triggered, and as the lanes are made directional, the robot need to ‘rejoin’ the queue, and the queue waypoints are few lanes away from the lift calling position. however, the lift session was still held by the robot.
Edited by @cwrx777 at 2024-04-25T05:12:53Z
Chosen answer
Answer chosen by @cwrx777 at 2024-05-06T01:43:12Z.
Answered by @mxgrey:
If I dont call replan or docking_finish_callback after release_lift, the lift was released when code reach the condition you mentioned.
If you’ve manually released the lift then RMF won’t relock the lift until it begins a new attempt to have the robot enter or exit the lift. By not calling replan or docking_finished_callback you’re just leaving RMF in a hung state that it will never be able to make progress from.
My strongest suspicion right now is that the last position update that you gave before calling replan indicated that the robot is either inside the lift or somewhere on the lane that comes out of the lift, which prompts RMF to lock the lift for the robot at the very start of the new plan. I would recommend making sure you call update_current_waypoint with the graph index of the exit waypoint before you trigger the replan. Alternatively using the EasyFullControl API and calling its update function before replan would also work.
[fleet_adapter_mir-1] [INFO]: Planning for [WardRobot/WardRobot_082] to [TEST_L02_03] from one of these locations:
Was there no list of starting locations from this line? If there are no start locations for the planner then that would indicate more significant problems than the lift getting relocked.
