Utopie oder Wirklichkeit? Science-Fiction oder Reality-Report? Im Jahr 2050 soll der dann amtierende Fußballweltmeister gegen eine Mannschaft aus Robotern antreten - jedenfalls wenn es nach den Initiatoren der jährlich ausgetragenen WM im Roboterfußball, dem Robocup, geht. Gespielt wird nach den FIFA-Regeln, und die Robocup Federation ist sich sicher, dass die mechanischen Kicker gegen die menschliche Elf gewinnen.
Abbildung 1: Roboter programmieren ohne Roboter: Peekabot visualisiert das Geschehen im virtuellen 3-D-Raum. Die Umgebung selbst beschreiben XML-Konfigurationsdateien.
Kritiker mögen einwenden, dass die Menschheit gravierenderen Problemen gegenübersteht, bei deren Lösung Roboter sinnvoller helfen könnten, doch Fußball eignet sich in vielerlei Hinsicht gut zum Experimentieren. Das Spiel mit dem runden Leder erfordert strategisches Planen, dynamisches Lernen, die Erkennung verschiedener Objekte, zügige und wendige Bewegungen und Reaktionen auf sich schnell verändernde Außenbedingungen sowie Teamkoordination - alles Aufgabenstellungen, die auch im Alltag und nicht nur auf dem Rasen auftauchen.
Abbildung 2: Der Beispielroboter »bo-slam« aus der Vogelperspektive: Die Kamera steht in der Mitte, die Linien zeigen den Kurs des Roboters und welchen Einfluss externe Objekte darauf haben.
Virtuelles visualisiert
Software-Entwickler streben danach, die gegebene Hardware optimal zur Lösung der jeweiligen Aufgabe zu steuern. Hardwarebastler wiederum bemühen sich darum, die verfügbaren Teile zu einer Maschine zusammenzufügen, die sich für die Lösung der potenziell auftretenden Probleme eignet. Die Kombination aus beidem bildet die Essenz des akademischen Felds der Robotik.
Ein Knackpunkt ist, dass Änderungen an der Hardware immer mit gewissen Kosten verbunden sind. Selbst kleinere Anpassungen können wertvolle Zeit und auch Material verschlingen, wenn der Robotiker beispielsweise verschiedene Kombinationen aus Teilstücken ausprobieren möchte. Um an dieser Stelle zu sparen, behelfen sich die Entwickler mit Simulationen und testen die Software auf virtueller Hardware und in einer ebenfalls virtuellen Umgebung.
Die freie Software Peekabot [1] zeigt, wie die Roboterwelt aussehen kann; einen echten Roboter benötigt der Bastler dazu nicht (siehe Abbildung 1). Das Programm visualisiert vollständig simulierte Umgebungen und gibt auch Bewegungen wieder, die auf aufgezeichneten Aktionen tatsächlicher Roboter basieren. Dank einer Server-Client-Architektur ist es sogar möglich, echte Roboter zu beobachten, während sie sich tatsächlich bewegen. In diesem Fall muss lediglich die virtuelle Welt die reale Roboterumgebung modellieren. Der Server stellt dabei die virtuelle Welt zur Verfügung und kümmert sich auch um die Grafikausgabe.
Im Peekabot-Hauptfenster navigiert der Benutzer per Kamera durch den dreidimensionalen Raum. Als Client dient ein einzelner Roboter: Er verbindet sich über TCP/IP mit dem jeweiligen Server und verrichtet in dessen Welt sein Werk gemäß den Anweisungen der Steuersoftware. Der Vorteil ist, dass es keine Rolle spielt, ob der Serverdienst auf demselben Computer läuft oder auf einem anderen Rechner, der über eine Netzwerkanbindung verfügt.
Abbildung 3: Peekabot bietet verschiedene Kamera-Ansichten. Die hier gezeigte Fluchtpunktperspektive stellt zwei Linien für die erwartete und die tatsächliche Route des Roboters dar.
Roboter im Eigenbau
Die Roboter, die alleine oder in Gruppen auftauchen, bestehen nicht aus Chips, Sensoren, Rädern, Plastik und Metall, sondern aus vergleichsweise leicht und preiswert zu beschaffendem Material: C++-Code. Die Headerdatei »peekabot.hh« gehört zum Peekabot-Paket und versorgt den Programmierer mit den notwendigen Klassen- und Funktionsdefinitionen. Für den Entwurf eines Clients ist die Klasse »peekabot::PeekabotClient« von zentraler Bedeutung. Mit dem Schalter »-lpeekabot« aufgerufen erzeugt GCC anschließend aus dem Quellcode einen Roboter, der sich als eigenständiges Clientprogramm starten lässt. Das englischsprachige Tutorial unter [2] ist eine gelungene Einführung in die Peekabot-Programmierung.
Das Quelltextarchiv enthält jede Menge Anschauungsmaterial. Programmierer finden im Unterverzeichnis »examples/bo-slam« zahlreiche Beispiele, darunter den einfachen Roboter »bo-slam«, der sofort nach dem Kompilieren betriebsbereit ist. Ein »make«-Aufruf, gefolgt von »./bo-slam«, setzt ihn bei laufendem Peekabot-Server in die dort geschaffene virtuelle Welt. Dieser mit mäßiger Intelligenz ausgestattete künstliche Freund zieht darin jedoch weitgehend ziel- und orientierungslos seine Kreise (siehe Abbildungen 2 und 3).
Um die Szenerie zu gestalten, sind keine Programmierkenntnisse nötig. Weltenbauer beschreiben die Roboterbehausungen einfach in XML-basierten Konfigurationsdateien (»Scene files«). Hier definiert der Anwender Objekte und ihre Positionen sowie das Aussehen der Roboter. Die XML-Konfigurationseigenschaften beziehen sich auf 3-D-Modelle, die Peekabot wiederum in einem eigenen Format anfordert. Derartige Modelle, seien es Roboter oder andere Objekte, erstellen Anwender mit externen Programmen - einzige Voraussetzung ist, dass die Software Wavefront-Dateien erzeugt. Die freie Software Blender [3] beispielsweise leistet dies. Anschließend konvertiert das Werkzeug »obj2pbmf« aus dem Peekabot-Paket die Modelle ins programmeigene Format. Eine Sammlung existierender 3-D-Modelle steht unter [4] zur Verfügung.