Sohaib Kaidali

← All work  ·  Personal research project · in progress

Can reinforcement learning beat model predictive control when a car hits ice?

I don't know yet, and that is deliberate. The simulator, the labels and the plan are done and the comparison is running. I wrote down what I expect and what would prove me wrong before looking at any result.

My role
Everything: design, simulator, controllers, evaluation
When
Oct 2026 – now
Stack
Python, NVIDIA Warp, PyTorch
Status
Tuning phase. No comparison results yet.

The problem

A car is in a corner on dry road and the surface turns to ice. Grip drops to about a ninth of what it was, in a few metres. Two families of controller claim to handle this:

Papers usually report one beating the other. Two things make those comparisons hard to trust. Many test cases are crashes that no controller could avoid, which only adds noise. And the method the authors care about usually gets more tuning.

What I built

First, find out what is possible

Before comparing anything, every scenario gets one of four labels: impossible, possible only if you see the ice coming, possible by reacting, or undetermined. The "impossible" label comes from a proof (the tyres can't supply the force the corner needs, even used perfectly). The "possible" labels come from oracle controllers that are told the true grip.

Grid of bar charts for ice, snow and wet surfaces and four patch lengths. Each bar splits arrival speed into possible, undetermined and certified infeasible ranges.
What the proof alone decides. Rows are surfaces, columns are how long the slippery patch is, and each bar is a corner radius. Blue: recoverable. Orange: proven impossible. Green: the proof can't say, so oracle controllers decide. Controllers are compared only where recovery is possible.

A fast simulator I can trust

The vehicle model is a bicycle model with Pacejka tyre curves, the standard description of how tyre force saturates and falls off when sliding. I wrote it twice: a slow, readable NumPy version and a GPU version in NVIDIA Warp. 150 automated tests check that they agree. The GPU version runs 320 million control steps per second on a laptop GPU, and the GPU MPPI evaluates about 200 million rollout steps per second.

A fair fight, agreed in advance

Where it stands

PartState
GPU simulator and reference modelDone, 150 tests passing
Feasibility proof and oracle labellingDone for the tuning scenarios
Adaptive MPPI and PPO teacher/studentImplemented, being tuned under the shared budget
Labelling the held-out test scenariosNext
The comparison itselfNot run yet

No result is claimed here. When the comparison is done, this page gets the regime map: where each method wins, where neither can, and whether my prediction held.

What I've learned so far

The repository is private until the results are in.

← Underwater robotMore projects →