Skip to main content

No-ROS-required static engineering toolchain for ROS-style projects.

Project description

RoboPilot

English | 中文

Tests

RoboPilot is a no-ROS-required static engineering toolchain for ROS-style projects.

It helps robotics learners and developers plan, refine, validate, generate, inspect, update, roll back, document, and review ROS/ROS2-style project structure without installing ROS, ROS2, catkin, colcon, simulator runtimes, or robot hardware.

What RoboPilot Does

  • Creates and validates ProjectSpec files from robotics tasks.
  • Renders deterministic ROS-style Python package skeletons.
  • Refines and diffs specs before generation.
  • Previews, exports, applies, backs up, rolls back, and journals safe project updates.
  • Inspects projects and exports read-only reports.
  • Detects RoboPilot, ROS1, ROS2, mixed, non-ROS, and unknown project types.
  • Statically inspects ROS1 catkin and ROS2 ament packages.
  • Analyzes declared and detected dependencies.
  • Builds static ROS1-to-ROS2 migration plans, validates/diffs them, previews file-level migration work, and generates conservative ROS2 scaffold placeholders.
  • Provides small offline utilities for robotics error logs and Mermaid workflow graphs.
  • Optionally uses an LLM only to produce or refine validated ProjectSpec data.
  • Provides a lightweight Python API layer for scripts and future integrations.
  • Documents stable top-level JSON keys for integration-oriented --json outputs.
  • Includes a VSCode extension MVP source tree that wraps the RoboPilot CLI JSON outputs.

RoboPilot does not run ROS, ROS2, launch files, generated code, catkin_make, or colcon.

Quick Start

Supported Python versions for this release line are Python 3.10 and 3.11. Package metadata declares >=3.10,<3.12; Python 3.12 and 3.13 are not claimed until the test suite passes there.

Install from source for now:

python -m venv .venv
.venv\Scripts\activate
python -m pip install -U pip
pip install -e ".[dev]"
robopilot --help

After PyPI release:

pip install robopilot
robopilot --help

On Windows, if pytest has temporary directory permission issues:

python -m pytest --basetemp=".pytest_tmp" -p no:cacheprovider

Core Workflows

Spec-first generation:

robopilot plan --name demo_detector --task "Create an object detection pipeline" --output robopilot.yaml
robopilot validate --spec robopilot.yaml
robopilot generate --spec robopilot.yaml

Iterative spec review:

robopilot refine --spec robopilot.yaml --instruction "Add a tracker node after the detector" --output refined.yaml
robopilot diff --old robopilot.yaml --new refined.yaml

Safe project update loop:

robopilot apply-preview --spec refined.yaml --project outputs/demo_detector
robopilot apply-plan --spec refined.yaml --project outputs/demo_detector --output apply_plan.yaml
robopilot apply --plan apply_plan.yaml
robopilot apply --plan apply_plan.yaml --confirm
robopilot history --project outputs/demo_detector

Static project review:

robopilot inspect examples/generated_projects/demo_detector
robopilot repair-suggest examples/generated_projects/demo_detector
robopilot report examples/generated_projects/demo_detector --output report.md

ROS-style static analysis:

robopilot detect path/to/project
robopilot inspect-ros1 path/to/ros1_package
robopilot inspect-ros2 path/to/ros2_package
robopilot deps path/to/project

ROS1 to ROS2 migration planning:

robopilot migrate-plan --from path/to/ros1_package --to ros2 --output migration_plan.yaml
robopilot migrate-plan-validate --plan migration_plan.yaml
robopilot migrate-preview --plan migration_plan.yaml --project path/to/ros1_package
robopilot migrate-scaffold-preview --plan migration_plan.yaml
robopilot migrate-scaffold --plan migration_plan.yaml --output path/to/ros2_scaffold

Documentation

Safety Model

RoboPilot is designed around static analysis and explicit review:

  • Default planning, validation, diff, inspection, report, detection, dependency, and migration commands are read-only.
  • apply is dry-run by default and writes only with --confirm.
  • Confirmed updates write only files listed in a validated apply plan.
  • Existing files are backed up before updates.
  • rollback is dry-run by default and restores only files from RoboPilot backup directories.
  • Migration planning, validation, diff, and preview do not modify source projects.
  • Migration scaffold generation writes only to the explicit output directory, refuses overwrites by default, and does not modify the original ROS1 project.
  • Optional LLM paths are limited to ProjectSpec planning/refinement and must pass validation before generation or apply workflows.

Example Output

A static generated demo project is committed at:

examples/generated_projects/demo_detector/

Transient generated projects should go under outputs/, which is intentionally ignored by git.

Project Status

Current release line: v1.8.0.

RoboPilot's no-ROS-required static engineering workflow remains the stable v1 baseline:

plan -> refine -> diff -> validate -> generate
      -> apply-preview -> apply-plan -> apply -> rollback -> history
      -> inspect -> repair-suggest -> report
      -> detect -> inspect-ros1 -> inspect-ros2 -> deps
      -> migrate-plan -> migrate-plan-validate -> migrate-plan-diff -> migrate-preview
      -> migrate-scaffold-preview -> migrate-scaffold

The Python API layer, documented CLI JSON contracts, ROS2 static inspector, enhanced dependency analyzer, and VSCode extension MVP source are available for integration work while the CLI remains the primary user interface.

The VSCode extension lives under vscode-extension/, requires the RoboPilot CLI to be installed, and is documented in docs/vscode_extension.md.

Development

Run tests:

python -m pytest

Windows fallback:

python -m pytest --basetemp=".pytest_tmp" -p no:cacheprovider

License

MIT

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

robopilot-1.8.0.tar.gz (105.7 kB view details)

Uploaded Source

Built Distribution

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

robopilot-1.8.0-py3-none-any.whl (104.1 kB view details)

Uploaded Python 3

File details

Details for the file robopilot-1.8.0.tar.gz.

File metadata

  • Download URL: robopilot-1.8.0.tar.gz
  • Upload date:
  • Size: 105.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robopilot-1.8.0.tar.gz
Algorithm Hash digest
SHA256 e09ee0b441b2d9ed5eba66b2bfa8976446b5208c39e2073d4abb18da5bb72044
MD5 f84d50b71fbee194dfae4a2300086c88
BLAKE2b-256 74efb4a4643e8710f0ed6262ccebb3cc0f4218477e99510ceae6cba3d3d71d75

See more details on using hashes here.

Provenance

The following attestation bundles were made for robopilot-1.8.0.tar.gz:

Publisher: publish.yml on J1angJJ/RoboPilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file robopilot-1.8.0-py3-none-any.whl.

File metadata

  • Download URL: robopilot-1.8.0-py3-none-any.whl
  • Upload date:
  • Size: 104.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robopilot-1.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a53fbb7898e6a53e30f2420c6e80b18f74ccb8e28d302ddb829836d5500bee94
MD5 ce69cdbb9ac274b225d324e73ed4ae1a
BLAKE2b-256 d43e4a356225174bf531f9687287eeabd3038f4234b1a0baf6b088630325cb62

See more details on using hashes here.

Provenance

The following attestation bundles were made for robopilot-1.8.0-py3-none-any.whl:

Publisher: publish.yml on J1angJJ/RoboPilot

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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