UNCLASSIFIED
UNCLASSIFIED

GPS-Denied Navigator

Nav Core · works offline · every number below is computed on this device and explained under “How it works”.

Where am I

No session
Start a session in the Course tab.

Start / resume

Planned route

Map (offline, no tiles needed)

Estimate + 95% ellipseRouteKnown pointsFixes appliedRejected

Next best fix

Start a session to see recommendations.

Automatic (phone sensors)

Counts your steps and reads your heading. Hold the phone flat in front of you, top pointing where you walk. The navigator learns your stride and compass error from every fix.

Stride calibration

Manual leg (compass + pace count)

Sight a known point with the camera

Point the camera at a known landmark. Green markers show where known points SHOULD be from the current estimate. Tap the landmark itself. Two or more landmarks about 60–120° apart give a position. One landmark plus a range also works.

Range by known height

Resection from collected sightings

None collected.

Calibrate

Compass: center the crosshair on the Sun (use a filter, or just its glare edge) or on Polaris, then press. Field of view: tap two known points in one frame from a known position.

Polaris — latitude & true north

Star / Sun fix

Sky now (from current estimate)

Add a known point

Share & sync

Known points on this device

Every input and what the navigator did with it

Self-test (runs on this device, offline)

Recomputes 38 U.S. Naval Observatory almanac values and known-answer geometry checks. Full measured results: docs/navcore/PROOF.md; server copy: /api/navcore/selftest.

How this navigator works

One estimate of where you are, with an honest error ellipse. Walking moves it and grows the ellipse. Every sighting of a known point, every star or Polaris line, and every map/terrain fix pulls it toward the truth and shrinks the ellipse, weighted by how good that observation is. It also learns your compass error and your stride length from those fixes. If an observation doesn't fit, it's rejected and shown in the Log. It is never silently accepted. The navigator never resets itself; only an operator can, and that is logged too.

Evidence labels: OBSERVED = a real measurement reduced by the math below. MODELED = dead reckoning only, no fix yet. SYNTHETIC = demo data, never used here.

API for other systems: /api/navcore/contract · Source: shared/navcore/ · Docs: docs/navcore/README.md

PRESENCE ✓
⚠ SANDBOX / TRAINING MODE — Live read-only data. Write commands are inhibited (train as you fight, missile button safed).