1// XNAV Lab.md
2// ---------------------------
3
4# XNAV Lab
5
6Private research infrastructure for autonomous spacecraft state estimation, starting with X-ray pulsar navigation — Rust geometry baselines, Kalman filters, and an independent Python reference lane.
7
8**TYPE:** Research / Systems
9**STATUS:** In Development
10**DEV:** http://localhost:5900
11**WORKSPACE:** ~/GitHub/xnav
12**GITHUB:** nikanjuri/xnav (private)
13
14---
15
16## FEATURES
17
18- Rust Phase 0 geometry baseline — synthetic sources to WLS position, clock bias, covariance, residuals
19- Phase 1 eight-state dynamic Kalman filter with Monte Carlo NEES/NIS consistency checks
20- Independent Python/NumPy reference lane that matches frozen Rust state and diagnostics
21- Public NICER Crab observation reproduction with PINT phasing and analytic-template TOA gates
22- Intentionally pre-product — validate physics and estimation before licensing or deployment decisions
23- No flight-navigation claims from current results
24
25---
26
27## TECHNOLOGIES
28
29- Rust (Cargo workspace, pinned toolchain)
30- Python (uv, NumPy, PINT)
31- Kalman filtering / weighted least squares
32
33---
34
35## NOTES
36
37XNAV Lab is research infrastructure for spacecraft state estimation, beginning with X-ray pulsar navigation. The work sits below the product layer on purpose: reproduce physics baselines, test methods under control, validate through papers and review, then decide licensing and deployment.
38
39### Two verified lanes
40
41The Rust geometry baseline turns synthetic source directions and delay observations into a weighted least-squares estimate with 3D position, clock bias, covariance, and residuals. An independent Python reference matches that frozen state with a separate NumPy/SVD implementation and reproduces public NICER Crab timing profiles with PINT.
42
43### Dynamic estimation
44
45A Phase 1 eight-state Kalman baseline is Monte Carlo consistent (NEES/NIS) and agrees with an independent NumPy filter across epochs. Analytic-template gates recover relative TOAs on segmented data; none of these results is a flight-navigation claim.
46
47### Local tooling
48
49`cargo run -p xnav-cli -- demo` exercises the Rust lane; `uv`-backed pytest and compare scripts keep the Python reference honest. Local web tooling is reserved on port 5900.