2025– · in progress

Predicting vehicle rollover

Predicting, one to four seconds ahead, whether a heavy vehicle is about to roll over, from its onboard sensors; developed in simulation, then validated on real test-track recordings.

Collective research project at École polytechnique for the French armament procurement agency (DGA), team of five, project lead.

longest prediction horizon
4 s
real test-track runs of an instrumented 3.2 t vehicle
392
recall 2 s ahead on real runs beyond the training range (precision 78%)
85%

How it works

From simulated trajectories to an early warning: the models forecast the maximum lateral load-transfer ratio over the next seconds and raise an alert when it crosses the danger threshold of 0.7 (wheel lift is at 1).vehicle simulator484 scenariosonboard sensorsvx vy ψ ψ̇ φ θ δ δ̇4 architecturesMLP · LSTM · PatchTST · XGBoostalertforecast LTR ≥ 0.7load-transfer ratio, target: max over the next 1–4 s
Fig. 1 From simulated trajectories to an early warning: the models forecast the maximum lateral load-transfer ratio over the next seconds and raise an alert when it crosses the danger threshold of 0.7 (wheel lift is at 1).

A vehicle dynamics simulator generates trajectories and the lateral load-transfer ratio; four architectures (MLP, LSTM, PatchTST, gradient boosting) learn to forecast its maximum over the next seconds, optionally fed with features from a Neural ODE trained on the simulator; splits are made by scenario, never by timestep.

Results

50%60%70%80%90%100%Real vehicle · 392 test-track runs · runs with peak > 0.9 held out1 s ahead83.9%82.1%2 s ahead85.1%78.4%4 s ahead81.3%80.2%Simulation · 2 s ahead · test beyond the training rangepeak > 0.791.2%66.3%peak > 0.896.1%82.6%peak > 0.997.9%90.8%
recallprecision
Fig. 2 Recall and precision on dangerous windows (LTR ≥ 0.7), on test runs whose peak load transfer exceeds anything seen in training. Top: the real instrumented vehicle. Bottom: the simulator.

On 392 real test-track runs, an LSTM trained only on runs whose peak load transfer stays below 0.9 catches 85% of dangerous windows (LTR ≥ 0.7) two seconds ahead on runs that go beyond it, at 78% precision (AUC-PR 0.92), and 81% four seconds ahead. In simulation, the same approach held 91 to 98% recall on out-of-range splits. With Neural ODE features, pre-training on synthetic driving data and a quarter of the real recordings reaches 0.914 AUC-PR, against 0.916 with all of them.

Technical details

Problem

The load-transfer ratio LTR = (F_left − F_right) / (F_left + F_right) compares the vertical forces on the two sides of the vehicle: 0 when balanced, ±1 when the wheels of one side leave the ground. Today's systems read the current LTR, which warns too late. The models forecast the maximum |LTR| over the next 1, 2 or 4 seconds from the last 1.5 s of onboard signals at 100 Hz, and raise an alert above 0.7.

Target
max |LTR| over the next 1, 2 or 4 s
Input window
150 steps (1.5 s at 100 Hz), stride 10
Signals (simulation)
8: vx, vy, yaw, yaw rate, roll, pitch, steering angle and rate
Signals (real runs)
7: the same without yaw, which drifts when integrated
Danger threshold
|LTR| ≥ 0.7
Splits
by scenario; test runs peak above the training range (0.7, 0.8 or 0.9)

Models

Four architectures were compared on the same windows. The LSTM, the smallest, generalised best beyond the training range. In simulation the models were trained with a pinball loss on the 10th, 50th and 90th percentiles and alerts use the 90th, since missing a rollover costs more than a false alarm. On the imbalanced real data the quantile loss collapsed, and a weighted MSE (1 + 9y)(ŷ − y)² replaced it.

LSTM
1 layer, hidden 64, 21K parameters
PatchTST
patches of 15 steps, d_model 64, 4 heads, 2 layers, 109K parameters
MLP
1,200 → 512 → 256 → 128, 781K parameters
XGBoost
200 trees, depth 6, on the flattened window
Training
Adam, lr 1e-3, batch 64, early stopping (patience 15), gradient clipping 1.0

Neural ODE

A Neural ODE learns the vehicle dynamics ẋ = f(x, u) from the simulator: 6 state variables and 2 steering commands go through a 256–256–128 network with two heads, the state derivatives and the instantaneous LTR, integrated with an Euler step of 10 ms. It is trained first on one-step transitions, then on a curriculum of rollouts from 5 to 400 steps (0.05 to 4 s) with scheduled sampling that goes from full teacher forcing to none.

Its 128-dimensional hidden layer, projected to a few learned features, is then fed to the LSTM or PatchTST next to the raw signals. In simulation it raised PatchTST's AUC-PR on the hardest split from 0.69 to 0.88; on real data, with the backbone frozen and 16 features, it lifted the synthetic-pretraining pipeline from 0.898 to 0.937 AUC-PR (D4, 2 s, 3 seeds).

Network
8 → 256 → 256 → 128, SiLU, 102K parameters
Phase 1
one-step transitions, lr 1e-3, input noise σ = 0.1
Phase 2
rollouts 5 → 400 steps, Huber loss, lr 1e-4
Use
hidden layer → 16 or 32 features for the sequence model

Data and search

684 simulated scenarios from a 10-degree-of-freedom vehicle simulator (Pacejka tyres, PID speed and Stanley steering controllers), then 392 real test-track runs of an instrumented 3.2 t vehicle with six-axis force sensors on all four wheels. The simulator was calibrated on the real runs (centre-of-gravity height, roll stiffness and damping, tyre stiffness), which brought the simulated-to-measured LTR ratio from 1.28 to 1.09.

A synthetic driver built from two Ornstein–Uhlenbeck processes (speed and steering), fitted to the real runs' statistics, generated 400 more scenarios in five minutes. With Neural ODE features, pre-training on them and fine-tuning on a quarter of the real runs reached 0.914 AUC-PR, against 0.916 for the best model trained on all of them. Hyperparameters were searched with Optuna (TPE sampler, median pruner): about 180 trials, 48 hours on an Apple M-series GPU.

Simulated scenarios
684 (15 s each, 100 Hz)
Real runs
392 of 488 files usable (evasive manoeuvres, slaloms, lane changes, sinusoids)
Synthetic driver
400 scenarios, Ornstein–Uhlenbeck speed and steering
Hyperparameter search
Optuna, ~180 trials, ~48 h
Real result, 2 s
AUC-PR 0.916, recall 85.1%, precision 78.4%

← All projects