Why GPX tracks sometimes drift at the start of a sequence

Over the last months I’ve been troubleshooting an issue that appears in many consumer GNSS setups: the GPX track starts far off the road and only “finds” the correct position after some distance. I’ve seen this with different cameras and remotes, and recently learned that the same thing happens with GoPro Max 2 raw uploads.

The short explanation is this:
Most consumer GNSS devices use a Kalman filter. If the GNSS unit stays completely still for several minutes before recording starts, the filter goes into a kind of “static mode”. When the user finally begins moving, the filter needs time to re‑stabilize. During this period, the GPX track can drift sideways, sometimes tens of meters, before it locks back onto the road.

This effect is easy to trigger in car setups, because the GNSS unit often sits motionless on the roof while the driver prepares the vehicle. In contrast, bike recordings rarely show the problem, because the GNSS device is always in motion before the actual ride begins.

The practical takeaway:
If the GNSS unit moves a little before the recording starts, the track is usually perfect. If it stays completely static, drift at the beginning is very likely.

I’m sharing this because it explains several GPX issues that contributors and platforms have observed, and it might help others understand why some sequences start “in the fields” before correcting themselves.

2 Likes

Possibly worth a mention. Ublox GPS units have a “Dynamic Platform Model” where it alters the assumptions about acceleration, altitude, and movement. My default was I think “Portable” which was not so good for automotive as it assumes low speed, multi-directional movement. I changed mine to automotive, but I believe there is a high G drone/helicopter mode as well.

Might be worth seeing if whatever GPS source that is being used has some method to disable (software) the filtering entirely during init. I note that there are GPS unit toolkits for mobile phones for example, but I haven’t looked into them.

It is like with everything; it is a matter of correct implementation or using the right tool for a specific purpose. The Kalman filter can be used for either smoothing motion or clearing noise for a static position but not both at same time. GoPro firmware engineers have yet to do some homework on this. GoPros should distinguish between being in motion and at a stand still. Dedicated navigation devices and apps like OsmAnd have figured out and implemented this long time ago. :wink: Again, it is the GoPro way of doing things. :person_shrugging:

To work around this issue with GoPros

  1. Turn off GPS before recording.
    This clears the Kalman filter’s history of previous positions.
  2. Stop at your starting position.
  3. Turn on GPS.
  4. Wait for GPS lock.
  5. Start moving.
1 Like