Skip to content

coordination_oru (Python)

A Python port of coordination_oru, the online multi-robot coordination framework of

F. Pecora, H. Andreasson, M. Mansouri, V. Petkov, A Loosely-Coupled Approach for Multi-Robot Coordination, Motion Planning and Control, ICAPS 2018. (PDF)

The framework decides, online, who yields to whom and where when the paths of multiple robots overlap — without assuming anything about how those paths were planned or how the robots are controlled. Robot controllers only need to (1) report their current state and (2) accept a critical point: the path index beyond which they must not drive for now.

What's in the box

  • The coordinator — critical-section detection over swept-footprint envelopes, online precedence revision, heuristic ordering, and deadlock detection/repair by local reordering or replanning. A faithful port of the Java original (same algorithms, same class names).
  • A 2D simulator — RK4-integrated trackers with trapezoidal velocity profiles, so coordination behaviour is kinodynamically honest.
  • A built-in motion planner — Hybrid A* with Reeds-Shepp expansions over ROS-style occupancy-grid maps (optional; paths can come from anywhere).
  • Viewers — a browser-based live viewer (websockets + React), a pyglet window, or plain headless logs.

Java's threads become asyncio tasks, JTS becomes shapely (GEOS is the C++ port of JTS), JGraphT becomes networkx, and the meta-CSP temporal layer is a compact STP solver on a numpy Floyd–Warshall matrix.

Where to go

  • Getting started — install and run the point-and-click dynamic-missions demo in five minutes.
  • Theory → implementation — the paper's definitions, algorithms and equations, each mapped to the class or function that implements it.
  • Guides — motion planning, simulation, and visualization in practice.
  • API reference — generated from the docstrings.

License

GPL-3.0-or-later, same as the original Java coordination_oru.