Posted by @RDaneelOlivav:
Hi Here I’m setting this video to show the VIDEO OF THE ISSUE. Jump to timestamp 3:45
When resolving a conflict that the other robot is on the only path to a particular spot ( spot_5), the robot that has been assigned the task can’t reach it, so after failed negotiations, it decides to go to spot_5 directly, violating the lanes set. Is this normal behavior?
Any ideas ? I imagine the robot cant stop in any middle point because they arent set as stop nodes, but this of jumping to the point directly makes no sense for me.
Edited by @RDaneelOlivav at 2022-08-03T18:44:39Z
Chosen answer
Answer chosen by @RDaneelOlivav at 2022-08-04T09:42:40Z.
Answered by @mxgrey:
This is semi-intentional behavior related to a “lane merging” parameter that gets used in cases where the robot has stopped mid-lane. The default value is 1.0
which means if the robot is within 1 meter of a lane then it is allowed to consider itself as being on that lane. Clearly that value is too high for your scenario which seems to have very narrow passages.
Are you using the default full control fleet adapter that’s used by rmf_demos
? If so I think we’d need to add a parameter to the launch file for this value so you can customize it to a more appropriate size for your scenario.
Posted by @mxgrey:
This is semi-intentional behavior related to a “lane merging” parameter that gets used in cases where the robot has stopped mid-lane. The default value is 1.0
which means if the robot is within 1 meter of a lane then it is allowed to consider itself as being on that lane. Clearly that value is too high for your scenario which seems to have very narrow passages.
Are you using the default full control fleet adapter that’s used by rmf_demos
? If so I think we’d need to add a parameter to the launch file for this value so you can customize it to a more appropriate size for your scenario.
This is the chosen answer.
Posted by @RDaneelOlivav:
Yeah, I’m using the default version,
Yeah, I think that should be a parameter that can be changed because otherwise, to fix this I have to change the source code and compile.
But anyway thanks a lot for the explanation, it clears things up for sure.
This merging happens, when exactly? Because it doesn’t happen immediately, it seems there is like a max tries until this behavior is triggered.
Edited by @RDaneelOlivav at 2022-08-04T09:42:37Z
Posted by @mxgrey:
Apologies for how long it took, but with this PR it will be possible to set the lane merge distance for the demo fleet adapter as demonstrated here.
This merging happens, when exactly?
The rmf_fleet_adapter::agv::RobotUpdateHandle
API offers an update_position
function that can tell RMF that the robot is on a lane. It’s up to the system integrator to decide when and where to call this function in their fleet adapter.
After that function has been called, RMF could choose to use any of the given lanes when it needs to replan or negotiate the route of a robot.