ECE497 Project Sudoku Solver

Team members: Joey Pierce, Donglai Guo

Grading Template
I'm using the following template to grade. Each slot is 10 points. 0 = Missing, 5=OK, 10=Wow!

 00 Executive Summary 00 Installation Instructions 00 User Instructions 00 Highlights 00 Theory of Operation 00 Work Breakdown 00 Future Work 00 Conclusions 00 Demo 00 Late Comments: I'm looking forward to seeing this.

Score: 10/100

(Inline Comment)

Executive Summary
Our project is about implementing a sudoku solver on the BBB. We will first feed the picture of the unsolved 9x9 sudoku grid to the BeagleBone and display it onto the LCD. We are planning on using Google vision to convert the text (numbers) of the picture into a text file. Then we press a GPIO button to trigger the sudoku solver which takes a text file as an input and outputs the solved sudoku grid. The correct result will be shown on the LCD too.

What works: Right now we are using a PlayStation camera to take a picture of our Sudoku board that we send to the Google Vision API. We are now able to use a board with grid lines, but still need to put in zeros for the blank puzzle spots. We are using ImageMagick features to remove the grid lines on the board before sending it to API. We then take the API results and send it to our Sudoku solver. We can then take the final result and use ImageMagick to compose a blank grid onto the Sudoku answers to display a completed puzzle on the LCD Display. Our Sudoku solver came from GitHub: https://github.com/Sanahm/SudoCAM-Ku.

What doesn't work: Our main problem right now is increasing the accuracy of the Google Vision API. Since we are attempting to remove the grid lines with ImageMagick, we found that its a little harder to get a good quality picture that the API can easily detect.

Packaging
If you have hardware, consider Small Build, Big Execuition for ideas on the final packaging.

Installation Instructions
The installation of this project are as follows:

root@beagle$ git clone https://github.com/pierceja/BeagleboneSudoku.git

User Instructions
Once everything is installed, how do you use the program? Give details here, so if you have a long user manual, link to it here.

(How it currently works): Once everything is installed and set up, you can execute the capture.sh script. When this begins to run, the camera will begin capturing frames which will be displayed on the LCD display. You need to capture a clear frame of the Sudoku puzzle you are trying to solve. The challenging part is capturing a frame which shows every row and column clearly. Once you see a frame you like on the LCD display, quickly press CTRL+C on your keyboard. This will initiate the image processing functions on the frame. Once image processing is complete, the processed image will be displayed on the display. If you are satisfied with the image, you can press the GPIO push button to send it to the Google API. The detected digits will be shown on the LCD display. Once this occurs, you can press the push button again to send the digits to the solver. After the solver is complete, the final results will be shown on the display.

Highlights
Here is where you brag about what your project can do.

Include a YouTube demo.

Theory of Operation
Give a high level overview of the structure of your software. Are you using GStreamer? Show a diagram of the pipeline. Are you running multiple tasks? Show what they do and how they interact.

Work Breakdown
List the major tasks in your project and who did what.

Google Vision API setup-Joey Hardware interfacing-Joey API and solver merging-Joey and Donglai Solver setup and editing-Donglai Image processing work-Donglai

Also list here what doesn't work yet and when you think it will be finished and who is finishing it.

As mentioned above, right now the API is completely accurate. This is being worked on by both of us and should by fixed by Tuesday November 14, 2017.

Future Work
Suggest addition things that could be done with this project.

There are a couple of neat ideas that we came up with that could be added to this project. One idea would be to get a stream from the camera so that it's a bit easier to capture a good frame. Another idea might be using image processing to append zeros to the Sudoku puzzle so that you didn't have to draw them by hand.

Conclusions
Give some concluding thoughts about the project. Suggest some future additions that could make it even more interesting.

Overall, this was an interesting project to tackle. The main challenge of this project was dealing with aspects that we had little control over such as the API. It was interesting to work with an API, however, and to experiment with trying to get the best accuracy we could out of it. Another challenge was making the most out of the hardware we were given. I think we might have gotten better results if we had a high end camera to use.