Dieser Artikel beschäftigt sich mit NXT-G, der Entwicklungsumgebung für Lego Mindstorms NXT. Nachstehend werden die Hautmerkmale dieser grafischen Umgebung präsentiert und beschrieben, wie man mit NXT Programme erstellt.
Lego Mindstorms NXT-G Programme
Der Lego Mindstorms NXT Bausatz ist seit 2006 im Handel erhältlich. Der Roboter ist leicht auf- und umbaubar, da er aus den berühmten Lego-Steinen besteht, und der Bausatz ist sehr umfassend. Im Basis-Bausatz sind bereits 3 Servomotoren und 4 Sensoren enthalten. Entscheidend im Bereich der individuellen und autonomen Roboter ist jedoch unter anderem die Programmierfähigkeit des Roboters.
Es gehört zu den Hauptzielen der Robotik, den Roboter so autonom wie möglich zu gestalten, damit er bestimmte Aufgaben erfüllen kann. Daher ist ein durchdachtes und zugleich benutzerfreundliches Programmiersystem ein wichtiges Kriterium bei der Auswahl eines Roboters.
Lego Mindstorms NXT bietet eine leistungsstarke grafische Programmierschnittstelle, die auch ohne Vorkenntnisse in der Entwicklung leicht handhabbar ist. Die Programmiersprache heißt NXT-G und ist im Basis-Bausatz enthalten, was längst nicht bei allen Roboter-Bausätzen der Fall ist. Dieser Artikel bietet einen Überblick über diese Programmierumgebung.
Die Entwicklungsumgebung NXT-G für Programme
NXT-G kann mithilfe der im NXT Roboter Basis-Bausatz enthaltenen Installations-CD installiert werden. Die Umgebung ist sowohl mit Macintosh als auch mit PC kompatibel. Erforderliche Minimalkonfiguration:
Microsoft Windows
| Apple Macintosh
|
Die NXT-G-Umgebung ist eine spezifische Version der professionellen Programmierumgebung LabView (http://www.ni.com/labview) von National Instruments. Es handelt sich um eine äußerst zuverlässige Basisplattform, denn LabView ist vor allem in der Industrie sehr verbreitet.
Benutzeroberfläche fur NXT-G
Die nachstehende Abbildung zeigt die Benutzeroberfläche der Entwicklungsumgebung für NXT Programme.
- Die Programmierpalette zeigt die Funktionsblöcke, die per Drag & Drop auf die Arbeitsfläche gezogen werden können.
- Die Arbeitsfläche ist der Bereich, in dem das NXT Programm zusammengestellt wird.
- Das Parameterfenster zeigt die jeweiligen Einstellmöglichkeiten, wenn man einen Block auf der Arbeitsfläche anklickt.
- Mithilfe des Contrllers wird das Programm kompiliert und an den Roboter übertragen (über USB oder Bluetooth).
- Im Robot Center sind die Lernprogramme enthalten, mit deren Hilfe eine der 4 großen Roboterkategorien von Lego Mindstorms NXT verwirklicht werden können (Fahrzeuge, Maschinen, Tiere oder menschenähnliche Roboter). Bei diesen Lernprogrammen handelt es sich um interaktive Videos, die Schritt für Schritt die Erstellung der ersten NXT Programme erläutern. In diesem Bereich steht ein zweiter Reiter zur Verfügung, der Zugang zum Lego-Portal bietet. Dort können Sie u.a. Foren besuchen oder zusätzliche Geräusche für Ihren Roboter herunterladen.
- Die Hilfefunktion enthält alle nötigen Hinweise zur Verwendung der Benutzeroberfläche
Programmierprinzip der NXT-G
Die Programmierung mit NXT-G erfolgt zur Gänze auf grafischer Basis. Es sind keinerlei Vorkenntnisse in der Programmierung nötig, um mit dieser Umgebung eigene NXT Programme zu erstellen, da keine Codes eingegeben werden müssen.
Standardmäßig erscheint auf der Arbeitsfläche ausschließlich der Startpunkt. An diesen Punkt wird per Drag & Drop einer der Blöcke aus der Palette angeschlossen. Die Blöcke werden einer nach dem anderen auf einer Achse angeordnet, die als Ablaufträger bezeichnet wird.
Nur Programmblöcke, die mit dem Ablaufträger verbunden sind, werden im Programm berücksichtigt. Es ist möglich, mehrere Programmabläufe parallel laufen zu lassen. Dazu können zusätzliche Ablaufträger ab dem Startpunkt geschaffen werden, wie auf der Abbildung zu sehen.
Die verfügbaren Blöcke
NXT-G wird mit 35 Blöcken geliefert. Es können weitere Blöcke im Internet heruntergeladen oder eigene Blöcke erstellt werden. Beim Kauf eines nicht standardmäßig im Bausatz enthaltenen Sensors (wie etwa der CMUCam) wird eine CD mitgeliefert, die den zusätzlichen Block zur Steuerung des Sensors enthält.
Die Blöcke sind in 7 Hauptgruppen kategorisiert, wie es auch in der Hilfsfunktion von NXT-G der Fall ist.
- Allgemein
- Aktion
- Sensor
- Ablauf
- Daten
- Großer Funktionsumfang
- Eigene Blöcke
Anhand dieser Liste kann man sich gut vorstellen, wie groß die Bandbreite der mit NXT-G erstellbaren Programme ist. Hier eine kurze Präsentation der angebotenen Blöcke.
Block | Beschreibung |
Anzeige | Mit diesem Block kann auf dem LCD-Bildschirm des intelligenten NXT-Steins ein Text angezeigt werden. |
Schleife | Mit diesem Block können Sie im NXT Programm bestimmte Abläufe so oft wiederholen lassen, bis eine bestimmte Bedingung erfüllt ist. |
Motor | Mit diesem Block kann ein Servomotor aktiviert werden. Dabei können die Richtung, die Geschwindigkeit und die Rotationsdauer vorgegeben werden. |
Klang | Mit diesem Block kann ein Klang (Piepton, Abfolge gespeicherter Töne oder Sounddatei) vom intelligenten NXT-Stein abgespielt werden. |
Schalter | Mithilfe dieses Blocks können Bedingungen in das NXT Programm integriert werden, so dass bestimmte Aktionen nur ausgeführt werden, wenn die entsprechenden Bedingungen erfüllt sind. |
Drehsensor | Mit diesem Block kann die Drehzahl und/oder der Drehwinkel eines Servomotors bestimmt werden. |
Ultraschallsensor | Dieser Block ermöglicht die Kommunikation mit dem Ultraschallsensor, um Hindernisse zu erkennen und ihre Entfernung zum Roboter zu ermitteln. |
Lichtsensor | Dieser Block ermöglicht die Kommunikation mit dem lichtempfindlichen Sensor, um die auf dem Sensor auftreffende Lichtmenge zu bestimmen. |
Geräuschsensor | Dieser Block ermöglicht die Kommunikation mit dem Geräuschsensor, um die am Sensor eintreffende Tonintensität zu bestimmen. |
Tastsensor | Dieser Block ermöglicht die Kommunikation mit dem Tastsensor, um zu bestimmen, ob der Sensor aktiviert oder deaktiviert wurde. |
Vergleichen | Mithilfe dieses Blocks können logische Vergleiche in das Programm integriert werden. |
Mathe | Mithilfe dieses Blocks können einfache Rechnungen wie Addition, Subtraktion, Multiplikation und Division durchgeführt werden. |
Empfangene Nachricht | Mit diesem Block können Sie eine über Bluetooth erhaltene Nachricht bearbeiten. Es gibt auch einen Block zum Versenden von Nachrichten über Bluetooth. Über die Bluetooth-Technologie kann der Roboter mit dem PC oder anderen Lego Mindstorms NXT Robotern kommunizieren. |
Timer | Mit diesem Block kann eine Stoppuhr gesteuert werden. |
Variable | Mit diesem praktischen Block können Sie Variable in Ihr NXT Programm einbauen und diese verändern. |
Erstes NXT Programm
Das erste NXT Programm, das wir hier gemeinsam entwickeln, ist relativ einfach. Es nutzt den Geräuschsensor, um die Geräuschintensität (in Prozent der Empfindlichkeit des Sensors) auf dem Bildschirm des intelligenten NXT-Steins anzugeben.
Das fertige NXT Programm ist im nachstehenden Schema zu sehen:
Dieses NXT Programm stellen wir nun Schritt für Schritt zusammen.
Im Menü Datei klicken Sie auf Neu. Dadurch öffnet sich ein neues NXT Programm mit leerer Arbeitsfläche. Der Einfachheit halber wählen Sie die vollständige Palette (zweiter Reiter links unten auf der vertikalen Menüleiste).
Öffnen Sie die Liste der Sensoren-Blöcke und verschieben Sie den Tonsensor wie in der nachstehenden Abbildung auf den Ablaufträger.
Aus der Liste „Großer Funktionsumfang“ verschieben Sie den Block „Konvertieren“ wie auf dem nachstehenden Bild zu sehen.
Nach dem gleichen Prinzip platzieren Sie nach und nach die folgenden Blöcke auf dem Ablaufträger:
- Den Block „Variable“ aus der Liste der „Daten“-Blöcke. Im Parameterfenster dieses Blocks wählen Sie die Variable in Textform und vergewissern Sie sich, dass die Schaltfläche „Schreiben“ aktiviert ist. Das bedeutet, dass eine Variable in Schriftform verwendet wird.
- Den Block „Text“ aus der Liste „Großer Funktionsumfang“.
- Den Block „Anzeige“ aus der Liste „Aktion“. Im Dropdown-Menü des Parameterfensters wählen Sie „Text“. Das bedeutet, dass der Block Textdaten anzeigen soll.
- Den Block „Warten“ aus der Liste „Ablauf“. Dieser Block zeigt das Intervall zwischen zwei Messungen an (wir lassen es standardmäßig auf 2 Sekunden).
Verschieben Sie die gesamte Sequenz in eine Schleife, damit sich das NXT Programm mehrmals wiederholt und so in regelmäßigen Abständen Messungen durchgeführt werden. Ziehen Sie dazu einen Block „Schleife“ aus der Liste „Ablauf“ auf die Arbeitsfläche und setzen Sie alle bisher zusammengesetzten Blöcke unter Einhaltung ihrer Reihenfolge in die Schleife.
Achten Sie darauf, dass alle Blöcke auf dem Ablaufträger verbleiben und mit dem Startpunkt verbunden sind, da sie sonst nicht vom Programm berücksichtigt werden (sie erzeugen jedoch auch keinen Fehler).
Standardmäßig ist die Schleife auf „Unendlich“ eingestellt. Das bedeutet, dass das NXT Programm sich unendlich wiederholt, bis es mithilfe des intelligenten NXT-Steins angehalten wird. Dies kann auf Wunsch geändert werden, indem Sie die Schleife anklicken und ihr im entsprechenden Parameterfenster eine Zahl zuordnen (es wird jeweils das Parameterfenster für den aktivierten Block angezeigt).
Sollen nur 10 Messungen angezeigt werden, so wählen Sie das Dropdown-Menü „Zähler“ und tragen Sie in das Feld „Zählen“ darunter die Zahl 10 ein.
Zu diesem Zeitpunkt sieht das NXT Programm wie folgt aus.
Nun müssen die Blöcke noch so verbunden werden, dass sie Daten übertragen.
Um Informationen auszutauschen, benötigen die Blöcke Datenleitungen. Die Leitungen dienen zur Weitergabe von Daten von einem Block zum anderen. Jeder Datenart ist eine bestimmte Leitungsfarbe zugeordnet:
- Digitale Daten werden durch gelbe Leitungen übertragen
- Logische (Boole’sche) Daten werden durch grüne Leitungen übertragen
- Textdaten werden durch orangefarbene Leitungen übertragen
Wenn die Leitung grau gepunktet erscheint, so bedeutet das, dass der Eingabe-Datenknoten einen anderen Wert erwartet als den, der am Ausgabe-Datenknoten des ersten Blocks ausgegeben wird. Dies wird als defekte Datenleitung bezeichnet. Defekte Datenleitungen entsprechen Fehlern im NXT Programm.
Die nachstehende Abbildung illustriert die Datenkontakte und die Datenleitungen in NXT-G:
Nach den Erklärungen über die Datenkontakte und das Verlegen von Datenleitungen zwischen den Blöcken können wir unser Programm beenden.
Nehmen Sie sich die erste Abbildung dieses Abschnitts wieder vor und verlegen Sie die Datenleitungen zwischen den passenden Datenknoten. Vergessen Sie nicht: Eine grau gepunktete Leitung bedeutet, dass Ihnen ein Fehler unterlaufen ist. Nur farbige Leitungen sind richtig.
Einige Anmerkungen zu den Datenleitungen. Der Übersichtlichkeit halber sind sie nummeriert.
- Mit der ersten Leitung wird die vom Geräuschsensor gemessene Geräuschintensität an den Block weitergegeben, der den Zahlenwert in einen Textwert umwandelt. Der erste Block besitzt eine gelbe Leitung, da ein Zahlenwert weitergegeben wird. Der Block, der den Zahlenwert in einen Textwert umwandelt, nimmt die gelbe Leitung auf.
- Die zweite Leitung gibt den in Text umgewandelten Messwert über eine orangefarbene Leitung an eine Variable in Textform weiter.
- Die fertig ausgefüllte Variable wird über den Textblock und die orangefarbene Leitung abgespeichert (aus der Variablen gewonnen).
- Schließlich gibt die letzte Datenleitung die gelesene Variable an den Anzeigeblock weiter, der den Wert auf dem Bildschirm des intelligenten NXT-Steins anzeigt.
Speichern Sie das NXT-G Programm und testen Sie es an Ihrem Lego Mindstorms NXT, indem Sie auf die Schaltfläche „Programm übertragen und ausführen“ in der Mitte des Controllers klicken.
Hinweis : lDie vom Geräuschsensor gemessenen Werte sind relative Werte in Prozent der Sensorempfindlichkeit. Es handelt sich also nicht um eine Angabe in Dezibel. Im Handel sind auch empfindlichere Geräuschsensoren erhältlich, die einen Dezibelwert angeben und mit Lego Mindstorms NXT kompatibel sind. Da Sie die Sensoren jedoch mithilfe eines Blocks kalibrieren können, der im Lieferumfang von NXT-G enthalten ist, können die Messwerte mit Dezibelwerten verknüpft werden. |
Weiterführende Hinweise für NXT-G Programme
National Instruments, der Herausgeber der professionellen Software LabView, bietet ein Toolkit für LabView an, mit dessen Hilfe Sie bei Entwurf und Entwicklung von Robotern noch weiter gehen können.
Die Grundidee von National Instruments war es, mit NXT-G eine einfache und effiziente Schnittstelle für Einsteiger zu schaffen. Wer mit seinen Roboterkreationen noch mehr erreichen und diese der Serienfertigung zuführen möchte, für den bietet sich LabView als ideales Werkzeug an.
Unter diesem Gesichtspunkt wird Lego Mindstorms NXT gewissermaßen zur Prototypenplattform.
Génération Robots (http://www.generationrobots.de)
–
Jegliche Verwendung oder Vervielfältigung bedarf der vorherigen ausdrücklichen Genehmigung