Python · PySide6 · Multi-log telemetry analysis · Windows/Linux

Racing Analyze GUI is a packaged desktop workbench for loading multiple runs, aligning them to the same track gates, replaying data and media together, and extracting metrics for coaching-oriented review.

PySide6 racing telemetry workspace with time-series plots, GG diagram, track map, and synchronized onboard video

Current PySide6 workspace: multi-log time series, GG analysis, track map, and synchronized onboard video.

Workflow

Track Definitionstart line and segment gates in one reusable track file
Log LoadCSV, MoTeC LD, GPS, and simulator-coordinate runs
Gate Alignmentinterpolated lap and segment boundaries between samples
Replay + PlotsXY, TS, MAP, POLAR, KDE, GG, and synchronized media
Reportmetrics, time-loss decomposition, and CSV export

What I Built

  • Physical gate alignment that interpolates each crossing between samples and applies the same boundary to timing, arrays, maps, replay markers, and video.
  • Multi-log loading and caching for quick switching after one analysis pass, with configurable sampling rate for large sessions.
  • Synchronized replay and media with time controls, pane-aware markers, recording-time estimation, and manual offset correction.
  • Flexible pane system with XY, TS, MAP, POLAR, KDE, GG, and MEDIA views plus split, swap, pop-out, and undo operations.
  • Channel-flexible visualization where arbitrary logged channels can be assigned to axes or color.
  • Simulator-to-track registration that aligns planar simulator logs to real GPS tracks with rotation, translation, reflection checks, and residual diagnostics.
  • Metrics and report export for segment time, speed and acceleration statistics, time-loss attribution, and selected-run comparison.
  • Desktop and headless use through Windows/Linux build paths, a CLI, and a UI-independent Python analysis session.

Measured Behavior

  • Sampling-rate-independent timing: a measured segment that differed at 100 Hz and 10 Hz becomes 7.805 s at both rates when gate interpolation is enabled.
  • Memory scaling: on a 169-channel, 59-minute MoTeC export, 25 Hz used 108 MB versus 430 MB at 100 Hz while median lap distance changed by 0.3 m.
  • Faster log parsing: documented port measurements reduced MoTeC CSV reading from 88 ms to 8 ms on the benchmark fixture.
  • Automated checks: 699 unit tests and 533 integration tests cover analysis behavior and the Qt workflow.

Result & Evidence

  • Made lap timing, plotted slices, map traces, replay markers, and media share the same gate-crossing convention.
  • Connected real and simulator logs through a common track and analysis workflow.
  • Handles four log families through one analysis path and checks them with generated equivalent-drive fixtures.
  • The 1,232-test suite covers both calculation and Qt interaction paths; command-line smoke checks exercise gates, loss analysis, reports, and log inspection.
  • Maintains Windows/Linux desktop builds plus CLI and UI-independent library access for automation.
  • Consumes logs from the upstream Racing Telemetry Stack.

Validation Scope

  • The performance figures above are repository-recorded measurements for specified fixtures and machines, not universal runtime guarantees.
  • Simulator registration reports residual and scale diagnostics because a mathematically valid fit can still pair the wrong axes or laps.