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-1
hold the lift, butrobot-2
was 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 2
is alredy waiting for the lift atlevel 1
to go tolevel 5
androbot 3
is waiting for lift atlevel 5
. afterrobot 1
exit the lift, the lift session is given torobot 3
(i.e. the lift went tolevel 5
empty when it could’ve broughtrobot 1
tolevel 5
also). -
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_01
is 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_POS
and the fleet adapter will not calldocking_finished_calback
but 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.