Ball Balancing Robot | 3RRS Parallel Manipulator
Designed and built a 3-DOF parallel robot capable of stabilizing a moving ball using real-time computer vision and PID-based inverse kinematic control. CAD modeled in SolidWorks, controls implemented in Python on Raspberry Pi.
Controls
Developed an inverse-kinematics model using vector geometry and linear algebra to convert a commanded platform pose—defined by position and surface normal vector—into the corresponding servo motor angles.
Implemented a 60 FPS computer-vision pipeline on the Raspberry Pi using Gaussian filtering, morphological erosion/dilation, thresholding, and contour detection to isolate the ball and calculate its pixel-space centroid in real time.
Converted the measured ball centroid into a position error relative to the platform center, providing continuous feedback to the closed-loop controller.
Implemented and tuned a PID controller using proportional, integral, and derivative error terms to generate platform tilt commands, balancing responsiveness against overshoot, oscillation, and steady-state error.
Integrated the vision, control, and inverse-kinematics calculations into a real-time feedback loop, continuously updating servo commands as the ball moved across the platform.
Generated servo position commands through the Adafruit servo controller, translating calculated joint angles into PWM signals for platform actuation.
Hardware
Raspberry Pi 4B — executes image processing, PID control, inverse-kinematics calculations, and real-time system coordination.
Arducam 3 — captures the platform workspace for high-frame-rate ball position tracking.
Adafruit Servo Control Board — generates PWM control signals for the platform’s servo actuators.
Servo-actuated balancing platform — mechanically converts individual servo rotations into controlled changes in platform orientation.