TelemetrySign in

Methodology overview

This product answers one question: where am I losing lap time, and why? Every number on the analysis screen is produced by the telemetry engine from the data your GoPro already records. This section explains, in plain language, how each number is made, what it depends on, and when it cannot be trusted. The deep pages give the formulas, constants and tests.

Rule of the product: no driver-facing number is shown unless it has a precise definition, explicit units, a documented source channel, a known algorithm version, test coverage, reproducible output and defined quality conditions. Numbers that cannot meet that standard are engineer-only or not shown.

The data in a GoPro file

A camera-native GoPro .MP4 carries a small metadata track (GPMF, "GoPro MET") next to the video. It holds, once per second, packets of sensor samples with their own timestamps:

stream HERO9 Black HERO11 Black used for
GPS position, altitude, 2-D and 3-D speed, fix, precision GPS5, ~18 Hz, no per-sample time GPS9, 10 Hz, per-sample UTC and precision laps, speed, track map, Cornering G
Accelerometer (specific force), 3 axes ~200 Hz ~200 Hz Chassis Lateral Load, mount calibration
Gyroscope (angular rate), 3 axes ~200 Hz ~200 Hz body-yaw corroboration, mount drift
Gravity direction, camera orientation ~30 Hz ~30 Hz attitude cross-checks (engineer)

Files exported from the GoPro app, a phone or a video editor lose this track. The importer detects that and refuses the file with a clear message rather than guessing. Any GoPro that records GPS can be analysed; models without GPS (the HERO7 White, for example), or a camera with GPS switched off, cannot produce laps.

The pipeline, stage by stage

  1. Extract — only the metadata track is copied out of the video with ffmpeg (a few megabytes, under a second). The video itself is never decoded for analysis.
  2. Normalise — every sample gets a time on one session clock (the camera's own microsecond counter, continuous across chaptered files). Units are checked against the stream's declared scale. Accelerometer axes are mapped to a right-handed camera frame using the stationary gravity direction.
  3. Validate GPS — each GPS sample is flagged (no fix, poor precision, pre-lock, position jump, speed spike, …). Invalid samples are never deleted; they are marked and excluded. See GPS validation.
  4. Detect laps — the racing surface is modelled from fast samples, a start/finish gate is placed on the longest straight, every crossing is interpolated between the two samples that straddle the gate, and each interval is classified racing / caution / pit / partial / invalid with the reasons recorded. See Lap detection.
  5. Build the track and the progress coordinate — a smooth closed centerline is fitted to the racing laps and parameterised by distance s from the gate. Each lap is projected onto it with a continuity-constrained method that cannot jump to the wrong part of the track. See Track progress.
  6. Speed and path acceleration — the receiver's own speed is filtered and resampled onto s; longitudinal acceleration and Cornering G come from the path. See Speed and Cornering G.
  7. Lap delta — for a lap and a reference lap, the time each needed to reach the same s is compared: Δt(s) = t_lap(s) − t_ref(s). Its value at the end of the lap must equal the difference of the two lap times to within 1 ms or the result is rejected. See Lap delta.
  8. Chassis Lateral Load — the accelerometer is calibrated to the car's axes, filtered, and reported as the lateral load the chassis experiences. See Chassis Load.
  9. Segments — corners and straights are found from the centerline curvature and named; per-segment metrics and the segment's share of the lap delta are computed. See Lap delta.

Each stage writes its results with a provenance record: algorithm name and version, the parameter set, the engine version, the input hashes and the units of every column. The Provenance tab of an analysis shows exactly which versions produced it. See Versions.

Why laps are compared by track position, not by time

Two laps do not take the same time to reach the same corner. Comparing sample k of lap A with sample k of lap B would compare different places on the track. Instead each lap is placed on the shared distance coordinate s (metres along the centerline from the start/finish gate) and the question becomes: "how long did each lap take to get here?" That difference is the lap delta, and where it rises the lap is losing time. Different racing lines are handled naturally: projecting onto the shared centerline aligns physically identical places on the track whatever line the car took.

Two different "G" numbers

Cornering G is how hard the car's path is actually curving: speed × rate of change of the path heading, from GPS only. It contains no gravity, banking or body roll.

Chassis Lateral Load is the sideways load the chassis (and driver) experiences, measured by the accelerometer after calibrating the camera's axes to the car. It legitimately includes the gravity component produced by banking and roll: banking reduces felt load, which is what banking is for.

Both are correct; they answer different questions and are labelled distinctly everywhere. The raw accelerometer magnitude, which is dominated by vibration, is never called "G-force".

Video and telemetry synchronisation

The video's frame clock and the sensor clock come from the same camera. The session time of a video frame is t_video + t_chapter_start − δ_k, where δ_k is a small per-camera offset measured by matching visible bumps against the vertical accelerometer. See Video sync.

Quality and confidence

Every lap carries a GPS validity fraction and a projection confidence; every lap-delta grid point carries a low-confidence mark when either lap's projection confidence is below 0.5 or a GPS gap exists. The interface shades these ranges, excludes them from segment summaries where noted, and shows data-quality badges rather than hiding problems. See Data quality.

What we do not claim

  • Absolute position accuracy better than consumer GPS (≈ 2–3 m). Everything relies on relative consistency between laps, which is much better.
  • Sub-frame video alignment. δ_k is measured to about ±0.3 s on HERO11 and ±1 s on HERO9 (whose GPS time stamps are buffered by the camera).
  • Banking angle separately from body roll: only their sum relative to the parked attitude is observable.
  • Any longitudinal accelerometer number as a driver metric: pitch and braking-in-corner content make it a diagnostic only; longitudinal acceleration for drivers comes from GPS speed.