a GO game playing robot ... using a raspberry pi, opencv and gnugo
The primary facts of iGoBot
- Go-board and -stone image recognition: OpenCV and Haar Cascades (Take a look at the sources on Github)
- Go playing algorithm: GnuGo
- Programming language: Python 3 (Take a look at the sources on Github)
- Plattform: Raspberry Pi 3, Seeed Grove
- Mechanics: Makerbeam, stepper motors, RC servo.
- Base: Ikea "Lack" table
Design the base and the mechanics
Shortening of the Ikea "Lack" table legs:
Mounting the X and Y axes at the base:
Training the image recognition
IGoBot uses OpenCV and Hair Cascades to detect the Go stones placed on the board.
I had to take several hundred individual photos of black and white Go stones for reference.
Some of the black stone training images:
Some of the white stone training images:
After training, the system reliably detects black and white Go stones.
Here is an example of white stone detection:
The recognition on the Raspberry Pi in Python:
A first test for the "stones on board" recognition and translation into coordinates:
The stone dispenser
The stone dispenser is driven by a servo. The two primary parts are 3D printed. The CAD files can be found here.
The electronics
The first arrangement of the electronic components
A first, very wild test of the wiring
The illuminated button for interaction with the player
The way iGoBot plays: