ECE497 Project Set Playing Beagle

Team members: Stephen Mayhew, Samuel Allen, Julian Ametsitsi

Description
Using a webcam, a projector, and possibly a microphone, this system will allow the computer to play Set. Set is a card game which involves finding patterns among a 12-card layout. The instructor at this website makes the interesting point that for humans, it is easy to gather information about the cards, but hard to find sets. For computers, it is the opposite: even with a brute force algorithm, it is a trivial matter to find all sets in a layout, but it is difficult to read the cards.

Our github page is:

https://github.com/mayhewsw/BeagleSetGame

Game Play
It will be a command line application, written in Python using the OpenCV Python bindings.

Basic Flow:
 * Start the program
 * Set out the cards
 * When there are 12 cards, the program will start to recognize cards and find sets
 * When the computer finds a set, it will project the locations of the cards onto the playing surface
 * If the computer can't find a set, then project red X, or speech synthesis "No set", or print to console

If there is time:
 * If a human finds a set - user input: click, speech recognition - and computer stops looking
 * Speech synthesis - ask for confirmation on sets (could also be command line - much easier)

Tasks

 * Decide on final functionality
 * Come up with the hardware setup, frame to hold the camera and projector
 * Learn how to stream video input using OpenCV (or PyGame) - Sam
 * Finish the Set card recognizer - Stephen
 * Bring the system together - Everybody
 * Test the DLPpico projector, get it to communicate with the camera - Julian

Completed tasks:
 * OpenCV is installed on my Beagle - Stephen
 * OpenCV program tested on the Beagle - Stephen
 * Game logic has been acquired - Stephen
 * Install emacs on the Beagle so I don't have to deal with vi - Stephen
 * Preliminary Set card recognizer created - Stephen