So I've convinced myself in to building a backgammon playing robot. I thought I'd write up a few thoughts.
Last weekend I've managed to put together the starting points for the board, and sourced some of its hardware. This is a project I've had in the back of my mind since university. I've thought about various solutions, but think now is the right time to start getting serious about it.
The concept is simple, I use a SCARA robot to move an actuator across the board. The actuator can be raised and lowered and will use a vacum cup to lift playing pieces. There will be a webcam that tracks the playing pieces positions and responds accordingly. I'd like there to be a method of rolling dice, but would be happy if this is just done by the robot with a RAND() function.
For the board I used the MDF and some cherry venner I had lying around from my Internet radio project. Last Saturday, I spent an evening scoring and cutting the spikes out of the board. I was actuallly really impressed with how accuratly this came out. You must respect the fact that I was 5 pints in before starting, and polished off a bottle of wine whilst performing the work! Only mistake was a slice across my thumb!
My idea is that I will cut and fill each spike with some felt. I made a brief attempt whilst hungover, but am not happy with the results. So will probably start again.
OCR of pieces
I've also been playing around with SimpleCV, a python implimentation of OpenCV. This seems to make the image recognition part so easy it seems like cheating. Having run a few test routines, the software side of things should'nt be too much of a problem.
Moving of pieces
To move each piece I will have a suction cup attached to the end of a SCARA robot arm. This will be lowered on to a piece and a syringe (driven by a servo) will provide the vacuum. I bought a bow and arrow set from a pound shop, and a Syringe off ebay. It works almost too well. Since the Syringe is huge (100Ml, and as big as a Salami), I need to get something much smaller!
The SCARA part should just be an application of thought rather than anything too challenging. I will RepRap the parts and take inspiration from the Helium Frog design.
Playing the game
A couple of months ago I started work on a program to play backgammon, using python. Its not very good, but its a start. I spent 8 hours on it (train ride back to Wales). It almost got me at one point, and I'm not too shabby at this game.
So just for the sake of it I will probably use that engine rather than a well-known one.
I've been plotting about this project for the last couple of weeks. I have plenty of sketches already, and a few design decisions made. To make life easier I will be starting at the actuator end and working backwards throughout the project. This seems like the best way to proceeed for now.