Ball on a Plate


Robert Luan, Stephen Chen and I spent about five hours over dinner before we finally decided that we were going to build a ball on a plate, a system that aims to control the position of a ball on a square plate through feedback control. For plate actuation, we used two TowerPro servos on two independent axes below the plate (below). Although we initially used a ping pong ball for our system, we ended up choosing smaller metal ball bearings. Our plate was a polycarbonate/black foam PVC sandwich and it sits underneath an overhanging Logitech C520 webcam.

Tracked target, a metal bearing
Actuator servos

From left to right: Metal bearing, the tracked target, resting on our plate and the servo/u-joint combination that actuated the plate

Using LabVIEW’s builtin blob tracking software, we used the centroid technique for its speed of execution. Based on this sensor data, we applied LQR and PID to regulate the ball’s position at the origin. I contributed largely the LabVIEW architecture for our system as well as programming UI features, such as drawing the desired trajectory in the front panel. Over 13 straight days, we completed the project.

After many long nights, we finally finished our project, albeit not quite up to our initial expectations. Regardless, I was very satisfied and am still amazed at what we were able to accomplish in 13 days.