Inspiration

Racing generates massive amounts of telemetry, but most tools for analyzing it are locked behind paywalls, team-only software, or proprietary formats. We wanted something lightweight, open, and visual - a way to see the race unfold, understand how drivers take corners differently, and compare racing lines in a way that feels intuitive.

Our goal was simple: turn raw telemetry into a real, replayable experience that helps drivers improve.

What it does

RaceSim reconstructs every car’s trajectory around the Barber circuit using telemetry data, then animates the race in a fast Web-based viewer. It enables drivers and analysts to: Compare racing lines of multiple cars Inspect braking, throttle, speed, gear, and G-forces in real time Identify mistakes like early apexes, over-slowing, or poor exits Understand why one driver is faster than another Replay any session with full lap-by-lap metrics It’s lightweight, runs entirely in the browser, and requires only a single JSON file.

How we built it

Data Joining: Combined endurance timing and raw telemetry into a unified common.parquet. Data Cleaning: Filled gaps, normalized inconsistent signals, and excluded cars missing endurance data (0, 16, 78). Downsampling(if required) + Export: Converted processed common.parquet into a compact race_canvas.json optimized for rendering. Front-End Engine: Built a custom HTML5 canvas renderer for car positions, trails, and labels. Designed a UI for selecting cars, navigating time, and displaying live metrics. Added fast binary-search sampling for smooth playback at any timestamp. The viewer runs at full FPS with thousands of datapoints thanks to careful interpolation and efficient drawing.

Challenges we ran into

Merging telemetry + endurance data despite inconsistent timestamps and missing cars. Cleaning noisy sensor readings (acceleration spikes, missing samples, gear inconsistencies). Scaling the visualization so multiple cars could replay smoothly across a large dataset. Ensuring the UI remained responsive while rendering a dense race trajectory. Mapping all signals (speed, gear, APS, brake pressures, steering, etc.) to a clean and minimal metrics panel. Every dataset had quirks - getting everything aligned correctly was non-trivial.

Accomplishments that we're proud of

Built a complete end-to-end pipeline from raw data → cleaned → visualized. Created a smooth, accurate race replay on a pure HTML canvas - no libraries. Designed a professional UI with live telemetry metrics and multi-car comparison. Generated a clean, interactive tool that genuinely helps identify driver performance differences. Packaged everything into a single JSON-driven viewer that anyone can run with python -m http.server

What we learned

Handling real racing telemetry requires careful cleaning, synchronization, and validation. Visualization matters - drivers understand performance much faster when data is animated. Small UI choices (eg., car trails, color coding, lap detection) dramatically improve usability. How to design a rendering loop that remains performant over long sessions and multiple cars. The importance of downsampling and efficient interpolation for large telemetry datasets.

What's next for RaceSim

  1. Add “target speed” overlays based on the Race 1 winner: model the leader’s optimal speed profile using spatial coordinates, wind data, and actual speeds, then compute a live target speed for every other car based on its current location and conditions. (same explained in detail in ROADMAP.md)
Share this project:

Updates