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 60 | 100 | Head/chest acceleration, pelvis acceleration |
| CFC 180 | 300 | Head angular velocity (for BrIC), neck forces/moments |
| CFC 600 | 1000 | High-bandwidth accelerometers, some chest deflection |
| CFC 1000 | 1650 | Contact 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.
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.
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.