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