simulink: softwareentwurf für eingebettete...
TRANSCRIPT
-
Simulink:Softwareentwurf fr eingebettete Systeme ROS-Arduino-Interface
von Christian Schildwchter
-
Simulink
Simulink S-Functions
Softwareprojekt ROS-Arduino-Interface
-
3
Simulink
-
4
LIVE DEMO
-
5
External Mode
Verbindung zwischen Simulink und Arduino ber seriellen Port 0
- Darstellung und Aufzeichnung von Signalen des Arduino, z.B. Sensorwerte, Daten werden automatisch vom Arduino zu Simulink bertragen
- Anpassung von Parametern (parameter tuning), nderungen werden zur Laufzeit zum Arduino bertragen kein stndiges neu Generieren und Programmieren
- Modell in Simulink dient als Interface zur Bedienung des Modells, das auf dem Arduino luft
http://www.mathworks.de/de/help/simulink/ug/remotely-monitoring-and-controlling-an-application-on-arduino-hardware.html
http://www.mathworks.de/de/help/simulink/ug/remotely-monitoring-and-controlling-an-application-on-arduino-hardware.html
-
6
Simulink S-Functions(system-functions)
- bieten die Mglichkeit den Funktionsumfang von Simulink zu erweitern
- stellt die Programmiertechnische Umsetzung eines Simulink-Blocks dar
- kann in MATLAB-Code, C/C++ oder Fortran geschrieben werden
- werden zu MEX-Files compiliert (MATLAB Executable), die von MATLAB dynamisch gelinkt werden
-
7
C/C++ S-Functions
Vier Dateien (erzeugen mit S-Function Builder):
sfun ist Name der S-Function
- sfun.c: enthlt standard Callback Funktionen, die durch MATLAB/Simulink aufgerufen werden, und in diesen werden die benutzerdefinierten Funktionen aus sfun_wrapper.c aufgerufen
- sfun_wrapper.c: enthlt benutzerdefinierte Funktionen, die gewnschte Funktionalitt bieten. Kann auch C++ Code enthalten und mit .cpp enden, wenn C++ Code als extern C definiert ist
- sfun.tlc: wird vom Simulink Coder fr die Code-Generierung, z.B. fr Arduino, bentigt
- sfun.mexw64: (fr Windows 64 Bit) Binrdatei, die in MATLAB Umgebung ausgefhrt wird Interface zwischen MATLAB und eigenem Code
-
8
S-Function Callbacks
Zwei Callback Funktionen fr eigene Funktionsaufrufe bentigt:
mdlStart:
- Aufruf der Initialisierungsfunktion aus sfun_wrapper.c- entspricht setup() von Arduino
mdlOutputs:
- Aufruf der Funktion aus sfun_wrapper.c, die eigentliche Funktionalitt enthlt- entspricht loop() von Arduino
-
9
sfun.c:
extern void myfunc(int *in, int *out);
//Simulink Callback-Funktionenstatic void mdlOutputs(...){
// in/output pointer 'in' und 'out' von Simulink holen//myfunc aus sfun_wrapper.cpp aufrufenmyfunc(in, out);
}
sfun_wrapper.cpp:
//eigene Funktionen, z.B. out=2*inextern C void myfunc(int *in, int *out){
*out = *in * 2;}
-
10
S-Function Builder
-
11
Softwareprojekt Aufgabenstellung
Entwicklung eines ROS-Arduinio Interfaces, sodass man ausschlielich aus Simulink heraus eine Anwendung entwickeln kann, mithilfe der sich ein Arduino Board mit ROS verbindet
Hilfsmittel:
- Simulink Support Package for Arduino Hardware, stellt verschiedene Aruduino Funktionen in Simulink bereit wie: Analog Input, Digital Input/Output, PWM,
- rosserial, serielle Verbindung eines Arduino Boards mit ROS
http://wiki.ros.org/rosserial_arduino http://www.mathworks.de/hardware-support/arduino-simulink.html
http://wiki.ros.org/rosserial_arduinohttp://www.mathworks.de/hardware-support/arduino-simulink.html
-
12
Robot Operating System
- Open-Source Framework um Roboteranwendungen zu entwickeln
- Hardwareabstraktion, Gertetreiber, ...
- Nachrichtenaustausch per publish-subscribe, Komponenten stellen Daten unter einem Topic (z.B. distance) zur Verfgung und publishen diese, bzw. subscriben ein Topic und erhalten Daten
Programm mit Simulink entwickeln, sodass Arduino Daten publishen und subscriben kann
-
13
Wie wurde das Ziel erreicht?
- neue Library mit Publishern und Subscribern als S-Function Blcke
- fr jeden Block eine C/C++ S-Function, die mithilfe der rosserial Library den Blockinput publisht oder subscribte Daten als Output weiter gibt
-
14
Beispiel: rangePublisher
- sendet (publisht) Daten vom Typ sensor_msgs/Range an ROS
-
15
Warum war das Projekt sinnvoll?
- keine aufwndige Programmierung mit Ardunio Bibliotheken oder gar avr libc sehr hohe Abstraktionsebene - schnelles Prototyping durch einfache Modellbildung mithilfe von Blcken
- parameter tuning im Simulink external mode
- viele vorhandene Simulink Funktionalitten knnen verwendet werden, z.B. Filter, Signalquellen, Scopes, ...
- Programmierung eines Arduino und Einbindung in ROS auch fr Nicht-Programmierer mglich
-
16
-
17
VIDEO
-
18
Zusammenfassung
- S-Functions bieten die Mglichkeit in verschiedenen Programmiersprachen eigene Funktionen als Simulink Blcke zu erstellen und in Modellen zu nutzen
- Programmieren von Arduino in Simulink mithilfe des Simulink Support Package for Arduino Hardware oder eigenen Blcken
- Parameter zur Laufzeit verndern im external mode Hardware in the Loop
- die aus dem Softwareprojekt entstandene Simulink Library ROS Arduino Interface bietet die Mglichkeit mit Hilfe von Blcken Arduino und ROS zu verbinden und ist leicht erweiterbar um neue Datentypen/Messagetypes nach vorgegebenem Schema neue S-Function erstellen
-
19
Vielen Dank fr Ihre Aufmerksamkeit!
Folie 1Folie 2Folie 3Folie 4Folie 5Folie 6Folie 7Folie 8Folie 9Folie 10Folie 11Folie 12Folie 13Folie 14Folie 15Folie 16Folie 17Folie 18Folie 19