Plain Words Running data, in plain words.

Metrics, in plain words

How Inertial corrects your GPS trace

Positions go through a constant-velocity Kalman filter in local metres, with a chi-squared innovation gate at 99%. Fixes reported worse than 60 m are rejected outright. Fixes between 30 and 60 m are accepted with inflated uncertainty, but only when nothing better has arrived for 2 ticks.

The numbers on this page, in one place.
WhatNumberThe qualifier
Filterconstant-velocity Kalmanlocal east-north metres, Joseph-form update
Hard rejectabove 60 m reported accuracyno information left in the fix
Soft accept30-60 m, when starvedafter 2 ticks with no accepted position
Innovation gatechi-squared, 2 degrees of freedom, 99%3 consecutive rejects force a re-anchor

What the filter does

Raw satellite positions jump around. Every fix carries error, and adding up noisy points inflates distance, which Ranacher and colleagues quantified in 2016.

So we do not sum raw fixes. Positions are converted into local east-north metres and fed to a constant-velocity Kalman filter. The state is your position and your velocity. Each fix updates it, weighted by how good the fix claims to be.

A chi-squared test on 2 degrees of freedom at 99% rejects fixes that disagree too violently with where the filter thinks you are. Three rejects in a row means the filter is lost, so it re-anchors and records that it did.

The accuracy gate, and why it is soft

A fixed cut-off is worse than it sounds. In an urban canyon, reported accuracy sits at 35 to 60 m for minutes at a time. Drop all of it and you get a straight line across every turn, which under-measures the run.

So the gate has three bands.

Reported accuracyWhat happens
under 30 maccepted normally
30-60 maccepted with inflated uncertainty, only after 2 ticks with nothing better
over 60 mrejected

The starvation rule matters. While good fixes are arriving, a degraded fix adds correlated noise rather than information. Allowing them freely measurably inflated our walking-pace test fixture, from +1.84% to +2.62%. Gating them on starvation put that back while still measuring the degraded stretch.

What we do not turn on

Android exposes a signal-to-noise figure per satellite. Reflected signals typically have lower and more variable values, so weighting fixes by it should help in cities.

We built that and shipped it switched off. Our urban test fixtures already sit within 0.1% of true distance without it, so enabling it would be tuning against noise. The hook is there for the day the evidence says otherwise.

If we correct it, we show it

Every dropped fix is recorded with a typed reason, and none are dropped silently. When an imported file's recomputed distance disagrees with the total the original device reported, we show both numbers rather than picking one.

You can export the raw stream for any run and check our arithmetic.

Sources

Changelog

  • — First published.