Computer und Schach sind seit dem Erscheinen der ersten schachspielenden Computer in den 1970er Jahren eine starke Kombination. Möglicherweise können Sie sogar eine Partie Schach auf dem Gerät spielen, mit dem Sie diesen Blogbeitrag lesen! Für digitale Hersteller kann das Hinzufügen eines Raspberry Pi der erste Schritt sein, um etwas Aufregenderes zu bauen. Erlauben Sie uns, Ihnen Joey Meyers schachspielenden Roboter, den Raspberry Turk, vorzustellen.
Bildnachweis: Joey Meyer
Da er sowohl ein erfahrener Softwareentwickler mit Interesse am maschinellen Lernen als auch ein erfahrener Schachspieler ist, ist es nicht verwunderlich, dass Joey daran interessiert war, an Schachprogrammen herumzubasteln. Was jedoch wirklich atemberaubend ist, ist der Umfang und die Komplexität des Builds, den er entwickelt hat. Fasziniert von einem berühmten historischen Scherz, Joey nutzte seine Fähigkeiten in der Programmierung und Robotik, um eine Open-Source-Raspberry Pi-betriebene Nachbildung des berühmten Mechanical Turk Automaten zu bauen.
Sie können den Mechanischen Türken in Aktion auf Joeys YouTube-Kanal sehen:
Ein historischer Scherz
Joey erklärt, dass er den mechanischen Türken zum ersten Mal durch ein Buch von Tom Standage kennengelernt hat. Der ursprüngliche Türke, ein berühmtes Beispiel für mechanische Tricks, wurde als Schachspielautomat beworben, der in der Lage war, menschliche Gegner zu besiegen und komplexe Rätsel zu lösen.
Eine moderne Rekonstruktion des Mechanical Turk
Bild von Wikimedia Commons
Sein Innenleben ein Geheimnis, der Türke tourte durch Europa für den besten Teil eines Jahrhunderts und verwirrte jeden, der ihm begegnete. Leider stellte sich heraus, dass es sich schließlich nicht um ein fabelhaftes Beispiel für frühe Robotertechnik handelte. Stattdessen war es nur eine ausgeklügelte Illusion. Die großartigen Schachzüge wurden nicht vom Uhrwerkgehirn des Automaten ausgearbeitet, sondern von einem menschlichen Schachmeister, der geschickt im Gehäuse verborgen war.
Bau eines modernen Türken
Eine moderne Version des Mechanical Turk wurde in den 1980er Jahren gebaut. Der Bau kostete jedoch 120.000 US-Dollar. Zu diesem Preis wäre es für die meisten Hersteller unmöglich gewesen, eine eigene Version zu erstellen. Unmöglich, das heißt, bis jetzt: Joey verwendet einen Raspberry Pi 3, um den Raspberry Turk zu fahren, während ein Raspberry Pi-Kameramodul Computer Vision übernimmt.
Der Himbeer-Türke mitten in einem Spiel
Bildnachweis: Joey Meyer
Joeys Himbeer-Türke ist in einen ordentlichen Holztisch eingebaut. Die gesamte Elektronik ist auf einer Seite in einer Box untergebracht. Das Schachbrett wird direkt auf die Tischoberfläche gemalt. Damit der Roboter spielen kann, nimmt ein Kameramodul, das sich in einem 3D-gedruckten Gehäuse über dem Tisch befindet, ein Bild des Schachbretts auf. Das Bild wird dann analysiert, um festzustellen, welche Stücke in welchen Positionen an diesem Punkt sind. Durch die Verfolgung von Änderungen in den Positionen der Teile kann der Raspberry Turk bestimmen, welche Bewegungen ausgeführt wurden und welches Teil sich als nächstes bewegen soll. Um das System zu trainieren, musste Joey einen großen Datensatz erstellen, um ein Computer-Vision-Modell zu validieren. Dies beinhaltete das sorgfältige Bewegen von Teilen von Hand und das Sammeln mehrerer Bilder jeder möglichen Position.
Schau, keine Hände!
Ein wesentliches Merkmal des Mechanical Turk war, dass der Automat die Schachfiguren ganz von selbst zu bewegen schien. Natürlich wurden seine Bewegungen tatsächlich von einer Person gesteuert, die in der Maschine versteckt war. Der Himbeer-Türke hingegen bewegt die Schachfiguren selbst. Um dies zu erreichen, verwendete Joey einen Roboterarm, der am Tisch befestigt war. Der Arm besteht hauptsächlich aus Actobotics-Komponenten. Joey erklärt:
Die Bewegung wird durch die Drehung von zwei Servos gesteuert, die an Zahnrädern an der Basis jedes Gliedes des Arms befestigt sind. Am Ende des Arms befindet sich ein weiteres Servo, das einen Balken auf und ab bewegt. An der Unterseite des Balkens befindet sich ein Elektromagnet, der dynamisch aktiviert werden kann, um die Schachfiguren anzuheben.
Joey bestückte die Schachfiguren einzeln mit winzigen Abschnitten aus Metalldübel, so dass der Magnet am Arm sie aufnehmen konnte.
Programmieren des Himbeer-Türken
Der Himbeer-Türke wird von einem Daemon-Prozess gesteuert, der eine Wahrnehmungs- / Aktionssequenz ausführt, und der Status wird automatisch aktualisiert, wenn die Teile bewegt werden. Der Code ist fast vollständig in Python geschrieben. Es ist alles auf Joeys GitHub-Repo für das Projekt verfügbar, zusammen mit seinen Notizbüchern über das Projekt.
Bildnachweis: Joey Meyer
Das KI-Backend, das dem Roboter seine Schachspielfähigkeit verleiht, ist derzeit Stockfish, eine starke Open-Source-Schachengine. Joey sagt, er würde gerne seinen eigenen Motor bauen, wenn er Zeit hat. Im Moment ist er jedoch zuversichtlich, dass sich diese KI als würdiger Gegner erweisen wird.