Skip to content
Eric Le Fort edited this page May 5, 2017 · 1 revision

Project Summary

The aim of this project is to create an automated pool playing robot. This robot will be able to play pool against a human opponent for recreation or training purposes as determined by the user.

What follows is a breakdown of what the system will do step-by-step in more specific detail. To initiate the robot's turn, the user will press a button signifying that the system should begin. A camera will then be used to view the table and, using visual recognition algorithms, map out the positions of the pool balls. Our system will then determine the best angle at which to take a shot and how to move the equipment to that position. Once that is done, the robot will move into place, lining up the shot. Using a specialized, built-in pool cue, the robot will then make its shot.

Once it is the user's turn, the user will also be able to press a button to indicate to the robot that it needs to move in order to give room for the human player's shot. The robot will then move to a position that is out of the way.

Shot selection will involve following the rules of pool. Scores will be assigned to sinking each type of ball based on whether the robot is assigned stripes or solids in two situations: shooting for the 8-ball or not shooting for the 8-ball. If the robot is shooting for the 8-ball, sinking the 8-ball gives a large score and sinking any other ball gives a larger negative score. If the robot is not shooting for the 8-ball, sinking the 8-ball gives a large negative score, sinking the cue ball gives a medium negative score, sinking a ball of the opposite type (i.e. stripes if shooting solids or vice versa) gives a small negative score, and sinking a ball of the correct type gives a small positive value. The optimal shot will be the one that maximizes this score.

Repository Guide

bin

This section contains the compiled binary files of this project.

doc

This section contains all project documentation and should be a users first step in getting up to speed on the inner workings of the project. This includes electrical, software, and hardware documentation as well as all the CAD design for the system.

lib

This section contains libraries used in order to create this program such as RXTX for Arduino serial communication using Java.

resources

This section contains all data used by the program including testing files.

src

This section contains all source code used in the project. It is separated according to the four software subsystems in this project (camera, microcontroller, PC controller, and VR).

Final Presentation and Other Videos

Final Presentation

https://www.youtube.com/watch?v=JnZ3WzE_Scc

Operational Sample

https://www.youtube.com/watch?v=lD4AIjvDnsE