Willkommen beim AtomicChessTable!

Der autonome Schachtisch

Eine Projektarbeit von Marcel Ochsendorf
Informatikstudent der FH-Aachen

Über das Projekt

Das Ziel dieser Arbeit ist es, einen Schach-Tisch zu konstruieren und programmieren, welcher in der Lage ist, Schachfiguren autonom zu bewegen.

Der Schwerpunkt liegt dabei insbesondere auf der Programmierung des eingebettenen Systems. Dieses besteht einerseite aus der Positionserkennung und Steuerung der Hardwarekomponenten (Schachfiguren) und andererseits aus der Kommuniktation zwischen dem Tisch selbst und einem in einer Cloud befindlichen Server.

Zum einen ist es möglich, einen Spieler gegen einen Tisch als virtuellen Gegner spielen zu lassen. Es wird somit ein Spiel für eine Einzelperson ermöglicht.
Zum anderen ist es möglich, zwei Tische miteinander zu verbinden und zwei Spieler geneinander spielen zu lassen.
Die Tische dienen dann nur als Spiegel der Schachzüge. Die Züge des ersten Spielers werden dann auf den anderen Tisch (beim zweiten Spieler) gespiegelt und umgekehrt. So ist auch ein Spiel möglich, auch wenn sich die Spieler nicht am selben Ort befinden.


Schwerpunkte

Informatik

Mittels der Informatik werden diverse Technologien von verschiedenen Einzelsystemen zu einem Gesamtprodukt zusammengesetzt.

Zu diesen Einzelsystemen gehören:

  • Programmierung der Spiel-Logik, Benutzeroberfläche (UI), Hardware-Ansteuerung
  • Kommuniktion mit einer Cloud-Infrastruktur
  • Implementierung der Spielflusssteuerung (Schach-Spiel-Logik)
  • Backend mit Datenbankanbindung zur Speicherung der Spiele (Verwalten von Daten)

Hier bietet die FH-Aachen einen breit gefächerten Wahlmodulkatalog an, welchen einen dabei Untersützt sich in verschiedenen Bereichen zu spezialisieren.

code snipped illustration

Elektrotechnik und Informationstechnik

Damit ein System überhaupt erst programmiert werden kann, muss man sich Gedanken über die Elektronik und Verkabelung des Systems machen.
Welchen Hardware will ich eigentlich nutzen und warum?
Wie soll mein System später mit seiner Umwelt kommunizieren?
Auch die Frage nach der Geschwindigkeit spielt hierbei eine Rolle.

Im Laufe des Informatikstudium an der FH-Aachen wird man auch in grundlegender Elektronik unterrichtet. Auslegen von Platinen und Bauteilen, welche Treiber benötigen die Motoren oder welche Spezifikationen müssen berücksichtigt werden.

Insgesamt zwei Schrittmotoren für die X- und die Y-Beweung sind im Schachtisch verbaut.
Zudem sind noch zwei Elektromageneten im Tisch verbaut, die die Schachfiguren wie von Geisterhand über den Tisch ziehen.
Zusätzlich befinden sich unter jeder Kachel des Schachfelds, noch Magnetsensoren, um zu erkennen, ob der Spieler eine Figur bewegt.
Neben der Verkabelung dieser Steuerungs-Komponenten, enthält das System noch ein Display zur Eingabe von Befehlen durch den Benutzer.

Generic placeholder image

Mechanik

Mechanik ist die Lehre von der Bewegung von Körpern sowie den dabei wirkenden Kräften. Um die Schachfiguren von einem Feld auf das nächste zu versetzten, braucht es Mechanik.

Mechanik ist nicht direkt Teil des Informatikstudiums, doch die Verwendung und das Programmieren von Motoren definitiv.
Die Bewegung im Schachtisch geht von zwei Schrittmotoren und zwei Elektromagneten aus. Alle Schachfiguren müssen daher magnetisch sein.

Die Elektromagnete werden unter dem Tisch in X- und Y-Richtung verschoben. Für jede Richtung ist einer der Schrittmotoren zuständig. An der gewünschten Position angekommen, wird einer der Elektromagenten anktiviert, sodass die die Figur oberhalb der Platte magnetisch an diesen gebunden ist. Zwei Elektromagneten sind dehalb nötig, um die Ecken der Platte erreichen zu können. Wäre nur ein Elektromagnet mittig angebracht, würde die Konstruktion des Kreuztisches verhindern, dass die Ecken des Tisches erreicht werden können.

code snipped illustration

Verteile Systeme

Cloud-Computing ist die bedarfsabhängige Bereitstellung von IT-Ressourcen über das Internet. Der Tisch benötigt eine Cloud-Verbindung, um andere Spieler zu finden und zu verbinden. Zudem wird auch die Berechnung von möglichen Zügen in der Cloud ausgeführt. Doch was ist die Cloud? Die Cloud ist ein Computer oder mehrere Computer, welche mit dem Internet verbunden sind und für andere erreichbar sind.

Dieser kann auf bestimmte Anfragen genau definierte Antworten zurücksenden. Im Fall der Schachcloud steht dieser in einem Rechenzentrum in Frankfurt; alle Schachtische, die sich im Internet befinden, versuchen eine Verbindung mit der Schach-Cloud herzustellen und ihren Gegenspieler nach neuen Schachzügen.
Dazu sendet der Tisch seine eindeutige Nummer und die Position aller Figuren auf dem Schachbrett. Die Cloud führt noch andere Aktionen aus, wie das Zusammenbringen von Spielern, welche auf der Suche nach einem Spiel sind (Matchmaking). Auch werden alle bereits geführen Spiele gespeichert und können mit anderen geteilt werden.

Generic placeholder image

FAQ

Wenn du mehr über das Projekt erfahren möchtest, gibt es mehrere Möglichkeiten. Da diese Projekt als OpenSource-Projekt veröffentlicht wurde, stehen alle notwendigen Dateien frei zur Verfügung. Darunter zählen der Quellcode der Software, die Schaltpläne für die Elektronik und alle mechanischen Zeichnungen. All diese Dateien können HIER heruntergeladen werden.

In der Spielübersicht sind alle letzten Spiele aufgelistet. Die Spielernamen werden zufällig generiert und sind mit einem Prefix versehen. Dieser Prefix zeigt, von welchem Typ der Spieler ist. Hierbei gibt es diese Varianten:

  • AI => Dies ist ein Computerspieler, welcher automatisch einspringt wenn kein menschlicher Spieler bereitsteht.
  • VIRT => Wenn über den Webclienten gespielt wird, bekommt dieser den Prefix VIRTUELL.
  • TABLE => Dieser Prefix erhält eine Spieler, welcher an einem AtomicChess Schachtisch spielt.

Nein das geht leider nicht, aber wenn du handwerklich begabt bist kannst du den AtomicChess Schachtisch selber bauen. Alle notwendigen Dateien können HIER heruntergeladen werden.

Wenn du weitere Fragen hast rund um dieses Projekt, kannst du gerne eine E-Mail and die folgende Adresse schicken: info@atomicchess.de

Der Tisch signalisiert seinen Zustand nicht nur über das eigebaute Display, sondern auch über die LED-Streifen am Boden. Dieser leuchtet in verschiedenen Farben jenachdem in welchem Zustand oder welche aktion der Tisch gerade ausführt.

  • BLAU - Dies ist die IDLE Farbe, wenn der Tisch nichts macht und kein SPiel gestartet ist, leuchtet dieser blau
  • VIOLETT - Violett wird angezeigt, wenn der Tisch seine Mechanik und ggf die Figuren bewegt.
  • GRÜN - Wenn der Tisch in einer grünen Farbe leuchtet bedeutet dies, dass der Spieler am Tisch zum Zug aufgefordert ist.
  • TURKIS - Diese Farbe zeigt an, dass eine Kommunikation mit dem Netzwerk stattfindet. Dies geschieht z.B. wenn auf ein Match gewartet wird.

Bei diesem Projekt wurden mehrere verschiedene Sprachen verwendet, da diese Projekt aus vielen einzelnen unterschiedlichsten Services besteht.

  • C/C++ => Wurde für das Eingebettete-System verwendet, dies steuert die Mechanik und berechnet die Laufwege der Figuren.
  • NodeJS => Wird im Backend-Service verwendet, welcher für das Matchmaking und die Verwaltung der einzelnen Spiele verantwortlich ist.
  • Python3 => Hiermit wurde ein weiterer Micro-Service erstellt, welcher die vom Schachtisch gesendeten Schachzuege validiert.
  • SQL/NoSQL => In der Datenbank wird der Fortschritt jedes einzelnen Spiels und deren Spieler gespeichert.
  • Golang => In Go wurde der Computer-Spieler implementiert, welcher zum Einsatz kommt wenn kein menschlicher Spieler online ist.