4. Sled Test Velocity Profile Calculation from Acceleration Pulse
Why the Velocity Profile Must Be Reconstructed
A sled test measures acceleration, not velocity. The acceleration pulse is the primary recorded signal, but the quantities that actually matter for occupant restraint validation — the velocity change Δv, the pulse centroid, and the displacement the sled travels — are all derived from it. Reconstructing the velocity profile by numerical integration is therefore a mandatory post-processing step, and it is also the first place where a bad pulse reveals itself: an integration that does not close on the intended test velocity means the pulse is wrong, the measurement is wrong, or the baseline handling is wrong.
The governing relation is straightforward. With acceleration a(t) sampled at a fixed rate, velocity is the cumulative integral:
v(tk) = v0 + ∫0tk a(t) dt ≈ v0 + Σi=1k ai Δt
where Δt = 1/fs. The practical difficulty is never the formula; it is the sign convention, the pre-trigger baseline, the integration scheme, and the decision about where the pulse starts and ends.
Sign Convention and Baseline Correction
Adopt one convention and state it explicitly before touching the data. In this example the sled decelerates during the crash phase, so the measured acceleration is negative in the direction of travel; the velocity change magnitude is reported as a positive number. If your data acquisition system stores the opposite sign, invert the whole record once, at the start, and never mix conventions mid-calculation.
Pre-trigger samples are not zero. Bias in the accelerometer, charge amplifier drift, and quantization all contribute a small offset that integrates into a large velocity error over a 100 ms pulse. Compute the mean of a quiet window before trigger (typically 20–50 ms) and subtract it from every sample. A residual bias of 0.5 m/s² integrated over 0.1 s produces 0.05 m/s of false Δv — small, but a 2 m/s² bias produces 0.2 m/s, which is already at the edge of a typical ±0.2 m/s acceptance band.
Worked Example: Trapezoidal Integration of a Measured Pulse
The following Python fragment performs baseline correction, trapezoidal integration, and the acceptance check. It is self-contained and runs on any NumPy installation.
import numpy as np
# --- Example input: measured sled acceleration, 10 kHz, 120 ms record ---
fs = 10_000.0 # sampling rate [Hz]
dt = 1.0 / fs
t = np.arange(0.0, 0.120, dt)
# Synthetic "measured" pulse: half-sine, 40 g peak, 90 ms duration,
# negative because the sled decelerates in the travel direction.
peak_g = 40.0
duration = 0.090
g0 = 9.80665
a_true = np.where(t < duration,
-peak_g * g0 * np.sin(np.pi * t / duration),
0.0)
# Add a realistic pre-trigger bias and a little noise
rng = np.random.default_rng(7)
a_meas = a_true + 0.8 + rng.normal(0.0, 0.35, t.size) # bias +0.8 m/s^2
# --- 1. Baseline correction from the pre-trigger window ---
pre = t < 0.010
bias = a_meas[pre].mean()
a_corr = a_meas - bias
# --- 2. Trapezoidal cumulative integration ---
v = np.zeros_like(a_corr)
v[1:] = np.cumsum(0.5 * (a_corr[1:] + a_corr[:-1]) * dt)
# --- 3. Report and verify ---
dv_measured = abs(v[-1])
dv_intended = 24.0 # intended test velocity [m/s]
tol = 0.2 # acceptance band [m/s]
print(f"bias removed : {bias:+.3f} m/s^2")
print(f"delta-v measured : {dv_measured:.3f} m/s")
print(f"delta-v intended : {dv_intended:.3f} m/s")
print(f"error : {dv_measured - dv_intended:+.3f} m/s")
print("PASS" if abs(dv_measured - dv_intended) <= tol else "FAIL")
With the parameters above the reconstructed Δv lands within a few hundredths of a metre per second of the intended 24 m/s, and the script prints PASS. The exact number depends on the noise draw; the point of the exercise is that the pipeline is deterministic given the record, and the acceptance decision is made by a single comparison against a stated tolerance.
Choosing the Integration Scheme
Rectangular (left- or right-endpoint) summation is acceptable only when the sample rate is high relative to the pulse content. For a 10 kHz record of a 90 ms half-sine, the difference between rectangular and trapezoidal integration is well under 0.01 m/s. At 1 kHz it becomes visible, and at 500 Hz it can exceed the acceptance band. Trapezoidal integration is the default choice for sled data because it is second-order accurate and costs nothing extra. Simpson's rule adds accuracy only if the signal is smooth; on raw, noisy acceleration it can amplify high-frequency content and is not recommended before filtering.
Two further details matter. First, integrate the entire record, including the post-pulse tail, and read Δv at the last sample — truncating at the nominal pulse end discards the decaying tail and biases Δv low. Second, if the record does not return to zero acceleration at the end, the residual is either a real slow rebound or a baseline error; check the last 10 ms before trusting the result.
Verification and Failure Symptoms
The acceptance check is a single comparison, but a failure is diagnostic rather than fatal. The table below maps the most common outcomes to their likely causes.
| Observed result | Likely cause | Corrective action |
|---|---|---|
| Δv low by 0.5–2 m/s, pulse shape looks correct | Integration truncated at nominal pulse end; tail discarded | Integrate the full record and read Δv at the last sample |
| Δv high by a constant offset, independent of pulse | Uncorrected accelerometer bias | Recompute the pre-trigger mean and subtract it |
| Δv drifts with record length | Residual baseline error or slow drift in the amplifier | Check the last 10 ms of the record; consider a linear detrend on the pre-trigger window |
| Δv correct but velocity profile shows a step at trigger | Sign convention flipped mid-record, or trigger sample included in the baseline window | Verify sign once at the start; exclude the trigger sample from the baseline mean |
| Δv within tolerance but pulse centroid shifted | Pulse shaping issue, not an integration issue | Investigate the absorber setup; integration is not the fault |
filtfilt) and document the cutoff. Filtering is the subject of a separate step in the workflow; for the velocity reconstruction itself, integrate the baseline-corrected raw signal.Deliverable: Velocity Reconstruction Record
The following record captures everything a reviewer needs to reproduce the calculation. Fill it in for each sled run and attach it to the test report.
| Field | Example value | Notes |
|---|---|---|
| Run ID | SLED-0042 | Unique test identifier |
| Sampling rate fs | 10 000 Hz | From DAQ configuration |
| Record length | 120 ms | Include post-pulse tail |
| Sign convention | Negative = deceleration in travel direction | State once, apply throughout |
| Baseline window | 0–10 ms pre-trigger | Exclude trigger sample |
| Baseline value removed | +0.80 m/s² | Mean of window |
| Integration scheme | Trapezoidal, full record | Second-order accurate |
| Δv measured | 24.04 m/s | Read at last sample |
| Δv intended | 24.00 m/s | From test specification |
| Tolerance | ±0.20 m/s | Per test plan |
| Result | PASS (error +0.04 m/s) | Single comparison |
Once this record is complete and the acceptance check passes, the velocity profile is qualified for downstream use: occupant restraint timing, pulse centroid calculation, and displacement reconstruction all consume the same integrated signal. If the check fails, resolve the cause from the failure table before proceeding — a velocity profile that does not close on the intended test velocity will propagate error into every subsequent analysis.