2. Injury metric computation from raw signals

Crash test data acquisition produces raw voltage and digital counts, not injury criteria. Between the transducer and the pass/fail verdict sits a deterministic computation chain: channel scaling, SAE J211 filtering, integration, and metric-specific post-processing. Every downstream decision inherits the errors introduced here, so this stage deserves the same rigor as the physical test itself. This section walks through the four core computations — J211 filtering, HIC integration, BrIC, and chest deflection — with the conventions and pitfalls that determine whether the numbers are defensible.

Coordinate and sign conventions first

Before any arithmetic, fix the reference frame. ISO 6487 / SAE J211 define occupant-axis conventions: for a Hybrid III or THOR dummy, +X is forward (toward the vehicle front), +Y is to the dummy's left, and +Z is downward along the spine. Head acceleration is normally measured at the head CG; chest acceleration at the upper sternum; chest deflection is positive for compression (sternum moving toward the spine). Every filter, integration, and sign flip in this chapter assumes these conventions. If a lab inverts a channel to match a different convention, document it in the channel metadata — silent sign flips are one of the most common causes of a metric that "looks plausible but fails audit."

SAE J211 filtering: the gatekeeper

SAE J211/1 specifies a fourth-order Butterworth low-pass filter applied in both forward and reverse directions (zero-phase, "filtfilt" style) so that no phase shift is introduced. The channel class determines the cutoff frequency:

Channel class (J211)Cutoff frequency (Hz)Typical channels
CFC 60100Head/chest acceleration, pelvis acceleration
CFC 180300Head angular velocity (for BrIC), neck forces/moments
CFC 6001000High-bandwidth accelerometers, some chest deflection
CFC 10001650Contact force, high-frequency instrumentation

The practical implementation matters. A single-pass IIR filter shifts the peak in time and attenuates it; the standard requires the forward-backward pass. In Python, scipy.signal.filtfilt with a 4th-order Butterworth design is the canonical approach:

from scipy.signal import butter, filtfilt
import numpy as np

def j211_filter(signal, fs, cfc):
    # J211 cutoff = CFC * 5/3 (e.g. CFC 60 -> 100 Hz)
    fc = cfc * 5.0 / 3.0
    b, a = butter(4, fc / (fs / 2.0), btype='low')
    return filtfilt(b, a, signal)

Two failure modes recur. First, edge transients: filtfilt pads the signal, but if the record starts mid-event or has a DC offset, the padding can create artificial peaks. Trim to a pre-trigger window (typically 20–50 ms before T0) and remove the mean before filtering. Second, resampling mismatch: if the raw sample rate is 10 kHz but the filter is designed for 20 kHz, the effective cutoff doubles. Always assert fs against the DAQ configuration, not against a filename.

HIC15 and HIC36 integration

The Head Injury Criterion is defined over a sliding time window:

HIC = maxt1,t2 [ (1/(t2−t1)) ∫t1t2 a(t) dt ]2.5 · (t2−t1)

where a(t) is the resultant head acceleration in g (after CFC 60 filtering) and the window t2−t1 is capped at 15 ms (HIC15) or 36 ms (HIC36). The resultant is computed from the three filtered components: a = √(ax² + ay² + az²). Note that the resultant must be formed after filtering each axis, not before — filtering the resultant is a common but non-compliant shortcut.

A robust implementation computes the cumulative integral once, then evaluates every valid window:

def hic(a_resultant_g, fs, window_ms):
    dt = 1.0 / fs
    n = int(window_ms / 1000.0 * fs)
    cum = np.concatenate([[0], np.cumsum(a_resultant_g) * dt])
    best = 0.0
    for i in range(len(a_resultant_g) - n):
        integral = cum[i + n] - cum[i]
        val = (integral / (n * dt)) ** 2.5 * (n * dt)
        best = max(best, val)
    return best

For a typical frontal sled pulse, HIC15 values in the 400–700 range are common for a 50th-percentile Hybrid III; the regulatory limit (FMVSS 208) is 700 for HIC15. The window that produces the maximum is itself diagnostic: a peak concentrated in the first 5 ms suggests a stiff contact, while a broad 30 ms window suggests a longer deceleration phase. Log both the value and the window start/end times.

BrIC: brain injury criterion from angular kinematics

BrIC uses head angular velocity about the three axes, each normalized by a critical value, then combined:

BrIC = (ωx/ωxC) + (ωy/ωyC) + (ωz/ωzC)

with critical angular velocities ωxC = 66.25 rad/s, ωyC = 56.45 rad/s, ωzC = 42.87 rad/s (the Takhounts et al. values used in NHTSA's SIMon). Angular velocity channels are filtered at CFC 180 (300 Hz). The maximum BrIC over the event is taken, and a value of 1.0 corresponds to a 50% risk of AIS 4+ brain injury in the underlying model. Because the criterion is a sum of normalized magnitudes, sign does not matter — but the axis assignment does. Confirm that the angular velocity channels are expressed in the head-fixed frame and in rad/s, not deg/s; a deg/s channel fed directly into the formula inflates BrIC by a factor of 57.3.

Chest deflection: accelerometer and potentiometer paths

Chest deflection is measured two ways, and they are not interchangeable. The potentiometer (chest band) gives a direct sternum-to-spine displacement in millimeters, filtered at CFC 180. The accelerometer-based method integrates chest acceleration twice to estimate displacement, which is far noisier and requires careful baseline correction. In practice, the potentiometer is the primary channel and the accelerometer-derived value is used for cross-checking.

For the potentiometer path, the processing is: scale counts to mm using the calibration slope, remove the pre-trigger offset so that deflection is zero at T0, filter at CFC 180, then take the peak compression. A typical Hybrid III 50th chest deflection limit is 63 mm (FMVSS 208) or 75 mm depending on the dummy variant and regulation. For the accelerometer path, double integration drifts; apply a high-pass correction (e.g., 0.5 Hz) or detrend before the second integration, and treat the result as a sanity check rather than a primary metric.

Common pitfall: applying the CFC 60 filter to chest deflection. The potentiometer channel is CFC 180; using the wrong class attenuates the peak by 10–20% and can flip a marginal pass into a fail. Store the CFC class in the channel metadata and assert it at load time.

End-to-end signal chain

The figure below traces a single channel from raw DAQ counts through scaling, J211 filtering, and metric-specific post-processing to the final pass/fail input. Note that HIC and BrIC branch after filtering, while chest deflection has two parallel acquisition paths that must be reconciled.

Raw DAQ counts 10 kHz, 16-bit Scale to SI g, rad/s, mm Offset removal pre-trigger mean J211 filter 4th-order Butterworth, zero-phase CFC 60 → head/chest accel CFC 180 → angular vel, chest defl HIC15 / HIC36 resultant a = √(ax²+ay²+az²) sliding window integral max over 15 / 36 ms BrIC ωx/66.25 + ωy/56.45 + ωz/42.87 rad/s, head-fixed frame max over event Chest deflection potentiometer: direct mm accel: double-integrate peak compression Pass / Fail evaluation HIC15 ≤ 700 · BrIC ≤ 1.0 · chest defl ≤ 63 mm Channel metadata carried through the chain: CFC class · sample rate · calibration slope · axis convention (+X fwd, +Y left, +Z down) · units (g / rad·s⁻¹ / mm)

Verification and troubleshooting

Before releasing any metric, run three checks. Unit sanity: a head acceleration peak of 80–120 g for a frontal impact is plausible; 8000 g means a scaling error. Filter class assertion: compare the channel's declared CFC against the metric's requirement and fail loudly on mismatch. Cross-path agreement: for chest deflection, the potentiometer and accelerometer-derived peaks should agree within roughly 10–15%; a larger gap points to a drifting integration or a mis-scaled channel. When a metric looks marginal, plot the filtered signal with the HIC window overlaid — the window boundaries often reveal whether the peak is a real physical event or a filter artifact.

Reproducibility note: store the filter coefficients, the CFC class, the pre-trigger window length, and the software version alongside each computed metric. A pass/fail result without its processing provenance cannot be re-audited, and regulatory submissions increasingly require exactly that traceability.