← Back to portfolio

Kart Telemetry Dashboard

Problem

Go-kart rental sessions generate timestamped telemetry — GPS coordinates, throttle position, steering angle, lap times — but the raw CSV dumps are impenetrable. Drivers finish a session with no way to understand where they gained or lost time, which corners they over-slowed into, or how their pace evolved across a stint. I wanted a tool that could take a raw telemetry export and turn it into something a driver could actually learn from.

Approach

I built a Python pipeline that ingests the raw sensor CSV, cleans and aligns the streams by timestamp, segments the data into laps using GPS fence-crossing detection, and computes derived metrics (sector splits, cornering speed, throttle-on percentage per segment). The processed data feeds into a Plotly-based interactive dashboard exported as a single self-contained HTML file — no server needed. The dashboard includes a track map overlay with speed heatmapping, lap-over-lap comparison charts, and a summary table ranking laps by overall and sector times.

Hard parts

The trickiest piece was lap segmentation. GPS data from consumer-grade sensors drifts, so a simple geofence polygon triggered false crossings. I ended up using a two-pass approach: a generous spatial filter followed by a temporal debounce that rejects crossings happening less than a minimum lap time apart. Getting the track map projection right was another challenge — aligning raw lat/lon onto a 2D SVG path required a local tangent-plane projection, and small errors compounded into visibly wrong heatmap overlays until I anchored the transform to known corner apexes.

Outcome

The final dashboard is a ~1.5 MB self-contained HTML file that opens in any browser. It handles sessions of up to 50 laps with sub-second interactivity. I used it to identify a consistent late-braking habit into one hairpin that was costing me roughly 0.3 seconds per lap — visible in the sector split chart but invisible in raw numbers. The project became the centrepiece of this portfolio because it demonstrates end-to-end data work: messy ingestion, non-trivial processing, and a polished interactive output.