CrazyPong Project
During the ten week Summer Undergraduate Research Fellowship (SURF) at Caltech, I worked on making a ping-pong playing quadcopter. Starting from scratch, I was able to deliver a demo at the end of the program.

From motion capture to control
By tracking the ball using a motion capture system, the path of the ball is predicted. Then, the trajectory of the drone is computed to hit the ball at the right place and time.

Starting small
Starting out with a tiny Crazyflie quadcopter, weighing only 50 grams, I was able to test and iterate quickly. Move fast and break things – literally

We're gonna need a bigger drone...
As a final demo, I ran the pipeline on a larger ModalAI Starling drone which would not crash upon impact with the ball. Being constrained to the small lab space, I did not make it do aggressive maneuvers. Safety first!

Abstract
Quadcopters have become a very popular type of flying robot over the years, continuously becoming more powerful and agile. The ability of performing fast and aggressive maneuvers makes the quadcopter a viable alternative to robotic arms for making a ping-pong playing robot. Being able to reach a specific target point at a specific time also has many applications, such as docking in strong winds, formation flying and aerial defense. In this project, we implement a full pipeline from predicting the path of the ball to hitting the ball back using a Crazyflie quadcopter. A Vicon vision system was used to track the position of the ball and drone at a rate of 100Hz and we utilized an Extended Kalman Filter to predict the path of the ball within millimeter accuracy. To account for changes in the ball prediction, a real-time polynomial spline trajectory planner was implemented. This simple pipeline produces very consistent results, making it a good starting point for future testing of state-of-the-art algorithms for time-critical UAV trajectory planning.