Optimal Reciprocal Collision Avoidance (ORCA)

Contents

Optimal Reciprocal Collision Avoidance (ORCA)#

Snape, J., Van Den Berg, J., Guy, S.J. and Manocha, D., 2010, October. Smooth and collision-free navigation for multiple robots under differential-drive constraints. In 2010 IEEE/RSJ international conference on intelligent robots and systems (pp. 4584-4589). IEEE.

A wrapper of the open-source implementation (Apache License 2.0) by Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha.

ORCA is a commonly used algorithm from the family of using reciprocal velocity obstacles. It partition the velocity space into safe/unsafe parts (using linear constraints) and then returns the nearest velocity to the target velocity (read more from the authors).

Example#

The video has been recorded using

$ navground_py record_video orca.yaml orca.mp4 --factor 5

with the following configuration

steps: 1000
time_step: 0.1
scenario:
  type: Cross
  agent_margin: 0.1
  side: 4
  target_margin: 0.1
  tolerance: 0.5
  groups:
    -
      type: thymio
      number: 20
      radius: 0.08
      control_period: 0.1
      speed_tolerance: 0.02
      kinematics:
        type: 2WDiff
        wheel_axis: 0.094
        max_speed: 0.166
      state_estimation:
        type: Bounded
        range: 5.0
      behavior:
        type: ORCA
        optimal_speed: 0.12
        horizon: 5.0
        safety_margin: 0.02