David Lammering personal site

Ball-on-Plate Control Demonstrator

A motorised two-axis plate balances a real ball on a screen. A camera tracks the ball's position. The ball interacts with arcade-style games for a playful visualization of control theory

CAD render of the new demonstrator: an aluminium-profile frame carrying a tilting rectangular plate with a ball resting on it, electronics on the shelves below, and a camera on an arm above the plate.
My new design, October 2026. CAD finished, parts ordered.
Now
Bachelor's thesis: Full hardware redesign, since September 2026
Before
Semester project: Controllers and demos, autumn 2025
Context
Automatic Control Lab, D-ITET, ETH Zürich
Team size
Solo, with supervisor guidance

How it works

DC-motors in combintation with encoders form an inner control loop to set the plate angles.

Close-up CAD viewport of the drivetrain: a large gear and pinion at the right, a drive shaft running across the frame, adjustable linkages on perforated plates, and the motor on its mount.
close-up view of the mechanics in my new design

What I do - Bachelor's Thesis

I completely redesign the old system. Major changes include:

  • new screen with new format: 3:2 instead of 16:18
  • new, improved mechanics: belt instead of gear for the torque-heavy axis
  • adapted and improved software to fit the new format

Challenges

Main challenge is the belt design: Its nonlinear dynamics make it very important to place it optimally.

considerations of extreme tilt angles for the belt design
belt-design has to work well for all angles

On both axes, the inertia and linear forces on mounting parts must be minimized to enable best possible control. On the old system, I found indicators for suspected gear slip or loose, bending parts. IMU data deviated strongly from encoder data. This must not happen on the new system.

IMU and encoder data deviate significantly: Indicator for gear slip or similar inaccuracies
IMU and encoder data deviate significantly: Indicator for gear slip or similar inaccuracies, possible consequence of too strong wear forces on parts

What's next

CAD is finished, parts are ordered and on their way. Next up is structural assembly, wiring and setup of the Raspberry Pi and its GPIO channels. Then comes tuning the inner loop, adapting the software and (possibly, as a stretch goal) a new camera system which is mounted on the plate-frame

Controllers, Games and Demos - Semester Project 2025

  • PID and LQR for the outer control loop.
  • Live-tuning: Both controllers are modifiable while the games run, so that users can witness the effects of each parameter interactively
  • Three games: a generated racing track, a Flappy Ball PID visualiser, rectangle tracking.

Racing Track

Racing Track is the best example to showcase the art of control to students: It is incredibly difficult to stay on the track and score laps while steering the plate manually. However, the automatic controller can manage very well! You can see the PID in action in simulation.

The same track with lap scoring and a lookahead setting.

An implementation I'm particularly proud of is the random track generation: Racing Track is a class consisting of 4 corner elements with random placement on the map. After generating the corner elements, connecting elements made of tanh-functions are generated.

Random track generation showcased.

The most counterintuitive part about PID is the Integral Control. My supervisors had the idea of showcasing integral control using a 1D- control situation, and colormarking the area between actual trajectory and reference trajectory. I implemented this visualization in the "Flappy Ball" - game.

Flappy Ball. The panel breaks the controller output down as the ball moves. The Integral bar is 10x normal size for visibility