3. Data acquisition and preprocessing for crash safety
Uncertainty-aware crash safety models are only as trustworthy as the data pipeline that feeds them. A model trained on noisy, misaligned, or inconsistently labeled crash data will produce confidence estimates that are themselves unreliable — the worst possible outcome for a safety-critical system. This section covers the four principal data sources used in crash safety research, the sensor fusion strategies that combine them, and the cleaning procedures that make the resulting dataset suitable for uncertainty quantification.
3.1 Full-Scale Crash Tests
Full-scale crash tests remain the ground truth for vehicle-level safety assessment. A standard frontal rigid-barrier test at 56 km/h (FMVSS 208 / Euro NCAP protocol) generates data from three instrument families:
- Vehicle-mounted accelerometers — typically triaxial units at the B-pillar base, tunnel, and rear sill, sampled at 10–20 kHz with anti-aliasing filters set at 1/5 of the sample rate (e.g., SAE J211 CFC 600).
- Anthropomorphic Test Device (ATD) instrumentation — head CG accelerometers, chest deflection potentiometers, femur load cells, and neck force/moment transducers, each with its own channel frequency class (CFC 180, CFC 600, CFC 1000).
- High-speed video and photogrammetry — 1,000–2,000 fps cameras providing displacement fields for optical validation of the accelerometer integration.
The key preprocessing challenge is time-zero alignment. Each channel has a different trigger latency; a 2 ms offset between the B-pillar accelerometer and the chest deflection channel can shift the computed injury criterion by several percent. The standard practice is to align all channels to the barrier contact trigger using a cross-correlation peak on a shared reference signal (typically the vehicle longitudinal accelerometer). After alignment, signals are filtered per SAE J211 and integrated to obtain velocity and displacement.
3.2 Sled Tests and Component Impact Data
Sled tests isolate the occupant restraint system from the vehicle crush structure. A deceleration sled reproduces a target pulse — for example, a 40 km/h frontal pulse with 25 g peak and 120 ms duration — while the body-in-white remains undeformed. This makes sled data ideal for calibrating restraint models, but it introduces a different uncertainty source: the pulse itself is a controlled input with its own tolerance band (±1.5 g on peak, ±3 ms on duration in most labs).
Component impact data (e.g., drop-tower tests on bumper beams, quasi-static crush of rocker panels) provides material and joint-level validation. These tests are typically instrumented with load cells and a laser displacement sensor, sampled at 5–10 kHz. The preprocessing steps are:
- Remove the inertial contribution of the fixture using a no-specimen baseline run.
- Filter force and displacement with CFC 600 and CFC 180 respectively.
- Compute absorbed energy as the integral of force over displacement, and check for negative energy segments (a sign of fixture ringing or sensor drift).
3.3 Sensor Fusion Across Test Types
Combining full-scale, sled, and component data into a single training set requires a common spatial and temporal reference frame. The recommended approach is a hierarchical fusion scheme:
| Level | Data Source | Fusion Method | Uncertainty Contribution |
|---|---|---|---|
| L1 — Signal | Accelerometer + video | Optical displacement cross-validation | Sensor noise, filter phase shift |
| L2 — Test | Full-scale + sled | Pulse matching on occupant response | Pulse tolerance, boundary conditions |
| L3 — Component | Drop tower + material coupon | Force-displacement curve registration | Strain-rate scaling, fixture compliance |
| L4 — Dataset | All of the above | Feature-level concatenation with source tags | Distribution shift between test types |
At L4, each sample carries a source tag and a quality weight. The quality weight is derived from the signal-to-noise ratio of the primary injury metric channel and the completeness of the sensor set. During model training, these weights feed into the loss function so that low-quality samples contribute less to the learned representation — a practical form of aleatoric uncertainty handling.
3.4 Data Cleaning Pipeline
Raw crash data arrives with predictable defects. A robust cleaning pipeline should address the following in order:
- Channel dropout detection — identify flat-line segments longer than 5 ms during the crash window. These are sensor failures, not physical events.
- Spike removal — apply a median filter with a 3-sample window only to channels where the spike exceeds 5σ of the local derivative distribution. Do not apply globally; it will attenuate genuine high-frequency content.
- Drift correction — fit a low-order polynomial to the pre-trigger baseline (typically −100 to 0 ms) and subtract it. This removes thermal drift in piezoresistive accelerometers.
- Outlier labeling — flag samples where the integrated velocity does not return to zero after the crash event (for vehicle-fixed channels). These indicate integration drift or a missed trigger.
- Metadata validation — verify that the reported test speed, barrier type, and ATD configuration match the raw channel list. Mismatches are a common source of label noise.
3.5 Practical Example: Cleaning a Sled Test Channel
Consider a sled test with a target pulse of 25 g peak, 120 ms duration. The chest deflection channel (CFC 180) shows a 3 ms flat-line at t = 45 ms and a 0.8 mm negative dip at t = 110 ms. The cleaning procedure is:
# Example: chest deflection cleaning (illustrative parameters)
raw = load_channel("chest_deflection", fs=10000)
# 1. Detect flat-line
flat_mask = detect_flatline(raw, min_duration_ms=5)
# 2. Interpolate across the dropout using cubic spline
clean = interpolate_dropout(raw, flat_mask, method="cubic")
# 3. Apply CFC 180 filter
filtered = sae_j211_filter(clean, cfc=180, fs=10000)
# 4. Baseline drift correction
baseline = fit_polynomial(filtered, window=(-100, 0), order=2)
corrected = filtered - baseline
# 5. Check for negative deflection after t=100 ms
if min(corrected[1000:]) < -0.5:
flag_as_suspect(corrected, reason="negative_deflection")
The expected output is a clean deflection curve that peaks between 30–50 mm (depending on ATD type) and returns to zero within 20 ms after the pulse ends. If the negative dip persists after drift correction, the channel is likely contaminated by chest band slippage and should be excluded from training or assigned a low quality weight.
The pipeline above is not a one-time script. Each new test campaign should re-run the metadata validation and quality-weight assignment, because sensor configurations and ATD types change between campaigns. The output — a cleaned dataset with per-sample quality weights and source tags — becomes the input to the uncertainty-aware model, where the weights directly inform the aleatoric uncertainty estimate. In the next section, we will examine how these weights propagate through a probabilistic surrogate model.