← Back to Bruin Formula Racing

BRUIN FORMULA RACING · CASE STUDY 01

From Raw Logs to Usable Telemetry

Building a trustworthy analysis foundation from Bruin Formula Racing endurance data

Before analysing endurance performance, I first validated the telemetry dataset to understand which signals were reliable enough to support engineering conclusions. The log contained hundreds of channels from the inverter, BMS, IMU, GPS, VCU, SDU, and sensor modules, but not every channel was usable. This case study walks through the data-cleaning process: timestamp cleaning, channel health auditing, duplicate signal handling, torque sign correction, canonical signal selection, and clearly documented limitations.

Telemetry cleaning Channel validation Python / pandas Formula SAE

Audit summary

347 telemetry channels audited
~29k rows inspected
~176 s logged data duration
Selected inverter / BMS / thermal channels
Excluded GPS / wheel speed / VCU inputs

Cleaning workflow

Raw telemetry log Timestamp cleaning Channel health audit Duplicate signal handling Torque sign correction Canonical signal selection Analysis-ready telemetry

Validation steps

Time axis

Timestamp cleaning

I sorted the dataset by the raw ts timestamp and created time_s as elapsed time from the start of the log. This gives a reliable time axis for plots, power integration, and thermal trend analysis.

Audit

Full channel health audit

Audited all 347 channels for missing values, flat signals, unrealistic ranges, standard deviation, and unique values, then separated usable channels from suspicious or unusable ones.

Canonical names

Duplicate signal handling

Some signals appeared under multiple names, so I used simpler canonical names for analysis: inv.rpm, inv.vdc, inv.tq_cmd, inv.tq_fb, and inv.cool_t.

Usable signals

Validated signal groups retained for analysis
System Signals Role in analysis
Inverter inv.rpm Motor speed / operating region
Inverter inv.tq_cmd, inv.tq_fb Requested vs reported torque
Inverter inv.vdc, inv.idc Electrical power estimate
BMS bms.v, bms.i, bms.soc Battery state reference
BMS bms.avg_t, bms.hi_t, bms.lo_t Battery thermal trend
Cooling inv.cool_t Coolant temperature
Inverter thermal inv.all.hot_spot_temp, module temps Inverter temperature trend
IMU imu[2].ax, imu[2].ay, imu[2].az, imu[2].gyro_z Rough vehicle motion checks

Excluded or limited signals

Channel groups excluded from, or limited in, the analysis
Channel group Issue Decision
GPS Latitude, longitude, and velocity invalid/zero Excluded from track map and speed analysis
Wheel speed Wheel RPM channels zero Excluded from vehicle speed analysis
VCU speed/pedals/brake Mostly inactive Excluded from driver input analysis
Motor temperature Constant unrealistic value Excluded from thermal conclusions
Tyre/sensor module channels Suspicious or uncalibrated values Limited for now
Brake channels Mostly flat or unclear scaling Excluded from braking analysis
Damper channels Too small or inconsistent Excluded from suspension conclusions

Torque sign convention

Torque command and torque feedback used opposite sign conventions in the dataset. The command signal reported positive torque during drive, while feedback reported a similar magnitude with the opposite sign. I sign-corrected torque feedback for plotting and comparison so that positive values represented drive torque. This allowed command and feedback to be compared directly and indicated that the feedback signal was usable after sign correction.

torque_fb_nm = -inv.tq_fb

Final cleaned signal set

Canonical signals used in downstream analysis
Clean signal Source Meaning
time_s ts Elapsed time
rpm inv.rpm Motor speed
torque_cmd_nm inv.tq_cmd Requested torque
torque_fb_nm -inv.tq_fb Sign-corrected torque feedback
vdc inv.vdc Inverter DC voltage
idc inv.idc Inverter DC current
P_elec_kW inv.vdc x inv.idc / 1000 Estimated inverter electrical power
bms_avg_temp bms.avg_t Battery average temperature
coolant_temp inv.cool_t Coolant temperature
inverter_hotspot_temp inv.all.hot_spot_temp Inverter hot-spot temperature

Engineering takeaway

The cleaning process showed that this telemetry log was strongest for powertrain energy and thermal analysis, not lap-time or vehicle-speed analysis. By validating the channels first, I avoided drawing unsupported conclusions from incomplete data and built a trustworthy foundation for later endurance analysis.