Irgendwann vor zweieinhalb Jahren, mit frisch erstandenem TXT, habe ich mir in den Kopf gesetzt einen Spielroboter zu bauen. Meine Wahl fiel auf Reversi bzw. Othello, da mir sowohl die Mechanik als auch die Programmierung realisierbar erschien. Den Spielkern, der ein Othello-Spiel auf dem TXT Display erlaubt, hatte ich nach ein, zwei oder drei Monaten (?) fertig und dachte: "Dann baust Du halt noch schnell den Roboter dazu." … Von wegen, kleine runde Spielsteine mit Pneumatik und Vakuum-Sauger zu wenden, überstieg meine Fähigkeiten. Irgendwann habe ich dann den Staub vom ersten Roboterentwurf gepustet und das Teil zerlegt. … Nun, ich hab einen zweiten Anlauf gewagt, hier das Resultat:
Filmchen
Bilder, RoboPro Programm und Video
Man kann allerdings auch ohne Roboter auf dem TXT-Display spielen. Eine Anleitung findet sich im Dokumentations-Tab des Hauptprogramms.
Der Roboter:
- Der Roboter besteht bis auf ein paar Ausnahmen ausschließlich aus ft-Teilen, beschränkt sich auf ft-Sensoren und Aktoren und ist ganz old-school in RoboPro programmiert.
- Verbaut sind drei Encoder, ein xs-Motor, zwei Magnete, sechs Taster, ein Farbsensor und die Kamera.
- Eigentlich zu viele Aktoren für den TXT, aber man kann ja mechanisch umschalten. Die Stapelbarkeit bei den Tastern vorzusehen, war schon eine geniale Idee von fischertechnik.
- Meine beiden Encoder neuen Typs hab ich, obwohl sie durch das höhere Gewicht wertiger erscheinen und ruhiger laufen, wieder durch die alten Typs ersetzt, weil mir die neuen einfach zu lahm waren.
- Ein echt monströser Mondrian. RoboPro braucht ein bissel die 12MB XML zu laden.
- Das Programm verwendet Bitboards und ermittelt seine Züge mit dem rekursiven Negamax-Algorithmus mit Alpha-Beta-Pruning und einer einfachen Vorsortierung der zu untersuchenden Züge. Die Score-Funktion setzt sich aus folgenden Anteilen zusammen: "Mobilität" (Anzahl der Verfügbaren Züge), "Potentielle Mobilität" und einer Lookup-Tabelle für die wichtigen Spielfeldkanten und Eckfelder.
Mehr Information hierzu findet sich in der Doku des Programms und hier:
https://de.wikipedia.org/wiki/Alpha-Beta-Suche
http://radagast.se/othello/Help/strategy.html
Damit spielt der TXT gar nicht mal so schlecht. Für mich reicht seine Spielstärke allemal. Gegen ernstzunehmende Othello-Programme hat er allerdings keine Chance. Er macht aber auch keine saublöden Züge. Gegen Zebra, konfiguriert mit niedriger Suchtiefe und deaktivierter Eröffnungsbibliothek, hat er auch schon mal gewonnen. - Der Kameraprozess, der anscheinend durchgängig im Hintergrund läuft, verlangsamt das Programm ganz ordentlich. Mit abgezogener Kamera läuft's viermal so schnell.
- Offline läuft das Programm weitaus schneller als online, wobei ich anmerken muss, dass ich wohl das Glück hatte einen der seltenen TXTs zu erwischen, die mit 1GHz anstatt der üblichen 600MHz, getaktet sind.
- Es ist erstaunlich wie fremd eigener dokumentationsfreier Code nach eineinhalb Jahren wirken kann. … Nun ist's reverse engineered und dokumentiert, puh.
- Das Programm enthält einige interessante Routinen. Bedient Euch:
- Encoder-Positionierer mit Spielausgleich und zyklischem Betrieb (für Drehteller interessant, wählt automatisch die Richtung der kürzeren Distanz). Die eigentlichen Controller laufen auf unabhängigen Prozessen und können über kleine Interface-Objekte angesteuert werden.
- RGB Konvertierung ins HSV-Farbsystem, Weißabgleich
- und ein paar mathematische Helferlein
Helmut