Python port of coordination_oru: a multi-robot trajectory-envelope coordinator.
Project description
coordination-oru (Python)
A Python port of coordination_oru, the trajectory-envelope multi-robot coordinator from Pecora et al., A loosely-coupled approach for multi-robot coordination, motion planning and control, ICAPS 2018.
This port targets production use. The ROS layer, OMPL motion planner, and visualization are explicitly out of scope — the framework is loosely coupled, so paths are supplied externally.
Why Python?
| Java original | Python replacement | Notes |
|---|---|---|
| JTS (vividsolutions) | shapely 2.x (GEOS) |
GEOS is a direct C++ port of JTS — same semantics. |
| JGraphT | networkx |
Near 1:1 graph API. |
| meta-csp APSPSolver | numpy Floyd-Warshall |
~20 lines. |
| meta-csp Allen / Bounds | thin custom layer | ~50 lines, 13 relation types. |
| meta-csp TrajectoryEnvelope | custom port | dataclasses + shapely. |
| Java threads | asyncio Tasks + Queues |
Cleaner cancellation and fan-in. |
| Swing/AWT | deferred (matplotlib/pygame) |
Visualization is a future stage. |
We port only the meta-csp surface that coordination_oru actually exercises at
runtime: the STP solver, Allen relations, and the trajectory-envelope plumbing.
The general meta-CSP search engine, Boolean CSP solver, and timeline planner
are dropped.
Install
pip install -e .[dev]
Examples
Each example is a standalone script — run it directly with Python. With the
viz extra installed (pip install -e .[viz]) it opens an animated pyglet
viewer; without it, it runs headless and prints per-robot progress.
python examples/two_robots.py
| Script | Scenario |
|---|---|
examples/two_robots.py |
Two RK4 robots cross at the origin; one yields at the intersection. |
examples/three_robots.py |
Three RK4 robots through one intersection, deadlock-free. |
examples/three_robots_oldpath.py |
The original Java repo's debug1/2/3.path recorded paths. |
examples/convoy.py |
Convoy following: a yielder trails the leader inside a shared corridor. |
examples/dynamic_missions.py |
Robots get new missions after finishing their first ones. |
Run the tests
pytest
License
GNU General Public License v3.0 or later — see LICENSE. The
original Java coordination_oru is GPL-3.0, so this port keeps the same
licence.
Layout
coordination_oru/
├── metacsp/
│ ├── temporal/ # Bounds, Allen relations, STP (Floyd-Warshall)
│ └── spatial/ # Pose, TrajectoryEnvelope, TrajectoryEnvelopeSolver
├── coordinator/ # Critical-section detection, ordering, deadlock check
├── simulation/ # In-process simulator with hardcoded paths
├── data/ # Bundled demo .path files (ship with the wheel)
└── util/ # Footprint helpers, path loaders/generators, structlog setup
examples/ # Standalone runnable demos (python examples/<name>.py)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coordination_oru-0.2.0.tar.gz.
File metadata
- Download URL: coordination_oru-0.2.0.tar.gz
- Upload date:
- Size: 47.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9db93f35993d0731d3bf467af58d2dfaaf60ce5b839abf54393d131e09fcfa3c
|
|
| MD5 |
9458f1e8a3888879a13f027d0c2b3c27
|
|
| BLAKE2b-256 |
a7bb22ccb5679c102ea2ce66b0de447392e89043290b4a047a7d3b44e3508deb
|
File details
Details for the file coordination_oru-0.2.0-py3-none-any.whl.
File metadata
- Download URL: coordination_oru-0.2.0-py3-none-any.whl
- Upload date:
- Size: 51.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4276d59368cae8200b2ad966ef685e689c822019e980dc2596468811e19748ff
|
|
| MD5 |
e7b0b6e812a7943ff9a9a0e1f4f7dfaa
|
|
| BLAKE2b-256 |
82e6e6c62fb9a105cc79e19c0fad9a767909564328ef4ec2e025b59b197aa99d
|