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