modell-getriebene softwareentwicklung für lego mindstorms nxt
DESCRIPTION
Model driven software development for Lego Mindstorm NXT (as it was possible in 2008). Now the tooling is much sophisticated, check out: http://www.statecharts.org/TRANSCRIPT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Modell-getriebene Modell-getriebene Softwareentwicklung für Softwareentwicklung für
Lego Mindstorms NXTLego Mindstorms NXT
Jörg ReichertJörg ReichertIT-BeraterIT-Berater
30. Mai 200830. Mai 2008
2Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
3Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
4Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Plattform - Lego Mindstorms NXT
• Der JVM NXT Brick ist das „Gehirn“ des Lego Mindstorm Roboters, an dessen Ports Sensoren und Motoren angeschlossen werden können
5Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Programmieralternative 1 - NXT-G
• Der Roboter lässt sich über die mitgelieferte Lego Mindstorms NXT Entwicklungsumgebung programmieren, die dazu die vom MIT mitentwickelte Programmiersprache NXT-G verwendet
6Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Programmieralternative 2 - leJOS
• leJOS ist eine kleine Java Virtual Machine, die neben der NXT API auch Werkzeuge enthält, mit denen der Code auf den NXT Brick übertragen werden kann.
• mit leJOS ist es möglich, den NXT mit einer Objekt-orientierten Sprache (Java) zu programmieren, dabei werden unterbrechende Threads, (multi-dimensionale) Arrays, Rekursion, Synchronisation, Rekursion, Exceptions, die elementaren Java-Typen wie z.B. float, long und String sowie die meisten Klassen aus den java.lang, java.util und java.io Paketen unterstützt
7Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
8Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
leJOS Statemachine Development Toolkit
• Prof. Dr. Frank Zimmermann von der privaten Hochschule NORDAKADEMIE in Elmshorn hat ein leJOS-Eclipse-Plugin entwickelt, das die Generierung von leJOS-Code aus Zustandsautomaten-Modellen unterstützt
• da UML für die Generierung zu komplex war, wurde eine domänenspezisches EMF Metamodell erstellt
• mit dem GMF-basierten grafischen Editor lassen sich auf Basis des Metamodells Zustandsautomaten definieren
• mit Hilfe von openArchitectureWare können die Modelle validiert und aus ihnen Java-Code generiert werden
9Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Metamodell NXT Zustandsautomat
10Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
leJOS Statemachine Editor
11Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
12Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Validieren
• da openArchitectureWare verwendet wird, könnte man mit check Gültigkeitsregeln definieren
• vom leJOS Statemachine Development Toolkit wird allerdings nur eine voreingestellte Modellvalidierungs-Regeln angeboten, z.B. das Prüfen, ob eine Transition zwischen Startzustand und einem anderen Zustand besteht, das Fehlen eines Zustandsnamens wird nicht bemängelt (wird dann entsprechend im Modell und im Error-View angezeigt)
• ob das Modell fehlerhaft ist, erkennt man dann höchstens an einem fehlerhaft generierten Code
• eigene auf die Semantik des Modells bezogene Regeln kann somit auch nicht definiert werden.
13Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
14Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Simulieren
• wird im Prinzip nicht unterstützt• es besteht allerdings die Option sich Animationscode mit
generieren zu lassen• dieser Code wird mit auf den Roboter deployt• durch den Befehl „run and animate“ im Kontextmenü des
Statemachine Editors kann man über Bluetooth das Programm auf dem Roboter starten und dieser sendet über Bluetooth seinen aktuellen Zustand und durchlaufene Transitionen, die in der modellierten Zustandsmaschine durch Hervorhebungen visualisiert werden
• von Simulieren kann trotzdem nicht gesprochen werden, weil das Ganze ja schon auf dem Gerät läuft und nicht in einer eigenen Simulationsumgebung
15Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
16Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Generieren und Kompilieren
• Beim Speichern des Modells wird automatisch eine Java-Klasse generiert
• Es muss dazu also nicht explizit der openArchitectureWare-Workflow angestoßen werden.
• Wenn man für das Eclipse-Projekt den automatischen Build eingestellt, wird die generierte Java-Datei auch gleich in Binärcode übersetzt.
• (Syntaktische) Fehler im Java-Code zeigt die Eclipse IDE an. • Da einem Java-Projekt die leJOS Nature verliehen werden
kann, werden über die Nature die benötigten leJOS und Nordakademie-Bibliotheken in den Klassenpfad aufgenommen.
• Über die Eclipse-Preferences wird der Pfad zum leJOS-Installationsordner angegeben.
17Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
18Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Deployen
• Das leJOS Statemachine Development Toolkit integriert den Upload-Befehl in das Kontextmenü der generierten Java-Klasse.
• Die Verbindung zum Roboter lässt sich über die Eclipse-Preferences konfigurieren (USB pder Bluetooth-Verbindung)
• Bisheriges Manko ist, dass die leJOS-Firmware noch nicht mit dem Plugin auf den Roboter überspielt werden kann.
19Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
20Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Debuggen (1)
• Gerätedebugging wird nicht unterstützt• Die leJOS-Bibliotheken enthalten Klassen für das Debuggen.
Diese müssten dann aber direkt im Code verwendet werden. • Die Debugausgabe auf dem Display des NXT-Bricks ist meist
wenig geeignet (wenig Platz oder dann eine spezielle Debugformatausgabe).
• Eine weitere Alternative wäre, Nachrichten vom Roboter via Bluetooth zu erhalten. Diese Funktion ist aber eine Leistung der leJOS-Bibliotheken und kann nicht explizit modelliert werden.
21Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Debuggen (2)
22Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
23Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Werkzeug-Integration (1)
• Es werden Eclipse als Integrations- und Entwicklungsplattform, leJOS als Java-Betriebssystem und Entwicklungssprache für den NXT-Roboter sowie eine Abwandlung des leJOS-Eclipse-Plugins (das um die Unterstützung von Zustandsmaschinen bzw. der Modellierung an sich erweitert worden ist) verwendet.
• Zudem ist die Kommunikation zum Roboter via USB oder Bluetooth konfigurierbar.
• Der Pfad zum leJOS Installationsordner lässt sich angeben. Das Hochladen des Codes ist über das Kontextmenü der Java-Klasse möglich.
• Die entsprechenden Funktionen im Kontextmenü des Statechart-Editors selbst gehen nur für Bluetooth-Verbindung.
24Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Werkzeug-Integration (2)
• Die Verwendung des Generator-Frameworks openArchitectureWare ist vollkommen transparent.
• Einem Java-Projekt, dass das Toolkit verwenden soll, muss einfach nur die leJOS-Nature gesetzt werden.
• Dadurch werden die benötigte Ordnerstruktur im Projekt angelegt, die gebrauchten Bibliotheken werden in den Klassenpfad aufgenommen und die Tool-spezifischen Funktionen als Kontextmenüeintrag für die entsprechenden Dateien aufgenommen.
25Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Agenda
• Plattform• Modellieren• Validieren• Simulieren• Generieren• Deployen• Debuggen• Werkzeug-Integration• Bewertung
26Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Bewertung (1)
• Durch die Verwendung von grafischen Modellen und speziell der Notationsform Zustandsautomat können die Abläufe im Verhalten des Roboters leicht verständlich visuell dargestellt werden.
• Damit wird die Domäne „Zustandsmaschine“ (geschlossenes System mit inneren Zuständen, das über eingehende Ereignisse nach definierten Regeln seinen Zustand wechseln kann) abgedeckt
• Problem ist die Einbettung von komplizierten Plattform-Code in das Zustandsdiagramm, dazu muss man die Plattform sehr gut kennen, die Editierung im Diagramm ist nicht sehr bequem
• durch die Einbettung des Codes in das Zustandsdiagramm ist das Abstraktionsniveau nicht sehr hoch
• keine Unterstützung von Annotationen
27Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Bewertung (2)
• auch wenn es bei Betrachtung des Metamodells möglich scheint, können keinen eingebetteten Statemachines modelliert werden
• damit ist keine Modularisierung über mehreren Zustandsmaschinen oder gar über mehrere Diagramme möglich
28Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Beispiele (1)
• Welcome• Einfache Ausgabe von „Hallo Welt“ auf dem Display
• Bumper• Nutzung des Tast-Sensors• Funktion: beim Anstoßen auf ein Hindernis fährt der Roboter
zurück, dreht sich um 90° und fährt weiter bis er auf ein anderes Hindernis stößt; bei 4 Richtungsänderungen bricht das Programm ab
• LineFollower• Nutzung des Licht-Sensors• Funktion: Roboter folgt einer schwarzen Linie, bei weißem
Untergrund dreht sich der Roboter um die eigene Achse, bis er wieder schwarzen Untergrund erkennt
29Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Beispiele (2) - Demonstration „Drive on line“
30Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Beispiele (3)
• CatChaser• Nutzung des Ultraschall-Sensors• Funktion: Roboter erkennt über Ultraschall einen Luftballon und
fährt auf diesen zu• Dog
• Nutzung des Lautsprecher-Sensors• Funktion: durch Zuruf von „Links“ oder „Rechts“ ändert der Roboter
entsprechend seine Fahrrichtung – der Roboter unterscheidet dabei von hellen Tönen (liiinks) oder tiefen Tönen (reeechts)
31Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Beispiele (4) - Demonstration „Cat chaser“
32Copyright 2008 itemis GmbH & Co. KG
Modell-getriebene Softwareentwicklung Modell-getriebene Softwareentwicklung für Lego Mindstorms NXTfür Lego Mindstorms NXT
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Quellen
• Prof. Dr. Frank Zimmermann: Modellgetriebene Softwareentwicklung für Lego Mindstorms NXT, URL: http://www.nordakademie.de/fileadmin/downloads/Arbeitspapiere/AP_2008_01.pdf
• Prof. Dr. Frank Zimmermann: Benutzerhandbuch leJOS Statemachine Toolkit, URL: http://www.nordakademie.de/fileadmin/downloads/Arbeitspapiere/AP_2008_02.pdf
• Jeff: Line Follower NXT-G Program, URL: http://home.earthlink.net/%7Exaos69/NXT/Line_Follower/Line_Follower.html
• leJOS, URL: http://lejos.sourceforge.net/• Lego Mindstorms NXT, URL: http://mindstorms.lego.com/
© it
emis
AG
200
8 ◊
Alle
Rec
hte
vorb
ehal
ten
Vielen Dank für Ihre Vielen Dank für Ihre Aufmerksamkeit!Aufmerksamkeit!
Jörg ReichertJörg ReichertIT-BeraterIT-Berater
30. Mai 200830. Mai 2008