RVO2 Library: Reciprocal Collision Avoidance for Real-Time Multi-Agent Simulation

Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, and Dinesh Manocha
Department of Computer Science, University of North Carolina at Chapel Hill

Contact: To report bugs or suggest novel functionality, please contact the authors.

Maintained by: Jamie Snape.

Latest update: May 4, 2016.

RVO2 Library: Copyright © and trademark ™ 2008-16 University of North Carolina at Chapel Hill. All rights reserved.

Get RVO2 Library


RVO2 Library

RVO2-3D Library

RVO2 Library C#

RVO Library

  • RVO Library v1.1.1 (ZIP archive, 180 KB, SHA1 8536d862d666250c3ef46beff017b38b1c6e1026)
  • RVO Library v1.1 (ZIP archive, 193 KB, SHA1 78df610af66f32652ff2b6a494e6b7dcf327f245)
  • RVO Library v1.0 (ZIP archive, 78 KB, SHA1 45b92e919e3ad58fd5874ee06dba33d99a1889ba)

Release Notes

RVO2 Library v2.0.2

Released May 4, 2016.

  • Changed license to Apache 2.0.

RVO2 Library v2.0.1

Released October 26, 2010.

  • Improved the three-dimensional linear programming to make it faster and more robust.
  • Minor change in the way ORCA lines for static obstacles are handled, which removes the dependence on simulation time step.
  • Normalized obstacle vector is stored with each static obstacle line segment to reduce the number of square root computations.
  • Fixed the error that caused header files to copied to the wrong directory in the release configuration for Microsoft Visual Studio.
  • Removed simple Agent constructors, moving defaultAgent functionality to the RVOSimulator class (no change to public interface).

RVO2 Library v2.0

Released August 28, 2010.

  • RVO2 Library v2.0 replaces the reciprocal velocity obstacle (RVO) framework with the optimal reciprocal collision avoidance (ORCA) formulation for collision avoidance to increase computation speed, motion smoothness, and agent safety.
  • The roadmap infrastructure for global planning has been removed. Users are responsible for global navigation and should specify the preferred velocity of the agents ahead of each time step.
  • Static obstacles are now defined as non-intersecting polygons, specified by lists of vertices in counterclockwise order.
  • Multiple instances of a simulator may now be created.
  • Functionality not core to collision avoidance have been removed. Agent fields class, goal, maxAcceleration, orientation, and prefSpeed have been removed.
  • Simulation information, such as the neighbors of agents and the velocity constraints of agents, may now be accessed.
  • Functionality to check the visibility of two points or discs with respect to static obstacles has been added.
  • A simulator may now be constructed with time step and agent default parameters.
  • Agents may now be added during the simulation. Static obstacles must be processed before they are taken into account, but may also be added during the simulation.
  • Identifiers for agents, static obstacles, etc. are now of type size_t.
  • The static obstacle k-D tree and neighbor search have been optimized.

RVO2-3D Library v1.0.1

Released May 4, 2016.

  • Changed license to Apache 2.0.

RVO2-3D Library v1.0

Released May 13, 2011.

  • RVO2-3D Library operates in 3D workspaces using a three-dimensional implementation of optimal reciprocal collision avoidance (ORCA) for local collision avoidance.
  • The library does not replace RVO2 Library for 2D applications and currently does not support static obstacles.

RVO2 Library C# v2.0.1

Released May 4, 2016.

  • Changed license to Apache 2.0.

RVO2 Library C# v2.0

Released January 10, 2011.

  • Multiple threads.

RVO2 Library C# v1.1

Released November 17, 2010.

RVO Library v1.1.1

Released May 4, 2016.

  • Changed license to Apache 2.0.

RVO Library v1.1

Released February 9, 2009.

  • RVO Library v1.1 adds support for POSIX-compliant systems.
  • Users may specify to automatically connect roadmap vertices for a specific radius. This means that an edge is only added between two vertices if it has at least the specified distance from the obstacles.
  • Static obstacles may now freely intersect each other.
  • A simulation no longer crashes if two agents have exactly the same position.
  • Agents now only progress to a new subgoal when they can entirely see them.
  • The static obstacle k-D tree has been improved. Static obstacles are split in the process to have a more efficient tree.
  • Visibility queries are now performed using the static obstacle k-D tree.
  • The agent k-D tree for neighbor searching has been improved. Maximally, ten agents are stored in each leaf.
  • The sampling of candidate velocities for agents has been optimized.
  • The roadmap class has been removed to make the architecture of the library flatter.
  • Some superfluous divisions have been eliminated.

RVO Library v1.0

Released May 26, 2008.


Copyright 2008 University of North Carolina at Chapel Hill

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at


Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
See the License for the specific language governing permissions and
limitations under the License.