top of page

Ball and Plate Robot

Overview

During a summer at Barcelona’s Institut de Robòtica i Informàtica Industrial, I designed and prototyped a vision-controlled parallel robot that balances a ball on a moving plate.

The challenge was open-ended (“make it balance”), so I began by defining what success would mean: fast stabilization and reliable control. From there, I broke the work into milestones: design and fabrication, setting up the vision system, and building the control loop.

  • Mechanical Design: Modeled a 6-DOF parallel robot in SolidWorks, exploring non-symmetric structures to increase stability. Prototyped and assembled components using 3D printing.

  • Vision System: Mounted and calibrated a camera, then implemented circle detection and centroid tracking in Python (OpenCV), after testing multiple approaches for speed and robustness.

  • Control Loop: Built a feedback controller in Python, integrating real-time ball position with motor commands to keep the ball centered on the plate.

  • System Integration: Delivered a closed loop from vision → control → actuation, validated against measurable metrics like stabilization time and steady-state error.

What I Built

Approach

I started with limited knowledge of robotics controls and was initially unsure if I could achieve the outcome. To close the gap, I completed official SolidWorks courses, dove into academic papers on kinetostatic analysis, control, how to predict the position error of the center of the ball in order to correct it, and iterated quickly. I compared symmetric vs. non-symmetric robot geometries, tested two vision algorithms, and documented the trade-offs between accuracy, robustness, and complexity.

In order to track the ball, I installed a camera on top of the robot, calibrate it (real distance with digital pixels), set the axis of the camera so that it would coincide with the axis of rotation of the robot, and try two different methods of finding a circle. In the end, I ended up choosing the method in which I first had to turn the image to binary and use the surrounding pixels and previously set parameters to "guess" the circle in the plane.

Design

  • Delivered a working robot that could reliably balance and recover the ball in the span of 2.5 months.

  • Reduced stabilization time through geometry and control tuning.

  • Produced clear documentation so others in the lab could replicate the build.

  • Learned how to frame open-ended research into milestones, work across design and software, and translate theory into a real-world system under tight deadlines.

Results

Robot.png

Thanks for taking a look at my work! Feel free to contact me at amasini@alum.mit.edu if you would like to chat more.

bottom of page