Puck Pal was a capstone project designed to showcase my mechanical, electrical, and software competencies. This project features a standard hockey net with a webcam attached to it, and a mechanized ramp located inside the net. The ramp is capable of collecting the pucks shot at the net and returning it to the player, providing a more efficient training experience through automation.
Inspired by my passion of hockey, this project incorporated a diverse set of skills, including software development, machine-vision, and motor control. Even after the course concluded, I continued to refine and improve this project until I was fully satisfied with the result.
Watch the video on the left to see it in action!
Hockey players lack the equipment to effectively train slapshots and advanced techniques that require a passed back on their own. Puck Pal is designed to bridge this gap, serving as a training aid that can enhance solo practice.
This project originated from MECH 423, and allowed me the opportunity to explore various disciplines. I worked with electrical components like high-powered motors and software like machine vision, and most importantly, the integration of these individual subsystems into a cohesive system.
My role within this project focused mostly on the software and electrical aspects, while my partner focused on the hardware aspect. My two largest contributions were:
developing Python software to process machine-vision (OpenCV/YOLO) model detections, generate movement commands for a stepper motor, and transmit serial data to an MSP430 microcontroller.
programming C-based firmware for the MSP430 microcontroller to process serial data packets and control a NEMA23 stepper motor at 240Hz.
Puck Pal integrates mechanical, electrical, and software subsystems, incorporating machine vision, motor control, and embedded firmware. This components work together to create an automated training aid for hockey players. How it works:
Machine Learning: A webcam captures real-time footage from in from of the hockey net, where a OpenCV/YOLO-based object detection model identifies players and tracks their position.
Python Communication Protocol: A Python script processes the model's results, identifies the player's location relative to the aiming stepper motor, and transits the resulting movement command over a serial connection to an MSP430 microcontroller.
Microcontroller Firmware: The MSP430 microcontroller processes the serial data, and generates stepper motor controls at 240Hz for the aiming stepper motor.
Motorized Puck Return System: A NEMA23 stepper motor drives a mechanized ramp, which has a rotating platform. The rotating platform has 2 DC motors with flywheels attached to them, capable of launching the ball back to the player.
Passive Puck Collection: A wooden ramp collects all pucks shot at the net, and then transports them to the rotating platform to be returned to the player. This puck collection is passive, meaning that the aiming stepper motor will follow the player even if there is no puck in play.
This complex system demonstrates the integration of multiple engineering disciplines, showcasing real-time control, automation, and precise electromechanical design.