Software Entwurf fr den RCX von Lego Mindstorms

  • Slides: 36
Download presentation
Software Entwurf für den RCX von Lego Mindstorms 1

Software Entwurf für den RCX von Lego Mindstorms 1

Gliederung n n n n n Einleitung Was ist ECRobot? Beteiligte Komponenten zum Entwurf

Gliederung n n n n n Einleitung Was ist ECRobot? Beteiligte Komponenten zum Entwurf mit ECRobot Simulink S-Funktionen Real-Time-Workshop Stateflow ECRobot Praktische Erfahrungen Bewertung 2

Einleitung n n Das Ziel des HS war die Suche nach einem Entwicklungstool für

Einleitung n n Das Ziel des HS war die Suche nach einem Entwicklungstool für den RCX das auf möglichst hohem Abstraktionsniveau arbeitet. Die Webrecherche erbrachte dabei 2 Kandidaten: n Robolab n ECRobot Robolab ist jedoch kostenpflichtig und es stand nur eine Demo zur Verfügung. Deshalb wurde mit ECRobot weiter gearbeitet. 3

Was ist ECRobot? n n ECRobot ist eine Erweiterungs- Komponente für Matlab. Es bringt

Was ist ECRobot? n n ECRobot ist eine Erweiterungs- Komponente für Matlab. Es bringt zusätzlich ein: n Blockbibliothek für Lego in Simulink n Target für den Real-Time-Workshop n Makefiles zur Einbindung der Hilfskomponenten 4

Beteiligte Komponenten zum Entwurf mit ECRobot n Neben den in Matlab bereits enthaltenen Komponenten

Beteiligte Komponenten zum Entwurf mit ECRobot n Neben den in Matlab bereits enthaltenen Komponenten wie Simulink und dem Real. Time-Workshop sind noch etliche unabhängige Komponenten beteiligt: n g. Make n Cygnus n gcc-Compiler n Dll n Leg. Os 5

Beteiligte Komponenten zum Entwurf mit ECRobot Komponentenüberblick 6

Beteiligte Komponenten zum Entwurf mit ECRobot Komponentenüberblick 6

Simulink n n Simulink ist ein Software Packet zum Modellieren, Simulieren und Analysieren dynamischer

Simulink n n Simulink ist ein Software Packet zum Modellieren, Simulieren und Analysieren dynamischer Systeme. einige Features: n graphische Benutzeroberfläche zum Modellieren n Modelle als Blockdiagramm per Click-and-Drop zusammenbauen n Abschirmung des Nutzers vor den Blöcken innewohnenden Funktionalität (Code) 7

Simulink n n Bei der Modellsimulation können die Zustände und Ergebnisse problemlos mit der

Simulink n n Bei der Modellsimulation können die Zustände und Ergebnisse problemlos mit der vollen Matlab Funktionalität ausgewertet werden. Simulationen können kontinuierlich durchlaufen werden oder auch im Schrittbetrieb Takt für Takt zum debuggen des Modells 8

Simulink n Erläuterung wichtiger Elemente: n Blockdiagramm n Blockparameter n Sample Time n Subsysteme

Simulink n Erläuterung wichtiger Elemente: n Blockdiagramm n Blockparameter n Sample Time n Subsysteme n Selbst erstellte Blöcke n Signale n Bibliotheken n bedingt ausgeführte Subblöcke 9

Simulink n Block Diagramm: Ein Block Diagramm ist ein bildliches Modell eines dynamischen Systems.

Simulink n Block Diagramm: Ein Block Diagramm ist ein bildliches Modell eines dynamischen Systems. Es besteht aus einer Reihe von Symbolen, Blöcke genannt, verbunden durch Linien die Signale repräsentieren. Jeder Block repräsentiert ein elementares dynamisches System das eine kontinuierliche/diskrete Ausgabe erzeugt. Die Linien repräsentieren Verbindungen von Blockeingängen zu Blockausgängen. Der Typ eines Blocks bestimmt die Beziehung zwischen Ein- und Ausgängen. 10

Simulink n Blöcke: Blöcke repräsentieren elementare dynamische Systeme, die durch Simulink simuliert werden können.

Simulink n Blöcke: Blöcke repräsentieren elementare dynamische Systeme, die durch Simulink simuliert werden können. Ein Block beinhaltet einen oder mehrere Sätze von Eingaben, Zuständen und Ausgaben. Der Blockausgang ist bestimmt durch eine Funktion abhängig von Eingängen, Zuständen und Zeit. 11

Simulink n Block Parameter: Die Schlüsseleigenschaften von vielen Standardblöcken sind parametrisiert um möglichst flexible

Simulink n Block Parameter: Die Schlüsseleigenschaften von vielen Standardblöcken sind parametrisiert um möglichst flexible Aufgabenlösung zu gewährleisten. Jeder parametrisierbare Block hat einen Block Dialog in dem die Parameter geändert werden können. Wenn Parameter als ‚tunable’ angelegt so können sie auch während einer Simulation geändert werden. 12

Simulink n Sample Time: Die Sample Time muss bei diskreten Blöcken so eingestellt werden

Simulink n Sample Time: Die Sample Time muss bei diskreten Blöcken so eingestellt werden das verbundene Blöcke dieselbe besitzen. Was genau mit Sample Time gemeint ist wird später noch genauer beleuchtet. 13

Simulink n Signale: n Als Signale werden die Blockausgänge bezeichnet n beinhaltend Datentyp (z.

Simulink n Signale: n Als Signale werden die Blockausgänge bezeichnet n beinhaltend Datentyp (z. B. 8 – bit), Zahlentyp (integer, real oder komplex) und Dimensionalität (Arraygröße) n Die meisten Blöcke sind jedoch in den Eingangsund Ausgangssignalen eingeschränkt 14

Simulink n Bibliotheken: n die Blöcke aus den Bibliotheken können in die Modelle kopiert

Simulink n Bibliotheken: n die Blöcke aus den Bibliotheken können in die Modelle kopiert werden n Dabei bleiben sie verbunden, weswegen Änderungen des Bibliotheksblockes auch auf den Modellblock wirken n Die Modellblöcke können von der Bibliothek entkoppelt werden 15

Simulink n Subsysteme: n ermöglichen komplexe Systeme hierarchisch zu ordnen n beliebig tief gestaffelt

Simulink n Subsysteme: n ermöglichen komplexe Systeme hierarchisch zu ordnen n beliebig tief gestaffelt n repräsentiert durch Subsystemblock n festlegen von Ein- und Ausgängen n Anlegen des Subblockdiagramms wie Blockdiagramm 16

Simulink n Selbsterstellte Blöcke: n Es besteht die Möglichkeit eigene Blöcke zu erstellen. n

Simulink n Selbsterstellte Blöcke: n Es besteht die Möglichkeit eigene Blöcke zu erstellen. n Graphisch oder über Programmierung n können in Blockbibliotheken übernommen werden n Unterschied zu Subsystemen, beim grafischen Erstellen, ist der Parameterdialog n die Programmierung wird im Kapitel S-Funktionen genauer erläutert 17

Simulink n bedingt ausführbare Subblöcke: n die Ausführung ist von einem Kontrollsignal abhängig n

Simulink n bedingt ausführbare Subblöcke: n die Ausführung ist von einem Kontrollsignal abhängig n Reaktion auf Signalflanken oder -werte 18

S-Funktionen n n sind eine Möglichkeit Code in sein Projekt zu integrieren der Vorteil

S-Funktionen n n sind eine Möglichkeit Code in sein Projekt zu integrieren der Vorteil ist das einmal programmierte Blöcke leicht wieder verwendbar sind vor allem durch die Möglichkeit des Parametrisierung unterstützt werden dafür etliche Programmiersprachen wie C, C++, Ada oder Fortran es gibt prinzipiell 2 Arten S-Funktionen zu schreiben, als: n M-File, auf der Matlab-Sprache basiert (einfacher) n Mex-File, für die normalen Programmiersprachen (ausdrucksstärker) 19

S-Funktionen n Betrachtungsweise eines Simulinkblockes, an der auch der Aufbau der S-Funktionen festgemacht ist:

S-Funktionen n Betrachtungsweise eines Simulinkblockes, an der auch der Aufbau der S-Funktionen festgemacht ist: 20

S-Funktionen n Dargestellt sind die einzelnen Module der SFunktion die bei einem Simulationsschritt ausgeführt

S-Funktionen n Dargestellt sind die einzelnen Module der SFunktion die bei einem Simulationsschritt ausgeführt werden. 21

S-Funktionen n n so genannte Call-Back-Methoden repräsentieren die einzelnen Module wie sie im letzten

S-Funktionen n n so genannte Call-Back-Methoden repräsentieren die einzelnen Module wie sie im letzten Bild dargestellt wurden Für die S-Funktionen werden Schablonen bereitgestellt in denen die Call-Back-Methoden „nur noch“ mit Inhalt gefüllt werden müssen. 22

Real-Time-Workshop n n erzeugt Programme von Simulink-Entwürfen zum Prototypen, Testen und Einsetzen, von Real-Time

Real-Time-Workshop n n erzeugt Programme von Simulink-Entwürfen zum Prototypen, Testen und Einsetzen, von Real-Time Systemen, auf einer Vielzahl von Ziel-Plattformen er kann direkt Source Code generieren, der den Compiler enthält, Input und Output Geräte, Speicher. Modelle, Kommunikationsknoten und andere Charakteristiken die eine Applikation möglicherweise fordert 23

Real-Time-Workshop n Für uns wichtige Fähigkeiten und Features des RTW sind: n Simulink Code

Real-Time-Workshop n Für uns wichtige Fähigkeiten und Features des RTW sind: n Simulink Code Generator: generiert automatisch CCode aus dem Simulink-Modell n Make Process: der erweiterbare make Prozess ermöglicht es ein eigenes Produktions oder Rapid Prototyping Target zu kreieren 24

Real-Time-Workshop n n der generierte Code ist Prozessor unabhängig er repräsentiert das Modell exakt

Real-Time-Workshop n n der generierte Code ist Prozessor unabhängig er repräsentiert das Modell exakt effizienter Code für S-Funktionen kann erzeugt werden durch Nutzung der Target Language Compiler Instruktionen (TLC Scripts genannt) und kann automatisch, mit generierten Code, integriert werden unterstützt werden folgende Compiler: n unter Windows die Compiler von Borland, LCC, Microsoft Visual C/C++ und Watcom n unter Linux ist als Default der cc eingestellt, der gcc wird ebenfalls unterstützt. 25

Real-Time-Workshop n Entwicklungsdiagramm für Entwurfsprozess 26

Real-Time-Workshop n Entwicklungsdiagramm für Entwurfsprozess 26

Stateflow n n ist ein graphisches Design und Entwicklungstool zur Simulation komplexer reaktiver Systeme

Stateflow n n ist ein graphisches Design und Entwicklungstool zur Simulation komplexer reaktiver Systeme basierend auf der finiten Zustandsmaschinen Theorie mit dem Stateflow modelliert man den Teil des Modells der auf Ereignisse reagieren soll 27

ECRobot n n Das ECRobot Target wurde hauptsächlich durch das modifizieren von Code und

ECRobot n n Das ECRobot Target wurde hauptsächlich durch das modifizieren von Code und Control Files, die der Real-Time-Workshop bereits mitbringt, erstellt. diese Files fallen in 2 Kategorien: n Das Run-Time-Interface besteht aus Code der die Ausführung von generiertem Modell Code überwacht und unterstützt. Im ECRobot Target, beinhaltet das Run-Time Interface das Haupt Programm, eingebundene Geräte Treiber und Header Files die Anbindung an den Leg. OS Kernel gewährleisten. n Control Files. Die Code Generierung und der Build Prozess werden gesteuert durch ein angepasstes System Target Files und Template Makefiles. Die angepassten Kontroll-Files starten einen Target spezifischen Cross-Compiler und (optional) downloaden das generierte Programm ins Zielsystem. 28

ECRobot n n n das Betriebssystem das auf dem RCX laufen muss heißt Leg.

ECRobot n n n das Betriebssystem das auf dem RCX laufen muss heißt Leg. OS der verwendete Compiler ist der GCC Cross-Compiler für den Hitachi h 8300 Mikrocontroller zum Übertragen des Leg. OS und der Programme auf den RCX kommt das Tool Dll zum Einsatz da für einige der Zusatzkomponenten eine Unix. Umgebung notwendig ist kommt noch das Tool Cygnus zum Einsatz, das diese emuliert die auf dieser Seite genannten Zusatztools sind alle unabhängig vom ECRobot und frei erhältlich 29

ECRobot n die ECRobot Geräte-Treiber-Blöcke sind in einer Bibliothek gesammelt (ECRobot. mdl) 30

ECRobot n die ECRobot Geräte-Treiber-Blöcke sind in einer Bibliothek gesammelt (ECRobot. mdl) 30

ECRobot n n Das Template Makefile für das ECRobot Target ist ECRobot. tmf. Es

ECRobot n n Das Template Makefile für das ECRobot Target ist ECRobot. tmf. Es ist eine angepasste Version des ert_unix. tmf. Die wichtigsten Anpassungen sind: n Der Build Prozess ruft gmake auf, ein Make Utility das mit dem Real-Time-Workshop installiert wird. n Das generierte Makefile startet den GCC Cross-Compiler für den Hitachi h 8300 Mikrocontroller und spezifiziert Kommandozeilenparameter für den Compiler. n Das generierte Modellfile hat den Namen model. lx. Optionell, wird der generierte Code in den RCX herunter geladen via dem dll-Utility 31

ECRobot 32

ECRobot 32

Praktische Erfahrungen n n im praktischen Einsatz sind einige Hindernisse aufgetreten: das erste große

Praktische Erfahrungen n n im praktischen Einsatz sind einige Hindernisse aufgetreten: das erste große Hinderniss ist die Installation: n Offiziell dokumentiert sind von Mathworks 2 Arten der Installation von ECRobot. n einmal eine von Hand Installation n und als zweites ein Script zur automatischen Einrichtung n Trotz intensiver Bemühungen waren beide Versionen nicht zum funktionieren zu bringen. 33

Praktische Erfahrungen n Die letztendlich eingesetzte Version, mit der das ECRobot getestet wurde, ist

Praktische Erfahrungen n Die letztendlich eingesetzte Version, mit der das ECRobot getestet wurde, ist eine fertig integrierte Version die freundlichwerweise einer der Entwickler von Mathworks zur Verfügung stellte. Ursache der Installations-Probleme sind meiner Meinung nach massive Versionskonflikte verursacht durch die vielen verschiedenen Komponenten die unabhängig voneinander entwickelt werden. Den Umfang den die Einrichtung von ECRobot hat spiegelt wohl am besten die Tatsache wieder, dass das automatische Script etwa eine halbe Stunde zur Installation benötigen soll. 34

Praktische Erfahrungen n das zweite Hindernis ist die, etwas größer als angenommene, Entwicklungskomplexität: n

Praktische Erfahrungen n das zweite Hindernis ist die, etwas größer als angenommene, Entwicklungskomplexität: n Bei der Modellierung eines Beispiels stellte sich heraus, dass es mit dem schnellen Zusammenklicken eines Modells auch nicht so weit her ist, da etliche Randbedingungen eingestellt werden müssen, die oftmals gut Versteckt in irgendwelchen Menüs stecken. n Auch die Nutzung von Simulink und Stateflow bedarf einer gewissen Einarbeitung. Die allerdings im Vergleich zur Einarbeitung in eine der Programmiersprachen für den RCX geringer ist. Diese bieten dafür größeren Funktionsumfang. 35

Bewertung n n n Die Arbeit mit Simulink und Stateflow an sich, zur Modellgenerierung,

Bewertung n n n Die Arbeit mit Simulink und Stateflow an sich, zur Modellgenerierung, ist eine interessante Möglichkeit. für die RCX-Programmierung stehen allerdings Aufwand und Nutzen in schlechter Relation bisher hat sich keine Entwicklergemeinde des ECRobot angenommen ECRobot ist zwar kostenlos, aber für die zu Nutzende Basis Matlab trifft dies nicht zu die Programmiersprachen für den RCX, wie NQC, sind meiner Ansicht nach weitaus mächtiger im Funktionsumfang und bedürfen vermutlich nur eines gering größeren Einarbeitungsaufwandes für jemanden mit Programmiererfahrung 36