Under Review

Benchmarking Classical & Learning-Based Control on a Real System

Under review for IEEE Robotics & Automation Magazine

cart: 0mm / ±777mm | ball: 0.0° / ±4.6° | v_cmd: 0.00
Manual

Move mouse left/right to control cart · Scroll to zoom · Drag to orbit · Space to reset

Can you keep the ball centered? Move your mouse to control the cart.
13 controllers competed to do this on real hardware: 50 trials each.

The Problem

A Deceptively Simple Challenge

A nonlinear, underactuated control problem with real-world sensing constraints.

Ball-on-arc system diagram showing a ball rolling on a convex arc (with shallow concave dip) mounted on a linear cart with ToF sensors
1

Sensor blind zone: ToF sensors cannot see the ball near the arc edges (|θ| > ~0.071 rad), creating unobservable states at the worst possible moment

2

Sensor noise: about 13 mm peak-to-peak variation with the ball stationary at center (σ ≈ 3.3 mm on the fused estimate, no filtering applied, ~10-12 Hz update)

3

Sensor zero-offset: replacing or repositioning ToF sensors introduces a variable offset (±several mm) from true center, silently biasing every controller differently each time

4

Sim-to-real gap: first-order lag model approximates the PLC's 7-phase motion profile; mismatch in cart acceleration transients couples directly into ball dynamics

5

Hard track limits: 1.56m track with no room for error; classical controllers need heuristic wall-override gains that introduce oscillations near endpoints

13
Controllers
50
Trials Each
20 Hz
Control Rate
Platform

Industrial-Grade Hardware

Industrial servo, low-cost sensors, and rapid-prototyped mechanics : the noise and imprecision controllers actually face in deployment.

Ball-and-arc experimental setup showing the linear cart, 3D-printed arc with ToF sensors, and Beckhoff servo motor

Fig. The ball-and-arc platform.

Why this setup matters: Asynchronous multi-rate sensing, communication latency, and sensor noise create conditions where simulation-optimal controllers can catastrophically fail.

Actuation
Beckhoff AM8121 + TwinCAT 3
Velocity mode · τ_v = 0.15s · 7-phase profile
Sensing
2× VL53L0X ToF + Encoder
Ball: ~10-12 Hz, σ ≈ 3.3mm · Cart: PLC encoder
Track & Arc
1.553m track (axis units) · R = 2.101m
~1m physical travel, encoder-scaled 2x · PLA arc, 2mm dip (FWHM 20mm)
Control
20 Hz · Python · USB-serial
i7-13700 workstation
Data Flow
ToF (ball) -> Arduino Uno -> USB -> Workstation
PLC encoder (cart) -> RS232-USB -> Workstation
-> merge as [x, ẋ, θ, θ̇] -> Controller -> USB -> PLC -> Servo
Asynchronous: ball at ~10-12 Hz, cart at loop rate ; fused into state vector at 20 Hz
Controllers

13 Controllers Compared

5 classical + 5 learning-based + 3 data-driven controllers evaluated under identical conditions on real hardware: 50 stratified trials each.

Classical
Learning
Data-Driven
Results

Experimental Results

50 hardware trials per controller at 20 Hz. Difficulty-stratified initial conditions. Identical physical system.

Baseline Performance: 50 Trials per Controller

50 trials, 20 Hz, stratified ICs | Ball settled within ±0.01 rad (±21 mm of arc) for 1 s, 30 s timeout

0 5 10 15 20 25 0 2 4 6 8 10 12 Median Settling Time (s, successful trials) Failure Rate (%) MPPI PPO (BZ+DR) PD+WO PPO (WM) LQR+WO NMPC TRPO (DR) TQC (DR) SMC+WO SAC (DR) MPC+WO IQL TD3 (DR)

Both axes increase toward worse outcomes, so the ideal corner is bottom-left. MPPI is the best point estimate on both axes (0% failures, 1.67 s median settling). Three controllers reach 100% success, and no pairwise success-rate difference within the reliable group is statistically significant at 50 trials; MPPI's advantage is confined to settling speed (significantly faster than 8 of the 12 others). Hover a point for details.

Data table
ControllerFamily SR (%) Median settle (s) Mean settle (s)
MPPI Real-Data 100 1.67 2.06
PPO (BZ+DR) Sim RL 98 2.55 5.11
PD+WO Classical 96 3.38 5.80
PPO (WM) Real-Data 100 3.64 6.84
LQR+WO Classical 100 4.00 7.08
NMPC Predictive 90 4.71 7.48
TRPO (DR) Sim RL 90 4.80 8.09
TQC (DR) Sim RL 86 6.61 9.77
SMC+WO Classical 92 8.28 8.93
SAC (DR) Sim RL 82 8.40 10.10
MPC+WO Predictive 80 9.65 10.81
IQL Real-Data 92 9.80 10.62
TD3 (DR) Sim RL 92 10.06 11.45

BZ = Blind Zone sensor modelling, DR = Domain Randomization, WO = Wall Override, WM = World Model (LSTM-based next-state prediction). Data-driven methods (MPPI, PPO WM, IQL) use learned dynamics or logged data (no simulation SR reported).

Settling Time by Starting-Position Stratum

Median time to settle, by cart initial position (50 stratified trials, successful trials only). Bar color encodes the stratum (see legend below); controller category is shown in the first chart.

easy (center) medium (near-wall) hard (at-wall)
MPPI
3.1s
1.2s
2.3s
50/50
PPO (BZ+DR)
2.2s
2.1s
3.9s
49/50
PD+WO
2.8s
3.1s
4.1s
48/50
PPO (WM)
5.0s
2.9s
5.7s
50/50
LQR+WO
3.2s
4.5s
3.9s
50/50
NMPC
1.7s
5.1s
6.4s
45/50
TRPO (DR)
5.6s
4.2s
1.4s
45/50
TQC (DR)
4.9s
8.5s
11.6s
43/50
SMC+WO
7.0s
6.0s
8.8s
46/50
SAC (DR)
7.3s
7.9s
9.7s
41/50
MPC+WO
13.3s
9.4s
5.1s
40/50
IQL
14.3s
13.1s
8.2s
46/50
TD3 (DR)
10.1s
8.7s
8.1s
46/50

Hardware median settling time by starting-position stratum. MPPI is fastest and most consistent across all strata (1.2 to 2.7 s). Three equal-width bars per controller: center (left), near-wall (middle), at-wall (right). Empty bar = zero successful trials in that stratum. SR = successful trials / total.

Findings

Key Takeaways

Finding 1

Constraint Handling and the Choice of Paradigm

Add a simple wall-override and almost any controller becomes reliable: PD jumps to 96%, LQR to 100%, SMC to 92% (NMPC handles the boundary on its own, 90%). Once the rail is handled, all four control families tie statistically on reliability. Boundary handling matters more than the classical-versus-learned choice.

Finding 2

Two Deployments from a Learned Model

One small LSTM, trained on logged hardware data, gives two ways to run the system. MPPI plans with it live: 100% success, fastest settling (1.67 s), lowest effort. PPO-WM instead trains a policy inside a second such model, also 100%, with sub-2 ms decisions. Both run on CPU, no GPU anywhere.

Finding 3

The Reach of Domain Randomization

Domain randomization does most of the sim-to-real work, taking PPO from 60% to 90%, then stops helping. Modelling the sensor blind zone nudges it to 98%, but that gap is too small to call at 50 trials. Agents that balance perfectly in simulation still range 82-98% on hardware, so sim scores do not predict real reliability.

Offline RL

A Low-Overhead Option Without a Simulator

IQL reaches 92% success with almost the lowest control effort, using no simulator at all. It trades speed for simplicity (median 9.8 s). Its training data came free from ordinary evaluation runs, an easy option when you cannot trust a simulator.

Reproducibility

Reproduce in Minutes

Fully open-source. Train a PPO policy on CPU, evaluate all controllers in simulation.


# download ball-on-arc-full.zip (~431.7 MB) from the anonymized OSF archive:
#   https://osf.io/dxhvp/?view_only=afc8b9f9fed348bf912f4c6bc2bc9fa2
unzip ball-on-arc-full.zip -d ball-balancing-on-arc
cd ball-balancing-on-arc
make install-full

# Train PPO with blind-zone + domain randomization (about 40 min on CPU)
python training/scripts/train_all_cont.py \
  --algos ppo --rewards balanced --dr --blind-zone \
  --timesteps 3000000 --tag ppo_bz_dr

# Evaluate all controllers in simulation
make eval-sim

# Generate all paper figures
make figures
Citation

Cite This Work

@article{anon2026controller,
  title   = {Which Controller Should You Deploy? A Hardware
             Benchmark of Classical and Learning-Based
             Methods on a Ball-on-Arc System},
  journal = {IEEE Robotics \& Automation Magazine},
  year    = {2026},
  note    = {Under review}
}