Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Robotik für Lehr- und Entwicklungszwecke Diplomarbeitspräsentation Christian Aichinger.

Ähnliche Präsentationen


Präsentation zum Thema: "Robotik für Lehr- und Entwicklungszwecke Diplomarbeitspräsentation Christian Aichinger."—  Präsentation transkript:

1 Robotik für Lehr- und Entwicklungszwecke Diplomarbeitspräsentation Christian Aichinger

2 Entwicklung eines universellen Robotiksystems zur Verwendung und Weiterentwicklung im Schulbetrieb OS-unabhängig Programmiersprachenunabhängig flexibles, erweiterbares System einfach zu bedienen (hardwaretechnisch) Ausreichende Dokumentation Beispielanwendungen (Samples)

3 Programmiersprachen C C# Java Betriebssysteme Windows Linux Samples für alle Systeme Kombinierte Samples (Sensoren + Aktoren)

4 Module I2C-Bausteine, Sensoren/Aktoren Verbindung USB-I2C-Converter Zwischenplatine Aktorensteuerung (Motoren u.a.) DriveSystem Eigene Energieversorgung, auswechselbar

5 Bestehend aus: MCK – Make Controller Kit Entwicklungsboard, hauptsächlich für die Aktorik I2C – Converter (Sensorik) Für die I2C-Kommunikation, Sensoren

6 C und C# Programmierung: mcbuilder, Visual Studio 2008 Java Programmierung: Eclipse Peripheriegeräte: Servos, Abstandssensoren, I2C-Bausteine (Temperatur, Abstand)

7

8 Momentan ist Robotik noch ein schwieriges Gebiet für Schüler Einstieg schwer Ergebnisse lassen oft auf sich warten Darum: Neues, universelles System, von Schüler für Schüler

9 Verwendung soll in mehreren Formen möglich sein. C als LowLevel-Sprache C# und Java als Hochsprachen, auch für grafische Anwendungen Somit ist auch eine fächerübergreifende Verwendung möglich

10 Java Objektorientiert Syntax ähnlich wie C/C++ Umfangreiche Klassenbibliothek (JDK) Zum Ausführen wird eine JVM benötigt

11 verwendet bekannte Konzepte aus C++, Visual Basic und Java Objektorientiert (Mischform) Ermöglicht eine schnelle Anwendungsentwicklung Vorrausetzung ist das.NET Framework

12 Die Universalistät des Systems soll gewahrt werden Beide Systeme werden im Unterricht verwendet Die Entwicklung soll in möglichst vielen Unterrichtsfächern möglich sein

13 Der Einstieg in die Robotik ist oft schwer Samples helfen beim einarbeiten in das System Anwendungen werden praktisch aufgezeigt Funktionalität der vorhandenen Hardware wird demonstriert Programmteile wiederverwendbar

14 Weit verbreitetes Bussystem für Sensoren Dementsprechend viele Clients Ein Bus mit mehreren Clients möglich USB-Geräte (USB-I2C-Converter) komfortabel verwendbar Beste Eignung für ROLEZ im Vergleich mit anderen Bussystemen in diesem Bereich

15 Entwickelt von Phillips Bidirektional Master – Slave-System Ein Master – Mehrere Slaves (Sensoren) Zwei Leitungen SCL (serial clock line) SDA (serial data line)

16 Entwicklungsboard Kleine Größe – großer Komponentenumfang Viele Schnittstellen Aktoren/Sensoren Programmiersprachen Hohe Leistung Atmel AT91SAM7X256 Mikrocontroller (Bis zu 55MHZ/48MIPS) Hoher Preis (Versand aus den USA) Eigenbau: Zeitkomponente kritisch

17

18

19 Transport-Protokoll zum Ansprechen des MCK über Programmiersprachen Ursprünglich für die Kommunikation mit Multimedia Geräten entwickelt Quelloffen, Transport unabhängig, Nachrichten basierend Übertragung per TCP oder UDP Implementiert in viele Programmiersprachen Viele Beispielanwendungen

20 Die Kommunikation mit OSC-Geräten erfolgt über OSC-Pakete /servo/0/position 200 OSC- Container OSC- Methode OSC- Argument OSC-Adresse OSC-Nachricht OSC-Paket

21 Einfache Handhabung – universelle Basis libusb Library zum USB-Handling In C, entwickelt für Linux, Windows Port existiert Direkte Übersetzung in I2C-Signale Kein simulierter COM-Port Geringer Preis, jedoch Eigenbau Direkter Kontakt mit Hersteller

22 Kapselung und Vereinfachung von bestehenden komplexen Bibliotheken Erstellung von Einsteiger-freundlichen Bibliotheken Implementierung der Basis-Funktionalitäten Garantiert Einfachheit, jedoch ev. eingeschränkte Funktionalität Erweiterte Funktionalitäten beibehalten Für erfahrende User Plattformunabhängigkeit in Java und C Ähnlichkeit in der Verwendung (Hochsprachen)

23 1. Start mit einer schülerunfreundlichen I2C oder MCK Bibliothek a)Anlegen einer neuen Bibliothek b)Kapselung der Klassen 2. Implantierung einfach zu verwendender Basis- Funktionalitäten 3. Beibehaltung der komplexen Funktionen Die so erstellten Bibliotheken (C#, Java, teilweise C) werden für Samples und Applikationen verwendet Eine Hierarchie von Bibliotheken ist auch möglich Bsp.: C-Header -> C++ Lib -> C# Lib

24 Realisierung nicht mehr von LL weg Verringerung der Fehlerquellen solide, leistungsfähige Software-Basis Leichtere Erstellung von plattformunabhängigen Bibliotheken

25 MCKCC#Java BibliothekNeinJa SamplesJa I2CCC#Java BibliothekJa SamplesJa

26 MCK C#: Bibliothek von Making Things Java: Bibliotheken NetUtil bzw. JavaOSC Alle drei Bibliotheken basieren auf Open Sound Control I2C Beispielanwendung von Till Harbaum libusb-Bibliothek LibusbJava – Java-Port von libusb

27 C# - Bibliothek (HL) Baut auf der Basis C# Bibliothek von MakingThings auf. (Nur Windows) Java - Bibliothek (HL) Baut auf der JavaOSC Bibliothek auf. (Plattformunabhängig) Basis-Bibliotheken basieren auf OSC Realisierung eines Ticket-Systems In C werden Samples erstellt (LL) Direkte Ausführung auf dem Mikrocontroller Cross Compiler Kompilierung auf Windows und Linux

28 Vereinfachte Hardwareansteuerung für die Schüler Es werden Kommandos (für die Hardware) mittels Tickets abgesetzt Kommando-Typen Setter-Kommando: Setzt den Wert einer Hardware-Adresse Getter-Kommando: Fragt den Wert einer Hardware-Adresse ab Schritte nach dem Anlegen eines Tickets 1.Kommandotyp setzen 2.Hardware-Adresse definieren (Zwei Modi) 3.Eventuellen Parameter setzen (Setter-Kommando) 4.Ausführen (Zwei Modi)

29 t…Aktives Ticket-Objekt Per Struktur Code: t.setGetterKommando(MCK.Servo0.Position); Für Anfänger Struktur enthält nur die wichtigsten Module Per String Code: t.setGetterKommando(/Servo/0/Position); Für Fortgeschrittene und Profis Alle Module ansprechbar In Schleifen verwendbar

30 executeBlocking() Hauptthread wird angehalten Fortsetzung beim Erhalten eines Wertes GETTER-Kommandos executeNonBlocking() Hauptthread wird nicht angehalten Manuelle Statusabfragen mittels hasFinished() GETTER- und SETTER-Kommandos Ergebnis der Ausführung wird mittels getValue() abgefragt

31 JavaC# Boolean ret = false; Integer res; … public void handleMessage(OscMessage msg) { … ret = true; ArrayList args = msg.getArguments(); res = Integer.parseInt(args.get(0).toString()); } … public Boolean hasFinished() { return ret; } … public int getValue() { return res; } Boolean ret = false; int res; … private void callBackHandler(OscMessage oscM) { … ret= true; res = (int)oscM.Values[0]; } … public Boolean hasFinished() { return ret; } … public int getValue() { return res; }

32 JavaC# final Object sync = new Object(); … public void handleMessage(OscMessage msg) { … synchronized(sync) { sync.notifyAll(); } … synchronized(sync) { sync.wait(); } public class waiterThread { Boolean stop = false; public void dowork() { while (!stop) ; } public void stoppen() { stop = true; } … private void callBackHandler(OscMessage oscM) { if (s.wt != null) { s.wt.stoppen(); } … s.wt = new waiterThread(); t = new Thread(s.wt.dowork); t.Start(); t.Join();

33 Zu Kontrolle des Datenflusses Immer nur ein Ticket aktiv Einfache und effiziente Unterstützung von SETTER- und GETTER-Kommandos Unterstützung mehrerer Benutzergruppen Leichterer Umstieg zwischen den HL- Sprachen Verwendung bleibt gleich Ähnliche Exceptions Vereinheitlichung der Kommunikation über LAN- und USB-Port

34 Betroffenes Objekt SchrittFunktion mtMakingThings-Objekt anlegen mtPort im Konstruktor wählenPort.USB oder Port.LAN mtVerbindung öffnenopen() mtVerbindung testenisReady() mtTicket generierengenerateTicket() tKommando und Kommandotyp setzenSetter/Getter möglich tKommando ausführen1. executeBlocking() -> Ausführen und Hauptthread blockieren [GETTER] 2. executeNonBlocking() -> Ausführen und Hauptthread nicht blockieren [GETTER, SETTER] tBei Getter Kommandos das Ergebnis auslesen getValue() tSpeicher den das Ticket-Objekt belegt freigeben Dispose() mtVerbindung schließenclose() mtSpeicher den das MakingThings-Objekt belegt freigeben Dispose()

35 JavaC# MakingThings mt = new MakingThings(Port.LAN); mt.open(); Ticket t = mt.generateTicket(); t.setGetterKommando(MCK.Servo0.Position) t.executeBlocking(); System.out.println(t.getValue()); t.dispose(); mt.close(); mt.dispose(); MakingThings mt = new MakingThings(Port.LAN); mt.open(); Ticket t = mt.generateTicket(); t.setGetterKommando(MCK.Servo0.Position) t.executeBlocking(); Console.WriteLine(t.getValue()); t.Dispose(); mt.close(); mt.Dispose();

36 Bauen auf libusb auf OS-Unabhängig C#-Lib: In DLL zusammengefasste C- Funktionen verwendet Java-Lib: LibusbJava benutzt um C#-Lib nachzubilden

37 Bibliothek für die i2c-tiny-usb Hardware Komponente Open Source Bietet eine einheitliche Schnittstelle für USB- Entwicklungen Bewusst simpel gehalten OS-Unabhängig Weit verbreitet Entwickelt in C Java-Port: LibusbJava

38 i2c_get_multiple_converters Liefert die Adressen der an- geschlossenen Converter Wenn nur ein Converter i2c_init_win() i2c_get_multiple_converters i2c_init_win_multiple i2c_tiny_usb_get_func i2c_lookup_address i2c_write_basic i2c_read_basic i2c_close_win

39 Betriebssystem Laufzeitumgebung (.NET, Java) Übernommene Bibliotheken ROLEZ-Bibliotheken Benutzerprogramm

40 Warenwert des Endaufbaus: ca. 150 Arbeitszeit: je ca. 230 Stunden 2 Systeme 3 Sprachen 15 Samples


Herunterladen ppt "Robotik für Lehr- und Entwicklungszwecke Diplomarbeitspräsentation Christian Aichinger."

Ähnliche Präsentationen


Google-Anzeigen