RVO - non-moving agent avoidance

Hello,

Trying to use RVO to enable agents to avoid crowds of other agents and walk around them however, instead of moving around a group of non-moving agents the moving agent gets stuck behind the crowd flickering hopelessly trying to push itself in between the non-moving agents.

I have disabled physics collision between agents as per RVO module guidance and played with the RVO settings (time horizon and “Lock when not moving”) with no major improvements, at best I was able to get the incoming agent to push the others away but that’s not quite what I’m looking for as I’d rather have them walking around non-moving agents.

Am I doing something wrong with RVO or do I need to look at a different method to implement this kind of agent avoidance.

Thanks!

ezgif-6-ce2d80ae5236

1 Like

I decided to give the beta version a go and RVO non-moving agent avoidance seems a lot better there, although not quite there yet. Are there any non-exposed RVO controller parameters I can experiment with to try to increase the agent’s ability to walk around a crowd of still agents?

Issue demo video showing a nice circling around the target dynamic first and the avoidance issue later.

p.s. HD video still processing so hopefully will be done by the time you see this.

Hi

The beta version has indeed better algorithms for this.
For improved avoidance I would recommend that you give each agent their own destination at a point around the target that you pre-calculate. For example you could assign multiple agents that want to reach the same object to move to different points in a ring around the target. When they want to move to an object they could for example write a script to reserve one of 6 points around the object so that no other agents can move to that particular point.

Hi Aron,

Thanks for the quick answer. I had thought about that and it’s indeed an approach I will take in other situations but I was keen to see how far I can push RVO on its own.

I made some changes and I’m now quite happy with the result, I haven’t looked into performance cost yet, but that’s one for another day :slight_smile.

Using RichAI instead of AIPath helped with the crowded scenario, making agents stop and hang around in a fairly natural way.
I have also fixed an issue when “Lock when not moving” was not being invoked and realised that RVO agents struggle with non-moving but non-locked agents, while they deal quite well with locked agents.

1 Like

Just to add how much I appreciate the work you do Aron, I have tried in the past to implement my own RVO system and it’s genuinely been the most challenging problem I have ever dealt with and at its peak it was barely working. It’s easy to take for granted the complexity of 3rd party libraries like yours but for a modest cost we get a massive value in time and expertise.

1 Like

Thank you for your kind words! And I’m glad its working for you now.