Suboptimal lane sharing between multiple robots #261
-
Hi, I have a setup with two robots. The environment is one very long hallway, consisting of two unidirectional lanes (see pic for clarification) I'm currently on the galactic-devel branch for most of the rmf project. The behavior I observe for my case seems very inefficient: e.g. when two delivery tasks are assigned to the two robots and the robots need to go along the same lane, the second robot pauses at the start of the lane until the first robot leaves that specific lane. This seems very time inefficient, especially because the lanes are quite long. Adding intermediate waypoints to this lane, solves this issue somewhat, but still not in an optimal way... In this case, the second robot continuously receives paths along this lane with only 1 waypoint. So whenever it reaches the waypoint, it receives a new path to the next waypoint on this lane. This causes the robot to constantly start and stop at every single waypoint, which is very energy inefficient. Any suggestions on how I can deal with this? Thanks in advance. |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 5 replies
-
There's a complex relationship between how nav graphs are constructed and what kind of traffic behavior you'll end up with, especially in extreme cases like this, with very very long lanes. In the current implementation of RMF, each lane in the nav graph represents an indivisible unit of action that RMF is able to command to a robot, so an extremely long lane represents one extremely long unit of action. That kind of abnormally long action unit can cause undesirable outcomes like what you're describing. We intend to make the planner less sensitive to nav graph topology in future versions of RMF, but in the mean time it does take some effort on the part of system integrators to be mindful of how the nav graph will effect traffic decisions. The screen shot and description that you've provided doesn't really paint a clear enough picture for me to think of concrete advice on how to improve the behavior here. If you're able to provide map packages and launch files that let me recreate the problematic scenario on my own machine then I should be able to offer better guidance. One possible factor here is that the current baked-in settings of the negotiation system are focused more on resolving conflicts quickly rather than resolving them optimally. I've been thinking about giving users the ability to tweak parameters for that, but so far our test cases have suggested that the quickly-found solutions are almost always the optimal solutions anyway. If this is an edge case where that trend no longer holds then that may provide the motivation I need to make the negotiation behavior configurable. |
Beta Was this translation helpful? Give feedback.
There's a complex relationship between how nav graphs are constructed and what kind of traffic behavior you'll end up with, especially in extreme cases like this, with very very long lanes. In the current implementation of RMF, each lane in the nav graph represents an indivisible unit of action that RMF is able to command to a robot, so an extremely long lane represents one extremely long unit of action. That kind of abnormally long action unit can cause undesirable outcomes like what you're describing. We intend to make the planner less sensitive to nav graph topology in future versions of RMF, but in the mean time it does take some effort on the part of system integrators to be mindful …