The interface for playing chess against a computer is poor. Real
chess involves moving pieces on a board, not icons on a screen.
It is hard to find computerized chess boards
that actually move the computer's piece, so I started this project to create a system that provides natural
game play, using a robot arm.
There are three pieces of technology required for this system:
A sensory chess board that could tell the computer what your move was, a "chess engine" to generate the respose,
and, of course, a robot arm to move the piece.
The chess engine was, originally, the open-source program GNUChess http://www.gnu.org/software/chess/
I later changed the chess engine over to Rybka for two reasons. One good reason was to interface to an engine
that uses the UCI (Universal Chess Interface) protocol. That gives me freedom to use any one of many engines. But the more
important reason was because Rybka has a "human" mode where it attempts to play chess like a human would play, so
it makes small mistakes and does not always choose the strongest move. This improves the play -- nobody enjoys losing all
The SIR-3 robot arm was made by Scien-Tech Intraco Automation in Singapore in 1988. They are now
out of business, but there are many great modern robot arm manufacturers. I bought my SIR-3 on eBay.
SIR3 Operating Manual
The code is very specific to my application, requiring
a SIR-3 robot along with my custom hand controller PIC chip on one serial port, and robot arm feedback on another. It may
be useful as an example of how to hook a DOS program's STDIO for use within a custom Windows program. The inverse kinematic
math is semi-interesting, but perhaps confusing without an explanation of the xyz space that the chess board resides in.
code was written under CodeGear's C++ Builder compiler.
click here to download file