The aim of OpenGoban is to specify a standard interface between electronic go boards and computer programs such that when electronic go boards will be available, all models following the standard will be easily integrated into programs that follow the standard.
There will be probably incremental and backward compatible API versions in the spirit of the Android OS for example, such that an electronic goban supporting API level 1 could still be used when the standard will have evolved. This specification will probably be API level 1, and specifies the core functions that all electronic go board need to have. API level 1 will probably just be a device that supports the GMP protocol.
An Electronic Go Board or Electronic GoBan (EGB) is a goban with some additions that enables it to communicate with a computer (or a smartphone) in order for the player to be able to interact with the computer through the goban, or with another player through that computer.
More precisely, it is a device that:
- Is a goban.
- Has a connection with a computer (Through a serial interface, or USB port, or Bluetooth, …)
- Is able to detect (and therefore communicate to the computer) the position of the stones on his board.
- Is able to notify the player of moves played by the computer (or an opponent through the computer).
Here is a description of a physical incarnation that matches the EGB specification.
- The goban is made of wood, with an hole at each intersection (#1)
- It is equipped with a serial (DB-9) connection with a computer (#2)
- Photodiodes are placed in each holes in order to detect if there is a stone at this intersection or not (#3)
- There is LEDs placed one per line, and one per column, such that the EGB is able to communicate a position to the player (#4)
- The whole is driven by an AVR microcontroller.
TestPlay09 (May,2012): one more possible realization is by means of augmented reality. In such setup one uses his traditional go equipment, webcam is used as input backed up with computer with cv program as back-end and projector as output. In following year I will try to realize such setup with python and opencv. (link to the youtube video of what will I try to achieve: URL http://youtu.be/ntYq8PdKLCA )
In past I looked into possible implementation of 19x19x2 LED goban and now I'm in process of completing my dissertation on that topic. Work by itself should provide some level of insight tho whomever would like to tackle the solution further.
Please adapt it to your open goban page and contact me if you think I can provide some help or insight or if you would like to help me with my development.
The protocol describe the interaction between an EGB and a computer (or a smartphone).
- An EGB must support the GMP protocol. This protocol has been designed to make 2 programs communicate through an unreliable channel. An EGB will typically be communicating via the computer using a serial interface (maybe over USB or Bluetooth). If it’s pure UART communication, GTP is not usable because it requires to operate over a reliable channel. Even though serial over Bluetooth (RFCOMM) is in fact reliable, some simple EGB might use a serial interface and need a protocol able to cope with that. GMP is therefore the safest choice.
- A low level communication protocol, that would allow the computer to fully drive the EGB would be interesting to consider. It might be implemented using GMP extensions commands.
We are interested in trying to produce an EGB following the OpenGoban specification. Below is a draft of the functional and technical description of the device. We need some feedback and help to complete it — for example, knowing how _you_ would like an EGB to be, and how/where would you want to use it. Please write me (vbmithr ~AT~ gmail ~DOT~ com) if you want to help.
In the following, “computer” is used in a broad sense (can be a smartphone as well).
- size: Fully sized, or a small/transportable goban ?
- material: wood, other (plexiglas, plastic) ?
Here we describe the functionalities that the real implementation must have:
- Play against an opponent over the internet.
- Record games played locally. The games are then recorded as SGF files on the computer.
- Play games against the computer.
- Solve go problems.
- Replay SGF files (to study pro or own games).
- Is able to notify the player that an error occurred (for example, he did not put opponent stone in the correct place, or the communication channel has been cut off)
- One photodiode at each 361 intersection to detect if there is a stone at this position.
- One LED for each line and column to indicate a position on the board.
- USB and bluetooth are used to connect the EGB to a computer.
- 5V battery (rechargeable with USB)
- An ATmega2560 microcontroller is used (one of the few ATmegas to have enough I/O ports to cope with 19*4 connections (LEDs + photodiodes)).
- A simulation of such a goban can be found here