3D Map Explorer relays NTRIP correction streams as RTCM3 straight to the aircraft over MAVLink for live RTK fixes, and post-processes the recorded trajectory against a base-station RINEX file to recover centimeter positions the live fix may have missed. Two paths to the same goal: survey-grade drone mapping.
The RtkService connects to one or more NTRIP casters, pulls the RTCM3 correction stream, and forwards it to the aircraft via MAVLink GPS_RTCM_DATA frames — reusing the command-send link the payload module established.
NtripSourceStore.// connect caster → relay RTCM3 to aircraft GET /api/rtk/status { "connected": true, "mountpoint": "BASE1", "liveLink": true, "forwarding": true } → GPS_RTCM_DATA frames sent → aircraft publishes RTK Fix
PPK reprocesses the aircraft's recorded trajectory against a base-station RINEX observation file to recover centimeter-accurate positions the live RTK fix may have missed — dropouts, float-only epochs, re-initialization. Phase 1 is an honest degrade: it loads the trajectory (from FlightLog), decodes the base-station RINEX header, and summarizes the existing fix quality so you know whether PPK would meaningfully help.
Aircraft trajectory read from FlightLogService — the same logs replay uses.
Base-station header parsed — station, approx position, observation types (L1/L2).
What fraction of epochs were Fixed vs Float — tells you if PPK is worth running.
Base-station position surfaced for quality control / bias checks.
Missing trajectory / unreadable RINEX → a result object with a clear status, never an exception.
Carrier-phase double-difference + LAMBDA ambiguity resolution is planned, not shipped.
| Capability | Endpoint | Notes |
|---|---|---|
| Capability discovery | GET /api/rtk/capabilities | RTK relay + PPK availability |
| List / get sources | GET /api/rtk/sources · /sources/{id} | Registered NTRIP casters |
| Add source | POST /api/rtk/sources | Mountpoint, creds, format |
| Update / delete | PUT · DELETE /api/rtk/sources/{id} | |
| Connect / disconnect | POST /api/rtk/connect/{id} · /disconnect | Start/stop RTCM relay |
| Status | GET /api/rtk/status | Connection + live-link + forwarding state |
| PPK post-process | POST /api/rtk/ppk | Trajectory + RINEX → fix-quality summary |
RTK relay reflects RtkService / NtripClient / RtcmForwarder; PPK reflects PpkService on commit fddb81f38 (feat/rtk-ppk-corrections). PPK Phase 1 is an honest degrade — trajectory + base position + fix-quality summary, not the full carrier-phase double-difference solution (planned Phase 2). Actual cm accuracy depends on base-station quality and rover GNSS hardware.
Live RTK relay over MAVLink today; PPK trajectory recovery — Phase-2 full carrier-phase math on the roadmap.