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 cart endpoints (|θ| > ~0.071 rad), creating unobservable states at the worst possible moment

2

Sensor noise: 7-9 mm peak-to-peak variation observed with ball stationary at center (σ ≈ 1.7 mm per sensor, no filtering applied, 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: 12 Hz, σ ≈ 1.7mm · 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 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

Failure-speed Pareto front across all 13 controllers: hardware failure rate versus median settling time from successful trials. Both axes increase toward worse outcomes; MPPI defines the frontier.

Both axes increase toward worse outcomes, so the ideal corner is bottom-left. MPPI is best on both axes simultaneously (0% failures, 1.67 s median settling).

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

Explicit constraint handling enables classical controllers. Adding a wall-override heuristic raises PD from 18% to 96% (+78 pp), LQR from 6% to 100% (+94 pp), and SMC from 12% to 92% (+80 pp). NMPC is the exception: it handles constraints natively through its internal optimization and reaches 90% (45/50) without any external override. On constrained hardware, boundary awareness is the first design priority.

Finding 2

A small LSTM trained on logged hardware data enables two deployment modes. MPPI uses it for online sampling-based planning: 100% SR, fastest median settling (1.67 s), and lowest control effort (0.354 RMS), with real-time rollouts of 42 ms per step for 800 parallel samples on CPU, within the 50 ms deadline. PPO-WM trains a policy inside the same model: identical 100% SR with sub-2 ms inference; it trains (~42 min) and deploys on CPU, no GPU needed anywhere. A data sweep shows prediction error plateauing around 50-100k transitions.

Finding 3

The residual sim-to-real gap is sensor-driven. Domain randomization does most of the heavy lifting, lifting PPO from 60% to 90%, then plateaus; modelling the dominant sensor failure (the ToF blind zone) closes the gap to 98%. The gap is perceptual: every RL agent reaches 100% SR in simulation yet hardware success spans 82-98%, and SAC, next-fastest in simulation, is least reliable (82%) because it overfits to perfect sensing.

Offline RL

IQL achieves 92% success with the lowest control effort of any learning-based method (0.395 RMS) using no simulator at all, trading speed for simplicity (median settling 9.80 s, roughly 4.7x slower than MPPI). Its training set was a by-product of normal evaluation runs, making offline RL a viable low-overhead option when simulation fidelity is uncertain.

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}
}