Beer pong is a classic party game involving skill, persistence, and alcohol tolerance. Participating in friendly games of beer pong is a great way to socialize with peers, but what if you aren’t very good at tossing ping pong balls into red Solo cups? In that case, you may want to follow the lead of Niklas Bommersbach to construct a robot that can play beer pong for you.
This robot works a bit like a medieval catapult to launch ping pong balls, but that’s more complicated than it sounds. The target (a cup) is quite small, which means the robot has to be accurate. Like a bullet traveling along a ballistic trajectory, the ping pong ball will experience both gravity and drag from air resistance. The robot has to take those into account, as well as vibrations in the catapult arm that cause oscillations to throw off the throw. Bommersbach had to implement algorithms to take those into account, going so far as to measure the movement with an IMU.
The robot is a combination of aluminum extrusion and 3D-printed parts. An Arduino Uno Rev3 board controls two continuous rotation servo motors that start the arm spinning, then a third stepper opens the gripper to release the ball at the proper time. There is also a vibration-dampening system that uses a complex system of lead screws and gears to move weights up and down the arm to alter the frequency at which the arm structure oscillates, ensuring that those do not interfere with a throw at a specific distance.
There isn’t any computer vision, so Bommersbach has to enter the parameters for each shot. But the result is still impressive and this robot is more consistent than most experienced players.