simulink: softwareentwurf für eingebettete...

Download Simulink: Softwareentwurf für eingebettete Systemeeos.cs.ovgu.de/wp-content/uploads/2013/06/Simulink.pdf · 5 External Mode Verbindung zwischen Simulink und Arduino über seriellen

If you can't read please download the document

Upload: lamkhanh

Post on 06-Feb-2018

224 views

Category:

Documents


0 download

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