snape/RVO2
Optimal Reciprocal Collision Avoidance (C++)
What it solves
It addresses the problem of reciprocal collision avoidance for multiple independent mobile robots or agents. It allows these agents to move through a shared workspace without colliding with each other, all without requiring communication between the agents.
How it works
The library implements the Optimal Reciprocal Collision Avoidance (ORCA) formulation. It ensures collision-free motion by assigning half of the responsibility for avoiding a pairwise collision to each involved agent. The process of finding the optimal action for an agent is converted into a low-dimensional linear program, resulting in smooth motions. The C++98 implementation supports two-dimensional spaces and uses OpenMP to parallelize simulations across multiple processors for efficiency.
Who it’s for
It is designed for developers of robotics simulations and multi-agent systems who need a high-performance way to manage agent movement in dense or complex environments.
Highlights
- Supports thousands of agents with computation times in the millisecond range.
- No communication required between agents to avoid collisions.
- Provides a simple API for specifying static obstacles, agents, and preferred velocities.
- Parallelized using OpenMP for increased performance.
Related
- Project
- Project
- Project
- Project
- Project