Benchmarking Classical & Learning-Based Control on a Real System
Under review for IEEE Robotics & Automation Magazine
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.
A Deceptively Simple Challenge
A nonlinear, underactuated control problem with real-world sensing constraints.
Sensor blind zone: ToF sensors cannot see the ball near cart endpoints (|θ| > ~0.071 rad), creating unobservable states at the worst possible moment
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)
Sensor zero-offset: replacing or repositioning ToF sensors introduces a variable offset (±several mm) from true center, silently biasing every controller differently each time
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
Hard track limits: 1.56m track with no room for error; classical controllers need heuristic wall-override gains that introduce oscillations near endpoints
Industrial-Grade Hardware
Industrial servo, low-cost sensors, and rapid-prototyped mechanics : the noise and imprecision controllers actually face in deployment.
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.
PLC encoder (cart) -> RS232-USB -> Workstation
-> merge as [x, ẋ, θ, θ̇] -> Controller -> USB -> PLC -> Servo
13 Controllers Compared
5 classical + 5 learning-based + 3 data-driven controllers evaluated under identical conditions on real hardware: 50 stratified trials each.
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
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.
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.
Key Takeaways
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.
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.
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.
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.
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 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}
}