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 aircraftPages: Jury deck · Results explorer (deck slide 26) · Flight simulator · Results · Demo · Start here · How we test · Index · 14 Oct day summary
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).
| Result | Number | Detail |
|---|---|---|
| Pathfinder (physics only) vs ArduPilot alone | 3.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 jam | 5.5 / 3.1 / 5.8 m | median, 60 flights, 18 reach 5 min; ArduPilot alone 550 / 1,152 / 2,986 m |
| Speed AI, the learning part | 11 % lower error | quadcopter 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 detection | 31 of 31 spoofs caught | slowest 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, prototype | 2.0 m median fix error | p95 4.8 m, 96 synthetic frames, local search |
| Demo routes | 7 routes, 7 recorded | recordings flown with Pathfinder + speed AI v3; live flights default to Pathfinder (physics only) |
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 tested | After 1 min | After 2 min | After 5 min | Per minute |
|---|---|---|---|---|
| Autopilot aloneWhat a normal drone does today (ArduPilot).Measured (sim): typical result of 8 test flights. | 1,443 m | 2,059 m | 3,852 m | 770 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 m | 547 m | 1,541 m | 308 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 m | 5 m | 85 m | 17 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 m | 4 m | 20 m | 4 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 m | 25 m | 105 m | 21 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 m | 24 m | 103 m | 21 m |
Each gridline is ten times the one before. A bar one gridline shorter means ten times closer to the truth.
Generated from docs/night/*.json by docs/pitch/build_night3.py; a pending row has no result yet.
| Result | Status | Numbers |
|---|---|---|
| Results at a glance | ready | Pathfinder (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: results | ready | 31 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 first | ready | r1-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 jam | ready | ArduPilot 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 distance | partial | partial: 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 model | ready | r1-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, prototype | ready | fix 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 try | ready | route 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 mixed | ready | hexa 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 good | ready | heldout-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 lost | ready | Quad 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 |
Wind and drag cause most drift; heading barely matters. Each physics-only flight's drift, split by source, over 64 replays. measured (sim)
Tap the chart to open it full size.
| Source, ranked | After 1 min | After 2 min | After 5 min |
|---|---|---|---|
| 1. Wind estimate error | 3.8 m | 8.8 m | 14.1 m |
| 2. Drag coefficient, mass or accelerometer bias (one item) | -0.2 m | 0.9 m | 12.6 m |
| 3. Unexplained | -1.7 m | -4.0 m | 9.1 m |
| 4. Speed AI error | 0.14 m | 0.20 m | 1.07 m |
| 5. Heading | 0.7 m | 0.3 m | -1.9 m |
| Median total | 2.0 m | 4.9 m | 18.6 m |
Every milestone from 11 to 13 October, with the losses left in. Each number says how it was measured.
| Milestone | Number | Kind |
|---|---|---|
| 11 October 00:58 Core passes on Linux, ARM, Windows | AC-08 green | measured (code tests) |
| 11 October 01:59 First jammed flights in the simulator | built | |
| 11 October 02:24 Same answer on every replay | AC-09: 1,463 rows identical | measured (code tests) |
| 11 October 12:46 Runaway found and fixed | 3,135 to 29.6 m at 5 min | measured (sim) |
| 12 October Proof flight, flown twice | 85 m vs ArduPilot 2,366 m | measured (sim) |
| 12 October Fake GPS caught, 31 of 31 | flagged in 0.09-2.25 s | measured (sim) |
| 12 October Mission test after fixes | AC-01: 11 to 20 of 24 | measured (sim) |
| 13 October 00:13 All four acceptance tests in one run | 1,086 s; AC-04 passes | measured (sim) |
| 13 October 01:28 Drift ranked by source | wind first: 14.1 m at 5 min | measured (sim) |
| 13 October 02:16 Re-flown fixes, one flight | 132 to 15 m at 5 min | measured (sim) |
| 13 October 15:05 Model 2 flown in the loop | lost: 24.59 vs 3.99 m | measured (sim) |
| 13 October 16:25 Replay: every system on one map | built | |
| 13 October 18:12 Terrain matching, offline | 200.4 to 128.1 m at 5 min | offline estimate |
| 13 October 18:32 One branch, 11 presets | built | |
| 13 October 18:32 Terrain in the loop, 1 flight | lost: 333.7 vs 172.6 m | measured (sim) |
| 13 October 19:37 Control Room: New run in 5 steps | built | |
| 13 October 19:46 Drift-AI gate, replayed | lost: 3.30 vs 3.11 m | measured (sim) |
Same flights, physics only as the reference. Most tries lost; each sits behind an off switch, so the default did not change.
| Try | Try | Physics only | Kind | Result |
|---|---|---|---|---|
| Speed AI, fast run 2 (1 min) | 1.97 m | 2.14 m | measured (sim) | won |
| Speed AI, fast run 2 (2 min) | 3.71 m | 3.31 m | measured (sim) | lost |
| Q1 radius + adapter fix (2 min) | 3.46 m | 2.75 m | measured (sim) | lost |
| Q1 radius + adapter fix (5 min) | 17.59 m | 18.78 m | measured (sim) | won |
| Q2 touchdown clamp (2 min) | 3.66 m | 3.35 m | measured (sim) | lost |
| Drag learning in flight (2 min) | 159.6 m | 80.4 m | measured (sim) | lost |
| Model 2 drift AI, offline (2 min) | 47.5 m | 78.4 m | offline estimate | won |
| Model 2 drift AI, Q3 in loop (2 min) | 24.59 m | 3.99 m | measured (sim) | lost |
| Drift-AI gate, best, replay (2 min) | 3.3 m | 3.11 m | measured (sim) | lost |
| Terrain fixes, offline (5 min) | 128.1 m | 200.4 m | offline estimate | won |
| Terrain fixes, in the loop (5 min) | 333.7 m | 172.6 m | measured (sim) | lost |
Integration is shown in the simulator only. No real aircraft has run Pathfinder yet; real flight logs are our next step.
Flight heldout-jam-1002: the true path and every system's estimate on one map, measured (sim).
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.
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.
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".
docs/night/2026-10-14-day-summary.md, "Acceptance suite vs results".Source: docs/RESULTS.html on branch night/DNAV-1-pathfinder. The chart uses a log scale.