R2-D2 für’s Kinderzimmer: Lego Mindstorms NXT

Tobias Nebel Dieser Artikel wurde von geschrieben. Tobias Nebel hat sein Studium der Telekommunikationsinformatik an der Hochschule für Telekommunikation in Leipzig absolviert. Er arbeitet als Softwareentwickler bei der Firma ubigrate mit dem Schwerpunkt Geräteintegration.

Welches Kind träumt nicht vom eigenen Roboter? Spätestens durch Film und Fernsehen und die darin erfundenen Blech-Menschen ist doch in jedem einmal der Wunsch nach einem eigenen elektronischen Helferlein gewachsen.

Lego bietet nun in zweiter Generation die Grundlage für den Roboter im Kinderzimmer an: den Lego Mindstorms NXT. Elektronisches Herzstück ist der so genannte NXT Brick – ein Steuer-”Baustein”, in welchem ein ARM-Prozessor sein Werk verrichtet. Als markante technische Eckdaten sind eine USB 2.0 Schnittstelle und das integrierte Bluetooth-Funkmodul zu erwähnen. Weiterhin sind grafische Ausgaben auf einem 100×64 Pixel LCD und das Abspielen von 8-bit Sounds möglich.

Die wahren “Fähigkeiten” des NXT-Bricks kommen jedoch erst durch seine Peripherie-Elementen zustande: von einfachen Berührungs-, Licht- und Geräuschsensoren bis hin zu einem Ultraschall-Sensor zur Entfernungsmessung werden dem Lego-Bastler sehr nützliche Bauteile an die Hand gegeben. Zusätzlich haben sich einige Firmen der Entwicklung weiterer Sensoren verschrieben; so bietet beispielsweise die Firma HiTechnic u.a. Farb-, Kompass- und 3D-Beschleunigungssensoren an. Mit dem RFID-Sensor der Firma Codatex wird sogar das Lesen von LF-RFID-Tags möglich. Insgesamt kann der NXT bis zu vier Sensoren ansprechen. Die Anschlussart ist sensor-abhängig, d.h. entweder analog (z.B. Geräuschsensor) oder digital (I²C; z.B. Ultraschallsensor).

Neben den Sensoren ist wie auch schon in der ersten Generation die Steuerung von Motoren möglich. Die Geschwindigkeitsregulation der Motoren geschieht per Pulsweitenmodulation. Ferner ist in jedem der Motoren eine Messeinheit vorhanden, welche die Umdrehungen des Motors misst und somit eine relativ genaue Positionierung zulässt.

Der Maschine Leben einhauchen

Aus den mitgelieferten Teilen lassen sich entweder nach Bauanleitung oder nach freiem Erfindungsgeist die wildesten Maschinchen zusammenbauen. Ist diese Konstruktions-Hürde einmal gemeistert, geht es an die Ansteuerung des Aufbaus. Im Lieferumfang des Mindstorms-Baukastens liegt dazu eine Software (für Windows und Mac) bei, mit der sich quasi kinderleicht eigene Programme entwickeln lassen. Die Befehlsfolgen werden dabei ganz nach dem Lego-Prinzip mit der Maus “zusammengesteckt”. Das Programm kann nun entweder on-the-fly getestet oder als permanent ausführbare Einheit auf dem Brick gespeichert werden.

Mit NBC (Next Byte Codes) und NXC (Not eXactly C) gibt es allerdings auch für Klickfaule und echte Coding-Freaks Möglichkeiten Programme für den NXT-Brick zu schreiben. NBC ist dabei eine Assembler-artige Sprache und NXC eine -wie der Name schon verheisst- C-ähnliche höhere Programmiersprache, deren Quelltexte mittels Compiler in NBC übersetzt werden.

Für die Kommunikation stehen wahlweise das USB-Datenkabel oder die Bluetooth-Verbindung zum Brick zur Verfügung. Ganz nebenbei: für potentielle Anwendungs-Entwickler bietet sich hier die Bluetooth-Verbindung weitaus mehr an als die USB-Schnittstelle. Das Kommunikationsprotokoll ist zwar für beide Schnittstellen gleich, jedoch bietet hier USB nur einen proprietären Treiber an. Die Verbindung mittels Bluetooth geschieht demgegenüber ganz einfach über das SPP-Profil, also mittels einer virtuellen RS232-Verbindung.

Protokoll

Das Kommunikationsprotokoll arbeitet wahlweise -wie oben bereits erwähnt- über Bluetooth oder über USB.

<ACHTUNG>

Wichtig zu erwähnen ist, dass alle Zahlenwerte little endian codiert sind. Für den Fall, dass Bluetooth als Schnittstelle genutzt wird, sind zusätzlich noch zwei Bytes, welche die zu übertragende Länge des Payloads in Bytes angeben, vor dem Payload einzufügen.

</ACHTUNG>

  Byte 0   Byte 1        . . .        Byte N
 ________ ________ ________ ________ ________
|________|________|________|________|________|
    |        |         |
    |        |         Die eigentliche Informationen, welche entsprechend
    |        |         der Kommandos codiert sind
    |        |
    |        Kommando
    |
    Kommando-Typ
    -> 0x00 = Direktes Kommando MIT Reply (Antwort des NXT auf ein Kommando)
    -> 0x01 = System-Kommando MIT Reply

    -> 0x02 = Reply (Antwort des NXT auf ein Kommando)

    -> 0x80 = Direktes Kommando OHNE Reply
    -> 0x81 = System-Kommando OHNE Reply

Kommandos

Direkte Kommandos dienen dazu, “interaktiv” mit dem NXT-Brick zu arbeiten. So können beispielsweise aktuelle Werte von Sensoren gelesen oder die Motoren angesteuert werden.

System-Kommandos hingegen dienen beispielsweise dazu, Dateien vom bzw. auf den Brick zu laden, die Firmware-Version abzufragen oder generelle Einstellungen am NXT vorzunehmen.

Jedes Kommando besitzt eine fest definierte Antwort. Diese wird (falls durch den Kommando-Typ angefordert) direkt nach Erhalt der Kommando-Nachricht zurückgesandt.

Die komplette Liste an Kommandos mit den jeweiligen Antworten ist bei Lego zu bekommen. Für alle, die eine umfangreiche Implementierung des Protokolls benötigen, ist iCommand zu nennen. Diese Java-Bibliothek stellt über Bluetooth (entsprechende JSR-82-Bibliothek vorausgesetzt) eine Verbindung zum NXT her und bietet die Möglichkeit einfach und schnell Kommandos auf hohem Abstraktionsgrad an diesen zu senden.

Im gleichen Zuge wie iCommand ist auch LeJOS zu nennen: eine eigens für den NXT entwickelte Java Virtual Machine.

Community

Die Community für den NXT ist zweifelsfrei riesig: eine einfache Google-Suche nach dem NXT liefert abertausende Treffer in Foren und Blogs. Daneben sind allein auf der Video-Platform YouTube endlos viele Beispiele zu den verrücktesten NXT-Spielereien zu finden. Dies kann unsere Entwicklungsabteilung samt ihrer Sprösslinge nur unterstreichend bestätigen.

Fazit

Als Fazit sei nur soviel gesagt: ob jung oder alt – wer einmal auf den Geschmack von Lego Mindstorms gekommen ist, kommt davon nur schwer wieder los. Die Möglichkeiten sind sowohl auf der Konstruktions- als auch auf der Programmier-Ebene grenzenlos! Und wer argumentative Schwierigkeiten bei der Anschaffung des Gerätes hat, behaupte einfach, er benötige es zum Test der little endian Unterstützung seiner Integrationssoftware.

Post to Twitter

Schlagworte:

1 Kommentar bisher »

  1. Mohammed Shehata sagt

    am 1. Dezember 2009 @ 20:13

    i wonder if there are another simulator program to edit and run your mindstorms programs on computer instead of downloading it into the robot and test it ? have you any idea about it ?

    please update me on the contact page on my site ?

Komentar RSS · TrackBack URI

Hinterlasse einen Kommentar

Name:

eMail:

Website:

Kommentar:

 

google

google

asus