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.

Do not apply a single CFC to all channels. Head acceleration requires CFC 1000, chest deflection CFC 180, and femur force CFC 600. Applying CFC 180 to head acceleration will artificially reduce HIC by 10–20%.

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:

  1. Remove the inertial contribution of the fixture using a no-specimen baseline run.
  2. Filter force and displacement with CFC 600 and CFC 180 respectively.
  3. 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:

LevelData SourceFusion MethodUncertainty Contribution
L1 — SignalAccelerometer + videoOptical displacement cross-validationSensor noise, filter phase shift
L2 — TestFull-scale + sledPulse matching on occupant responsePulse tolerance, boundary conditions
L3 — ComponentDrop tower + material couponForce-displacement curve registrationStrain-rate scaling, fixture compliance
L4 — DatasetAll of the aboveFeature-level concatenation with source tagsDistribution 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.
A useful sanity check: for a 56 km/h frontal test, the vehicle longitudinal velocity change (Δv) computed from the B-pillar accelerometer should be within ±2 km/h of the barrier impact speed. If it is not, the channel is either mis-scaled or the trigger is misaligned.

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.

Crash Safety Data Pipeline: Sources, Fusion, and Cleaning Full-Scale Crash Accel + ATD + Video 10–20 kHz, CFC 600/1000 Sled Test Pulse + Restraint 25 g / 120 ms target Component Impact Drop Tower + Coupon 5–10 kHz, CFC 600 Sensor Fusion L1: Signal align L2: Pulse match L3: Curve register L4: Feature concat Cleaning Pipeline 1. Dropout detect 2. Spike removal 3. Drift correction 4. Outlier labeling 5. Metadata check Quality weight assigned Clean Dataset + weights Key preprocessing checks and expected outcomes • Time-zero alignment: cross-correlation peak on shared longitudinal accelerometer; residual offset < 0.5 ms • Δv sanity check: integrated B-pillar velocity within ±2 km/h of barrier impact speed • Chest deflection: peak 30–50 mm, return to zero within 20 ms post-pulse; negative dip > 0.5 mm flagged • Energy balance: absorbed energy monotonic; negative segments indicate fixture ringing or sensor drift

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.