Pathfinder · results up to 13 October 2026

How far off is the drone after GPS is lost?

On the same test flight, 5 minutes after GPS was jammed: the autopilot alone was 2,366 m off, Pathfinder was 85 m off (simulator, 1 flight, run twice).

Across 8 test flights, the autopilot alone is typically about 3.9 km off after 5 minutes. Over 24 flights, Pathfinder (physics only) is typically 20 m off; that row is in the table below.

Simulator results, not a real aircraft

Pages: Jury deck · Results explorer (deck slide 26) · Flight simulator · Results · Demo · Start here · How we test · Index · 14 Oct day summary

Results at a glance (measured (sim))

Pathfinder means physics only: jam detection, drag model and learned wind, the best system measured so far. The speed AI is the learning part; it joins the headline only once it beats physics only (D-N3-LEAD-1).

ResultNumberDetail
Pathfinder (physics only) vs ArduPilot alone3.37 % vs 84.8 %error as % of distance flown, at 10 km; 59 flights; benchmark still running. Pathfinder + speed AI v3: 4.72 % (59 flights); with the quad speed AI: not flown yet
Error 1, 2, 5 min after the jam5.5 / 3.1 / 5.8 mmedian, 60 flights, 18 reach 5 min; ArduPilot alone 550 / 1,152 / 2,986 m
Speed AI, the learning part11 % lower errorquadcopter speed AI vs mixed-airframe speed AI: 403 vs 455 m median error 2 min after the jam, speed AI alone (offline), 8 held-out flights; flying in the benchmark now
Jam and spoof detection31 of 31 spoofs caughtslowest 2.25 s, limit 5 s; jam: 20 of 24 jammed missions kept flying (pass mark 23); false-alarm rate not measured yet
Image place recognition, prototype2.0 m median fix errorp95 4.8 m, 96 synthetic frames, local search
Demo routes7 routes, 7 recordedrecordings flown with Pathfinder + speed AI v3; live flights default to Pathfinder (physics only)

How far off, minute by minute

The gap between where the drone thinks it is and where it really is, counted from the moment GPS was jammed. Smaller is better.

What was testedAfter 1 minAfter 2 minAfter 5 minPer minute
Autopilot aloneWhat a normal drone does today (ArduPilot).Measured (sim): typical result of 8 test flights.1,443 m2,059 m3,852 m770 m
Our speed model aloneA trained model that guesses the drone's speed from its own sensors.Measured (sim): typical result of the same 8 test flights.305 m547 m1,541 m308 m
Pathfinder (physics + speed AI)Jam detection, drag model, learned wind, plus a neural-network speed estimate, steering the autopilot.Measured (sim). The autopilot was flown on the very same flight. The headline now quotes Pathfinder (physics only), the best measured system (D-N3-LEAD-1).One test flight, run twice. Same result both times.3 m5 m85 m17 m
Pathfinder (physics only)Jam detection, drag model and learned wind, no AI, steering the autopilot. The best measured system.Measured (sim): typical result of 24 flights in the simulator, 13 Oct.3 m4 m20 m4 m
Pathfinder (physics + drift-correcting AI)Measured (sim): typical result of 24 flights in the simulator, 13 Oct, with the AI steering the drone; all 24 reached 5 min. About 6x worse than physics only at 2 min. Off by default.Estimate from replaying recorded data, not flown: 47.5 m at 2 min vs 78.4 m for physics only. That win did not carry over to real flying in the simulator.11 m25 m105 m21 m
Pathfinder (physics + speed AI + drift-correcting AI)Measured (sim): typical result of 24 flights in the simulator, 13 Oct, with the AI steering the drone; all 24 reached 5 min. Also about 6x worse than physics only at 2 min (4 m). Off by default.Offline estimate: not replayed offline.13 m24 m103 m21 m

The two flown Pathfinder systems, as formulas

Pathfinder (physics only) · jam detection, drag model, learned wind
\hat p=\textstyle\int v\,dt,\quad v=C(q)\,u+w,\quad \bar f_{xy}=-k\,u-k_q\,u\lvert u\rvert,\quad \text{GPS used only if } d<6
  • \hat p where Pathfinder thinks the drone is
  • v speed and direction over the ground
  • u speed through the air, along the drone's own axes
  • w the wind, learned while GPS was good
  • C(q) the drone's tilt and heading (turns body axes into north-east-down)
  • \bar f_{xy} forward and sideways push the accelerometer feels; thrust only pushes up the body, so this is air drag
  • k,\;k_q drag coefficients fitted to the quad (linear and squared)
  • d how many standard deviations a GPS fix sits from the estimate
Pathfinder (physics + speed AI) · jam detection, drag model, learned wind, plus a neural-network speed estimate
\text{physics only}\;+\;z_{\text{AI}}=v-w+\nu,\quad \nu\sim\mathcal N(0,R_{\text{AI}}),\quad R_{\text{AI}}=22.9\times294\,I\;(\text{m/s})^2
  • z_{\text{AI}} the network's speed-through-the-air estimate
  • \nu its error, assumed random
  • R_{\text{AI}} how noisy the filter assumes it is: 4.8 m/s, counted as one reading per 29.4 s
  • Read from crates/pathfinder-core: eskf.rs:136-167, drag.rs:6-82, integrity.rs:166-181, learned.rs:290-327. Full derivation: docs/pitch/how-it-works.html slides 8-10.

The same numbers, drawn

Each gridline is ten times the one before. A bar one gridline shorter means ten times closer to the truth.

Night 3: quad results (measured (sim))

Generated from docs/night/*.json by docs/pitch/build_night3.py; a pending row has no result yet.

ResultStatusNumbers
Results at a glancereadyPathfinder (physics only) vs ArduPilot alone: 3.37 % vs 84.8 % | Error 1, 2, 5 min after the jam: 5.5 / 3.1 / 5.8 m | Speed AI, the learning part: 11 % lower error | Jam and spoof detection: 31 of 31 spoofs caught | Image place recognition, prototype: 2.0 m median fix error | Demo routes: 7 routes, 7 recorded
Jam and spoof detection: resultsready31 of 31 spoofs caught within 2.25 s (limit 5 s), slowest switch 2.75 s; false alarms not measured; 5 re-trusts, fixed, not re-flown
Master one airframe firstreadyr1-quad341-vs-mixed: mixed 455.1 m vs quad 537.0 m, mixed wins; r2-quad-manifest-vs-mixed: mixed 455.1 m vs quad-manifest 403.2 m, quad-manifest wins; r3-quad-manifest-wd-vs-quad-manifest: quad-manifest 403.2 m vs quad-manifest-wd 413.2 m, quad-manifest wins; r4-quad-all-vs-quad-manifest: quad-manifest 403.2 m vs quad-all 421.5 m, quad-manifest wins; r4-quad-all-vs-quad-manifest-4seeds: quad-manifest 403.2 m vs quad-all 426.5 m, quad-manifest wins (t+120 s, 8 held-out)
Quad error every 30 s after the jamreadyArduPilot alone: 30 s 237.1 m, 60 s 549.7 m, 90 s 859.2 m, 120 s 1152.2 m, 150 s 1439.2 m, 180 s 1775.7 m, 210 s 2087.0 m, 240 s 2305.6 m, 270 s 2610.8 m, 300 s 2985.7 m; Pathfinder (physics only): 30 s 4.0 m, 60 s 5.5 m, 90 s 3.0 m, 120 s 3.1 m, 150 s 3.6 m, 180 s 4.6 m, 210 s 5.4 m, 240 s 8.0 m, 270 s 6.7 m, 300 s 5.8 m; Pathfinder (physics + speed AI) (velocity-v3): 30 s 3.9 m, 60 s 5.0 m, 90 s 2.7 m, 120 s 3.0 m, 150 s 3.4 m, 180 s 4.2 m, 210 s 4.8 m, 240 s 6.6 m, 270 s 3.1 m, 300 s 3.5 m; Pathfinder (physics + drift-correcting AI): 30 s 14.6 m, 60 s 31.5 m, 90 s 30.6 m, 120 s 41.5 m, 150 s 55.4 m, 180 s 70.0 m, 210 s 89.6 m, 240 s 115.0 m, 270 s 137.0 m, 300 s 155.9 m; Pathfinder (physics + speed AI + drift-correcting AI) (velocity-v3): 30 s not flown yet, 60 s not flown yet, 90 s not flown yet, 120 s not flown yet, 150 s not flown yet, 180 s not flown yet, 210 s not flown yet, 240 s not flown yet, 270 s not flown yet, 300 s not flown yet; Pathfinder (physics + drift-correcting AI, gated): 30 s not flown yet, 60 s not flown yet, 90 s not flown yet, 120 s not flown yet, 150 s not flown yet, 180 s not flown yet, 210 s not flown yet, 240 s not flown yet, 270 s not flown yet, 300 s not flown yet; Pathfinder (physics + terrain matching): 30 s not flown yet, 60 s not flown yet, 90 s not flown yet, 120 s not flown yet, 150 s not flown yet, 180 s not flown yet, 210 s not flown yet, 240 s not flown yet, 270 s not flown yet, 300 s not flown yet; Pathfinder (physics + speed AI) (velocity-quad-night3): 30 s 3.9 m, 60 s 5.5 m, 90 s 2.8 m, 120 s 2.8 m, 150 s 3.6 m, 180 s 4.1 m, 210 s 4.5 m, 240 s 6.0 m, 270 s 6.7 m, 300 s 6.1 m; Pathfinder (physics + speed AI + drift-correcting AI) (velocity-quad-night3): 30 s not flown yet, 60 s not flown yet, 90 s not flown yet, 120 s not flown yet, 150 s not flown yet, 180 s not flown yet, 210 s not flown yet, 240 s not flown yet, 270 s not flown yet, 300 s not flown yet
Quad benchmark: error as % of distancepartialpartial: 297 of 540 flights, at 14:05. Pending (not flown yet): Pathfinder (physics + terrain matching), Pathfinder (physics + speed AI + drift-correcting AI) (velocity-quad-night3). ArduPilot alone: 0.5 km 86.5 %, 1.0 km 92.8 %, 1.5 km 94.4 %, 2.0 km 95.0 %, 2.5 km 95.2 %, 3.0 km 95.3 %, 3.5 km 94.5 %, 4.0 km 94.0 %, 4.5 km 93.4 %, 5.0 km 91.9 %, 5.5 km 90.8 %, 6.0 km 89.7 %, 6.5 km 89.7 %, 7.0 km 87.3 %, 7.5 km 87.0 %, 8.0 km 86.8 %, 8.5 km 86.5 %, 9.0 km 85.6 %, 9.5 km 85.4 %, 10.0 km 84.8 %; Pathfinder (physics only): 0.5 km 2.9 %, 1.0 km 2.8 %, 1.5 km 2.7 %, 2.0 km 2.7 %, 2.5 km 3.2 %, 3.0 km 3.1 %, 3.5 km 3.3 %, 4.0 km 3.1 %, 4.5 km 3.1 %, 5.0 km 3.1 %, 5.5 km 3.1 %, 6.0 km 3.4 %, 6.5 km 3.1 %, 7.0 km 3.1 %, 7.5 km 3.1 %, 8.0 km 3.2 %, 8.5 km 3.2 %, 9.0 km 3.2 %, 9.5 km 3.1 %, 10.0 km 3.4 %; Pathfinder (physics + speed AI) (velocity-v3): 0.5 km 2.7 %, 1.0 km 2.5 %, 1.5 km 2.5 %, 2.0 km 2.6 %, 2.5 km 3.2 %, 3.0 km 3.2 %, 3.5 km 3.4 %, 4.0 km 3.2 %, 4.5 km 3.3 %, 5.0 km 3.4 %, 5.5 km 3.5 %, 6.0 km 3.5 %, 6.5 km 3.3 %, 7.0 km 3.6 %, 7.5 km 3.6 %, 8.0 km 3.5 %, 8.5 km 3.5 %, 9.0 km 3.5 %, 9.5 km 3.9 %, 10.0 km 4.7 %; Pathfinder (physics + drift-correcting AI): 0.5 km 6.6 %, 1.0 km 7.1 %, 1.5 km 7.2 %, 2.0 km 6.8 %, 2.5 km 7.5 %, 3.0 km 7.1 %, 3.5 km 7.9 %, 4.0 km 8.6 %, 4.5 km 8.6 %, 5.0 km 9.2 %, 5.5 km 10.6 %, 6.0 km 11.2 %, 6.5 km 11.8 %, 7.0 km 11.8 %, 7.5 km 11.4 %, 8.0 km 10.9 %, 8.5 km 10.3 %, 9.0 km 10.0 %, 9.5 km 9.8 %, 10.0 km 11.9 %; Pathfinder (physics + speed AI + drift-correcting AI) (velocity-v3): 0.5 km 7.3 %, 1.0 km 7.5 %, 1.5 km 7.7 %, 2.0 km 8.5 %, 2.5 km 8.7 %, 3.0 km 8.2 %, 3.5 km 8.7 %, 4.0 km 9.2 %, 4.5 km 9.8 %, 5.0 km 10.4 %, 5.5 km 11.1 %, 6.0 km 11.8 %, 6.5 km 12.6 %, 7.0 km 16.0 %, 7.5 km 16.4 %, 8.0 km 17.0 %, 8.5 km 17.4 %, 9.0 km 17.8 %, 9.5 km 18.2 %, 10.0 km 18.6 %; Pathfinder (physics + drift-correcting AI, gated): 0.5 km 7.8 %, 1.0 km 9.0 %, 1.5 km 10.0 %, 2.0 km 10.7 %, 2.5 km 11.0 %, 3.0 km 11.2 %, 3.5 km 11.4 %, 4.0 km 11.6 %, 4.5 km 11.8 %, 5.0 km 11.9 %, 5.5 km 12.2 %, 6.0 km 12.5 %, 6.5 km 12.9 %, 7.0 km 12.3 %, 7.5 km 12.6 %, 8.0 km 13.1 %, 8.5 km 13.8 %, 9.0 km 14.3 %, 9.5 km 14.7 %, 10.0 km 14.8 %; Pathfinder (physics + speed AI) (velocity-quad-night3): 0.5 km 2.7 %, 1.0 km 2.6 %, 1.5 km 3.0 %, 2.0 km 3.0 %, 2.5 km 3.3 %, 3.0 km 3.2 %, 3.5 km 3.3 %, 4.0 km 3.3 %, 4.5 km 3.3 %, 5.0 km 3.3 %, 5.5 km 3.7 %, 6.0 km 4.6 %, 6.5 km not flown yet, 7.0 km not flown yet, 7.5 km not flown yet, 8.0 km not flown yet, 8.5 km not flown yet, 9.0 km not flown yet, 9.5 km not flown yet, 10.0 km not flown yet; pending (not flown yet): Pathfinder (physics + terrain matching), Pathfinder (physics + speed AI + drift-correcting AI) (velocity-quad-night3)
Quad-only model vs mixed-airframe modelreadyr1-quad341-vs-mixed: mixed 455.1 m vs quad 537.0 m, mixed wins; r2-quad-manifest-vs-mixed: mixed 455.1 m vs quad-manifest 403.2 m, quad-manifest wins; r3-quad-manifest-wd-vs-quad-manifest: quad-manifest 403.2 m vs quad-manifest-wd 413.2 m, quad-manifest wins; r4-quad-all-vs-quad-manifest: quad-manifest 403.2 m vs quad-all 421.5 m, quad-manifest wins; r4-quad-all-vs-quad-manifest-4seeds: quad-manifest 403.2 m vs quad-all 426.5 m, quad-manifest wins (t+120 s, 8 held-out)
Image place recognition, prototypereadyfix error median 2.0 m, p95 4.8 m, match rate 100.0 %, 96 queries; tiles: CC BY 4.0 (Contains modified Copernicus Sentinel data 2016); Sentinel-2 cloudless 2016 by EOX IT Services GmbH (s2maps.eu), WMTS layer s2cloudless_3857
Terrain matching, second tryreadyroute 1010 t+60 s: terrain off 6.0 vs experimental-terrain 5.1 m; route 1010 t+120 s: terrain off 12.3 vs experimental-terrain 11.1 m; route 1010 t+300 s: terrain off 175.1 vs experimental-terrain 168.1 m; route 1011 t+60 s: terrain off 1.5 vs experimental-terrain 1.1 m; route 1011 t+120 s: terrain off 2.4 vs experimental-terrain 2.1 m; route 1011 t+300 s: terrain off 18.7 vs experimental-terrain 308.8 m; route 1012 t+60 s: terrain off 1.7 vs experimental-terrain 2.8 m; route 1012 t+120 s: terrain off 2.4 vs experimental-terrain 3.4 m; route 1012 t+300 s: terrain off 6.9 vs experimental-terrain 187.7 m
Hexa and octa: fine-tuned vs mixedreadyhexa t+60 s: mixed v3 (all frames) 283.2 vs fine-tuned per frame (median of seeds) 283.2 m; hexa t+120 s: mixed v3 (all frames) 496.8 vs fine-tuned per frame (median of seeds) 496.8 m; hexa t+300 s: mixed v3 (all frames) 1293.5 vs fine-tuned per frame (median of seeds) 1293.5 m; octa t+60 s: mixed v3 (all frames) 334.4 vs fine-tuned per frame (median of seeds) 334.4 m; octa t+120 s: mixed v3 (all frames) 630.8 vs fine-tuned per frame (median of seeds) 630.8 m; octa t+300 s: mixed v3 (all frames) 1656.3 vs fine-tuned per frame (median of seeds) 1656.3 m
Learning in flight while GPS is goodreadyheldout-jam-1000: best 2.1 vs experimental-inflight-adapt 1.9 m; heldout-jam-1003: best 2.6 vs experimental-inflight-adapt 3.6 m; heldout-jam-1006: best 2.2 vs experimental-inflight-adapt 2.1 m; heldout-jam-1009: best 8.6 vs experimental-inflight-adapt 8.3 m; heldout-jam-1012: best 3.0 vs experimental-inflight-adapt 4.3 m; heldout-jam-1015: best 6.3 vs experimental-inflight-adapt 6.0 m; heldout-jam-1018: best 2.2 vs experimental-inflight-adapt 2.8 m; heldout-jam-1021: best 2.7 vs experimental-inflight-adapt 3.0 m
What we tried that lostreadyQuad round r1-quad341-vs-mixed: 455.1 vs 537.0 m; Quad round r3-quad-manifest-wd-vs-quad-manifest: 403.2 vs 413.2 m; Quad round r4-quad-all-vs-quad-manifest: 403.2 vs 421.5 m; Quad round r4-quad-all-vs-quad-manifest-4seeds: 403.2 vs 426.5 m; Terrain matching, second try (sigma-ratio-4 gate) (t+300 s): 18.7 vs 187.7 m; Hexa and octa: fine-tuned vs mixed: 563.8 vs 563.8 m; Learning in flight while GPS is good (quad, t+120 s, flown): 2.6 vs 3.3 m; Speed AI round 4 (997 flights): 403.2 vs 421.5 m; Speed-scale calibration (2 cycles): 77.7 vs 77.7 m; Last-layer tune per flight, flown: 2.45 vs 3.32 m

Where the drift comes from

Wind and drag cause most drift; heading barely matters. Each physics-only flight's drift, split by source, over 64 replays. measured (sim)

Ranked share of drift at 1, 2 and 5 minutes over 64 physics-only replays; numbers in the table below.

Tap the chart to open it full size.

Source, rankedAfter 1 minAfter 2 minAfter 5 min
1. Wind estimate error3.8 m8.8 m14.1 m
2. Drag coefficient, mass or accelerometer bias (one item)-0.2 m0.9 m12.6 m
3. Unexplained-1.7 m-4.0 m9.1 m
4. Speed AI error0.14 m0.20 m1.07 m
5. Heading0.7 m0.3 m-1.9 m
Median total2.0 m4.9 m18.6 m

Progress, day by day

Every milestone from 11 to 13 October, with the losses left in. Each number says how it was measured.

MilestoneNumberKind
11 October 00:58 Core passes on Linux, ARM, WindowsAC-08 greenmeasured (code tests)
11 October 01:59 First jammed flights in the simulatorbuilt
11 October 02:24 Same answer on every replayAC-09: 1,463 rows identicalmeasured (code tests)
11 October 12:46 Runaway found and fixed3,135 to 29.6 m at 5 minmeasured (sim)
12 October Proof flight, flown twice85 m vs ArduPilot 2,366 mmeasured (sim)
12 October Fake GPS caught, 31 of 31flagged in 0.09-2.25 smeasured (sim)
12 October Mission test after fixesAC-01: 11 to 20 of 24measured (sim)
13 October 00:13 All four acceptance tests in one run1,086 s; AC-04 passesmeasured (sim)
13 October 01:28 Drift ranked by sourcewind first: 14.1 m at 5 minmeasured (sim)
13 October 02:16 Re-flown fixes, one flight132 to 15 m at 5 minmeasured (sim)
13 October 15:05 Model 2 flown in the looplost: 24.59 vs 3.99 mmeasured (sim)
13 October 16:25 Replay: every system on one mapbuilt
13 October 18:12 Terrain matching, offline200.4 to 128.1 m at 5 minoffline estimate
13 October 18:32 One branch, 11 presetsbuilt
13 October 18:32 Terrain in the loop, 1 flightlost: 333.7 vs 172.6 mmeasured (sim)
13 October 19:37 Control Room: New run in 5 stepsbuilt
13 October 19:46 Drift-AI gate, replayedlost: 3.30 vs 3.11 mmeasured (sim)

Every try, against Pathfinder (physics only)

Same flights, physics only as the reference. Most tries lost; each sits behind an off switch, so the default did not change.

TryTryPhysics onlyKindResult
Speed AI, fast run 2 (1 min)1.97 m2.14 mmeasured (sim)won
Speed AI, fast run 2 (2 min)3.71 m3.31 mmeasured (sim)lost
Q1 radius + adapter fix (2 min)3.46 m2.75 mmeasured (sim)lost
Q1 radius + adapter fix (5 min)17.59 m18.78 mmeasured (sim)won
Q2 touchdown clamp (2 min)3.66 m3.35 mmeasured (sim)lost
Drag learning in flight (2 min)159.6 m80.4 mmeasured (sim)lost
Model 2 drift AI, offline (2 min)47.5 m78.4 moffline estimatewon
Model 2 drift AI, Q3 in loop (2 min)24.59 m3.99 mmeasured (sim)lost
Drift-AI gate, best, replay (2 min)3.3 m3.11 mmeasured (sim)lost
Terrain fixes, offline (5 min)128.1 m200.4 moffline estimatewon
Terrain fixes, in the loop (5 min)333.7 m172.6 mmeasured (sim)lost

How it plugs into a drone

  1. pathfinderd runs on a companion computer beside a stock ArduPilot flight controller (ArduCopter 4.6.3 in our tests).
  2. It reads HIGHRES_IMU at 200 Hz, SCALED_IMU, ATTITUDE, GPS_RAW_INT, SCALED_PRESSURE over MAVLink.
  3. It sends ODOMETRY at 20 Hz as EKF3 external nav, or GPS_INPUT as a second GPS.
  4. config/presets.json: 11 presets, default best. Pick with --preset, PATHFINDER_PRESET or the Control Room Setup picker. Every switch off = byte-identical main. Two more wait on their branches: experimental-terrain and experimental-drift-ai-gated.
  5. The Control Room at localhost:8790 flies, re-flies, trains, tests, replays and presents.

Integration is shown in the simulator only. No real aircraft has run Pathfinder yet; real flight logs are our next step.

Watch the demo

Flight heldout-jam-1002: the true path and every system's estimate on one map, measured (sim).

What is inside Pathfinder

The "speed model alone" row is the speed model box on its own. Each box says what goes in and what comes out. The "Pathfinder (physics + speed AI)" row is every box below, running together on the drone.

Today most of Pathfinder's accuracy comes from the motion sensors and the air-resistance model. The speed model counts for little; we have not measured exactly how little. Switching it off made about the same result.

What this means

  1. Without GPS, today's autopilot gets lost fast: 1.4 km off after one minute, 3.9 km after five.
  2. Our speed model alone cuts that to about 40%: 1.5 km off after five minutes. Better, but not good enough to fly on.
  3. With all parts together, the drone stayed within 85 m for five minutes and kept flying its mission. That was one flight in a simulator. The 24-flight tests below decide whether it holds up.

Tests that decide whether it is done

A framework: position sources plug in

Every source enters the filter the same way: a measurement and its uncertainty. Pathfinder takes care of jam detection, fusion, the error radius, presets, the Control Room and the tests.

Today each source is one fuse call on the filter (crates/pathfinder-core/src/estimator.rs:11). One plug-in interface is planned.

Details and sources

Simulator

Every number is measured in simulation: ArduCopter 4.6.3 in the ArduPilot simulator (SITL). None comes from a real aircraft. Task: DNAV-1 "GPS-denied navigation".

How the rows were measured

  • Autopilot alone and speed model alone: medians of 8 held-out jammed flights (flights the model never trained on; quad and octa airframes), GPS jammed at 120 s. Speed model = Velocity Predictor v3. 2026-10-learned-v3-heldout.md
  • Pathfinder 3 / 5 / 85 m and same-flight ArduPilot 866 / 1,234 / 2,366 m: flight heldout-jam-1000, 2 of 2 runs identical. 2026-10-12-morning-proof.md
  • Same figures as the jury deck: deck-data.json

Names in the code

  • Speed model = Velocity Predictor. Speed-model tuner = Predictor Adapter. Drone sensors = IMU (200 Hz), autopilot attitude, barometer, compass, motor outputs, GPS_RAW_INT. Position tracker = Position Estimator (accelerometer, gyro, compass, barometer, drag model; outputs an error radius). Switch = Navigator. GPS checker = GPS Integrity Monitor (Trusted / Suspect / Rejected). Position goes to ArduPilot over MAVLink.
  • D-68 "Trust schedule stays off": in the 12 Oct trust on/off runs on this flight, Pathfinder (physics only) was 127-129 m off at 5 minutes and physics + speed AI 132-138 m. 2026-10-12-trust-on-off-matrix.md · Pathfinder method in one page

Test ids

  • Acceptance re-run 14 October 16:09-16:40 (main 8343ad0, stopped at the deadline inside AC-01), measured (sim):
  • AC-01 "Mission continues": red, 1 pass of 12 flown (needs 95 % of 24); the 11 fails are ArduPilot EKF failsafe to LAND.
  • AC-02 "Less drift": not re-run today; last red, 13 October (20.55 vs 20.28 m at 5 min).
  • AC-03 "Honest radius": not re-run today; last red, 13 October (99.75 % inside the radius, band 90-98 %).
  • AC-04 "Spoofing rejected": not re-run today; last green, 13 October.
  • AC-05 "GPS return", AC-06 "Vehicle profile", AC-07 "Calibration helps": not re-run today; locked tests never run.
  • AC-08 "Cross-platform core": red today, the Windows (msvc) build and test failed; last green 12 October. AC-09 "Deterministic replay": green today.
  • Full table: docs/night/2026-10-14-day-summary.md, "Acceptance suite vs results".

This page

Source: docs/RESULTS.html on branch night/DNAV-1-pathfinder. The chart uses a log scale.