Roboterprogrammierung in Java am Beispiel eines Lego-Mindstorms-Weltraumroboters

Java goes to space

Von Konrad Schwarzbach

Einen autonom operierenden Roboter aus Teilen der Lego-Mindstorms-Serie für die Internationale Raumstation ISS zu konstruieren, war die Aufgabe eines Wettbewerbs der dänischen Firma Lego. Im Dezember 2001 nahmen drei russische Kosmonauten auf der ISS einen kleinen Roboter in Betrieb, dessen zwei Steuerrechner in Java programmiert wurden. Hintergründe zu dieser Geschichte und die Möglichkeiten, Java für Robotik-Projekte einzusetzen, sollen am Beispiel der Lego-Mindstorms-Komponenten und der Java-VM leJos aufgezeigt werden.

Abb. 2: Jitter bei der Arbeit auf der ISS (Quelle: Lego)

Im August 2001 schrieb der dänische Spielzeughersteller Lego zusammen mit den Firmen Siemens und Hitachi einen Wettbewerb aus, die Lego-Mind-storms-Space-Competition. Die Aufgabe: Es sollte ein autonom operierender Roboter konstruiert werden, der in der Schwerelosigkeit auf der internationalen Raumstation ISS arbeitet. Der siegreiche Roboter wurde mit einer russischen Trägerrakete zur ISS gebracht und anschließend von den Kosmonauten in Betrieb genommen.

Mitmachen konnte jeder, der mindestens 18 Jahre alt, und in der Schweiz, Österreich oder Deutschland lebt. Als technische Randbedingungen wurden das Maximalgewicht von 1,5 kg und eine Außenmasse von höchstens 30*30*30cm festgelegt. Verwendet werden durften nur Teile aus drei bestimmten Baukästen der Lego Mindstorms-Serie. Diese waren vorher in aufwendigen Labortests auf ihre ISS-Tauglichkeit überprüft worden. Bei der Programmierung war Freestile zugelassen. 124 Teams sendeten ihr Konzept ein, und eine hochkarätige Jury, unter der Schirm-herrschaft des deutschen Astronauten Ulf Merbold, wählten schließlich zehn Finalisten aus. Mitte Oktober 2001 war es dann soweit, in München wurden die zehn fertigen Roboter der Jury präsentiert. Gewinner wurde der Roboter Jitter, den mein Sohn mit mir zusammen entwickelt hat. Mitte Dezember 2001 hatten wir beide die Gelegenheit, unsere Konstruktion live vom russischen ISS-Kontrollzentrum aus zu beobachten.

Abb. 6: RCX-Baustein und RCX-Platine

Der Kern des Lego-Mindstorms Systems ist der programmierbare RCX-Baustein. Über eine Infrarotverbindung kann dieser von einem PC mit Programmen versorgt werden. Im Inneren arbeitet ein Hitachi H8300 Micro-controller mit 8Bit und 16MHz. Dieser Microcontroller arbeitet normalerweise in Mobiltelefonen, Waschmaschinen oder Organizern. An Speichern stehen 16K ROM und 32 K RAM zur Verfügung. Die 16k ROM enthalten die Basistreiber z.B. für die Infrarot-schnittstelle und einige Low-Level-Funktionen. Die 32K RAM teilen sich das eigentliche Betriebssystem, (in unserem Fall) die Java-VM, das Programm und die Daten! Wer mehr über die RCX-Internas wissen möchte, sei die ausführliche Internetseite von Kekoa Proudfoot empfohlen.

Es sind drei Sensoreingänge und drei Steuerungs-ausgänge vorhanden. Das ist ziemlich spartanisch, aber alles ist perfekt aufeinander abgestimmt. Werkzeuge, Messgeräte oder Elektronik-kenntnisse sind nicht notwendig. Die Anschlüsse sind, wie bei Lego üblich, über Kontaktbausteine realisiert. An Sensoren stehen Touch-, Rotations-, Licht- und Temperatur-Sensoren zur Verfügung. An die Ausgänge lassen sich Motoren oder Lampen anschließen. Zur Interaktion sind vier Taster und ein LCD-Display auf der Oberseite angebracht. An der (dunklen) Stirn-seite befindet sich die Infra-rotschnitt-stelle. Primär dient sie zur Programm-übertragung. Es gibt jedoch auch eine Hand-fern-bedienung über die der RCX ferngesteuert werden kann. Hostseitig wird zur Übertragung ein IR-Sender/Empfänger (IR-Tower) ange-schlossen. Die IR-Schnittstelle kann aber auch zur direkten PC-RCX oder RCX-RCX Kommunikation verwendet werden.

leJos Java-VM und Betriebssystem

Aus diesem Projekt entstand leJos (spanisch gesprochen lächos). leJos ist mehr als eine JAVA-VM, es ist auch gleichzeitig ein Minibetriebsystem. Das heißt, das ganze originale Betriebssystem des RCX wird gegen leJos ausgetauscht. Der Fokus der leJos VM liegt auf größerer Vollständigkeit und Performance. Mit 17Kb ist diese VM wesentlich größer, aber in die verbleibenden 10-12Kb passen trotzdem Programme von erstaunlicher Größe (siehe Jitter). Um eines vorwegzunehmen, es handelt sich nicht um eine J2ME-Implementation, sondern um ein RCX-spezifisches Java-Subset.

Die wesentlichen Features sind:

Abb. 8: RCX-Downloadmanager

Die Entscheidung, die Jitter-Software mit Java und leJos zu entwickeln, war sicher sinnvoll. Java bietet gerade dann, wenn ein Projekt unter enormem Zeitdruck steht, deutlich mehr Sicherheit als z.B. Assembler. Die Performanceeinbußen sind erträglich und die leichte Nach-vollziehbarkeit fremder Programmteile ist ein nicht zu unterschätzender Vorteil. Für den, der Roboter oder Messstationen bauen möchte und keine Drehbank und kein Elektroniklabor zu Hause stehen hat und schnell zu einem Prototyp kommen will, ist die Lego-Mindstorms-Serie ein schneller Weg zum Erfolg. Java mit leJos und seinen Werkzeugen ist mehr als nur eine Alternative zur Orginalsoftware. Auch Java-Anfänger haben hier die Möglichkeit, schnell zu brauchbaren Ergebnissen zu gelangen.

Allgemein wird man gerade im Bereich embedded Systems / J2ME in naher Zukunft noch eine Menge erwarten dürfen. Im Januarheft des Javamagazins wurden im Beitrag Silicon Java bereits Nativ-Java-Prozessoren vorgestellt. Einer dieser Prozessoren wird in diesem Frühjahr in einem Mindstorms- kompatiblen Set vorgestellt. Wir dürfen also gespannt sein.

Geschrieben von
Von Konrad Schwarzbach
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.