Skip to main content

PyRoboReplay

Forensic debugging and mission-replay platform for autonomous robots: replay ROS 2 missions, run causal / root-cause analysis on failures, and perform multispectral (RGB + thermal) forensics. Rust core with Python bindings.

CI PyPI License: Apache 2.0 Python 3.10+ Rust

What it is

PyRoboReplay ingests recorded robot missions (ROS 2 bags) into a unified timeline and answers why and what-if questions rather than only where and what: which events preceded a failure, what the perception stack missed, and what the robot should have detected. The heavy lifting is a Rust core (cdylib + rlib) built with PyO3, exposed to Python through maturin. A CLI (replay, analyze, compare, list) and a small Python API are the supported entry points today.

Features

Exposed via CLI / Python (verified, tested):

  • Mission replay — interactive timeline scrubber with keyboard controls (replay).
  • Reality-gap analysis — probabilistic mismatch scoring, severity classification, evidence aggregation, JSON/text output (analyze --detect-gaps).
  • Failure detection and diagnosis — Mission.detect_failures(), Mission.analyze_failure() with hypotheses, confidence, and prioritized actions.
  • Mission comparison — side-by-side diff of two bags (compare).
  • Topic listing — inspect available topics in a bag (list).
  • Real ROS 2 CDR decoding — standard sensor_msgs / nav_msgs / geometry_msgs binary layouts are decoded from real message bytes (src/adapters/cdr.rs); pose confidence is derived from the real position-covariance trace, so localization-loss detection fires on real data.

Implemented in the Rust core, not yet wired to CLI or Python (library API only):

  • Causal event graphs, multi-factor causality, incident narratives, evidence-quality scoring.
  • Persistent world knowledge (entities, locations, facts across missions) and spatial grounding.
  • Multi-mission / longitudinal learning.
  • Pluggable detection backends (YOLO / SAM / template fallback).
  • Retrospective DINO + SAM open-vocabulary object discovery.
  • RGB + thermal multispectral fusion and forensic reconstruction.
  • Universal temporal fusion and the Nav2 root-cause inference engine (Phases 14-15).

Who it's for / Use cases

  • Warehouse and logistics fleets — reconstruct why a run failed, find missed detections and coverage gaps, compare two strategy revisions.
  • Safety and compliance review — produce auditable, saved JSON findings for an incident (analyze --detect-gaps --format json --output report.json).
  • Perception R&D — compare perception strategies over matched missions and quantify regressions.
  • Field autonomy teams — investigate localization loss, planner oscillation, and sensor disagreement from recorded missions.

What it is not

  • Not a real-time monitoring or fleet dashboard. It works on recorded missions, not live streams.
  • Most advanced modules (Phases 12-15) are not reachable from the CLI or Python. Use the Rust library directly, or track exposure on the roadmap.
  • Phase 11 "PyTerrainMap integration" is not real interop. src/.../pyterrain_bridge.rs is self-contained, unit-tested terrain-modeling logic conceptually inspired by PyTerrainMap; there is no Cargo/pip dependency, no shared serialization format, and no parser for PyTerrainMap's output.
  • Not published to crates.io — build the Rust crate from source if you need it directly.
  • Not a certified or safety-verified system.

Project status

Beta (Development Status 4). Current source version is 2.10.1; the latest PyPI release is 2.10.0. The CLI and Python API are the tested, supported surface. 843 cargo test --lib unit tests pass (re-verified 2026-09-29), plus 7 real-fixture ROS 2 CDR integration tests. cargo fmt --check is clean. cargo clippy --all-targets --all-features -- -D warnings currently reports ~96 errors, so the CI clippy job runs with continue-on-error and does not gate merges. See ROADMAP_HONEST.md for the implemented/partial/missing breakdown.

Installation

pip install pyroboreplay

# or with uv
uv pip install pyroboreplay

# verify
pyroboreplay --version

Requires Python 3.10+. From source (needs a Rust toolchain):

git clone https://github.com/Mullassery/PyRoboReplay.git
cd pyroboreplay
pip install maturin
maturin develop --release      # install the Python package
# or, for the Rust binary/crate only:
cargo build --release

Quick start

# Interactive timeline scrubber
pyroboreplay replay mission.bag

# Reality-gap analysis, saved as JSON
pyroboreplay analyze mission.bag --detect-gaps --detail --format json --output investigation.json
from pyroboreplay import Mission

mission = Mission.from_ros_bag("warehouse.bag")

failures = mission.detect_failures()
print(f"Failures detected: {len(failures)}")

analysis = mission.analyze_failure(timestamp=1234567890.0)
print(f"Root cause: {analysis.get_primary_hypothesis()}")
print(f"Confidence: {analysis.get_diagnostic_confidence():.0%}")

for action in mission.recommend_actions(timestamp=1234567890.0):
    print(f"[{action.get_priority()}] {action.get_description()}")

Interactive replay keys: Space play/pause, n / → next event, p / ← previous event, ↑ / ↓ speed, ? help, q / Esc quit.

Usage

pyroboreplay compare mission_a.bag mission_b.bag        # side-by-side
pyroboreplay list mission.bag                            # topics in a bag
pyroboreplay analyze mission.bag --detect-gaps --detail  # findings to stdout

The Python package exports Mission, Event, Failure, Hypothesis, RootCauseAnalysis, Action, FleetStatistics, GeoHotspot (see src/pyroboreplay/__init__.py). The multispectral, retrospective-detection, world-knowledge, and prediction features live in the Rust core and are not yet exposed through these bindings.

Documentation

Contributing

Contributions welcome — see CONTRIBUTING.md for setup, conventions, and PR guidelines. Bugs and ideas: GitHub Issues; questions: GitHub Discussions.

Part of the robotics & autonomy family

PyRoboReplay is one of six complementary, composable tools in the Mullassery robotics & autonomy family. Together they form a single stack: perceive → map → simulate → learn → debug → coordinate the fleet.

Tool Role What it does
PyRoboVision Perception Multi-object tracker (Kalman filter + Hungarian algorithm) and trajectory predictor for robot perception.
PyTerrainMap Mapping / SLAM Fuses multi-robot terrain observations into a spatial-temporal store, with H3 spatial indexing and SLAM.
PyRoboSimulator Simulation World simulator for autonomous systems, with a FastAPI backend.
PyRoboFrames Learning data Rust-backed ML dataloader for robot-learning datasets (native LeRobot format, Apple Silicon hardware video decode).
PyRoboReplay Mission forensics This project — forensic-debugging and causal-analysis engine for autonomous robot mission replay.
SyncFleet Fleet coordination Rust + SQLite, peer-to-peer state sync for robotics fleets — mutual-TLS 1.3, version-vector replication, mDNS discovery; conflict resolution on the roadmap.

Each works standalone, but they're complementary by design. Browse all projects →

License

Apache License 2.0 — see LICENSE.

Metadata

Release files for pyroboreplay 2.10.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for pyroboreplay 2.10.2
File Interpreter ABI Platform
pyroboreplay-2.10.2-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details

Release files / pyroboreplay-2.10.2-cp311-cp311-macosx_11_0_arm64.whl

Download URL pyroboreplay-2.10.2-cp311-cp311-macosx_11_0_arm64.whl
Size 1.9 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
c7a03387145f759613df4538ba187246b2bfd0c602cfd504e2b43c84b3c1ad62
BLAKE2b-256 checksum
How to use checksums
490535580ea5915fc74fcb5e764425a148288669f3d567da0828c7253dabd2aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.6

Security for pyroboreplay 2.10.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page