LaserF is a product developed as part of an independent study at Duke University. For this project, I was a member of a multi-disciplinary team of undergraduate and graduate students who worked to develop a product over the course of a semester.
As a response to a lack of accessible and affordable soccer training products, our team designed a soccer goal frame with a laser grid that can calculate and display soccer ball coordinates on a user interface. Our design included 27 lasers with 27 corresponding photoresistors that detect laser occlusions.
A weighted average of occluded points using the time of occlusion as weights was performed on each kick to calculate the center position of the ball. A velocity calculation was performed by finding the diameter of the circular cross-section of the ball that occludes a laser. This diameter is then divided by the time of occlusion to obtain velocity. This information is displayed on the User Interface where position is given relative to the bottom left corner.
Technologies Used:
Python, C++
Arduino Microcontroller
CAD, 3D Printing
Circuit Design
Soldering
CNC Milling
This is the final product being demoed. The frame is constructed of extruded aluminum and is shielded on the sides by wood and 3D printed PLA ramps. This frame is attached to a commercially available soccer goal.
Laser diodes are housed in balls with knobs. These balls are secured to the extruded aluminum by brackets that are bolted on top of the balls. Both the balls and brackets are made of 3D printed PLA.
Large photoresistors are struck by the corresponding laser diode. The photoresistor pairs are connected to protoboard with trimpots that are used to calibrate the threshold between an obscured and unobscured reading.
This diagram on the right details the software component of this project. First, a shot is detected when any laser is occluded. Then, while any lasers are occluded you sample the lasers that have been triggered. Finally the position and velocity of the ball are calculated. This information is sent over a serial connection to a GUI being displayed on a laptop.
This image on the left is a direct screenshot of the GUI that the user views on their laptop. The soccer ball moves to the relative position based on the coordinates received. Additionally the coordinates are displayed below.
The diagram on the right shows how the velocity and position of the ball is calculated.