University of California Berkeley Logo
University of California Berkeley
Engineering

Autonomous Ping-Pong Dribbling and Bouncing Robot

Overview

I designed, manufactured, and prototyped a robot to dribble or bounce a ping-pong ball on a small, 6" square platform regardless of disturbances. The platform had to accelerate fast enough to bounce the ping-pong ball reliably, rotate to control the bounce trajectory, and be rigid enough to reliably predict and control the ball's movement. I worked with a team of students at UC Berkeley to integrate the design with electronics and software. My contributions included the entire mechanical design, stepper and servo motor circuitry design and implementation, and stepper motor control code.

Solution

Linear movement was controlled by stepper motors and belts actuating two linear slides. Belts allowed for faster acceleration and accuracy compared to rack and pinions and their backlash, or lead screws and their limited acceleration ability. Platform rotation was actuated with a direct driven gimbal system by two servos for fast and accurate movements.

Ball position tracking was completed with a webcam and computer vision to obtain the x, y, and z coordinates. The platform was controlled with a PID loop, taking the ball position and trajectory to change the platform position and angle to keep the ball on the platform while bouncing.

Initial Concept

Initially, we hoped to dribble the ping-pong ball on the ground while moving around a room, similar to how a basketball player would dribble around the court. This concept included a drive train with mecanum wheels for omni-directional movement and an initial gimbal and linear actuation system.

Prototyping

The initial concept was changed to a stationary frame in order to reduce project complexity and increase feasibility for the project timeline.


The singular stepper motor didn't provide sufficient torque or acceleration for our needs, so I designed another iteration using two nema-23 steppers.

Final Prototype

After multiple component iterations, the final prototype and control code was successfully implemented. The ping-pong ball stayed on the platform regardless of disturbances such as bounces, wind, and human interference. The longest time we ran the robot was 2 hours, in which the robot ran flawlessly, keeping the ball on the platform without any restart of the program or additional tuning.