Skip to main content

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

coordination_oru-0.2.0.tar.gz (47.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coordination_oru-0.2.0-py3-none-any.whl (51.4 kB view details)

Uploaded Python 3

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

Hashes for coordination_oru-0.2.0.tar.gz
Algorithm Hash digest
SHA256 9db93f35993d0731d3bf467af58d2dfaaf60ce5b839abf54393d131e09fcfa3c
MD5 9458f1e8a3888879a13f027d0c2b3c27
BLAKE2b-256 a7bb22ccb5679c102ea2ce66b0de447392e89043290b4a047a7d3b44e3508deb

See more details on using hashes here.

File details

Details for the file coordination_oru-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for coordination_oru-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4276d59368cae8200b2ad966ef685e689c822019e980dc2596468811e19748ff
MD5 e7b0b6e812a7943ff9a9a0e1f4f7dfaa
BLAKE2b-256 82e6e6c62fb9a105cc79e19c0fad9a767909564328ef4ec2e025b59b197aa99d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page