This project will make pool more exciting and accessible to beginner players by introducing aiming assistance for making straight, angled, combination, and even bank shots.

The overall goal of this project is to help novice players get better at pool and have an easier time calculating their aim. We’re building a system to read in images from a Kinect 2 mounted over a pool table, so that we can process the image and predict where we expect the balls to travel based on how the user aims their stick. The predicted paths will be projected onto the pool table to provide visual aid for the users. Additionally, we will also provide ambient lighting above the table which changes in color based on how many balls are remaining in play.

The system comprises of 5 main subsystems: Control, Camera, Projector, Lighting, and Power. Control acts as the central subsystem with all other subsystems connected to it. The fringe subsystems, camera, projector, lighting, and power will only connect to the control, not with each other. All the subsystems will either sense or actuate based on the input and output of the control subsystem only.

Frame - 80/20 and wood
Camera/vision system - Kinect 2
Controller - Java codebase run on windows laptop to control system
Filtering - filtering code to reduce shake from vision system
Physics engine - Java module written to model physics of pool game
PCB/lighting code - Custom lighting module using multicolor, programmable LEDs and a custom PCB
Graphics - Java code base used to draw objects on projection

Pipeline Architecture: Cam->Control->Filter->Physics->Graphics/Lighting