Your GPS-Denied Nav ‘Demo’ Is Likely Still Using GPS

Share article
How GPS leaks into vision-based positioning evaluations, why the resulting numbers look great, and why they fall apart together with GPS.
Everyone loves comparing metrics, but sometimes the metrics measure the wrong thing. In assessing GPS-alternative navigation solutions, a common sight in benchmarking is the classic GPS vs alt nav comparison trajectory plot: a predicted trajectory compared against a GPS track, with the two lines appearing nearly identical over a multi-kilometer flight. The claim accompanying these plots is typically that the system has achieved "navigation without GPS."
In most cases, this is honest work by capable teams. However, many are unknowingly feeding GPS into the alternative navigation system. The reason is simple and structural: GPS is so deeply woven into the way we navigate, log, and evaluate aircraft that removing it from the results is much harder than removing it from the config file.
This post is about the ways GPS leaks into a "GPS-denied" evaluation, why those leaks flatter your numbers in exactly the situations where you most need them to be honest, and what we do at Tera to rigorously assess our product.
It is common to see impressive flight test results where an alternative navigation system’s predicted path matches a GPS track almost perfectly. At first glance, this looks like a breakthrough and everyone celebrates. But there is a catch – even if the system is not directly using GPS to track its location, it may be relying on velocity data that was actually calculated using GPS. If a system depends on that hidden GPS data, it will fail the moment GPS is truly unavailable. This is a recurring issue we see after working with several major OEMs that have tried to integrate camera-based navigation systems in this space.
The Core Problem: ‘Denial’ is Not a Flag You Toggle
When people say they tested in a GPS-denied environment, what usually happens is that a GPS input was disabled at one specific point in a pipeline that has many other points. The system still knows, through half a dozen side channels, roughly where it is, which direction it is pointing, how high it is, and how fast the world is going by. Vision is then asked to do the last, easiest few percent of the job — and it does that well.
Real denial is not the removal of one input. It is the removal of a whole class of assumptions: absolute position, absolute heading reference, absolute scale, absolute time, and a trusted way to bound drift. A system that has quietly retained any of those will look far better in the lab than it does over hostile territory.
Nine places where GPS leaks in

1. The test is open-loop, and GPS is flying the aircraft
This is the biggest one, and it is structural rather than a bug. In the standard evaluation, the vehicle flies a GPS-guided mission while the vision system rides along, predicting a position for every frame that is then compared against the GPS track. Nothing the vision system outputs ever touches the controller.
That means GPS is not just the answer key — it is the thing holding the aircraft on the trajectory being graded. Every prediction is scored against a path that GPS is actively maintaining, from a vehicle that GPS is actively stabilizing. The estimator is being quizzed while somebody else steers.
Three things get hidden by this, all of which dominate real behavior:
- Error never compounds. If the estimate jumps 200 m, the aircraft does not go anywhere. The next frame still shows the terrain the system expected, so the error is silently reset by the world instead of propagating. In closed loop, a bad estimate physically moves you, and the next measurement is taken from somewhere your priors no longer describe. That feedback path is where divergence lives, and open-loop testing cannot see it.
- The flight profile is a GPS artifact. A GPS-guided autopilot flies smooth waypoint legs, coordinated turns, and rock-steady altitude. That is a benign, low-dynamics distribution created by having good position. A vehicle navigating on vision alone flies differently — it wanders, corrects late, banks harder to recapture track, and holds altitude worse. You are evaluating on inputs that only exist because GPS was available.
- Latency and stability go untested. Open loop, a 300 ms lag or a slightly overconfident covariance costs you a small error term. Closed loop, the same numbers are a phase margin, and they decide whether the control loop damps or oscillates. Accuracy and stability are different properties, and only one of them is being measured.
An open-loop result is a legitimate measurement of the estimator in isolation. It is not evidence that the aircraft can navigate on it. Those are separate claims, and the second one requires actually giving the vision estimate the controls and taking GPS away.
2. "We only use GPS to initialize"
Initialization is a real and defensible requirement — many systems are allowed a known takeoff point. The leak is in what happens afterward. If the system silently re-initializes on tracking loss, resets its prior on low match confidence, or re-anchors periodically, then it is not initializing from GPS, it is being corrected by GPS, and the drift you are reporting is the drift between corrections.
3. The estimator you are plotting still has GPS in it
On a PX4 or ArduPilot vehicle, vision output is typically fed to the flight controller as an external vision estimate and fused in an EKF. If GPS fusion remains enabled, the fused state you plot is a blend, dominated by GPS whenever the two disagree. It is easy to build a plot in which the vision system contributes almost nothing and the trace still looks perfect. The only trustworthy comparison is the raw vision estimate against truth, before any fusion.
4. Altitude, and therefore scale, comes from GPS
Some vision systems have no inherent scale. Ground-relative altitude gives it back. If altitude comes from GPS, or from a barometer whose reference was set with GPS altitude, or from a home altitude captured at arming, then the hardest part of the vision problem is being handed over for free — and the scale drift you would suffer in a long denial simply never appears.
5. Heading comes from course over ground
Absolute yaw is expensive to get without GNSS. Magnetometers are unreliable near motors and structures, and are trivially spoofable in their own right. Many pipelines quietly seed or correct yaw from GPS course over ground. That removes a full rotational degree of freedom from the problem and, more importantly, removes the slow heading drift that dominates long-range vision navigation error.
6. Time synchronization uses GPS time
GPS is a clock as much as it is a position source. Aligning frames to poses, interpolating truth, and time-shifting streams using GPS time is a subtle leak: it removes a real-world error term (timing jitter between camera exposure and state estimate) that produces meters of error at aircraft speeds.
7. The evaluation aligns your trajectory to the truth
Standard trajectory tools fit the estimate to ground truth with a rigid or similarity transform before computing error. That is the right thing to do for comparing odometry algorithms, and the wrong thing to do for claiming absolute georegistration. Alignment with scale correction absorbs precisely the errors — global offset, yaw bias, scale drift — that matter operationally. Report the number both ways, or report only the unaligned one.
8. Outages are short and start from a warm filter
Cutting GPS for 30 seconds mid-flight tests a filter that is already converged, with tight covariance and correct scale, coasting on inertia. It says almost nothing about a mission that is denied from takeoff, or denied for an hour. Denial duration is not a linear difficulty knob; error growth is superlinear once the priors go stale.
9. You tuned on the same flights
The quietest leak of all. Thresholds, outlier-rejection parameters, and model checkpoints selected by looking at GPS-referenced error on the same set of flights encode that GPS into the system, even though no GPS byte reaches the runtime. It shows up as a system that is excellent on your test cards and mediocre everywhere else.
How we test at Tera AI
We build vision-based positioning that runs onboard, in real-time, on the aircraft's own compute, producing an absolute position without any GPS input. Because we know how easy it is to accidentally grade ourselves on GPS, we disconnect the GPS during testing.
Closed-loop but not enough. Our position estimate is not a prediction drawn on a plot next to a GPS track — it is the estimate the flight controller navigates on. It goes into the EKF as the vehicle's external vision position, and with GPS fusion off it is the only horizontal position source the filter has. The autopilot holds position, tracks waypoints, and lands on it. That means our errors move the aircraft, and the next image is taken from wherever those errors put us. There is no external hand on the stick keeping the vehicle honest, and nothing resets the error but the system itself.
We remove GPS completely, at three escalating levels. Each one closes a loophole the previous one leaves open:
- Fusion disabled. GPS aiding is switched off in the estimator, mid-flight, from a channel on the safety pilot's transmitter. The receiver is still powered and still has a fix, but the filter cannot use it — and because the switch is on the transmitter, GPS can be restored instantly if a test goes wrong. That is what makes it safe to fly aggressive profiles, and it is our fastest iteration loop.
- Physically disconnected. The receiver is unplugged from the aircraft before takeoff. No GNSS bytes exist anywhere on the vehicle: no position, no altitude, no course-over-ground heading, no GPS time. Nothing can silently fall back, re-arm, or re-initialize, because there is nothing to fall back to. This is our cold case — denied from the moment the props spin, with no converged filter and no free initial heading inherited from a GPS-guided takeoff.
- Power cut in the air. A remotely commanded PWM switch cuts electrical power to the GPS module mid-flight. The receiver does not politely stop being fused; it dies. This is the one that reproduces the transition an aircraft actually experiences when it crosses into a denied area — a healthy fix one second, nothing the next, at speed, with the filter converged on data that has just disappeared. And unlike a parameter change, restoring it is not instantaneous: the receiver has to reacquire, so the aircraft flies on vision for as long as it takes.
The second and third levels answer different questions and we need both. Physical disconnection tests whether we can navigate a whole mission without GNSS ever existing. The in-flight power cut tests the handover itself — the moment where a warm, confident filter loses its anchor — and then the flight continues on vision for the rest of the mission, not for a thirty-second gap.
Throughout all of this the GPS track, where one exists, is captured on a separate path purely as a scoring reference. It never touches the estimator. If our position is wrong, nothing in the system quietly puts it back — the error stays in, it propagates, and it flies the aircraft.