Posts

Showing posts from January, 2021

What is CamChess?

Image
CamChess is a free open source program that enables you to play against a computer with a standard tournament board and pieces. It uses a camera to identify moves on the board. It is optimised for a vinyl roll up board with green squares and black and "light wood" coloured plastic pieces. I got mine from Chess Direct , but I expect that there are other suppliers. I am using a Raspberry Pi Zero with an attached ZeroCam to capture board images. I fixed them to a door frame with sticky tape. The Pi Zero sends the board images to a more conveniently placed Raspberry Pi 4B. You can also use a different computer running Linux, Windows or MacOS. I used WiFi for my initial testing, but I found it was much better to set up the Zero as an Ethernet gadget, and connect to my desktop computer via a USB cable (which carries both data and power). The ZeroCam overlooks the chess board. The board is offset to the side so that I can get through the door. That nonetheless 

How to Use CamChess

Image
I will describe the process of setting up CamChess process in later sections. In this section, I will assume that everything has been set up correctly, and that CamChess has just been launched. When CamChess is launched, it sends a request for a picture to the camera server. The camera server responds by taking a picture and sending it back to CamChess. CamChess displays the picture. (If the board is not sufficiently well centred, see Setting up the Camera .) CamChess will show the message shown above when it successfully identifies the chess board. The OpenCV program that I use for that was not designed to identify chess boards with pieces on. (It was designed to identify checker patterns to calibrating lenses.) Nonetheless, with my set up, the program has never failed to identify the board with the pieces set up in the start position. If you are having trouble, it is best to start with an empty board, and then set up the start position. (CamChess uses the image of the start position