How to reduce agents getting stuck in tight corridors?

I’m using a 2D gridgraph with local avoidance, and what happens is if there is a tunnel that is 1 tile wide and two agents are approach each other from the other sides of the tunnel, they just bump into each other and get stuck there.

It feels like they aren’t trying to go left or right from each other to avoid each other. How can I avoid this?

  1. Do you recommend decreasing/increasing the symmetry breaking bias?
  2. Would it do any good to increase Desired Simulation FPS?
  3. Is there any way to disable RVO collisions between agents while still having them avoid each other?

In general, I’m looking for any suggestions on how to avoid this kind of behavior.

Here’s a video of this happening (first example is what SHOULDN’T happen, and then after I show how it’s SUPPOSED to happen):

BONUS QUESTION:
What is the state of FollowerEntity supporting 2D Grid graphs right now? I’m really looking forward to trying that out. I fear that some of these issues might be more inclined to happen because of higher time scales and FollowerEntity would guarantee it isn’t happening because of it.

Hi

Local avoidance will sadly not be able to help much with this. Local avoidance uses only local information, so it does not realize that it can move around the wall to resolve the collision.

You could try to give one agent a higher priority than the other, then one may be able to push the other one out of the corridor.

In the local avoidance algorithms, avoiding other agents and handling collisions are the same thing, so I’m afraid it cannot be selectively turned off.

Hi. Thank you for the reply.

What I wanted to achieve was that when two agents are heading toward each other in a tight corridor (only 1 tile wide), is that they technically do have space to push each other toward the wall, and that way they could both pass each other. By doing so, both agents would be closer to the edges of the walls and make room to pass.

Is there some option that I can enable that will make agents more “aggressively” or forcefully push each other so that they can automatically resolve these sorts of colliding issues?

Perhaps an option such as symmetry bias (I’m not sure what this one does), or something similar?

While what you suggested (increasing priority) might work, I want all of my agents to technically have the same priority, as long as they can push around hard enough to avoid face-to-face collisions that get them stuck.

Any suggestions on how to deal with this are much appreciated.

Are you really sure they can pass each other? If they can, they should be pushing each other out of the way.

What is your ‘obstacle horizon’ setting on the RVOController. You could try to lower that.