FlappedEar Overlays User Guide Source on GitHub

Telemetry data reference

What the application reads from VBO and RCZ files, how channels are recognised, and how missing data is treated.

Principles

  • Missing is not zero. When a channel has no value at a moment, widgets show a dash and charts leave a gap. Gaps in a recording are never bridged in lap timing or automatic synchronisation: when the GoPro loses its GPS fix, that stretch takes no part in matching the video to the logger.
  • Nothing is invented. A missing brake channel is never estimated from G or speed in the overlay, and one channel is never silently replaced by another.
  • Recorded values are not changed. The overlay smooths what it displays slightly; lap timing uses raw samples.
  • Heart rate comes from the imported VBO or RCZ recording. There is no separate heart-rate import. A reading below 30 or above 230 bpm, such as the 0 bpm RaceChrono writes when its monitor has no reading, is shown as no data.

VBO files

A VBO file is a text file with a [column names] section and a [data] section. The application has been verified with VBO exports from RaceChrono Pro 10.2.4 and reads VBO exports from BetterDriver (files whose [comments] section has a line reading Generated by BetterDriver and nothing else; letter case and spaces around it do not matter, but a line with more text, such as Generated by BetterDriver 0.3.1, is not recognised). Other VBO files are read in the same general way, with these differences:

  • GPS position is used only when the coordinate unit is known. RaceChrono Pro 10.2.4 and BetterDriver files are recognised automatically. For other files, add a line coordinate units = degrees (or arc-minutes) to the [header] section. Without it, GPS position, the track map, lap timing and pairing are unavailable; all other channels still import, with the warning GPS coordinates and timing gates unavailable.
  • Timing gates (start/finish line) from other RaceChrono versions are ignored with the warning Timing gates ignored: this RaceChrono exporter version has not been validated. Telemetry remains available, but laps cannot be derived.
  • The recording's date and time are read only from a recognised RaceChrono or BetterDriver export (its File created on line, in UTC). Without them, the recording has no clock and is ordered by import order.

The time column must be named time, timestamp or utc time. A file without one is not opened, because its sample timing would be unknown; rename the column and open it again. Rows with invalid, duplicate or backwards timestamps are skipped with a warning. Timestamps crossing midnight are handled; a single early-morning row among evening rows is skipped as a bad row rather than read as midnight. Columns without any number are dropped.

BetterDriver

A BetterDriver VBO gives GPS position, the track map, the start/finish line it recorded, laps and the recording's UTC start time. Its longacc and latacc columns, when present, are used as longitudinal and lateral G. BetterDriver's video is a numbered series of clip files. The application reads the clip list from the VBO (the [avi] section and the avifileindex and avisynctime columns) and works out where each clip starts on the recording's timeline, but it does not yet open the clips by itself: until the clip linking arrives, open and sync the video by hand.

BetterDriver 1.12 and newer also records, on a gen-1 FR-S, GT86 or BRZ with the CAN adapter, the steering wheel angle as the obd_steering_angle column (degrees, positive = left, about -450 to +450 lock to lock) next to optional obd_brake_pressure, obd_brake, obd_accelerator, obd_throttle, obd_rpm, obd_oil_temp and obd_coolant_temp columns. The Steering wheel widget draws the angle; a file without that column simply has no steering wheel.

RaceChrono G channels

For lateral and longitudinal G, export VBO from RaceChrono with the calculated acceleration channels (latacc-calc, longacc-calc) enabled. These are preferred automatically. RCZ archives contain only the phone's raw accelerometer axes, which are not aligned with the car, and no calculated G.

RCZ files

An RCZ file is a RaceChrono session archive. Supported: a single, uninterrupted session shared from RaceChrono Pro (developed against version 10.2.4). Each channel keeps its own sample rate; nothing is resampled. A pause longer than three times a channel's normal sample spacing is a gap. The spacing is judged around the pause, so a stretch the logger recorded at a slower rate is not treated as a run of gaps.

Refused with a message: resumed sessions, archives with several sessions, encrypted, split or ZIP64 archives, sessions longer than 24 hours, and archives whose GPS is missing. Unknown channel types are left out with a warning. Video and synchronization data stored inside the archive are not imported.

Channels read from RCZ:

Channel nameContentUnit
velocityGPS speed (used as speed)km/h
lat, longGPS positiondegrees
height, heading, accuracy, sats, fix_typeGPS altitude, heading, accuracy, satellites, fixm, deg, m
rpm-obdEngine speed (used as RPM)rpm
throttle_pos-obd, accelerator_pos-obdThrottle and accelerator pedal%
brake_pos-obdBrake pedal (used as brake)%
velocity-obdOBD vehicle speedkm/h
coolant_temp-obd, intake_temp-obd, engine_oil_temp-obd, gearbox_temp-obdTemperatures°C
heart_rate-hrmHeart ratebpm
tyre_temp_fl-canbus … tyre_pressure_rr-canbusTyre temperature and pressure per corner from a CAN-bus tyre logger°C, kPa
x/y/z_acc-acc, …-gyro, …-magnPhone accelerometer, gyroscope, magnetometer axesg, deg/s, µT
device_battery_levelPhone battery%

How channels are recognised

Widgets use a channel's purpose (speed, RPM and so on). The application finds the channel by name, ignoring upper and lower case. For VBO files:

PurposeMatching column names
Speedvelocity, speed, names starting with gps speed or obd speed
RPMrpm, rpm-…, names containing engine speed
Throttlenames containing throttle or accelerator pedal; an accelerator-position channel takes priority when it has at least half as many readings as the throttle channel
Brakebrake, brake-…, names containing brake pressure or brake pedal
Heart ratenames containing heart rate, or exactly hr or bpm
Steering angleobd_steering_angle first, then the first column whose name contains steer
Latitude / longitudelat, latitude / lon, long, longitude
Lateral Glatacc-calc first, then latacc, lateral accel…, lateral g, gx
Longitudinal Glongacc-calc first, then longacc, longitudinal accel…, longitudinal g, gy
Gearnot recognised automatically; select it in the widget

When several columns match, the first by name is used, unless a later one has more than twice as many readings. A mostly empty column therefore does not hide a full one.

Any channel can still be chosen by name in a widget's Source channel.

Tyre channels

By default the Tyres widget finds channels whose name contains tyre or tire, either temp/temperature or pressure/press, and one corner: fl, fr, rl or rr (also lf, rf, lr). Example: tyre_temp_fl. Any channel can instead be chosen per corner in the Tyres inspector; a chosen channel's pressure unit is judged the same way.

  • Tyre channels are read from VBO files and, for RaceChrono's CAN-bus tyre channels, from RCZ files under the same names. Other CAN-bus channels in an RCZ are not imported.
  • Temperature is shown in °C. Most VBO files do not declare units (the application reads a [channel units] section only for the custom columns, as BetterDriver writes it), so a VBO tyre temperature is treated as °C unless declared in °F.
  • Pressure in bar, psi or kPa is converted to the chosen display unit. If the unit is not declared (always the case for VBO files), it is judged from typical values.
  • An exact 0 is treated as "no reading yet", because tyre-pressure sensors report 0 before their first reading.

RaceChrono only records tyre data when a TPMS or CAN tyre logger feeds it; a phone-and-OBD setup records none. When no channel of the loaded recording is named as a tyre value and none is chosen, the Tyres inspector says so and every corner shows a dash.

How laps are found

Laps, the lap widgets and hot-lap export come from the start/finish line (timing gate) recorded in the telemetry file, for example the RaceChrono track's start line, and from GPS. When an RCZ session uses a track from RaceChrono's track library, the archive has no start/finish line; it is then rebuilt from RaceChrono's own lap times, and the import shows a warning saying so.

  • OUT: from the start of the recording to the first crossing.
  • LAP n: between two crossings in the same direction.
  • IN: from the last crossing to the end of the recording.
  • UNKNOWN: the whole recording, when no crossing could be found.

A crossing counts only when the GPS path really goes over the line: it starts on one side and ends on the other, within 5 m of the line's ends. Coming close to the line and turning back on the same side, for example in the pit lane, is not a crossing.

A lap that cannot be a lap of the circuit is kept in the lap list but never counts as the best lap: under 3 s or over an hour, a GPS path under 200 m, faster than 100 m/s on average, or under 80 % of the typical lap of the recording (or, across a day with several recordings, of the circuit). This catches, for example, a short loop back over the line in the paddock.

Lap timing needs exactly one valid start gate and usable GPS. Laps run in the direction most start-line crossings share, so a single crossing the other way (leaving the paddock, for example) is ignored rather than deciding the direction. Manual start/finish placement is not available. If laps are missing, see No laps found.

Display smoothing

To keep the overlay readable, displayed values are averaged over a short time window (about 0.1 to 0.25 seconds, depending on the channel; gear is not smoothed; the steering angle is averaged over 0.1 seconds centred on the moment shown, so it is not late against the video) and the last value is held for up to 0.75 seconds (2 seconds for heart rate) across a missing sample. Lap timing always uses the raw samples.

File limits

FormatLimits
VBO128 MiB, 1,000,000 lines, 500,000 data rows, 512 columns
RCZ128 MiB archive, 256 channels, 24-hour session

Files over a limit are refused with a message rather than read partially.