Audit summary
Cleaning workflow
Validation steps
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.
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.
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
| 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 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
| 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.