modell-getriebene softwareentwicklung für lego mindstorms nxt

33
© itemis AG 2008 Alle Rechte vorbehalten Modell-getriebene Modell-getriebene Softwareentwicklung für Softwareentwicklung für Lego Mindstorms NXT Lego Mindstorms NXT Jörg Reichert Jörg Reichert IT-Berater IT-Berater 30. Mai 2008 30. Mai 2008

Upload: joergreichert

Post on 27-Jun-2015

322 views

Category:

Technology


0 download

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

Page 1: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

© 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

Page 2: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 3: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 4: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 5: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 6: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 7: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 8: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 9: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 10: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 11: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 12: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 13: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 14: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 15: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 16: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 17: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 18: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 19: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 20: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 21: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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)

Page 22: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 23: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 24: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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.

Page 25: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 26: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 27: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 28: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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

Page 29: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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“

Page 30: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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)

Page 31: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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“

Page 32: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

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/

Page 33: Modell-getriebene Softwareentwicklung für Lego Mindstorms NXT

© 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