You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+97-58Lines changed: 97 additions & 58 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,15 @@
1
1
# RPO Toolkit
2
2
3
-
RPO Toolkit is a Rust astrodynamics stack for spacecraft rendezvous and proximity operations that combines a browser-deployable analytical engine for real-time mission design with a nyx-space-backed numerical engine for full-physics validation and Monte Carlo analysis.
3
+
RPO Toolkit is a paper-traceable implementation of spacecraft rendezvous and proximity-operations mission design in Rust. Every algorithm — quasi-nonsingular ROE, J2 and DMF-drag analytical STMs, e/i-separation passive safety, null-space-projected formation design, Brent-refined closest-approach — cites its source equation (Koenig 2017, D'Amico 2010, Meeus) and is validated against nyx-space full-physics propagation to the meter.
4
+
5
+
The workspace is split into two engines with a compile-time license boundary: a microsecond, browser-deployable analytical core (MIT/Apache) and a full-physics numerical engine (AGPL, via nyx-space) for Lambert transfers, validation, and Monte Carlo. The same mission designer that plans a formation in a browser tab runs Monte Carlo on a server.
6
+
7
+
## Who this is for
8
+
9
+
-**Formation-flying and proximity-ops researchers** — paper-traceable implementations of quasi-nonsingular ROE methods (Koenig 2017, D'Amico 2010) with equation-level provenance and full-physics validation.
10
+
-**Rust and frontend engineers building interactive mission-design tools** — microsecond analytical planning in the browser via WASM and full-physics Monte Carlo on the server, both from the same code.
11
+
12
+
This is a **ground-based mission-design assistant for human analysts** — interactive, advisory, dual-plan — not an autonomous flight-software stack. See _Formation Design_ below for the distinction.
cargo test# 619 tests across 5 crates (587 + 32 ignored full-physics; 619 total with -- --include-ignored)
39
+
cargo test# 619 tests across 5 crates (see Testing below)
31
40
```
32
41
33
42
Run an example mission (CLI):
@@ -46,6 +55,8 @@ wasm-pack build rpo-wasm --target web
46
55
47
56
See [CLI Reference](docs/CLI.md) for all commands and flags.
48
57
58
+
**Full-physics prerequisites.** Running `validate`, `mc`, or any test with `--include-ignored` downloads ~50 MB of ANISE kernels (DE440s, PCK) on first use. Analytical-only operations (`mission` without `--auto-drag`, all WASM functions) have no external dependencies.
The toolkit implements the quasi-nonsingular ROE formation-design vocabulary from D'Amico 2010 — e/i vector separation, null-space waypoint enrichment, perch enrichment, transit monitoring, free-drift abort — as an advisory layer with accept/dismiss affordance. Short maneuver legs naturally produce poor intermediate e/i geometry even when 3D keep-out is fully satisfied, so the tool enforces what must not be violated (keep-out distance, checked at every trajectory sample) and evaluates what requires analyst judgment (passive safety, advisory cards with explicit opt-in).
108
+
109
+
See [docs/formation-design.md](docs/formation-design.md) for primitive-by-primitive detail and the D'Amico equation-to-function mapping.
@@ -106,20 +134,29 @@ Criterion HTML reports are generated in `target/criterion/`.
106
134
107
135
## Validated Accuracy
108
136
109
-
Validated against nyx-space full-physics propagation (US Std Atm 1976, SRP with eclipses, Sun/Moon third-body) for LEO orbits (~400 km, ~52 deg inclination), ~300-400 m-scale formations.
137
+
Validated against nyx-space full-physics propagation — J2 harmonics, US Std Atm 1976 drag, SRP with conical eclipses, Sun/Moon third-body perturbations — for LEO orbits (~400 km altitude, ~51.6° inclination, ISS-class) with ~300 m formation separations.
138
+
139
+
The table below shows **actual observed errors** from running the bundled validation example — reproducible with one command:
| J2 STM, 3 legs, ~4.5 orbits (no drag) |**58 m**| 32 m | 36 m |
149
+
| J2 + DMF-drag STM, 3 legs (auto-drag) | 152 m | 68 m | 79 m |
150
+
| Eclipse Sun direction (Meeus vs ANISE DE440s) |**0.005°**| 0.005° | — |
151
+
| Eclipse entry/exit timing | 83 s | 32 s | — |
120
152
121
-
-`cargo run -p rpo-cli -- validate --input examples/validate.json`
122
-
-`cargo run -p rpo-cli -- validate --input examples/validate.json --auto-drag`
153
+
Velocity error stays under 40 mm/s (no-drag) and 55 mm/s (auto-drag) across the same run. Per-leg growth under drag: position RMS grows roughly 3× from leg 1 to leg 3 (41 m → 92 m → 138 m) as DMF linearization accumulates — a known linear-regime characteristic, not a bug.
154
+
155
+
**Test-suite gates (conservative pass/fail with ~10× margin over observed).** The regression tests enforce `FULL_PHYSICS_SINGLE_LEG_POS_TOL_KM = 500 m`, `DRAG_STM_VS_NYX_POS_TOL_KM = 1 km`, and `FULL_PHYSICS_MULTI_LEG_POS_TOL_KM = 3 km` (all in `rpo-nyx/src/validation/trajectory.rs`); eclipse gates are `SUN_DIRECTION_VALIDATION_TOL_RAD = 3.5e-4 rad` (≈ 0.02°) and `ECLIPSE_TIMING_VALIDATION_TOL_S = 120 s` (`rpo-core/src/constants.rs`).
156
+
157
+
**Per-component ROE validation against Koenig Table 4 Case 1.** The J2 STM is independently validated against the per-component error bounds in Koenig et al. (2017), Table 4 Case 1. Each quasi-nonsingular ROE component (`δa`, `δλ`, `δex`, `δey`, `δix`, `δiy`) is bounded within ~10× of the published errors — e.g. `KOENIG_T4C1_DA_BOUND_M = 385 m`, `KOENIG_T4C1_DIX_BOUND_M = 9 m`. See the `koenig_table4_j2_stm_accuracy_case1` test in `rpo-nyx/tests/regression_tests.rs`.
158
+
159
+
**Outside the validated regime:** GEO, HEO, highly eccentric orbits, and formations outside the ROE-linear regime (`δr/r > 0.5%`) are not currently validated against full physics. See _Status & Roadmap_.
123
160
124
161
## Library Usage
125
162
@@ -129,12 +166,12 @@ For the full pipeline (classify -> Lambert -> waypoints -> covariance -> eclipse
Every module traces to specific equations in these papers; see inline doc-comments for mappings.
247
281
248
-
## Roadmap
282
+
## Status & Roadmap
283
+
284
+
Solo-authored, actively developed, research-grade Rust. Not on `crates.io` — build from source at the workspace root. Validated for LEO ISS-class orbits (~400 km altitude, ~51.6° inclination) with ~300–400 m formation separations; other regimes are on the roadmap below.
285
+
286
+
**In progress / next:**
249
287
250
-
1.**R3F frontend** -- React Three Fiber 3D visualization: orbit arcs, RIC-frame relative motion, maneuver arrows, eclipse timeline, covariance ellipses.
1.**React Three Fiber frontend** — interactive 3D mission designer running in the browser via the WASM analytical engine, WebSocket to `rpo-api` for nyx-dependent operations (Lambert, validation, Monte Carlo). Analytical ops stay sub-frame; numerical ops stream progress.
289
+
2.**Drag-aware formation design** — DMF-rate feedback into waypoint null-space enrichment so drift compensation happens upstream of the analyst advisory rather than as a post-hoc warning.
290
+
3.**Extended orbit regimes** — GEO and HEO validation; appropriate STM extensions; finite-burn modeling for maneuvers that cannot be treated as impulsive.
0 commit comments