No-ROS-required static engineering toolchain for ROS-style projects.
Project description
RoboPilot
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
ProjectSpecfiles 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, generates conservative ROS2 scaffold placeholders, validates generated scaffolds, and exports scaffold reports.
- Provides small offline utilities for robotics error logs and Mermaid workflow graphs.
- Optionally uses an LLM only to produce or refine validated
ProjectSpecdata. - Provides a lightweight Python API layer for scripts and future integrations.
- Documents stable top-level JSON keys for integration-oriented
--jsonoutputs. - Includes a VSCode extension source tree that wraps the RoboPilot CLI JSON outputs, including the migration scaffold review workflow.
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
robopilot migrate-scaffold-validate --plan migration_plan.yaml --scaffold path/to/ros2_scaffold
robopilot migrate-scaffold-report --plan migration_plan.yaml --scaffold path/to/ros2_scaffold --output scaffold_report.md
Documentation
- Command Reference
- Workflows
- Architecture
- Python API
- JSON Contracts
- Integration Notes
- VSCode Extension
- VSCode Packaging
- VSCode Marketplace Publishing
- ROS1 to ROS2 Migration Tutorial
- VSCode Migration Tutorial
- Demo Walkthrough
- Developer Setup
- Testing
- Release Process
- PyPI Publishing
- Compatibility
- Known Limitations
- Stability Policy
- Demo Script
- v1.0.0 Scope
- Changelog
- Roadmap
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.
applyis 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.
rollbackis 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.
- Migration scaffold validation is read-only and checks generated placeholders without executing or importing scaffold code.
- Migration scaffold reports are read-only unless writing to an explicit report output file.
- Optional LLM paths are limited to
ProjectSpecplanning/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/
Migration tutorial examples are committed at:
examples/ros1_migration_demo/
examples/ros2_scaffold_demo/
examples/migration_outputs/
Start with the ROS1-to-ROS2 migration tutorial, the VSCode migration tutorial, or the demo walkthrough.
Transient generated projects should go under outputs/, which is intentionally ignored by git.
Project Status
Current release line: v1.14.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 -> migrate-scaffold-validate
-> migrate-scaffold-report
The Python API layer, documented CLI JSON contracts, ROS2 static inspector, enhanced dependency analyzer, and VSCode extension 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, supports the migration scaffold workflow, and can be packaged locally as a VSIX. Marketplace publishing preparation is documented, but no Marketplace release is claimed yet. See docs/vscode_extension.md, docs/vscode_packaging.md, and docs/vscode_marketplace.md.
Post-v1.10 roadmap work is aimed at v2.0 as a stage-completion release: polish the VSCode migration workflow, package the extension, improve examples and tutorials, and stabilize compatibility. v2.0 is not intended to imply a breaking rewrite unless a future release plan says so.
Development
Run tests:
python -m pytest
Windows fallback:
python -m pytest --basetemp=".pytest_tmp" -p no:cacheprovider
License
MIT
Project details
Release history Release notifications | RSS feed
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 robopilot-1.14.0.tar.gz.
File metadata
- Download URL: robopilot-1.14.0.tar.gz
- Upload date:
- Size: 113.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4617a8121d804ac40d3f603b8ad2e8666a1e1365c571fcdf6202e13248bde103
|
|
| MD5 |
164593a3a6e916ec407a7e1214d76484
|
|
| BLAKE2b-256 |
6b9f5c8dcd345a416baa7df2a527a5118d434c19ed261691eb2db81b881ac437
|
Provenance
The following attestation bundles were made for robopilot-1.14.0.tar.gz:
Publisher:
publish.yml on J1angJJ/RoboPilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robopilot-1.14.0.tar.gz -
Subject digest:
4617a8121d804ac40d3f603b8ad2e8666a1e1365c571fcdf6202e13248bde103 - Sigstore transparency entry: 1524649323
- Sigstore integration time:
-
Permalink:
J1angJJ/RoboPilot@f31ab57b52a13a4cf3af712be0018bf43d8efd67 -
Branch / Tag:
refs/tags/v1.14.0 - Owner: https://github.com/J1angJJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f31ab57b52a13a4cf3af712be0018bf43d8efd67 -
Trigger Event:
release
-
Statement type:
File details
Details for the file robopilot-1.14.0-py3-none-any.whl.
File metadata
- Download URL: robopilot-1.14.0-py3-none-any.whl
- Upload date:
- Size: 110.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90679c2c9d9ca91c3d26a05257d192eaf748668abe1554cfde0669d9e33d33a2
|
|
| MD5 |
a586c01bd1632aae9f2728def6b66a76
|
|
| BLAKE2b-256 |
dbcef571a8dd54500cff1a515aea06c3c7e6c791a863a49fbc62a4580f0ec717
|
Provenance
The following attestation bundles were made for robopilot-1.14.0-py3-none-any.whl:
Publisher:
publish.yml on J1angJJ/RoboPilot
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
robopilot-1.14.0-py3-none-any.whl -
Subject digest:
90679c2c9d9ca91c3d26a05257d192eaf748668abe1554cfde0669d9e33d33a2 - Sigstore transparency entry: 1524649364
- Sigstore integration time:
-
Permalink:
J1angJJ/RoboPilot@f31ab57b52a13a4cf3af712be0018bf43d8efd67 -
Branch / Tag:
refs/tags/v1.14.0 - Owner: https://github.com/J1angJJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@f31ab57b52a13a4cf3af712be0018bf43d8efd67 -
Trigger Event:
release
-
Statement type: