A robotic arm
that can play air hockey against you.
No partner needed.


Our team aimed to create a robotic air hockey player. We were excited about the concept of creating a fun, interactive project and decided air hockey was the perfect game. Our main objectives were to create a final project that:

1. Made us proud as a team - i.e. a polished final project that works well and is fun to play.
2. Was scalable and reasonable for our time frame (approximately 13 weeks) and had a achievable minimum viable product and stretch goals.
3. Had enough technical challenges for our individual learning goals
4. Allowed us to maintain a healthy teaming dynamic with our fellow classmates.

Design Process

Sprint 1

In sprint 1, we completed our most basic MVP of a single robotic arm that was able to play defense. We started by electrically integrating our stepper motors, stepper drivers, Arduino, camera, and power supply. Using OpenCV in python, we corrected camera distortion and tracked the puck’s location. We sent the location to the Arduino via serial communication. Finally, we wrote arm control firmware in ArduinoIDE to rotate the arm to match the y-position of the puck. Alongside the electrical and software components we also fabricated the first version of our gear box, the single arm, and a prototype camera mount.

Sprint 1 System Gif

Sprint 2

Sprint 2 System Gif

In sprint 2, we completed our target goal of a parallel SCARA that could play basic defense by matching y-position. The main task for mechanical in this sprint was fabricating the parallel SCARA and new gear boxes. Our main electrical tasks were to wire the second stepper motor and stepper driver into the Arduino and incorporate end stop switches for homing. Additionally, we integrated a better power supply with short circuit protection for safety purposes. On the software side, we calculated the inverse kinematics to be able to control the new arm and integrated this into our current software system. We purchased a new high-frame rate camera and debugged serial communication overflow issues, which led to a significant reduction in latency.

Sprint 3

In sprint 3, we worked towards our reach goals of trajectory prediction software, robust mounting, and beautification. To achieve this, we calculated the velocity vector of the puck and defined several different modes of behavior depending on whether the puck would bounce, head back towards the player, or head directly towards the robot. We built a better overhead camera mount, attached the two gear boxes together and to the table, integrated an E-stop button, harnessed our cables and created an electrical enclosure.

Sprint 3 System Gif