Garmin TCX
- Raw-sample ascent
- —
- 1-second median ascent
- —
Source not loaded.
Local proof of concept
Analysis runs in this browser. Source files stay local unless you sign in and explicitly upload them to the private archive.
01 / Inputs
Select multiple files or drop them here. Recording times suggest ride groups; uncertain files stay unassigned for review.
No files selected.
Private VM storage · browser-side analysis
Batch uploads create one archive run per reviewed ride group. The selected MP4 remains local for playback; its retained copy is stored separately.
Source files stay local until you sign in and choose an upload action.
Browse runs and their retained files below. File-modified time is not necessarily the ride recording time; device family is inferred from the file type, and exact device models are not currently recorded. Files can be up to 30 GiB and upload in resumable chunks with progress, rate, and ETA. After a page reload, reselect the same file (matching name, size, and modified time) to continue; the archive preserves a 5 GiB free-space reserve.
Sign in to browse retained rides and files.
Elevation comparison
Paired comparison: load both activities to assess shared coverage.
Source not loaded.
Source not loaded.
Paired difference requires both sources and independently verified timing.
Each source's ascent uses its own recorded coverage; the totals are not a synchronized comparison when their windows differ. The difference below uses only the verified shared interval, not the standalone totals above. Raw-sample ascent sums positive changes when distance advances (or is unavailable); filtered ascent uses median altitude in each 1-second bin. RaceBox distance is integrated from speed. Gaps over 2.5 seconds are omitted. The RaceBox − Garmin difference is withheld until independent timing residuals pass this POC's ≤100 ms gate. Neither grade estimate is ground truth; RaceBox altitude datum and absolute accuracy are unverified.
04 / Terrain mesh
Load terrain to enable the verified Garmin terrain cursor.
02 / Video
SYNC UNVERIFIED · video telemetry is withheld until independent timing evidence passes the 100 ms gate and remains limited to the validated anchor span.
Power-zone time, selected source-backed values, ride totals, and upcoming terrain.
The worker draws charts locally; video decode and HUD text stay in the browser.
03 / Garmin timeline
Route motion
Preview a glowing marker moving along a sample circuit or loaded GPS track.
Sample circuit loops; loaded GPS tracks play from start to finish at a steady visual pace.
SYNC NOT VERIFIED · UTC/GPS proximity is diagnostic only; paired RaceBox values require independent residuals ≤100 ms and are limited to verified coverage.
Grade comparison
Independent estimates · neither source is ground truth
Grade comparison is locked until Garmin↔RaceBox synchronization is independently verified to ≤100 ms for the displayed interval.
Metric display objects
Name · value · unit · 60 s source-sample chart.
Investigation tools · Timing
Compare GPS-derived time deltas, gyro candidates, spatial match ambiguity, and GPS position error across a ride. Hover or click a chart, or move the time slider, to inspect one local window in all methods. Reports are read in this browser; they are not uploaded or applied as clock corrections.
Loading the bundled full-ride example…
Loaded source timing
Compare sample cadence, gaps, timestamp formatting, and ordering diagnostics for the telemetry loaded above.
Load Garmin TCX/FIT or RaceBox CSV/VBO files to inspect their timestamp intervals.
| Source | Valid / source rows | Coverage | Median interval | p95 interval | Interval MAD | Gaps >2.5× cadence median | Finest timestamp text step | Moved / equal / invalid rows |
|---|
Gap duration is the total time between samples in flagged gaps. Timestamp text step reflects decimal formatting only, not device clock accuracy or measurement precision.
Vertical whiskers show the min-max interval range within each horizontal display pixel. Gaps are marked, never joined.
Each source uses elapsed time from its own first valid record; aligned clock offsets are not inferred here. The route-vs-gyro chart below is candidate disagreement, not an independently measured timing residual. Independent anchor residuals are not present in the current matcher report.
Camera GPS time minus RaceBox GPS time. A stable offset should stay roughly flat.
Camera GPS route candidate minus gyro start candidate by estimator; this is candidate disagreement, not an independent residual.
How much worse a different time offset fits the GPS path. Small gaps mean ambiguity.
Median horizontal position error across matched fixes in each local window.
Per-fix filter trace · experimental
This EKF does not use gyroscope data. The line shows the per-pixel mean and whiskers show the min–max range; dashed markers identify GPS segment boundaries. Display limits are investigative, not accuracy thresholds.
Linked window inspector
| Estimator | Route offset | GPS position error | Alternative route match | Route vs gyro | Matched fixes |
|---|
05 / Trail discovery fixture
This local slice demonstrates the intended discovery flow. It uses a catalog-backed result when configured, otherwise a fixture; it does not call a live provider from the browser.
Search to load nearby trail systems.
Selected route systems
Alignment research / On demand
Analyzes the configured repository RaceBox CSV and three GoPro LRV chapters, not replacement files selected above. Metadata only; no video decoding, uploads, or alignment changes. Pause video and unload terrain first if memory is tight.
Offsets below mean GoPro sensor time minus RaceBox elapsed time, not Garmin offsets. Correlation is not probability or validated accuracy. A candidate can be wrong.
Not started. Requires the local development server and ffprobe.
POC boundaries