RMF Traffic occasionally fails to manage multiple robots headed to the same destination #162
-
Hi Team, But occasionally, these negotiations don't happen as expected. Below is one such scenario where 6 robots (5 delivery robots and 1 tiny robot) were tasked to go to the same waypoint using (The video has been sped up to fit the size restrictions. Please decrease the playback speed, if required) RMFTrafficFailureMultiRobot.mp4The major issues that can be observed are:
While this is quite rare in simulation, we often observe marker mismatches when using real robots. @dennis-thevara's discussion #159 is related to that. It could still be the case that these are two different issues altogether. But coordination between robots ends up failing in both cases. The simulation only uses the components that are part of the RMF Core in a custom environment. Based on this,
On a related note, what does a
RMF was build from source using the latest packages pulled on May 25th using vcs import. Here is the associated log file: RMFTrafficFailure.log |
Beta Was this translation helpful? Give feedback.
Replies: 5 comments 11 replies
-
As of right now, RMF is not expected to be able to correctly or successfully negotiate traffic for multiple robots that want to reach the same destination at the same time. When multiple robots want to reach the same destination simultaneously, it is no longer a "traffic" issue so much as a logical inconsistency issue because the overall desired end state for the traffic planning problem is invalid. Sometimes the negotiation system does manage to sort things out, but that is mostly a matter of luck and should not be expected or relied on. Of course there are bound to be cases where the immediate goal of multiple robots requires them to reach the same destination as each other, for example if they need to use the same lift or they need to pick up an item at the same pick up point. In our view, this is not a traffic problem as much as it is a resource allocation problem where the "resource" is the right to access the physical location. We would like to develop a reservation system that ensures only one robot at a time will try to approach any location on the map as its goal. An issue ticket was opened for this here some time ago. While that ticket only talks about reserving parking spots, we would use the same reservation system to delegate the order that robots have access to a location. We have a slide on the idea here, and an adjacent idea for a queuing system here. In the general case, every time a robot has a destination that it is trying to reach...
For specific cases where a system integrator can anticipate a bottleneck where many robots will want to access the same resource at the same time (e.g. a door, lift, workcell) the system integrator can define a queuing area for the robots to wait in for that specific resource. The above workflow would change at item (3) and the robot would reserve a spot in the queuing area instead of reserving a generic parking spot. If the queuing area is full then the robot would fall back on the general strategy of reserving any nearby parking spot. While we've put a lot of thought into the design of these systems, they are not currently being funded, so unfortunately they are not being actively developed at the moment. |
Beta Was this translation helpful? Give feedback.
-
The
Those warnings should generally be ignored. They tend to print out when there hasn't been any traffic activity in a few seconds. The warnings were put in to help us notice cases where a connection was lost or the traffic schedule node died, but the warnings are more aggressive than they really need to be. We could remove them entirely and come up with smarter ways to evaluate the health of the connection with the traffic schedule node. |
Beta Was this translation helpful? Give feedback.
-
Is there any update about this issue? |
Beta Was this translation helpful? Give feedback.
-
And I have another question,
Could you please explain to me about the difference between the above two kinds of ways? |
Beta Was this translation helpful? Give feedback.
-
Two node are subscribing topic task_api_requests, one is the fleet adapter node ,the other is rmf_dispatcher_node. |
Beta Was this translation helpful? Give feedback.
As of right now, RMF is not expected to be able to correctly or successfully negotiate traffic for multiple robots that want to reach the same destination at the same time. When multiple robots want to reach the same destination simultaneously, it is no longer a "traffic" issue so much as a logical inconsistency issue because the overall desired end state for the traffic planning problem is invalid. Sometimes the negotiation system does manage to sort things out, but that is mostly a matter of luck and should not be expected or relied on.
Of course there are bound to be cases where the immediate goal of multiple robots requires them to reach the same destination as each other, for example…