Skip to content

v0.2.0 — eskate telemetry works

Choose a tag to compare

@beadon beadon released this 12 Jul 22:31
· 66 commits to main since this release

The first release in which RacePlex works for electric skateboards.

On the numbering. RacePlex restarted versioning at 0.x when it forked from Dove's DataViewer. The v2.x tags in the git history belong to upstream and came along with their commits. This tag is RacePlex's baseline; the next release will be v0.3.0.


Eskate telemetry

Until this release, no eskate app produced a file RacePlex could open. VESC Tool, FreeSK8, Metr, Float Control and the official Onewheel app all log GPS in their own layouts, and all of them were rejected.

VESC Tool import

A VESC ride log now imports, and the ESC channels come with it. Motor current, battery sag, duty cycle, ERPM and temperatures are charted on the same timeline as the GPS trace. A nosedive appears as a duty-cycle spike, which a GPS trace can only show you after the fact.

A VESC log writes ESC data at about 12 Hz and GPS fixes at about 1 Hz. RacePlex keeps every ESC row at full rate and interpolates position between GPS fixes, so a 0.2-second duty-cycle spike is still visible.

Generic CSV import

Most delimited logs containing a latitude and a longitude will now import: Float Control, pOnewheel, Metr, TrackAddict, Qstarz, or a logger we haven't seen.

RacePlex detects the delimiter, maps the columns by name, and shows you the mapping so you can correct it before importing. Your correction is saved against that device's column layout, so you're only asked once.

The column mapper exists because these formats have unstable column sets. pOnewheel, for instance, generates its columns per ride from whichever BLE attributes it recorded.

GoPro .mp4 import

GoPro stores GPS inside the video file. Drop the .mp4 in and RacePlex reads the telemetry track in the browser, with no conversion step and nothing uploaded. It adds 0.58 kB to the main bundle; the 235 kB decoder loads only when you import a video.

The HERO12 has no GPS. GoPro removed it for that model.


Lap timing

Point-to-point courses

A hill run, slalom or drag pass finishes somewhere other than where it started. Lap timers that model only a circuit find no laps in such a session. RacePlex handles both.

Lap timing with no setup

When a datalog records where its timing lines were, RacePlex reads them back and times the run:

  • from a GPX file's Start and Finish waypoints, or
  • by reconstructing the timing lines from RaceBox's lap-number column, which records when the device crossed a line while the GPS columns record where you were.

Checked against the device: RaceBox reports a run of 36.480 s. RacePlex computes 36.547 s from the GPX and 36.520 s from the CSV. The 67 ms difference comes from interpolating the line crossing rather than quantising it to a sample.


Stance tool

Foot position, weight distribution, and the braking deceleration at which the rear wheels unload.

A board reaches that point at around 0.37 g, below the roughly 0.6 g that urethane can grip, which is why boards nosedive under hard braking. The same calculation for a kart gives about 2.1 g.

Sliders control foot positions, weight split and crouch. A stick figure tracks the sliders, and a plumb line from the centre of gravity shows where your weight falls between the trucks. Rider centre-of-mass height uses the standard anthropometric figure of 0.55 × stature (Winter, Biomechanics and Motor Control).


Other formats

GPX and RaceBox CSV, with automatic speed-unit detection. RaceBox writes its Speed column with no unit in the header, and it isn't in m/s, so RacePlex measures the column against speed derived from the positions.


Identity

  • eSkateboard is the default vehicle type: deck, trucks, wheels, drive, battery, rider weight. Kart is still available.
  • New brand: Racing Red #BD162C, Carbon Black and Electric Yellow. Five colour palettes, all checked for WCAG AA contrast.
  • A Supported Devices list with sample rates, prices and the format to export. It's plain data (src/data/supported-devices.json); to add a device, open a pull request.
  • Removed: the sponsor button, the feature roadmap, the cloud-storage incentive, Terms of Service, the "Operated by" footer, and the proprietary AI-coach plugin. RacePlex asks for nothing and sells nothing.

Format details that are easy to get wrong

  • RaceBox's CSV Speed column has no unit, and it isn't m/s. Assuming a default makes every speed 3.6× wrong, and the charts still look reasonable.
  • VBO stores coordinates in minutes, with longitude positive-west. A file read with the wrong convention still plots, in the wrong hemisphere at 1/60th scale.
  • VESC logs have no kmh_gnss column, despite the name appearing in many places. The speed column is gnss_gVel, in m/s.
  • Dragy has no CSV export. The vendor confirms this.

These are documented with sources in docs/research/FORMATS.md.


Known gaps

Tracked in the open issues:

  • No live capture. You can import a RaceBox or Dragy file, but not record from one over Bluetooth (#32).
  • GoPro chapter-split recordings import as separate sessions (#29).
  • FreeSK8 and Metr: the schemas are confirmed, but we won't ship a parser we can't test against a real file (#34).
  • Non-English translations are best-effort; English is the source.

If you own hardware we haven't tested, sending a sample export file is the most useful thing you can contribute. Every format detail above came from opening a real file.


166 test files · 2,360 tests · GPL-3.0-or-later · runs entirely in your browser, with no account and no upload.