Hochschule Wismar. Fakultät für Wirtschaftswissenschaften. University of Technology, Business and Design



Ähnliche Dokumente
schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Anwendungspraktikum aus JAVA Programmierung im SS 2006 Leitung: Albert Weichselbraun. Java Projekt. Schiffe Versenken mit GUI

Tipps und Tricks zur Installation von Java-basierten Programmen auf Handys

Programmierkurs Java

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

Internet Explorer Version 6

Handbuch B4000+ Preset Manager

Objektorientierte Programmierung für Anfänger am Beispiel PHP

ZfP-Sonderpreis der DGZfP beim Regionalwettbewerb Jugend forscht BREMERHAVEN. Der Zauberwürfel-Roboter. Paul Giese. Schule: Wilhelm-Raabe-Schule

Übung Grundlagen der Programmierung. Übung 03: Schleifen. Testplan Testergebnisse

A.u.S. Spielgeräte GmbH A-1210 Wien Scheydgasse 48 Tel.+43-(0) Fax. +43-(0)

Anleitung zur Nutzung des SharePort Utility

GeoPilot (Android) die App

Objektorientierte Programmierung

Robot Karol für Delphi

Installationsanleitung Barcode-Scanner des MEDI Baden- Württemberg e.v.

Adobe Photoshop. Lightroom 5 für Einsteiger Bilder verwalten und entwickeln. Sam Jost

MO1 <logo otra empresa> MO1Sync Installationshandbuch MO1. MO1Sync Installationshandbuch -1-

Studieren- Erklärungen und Tipps

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Pilot Drivers Package. Handbuch

Mediumwechsel - VR-NetWorld Software

Checkliste für die Behebung des Problems, wenn der PC Garmin USB GPS-Geräte nicht erkennt.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Durchführung der Datenübernahme nach Reisekosten 2011

Installation und Einrichtung egk-lesegeräte

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Installation und Bedienung von vappx unter Android

Übungen zur Softwaretechnik

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

1 Dokumentenmanagement

Netzwerk einrichten unter Windows

iloq Privus Bedienungsanleitung Schließanlagen Programmierung Version 1 - Copyright 2013

Bei der Installation folgen Sie den Anweisungen des Installations- Assistenten.

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

Anleitung Typo3-Extension - Raumbuchungssystem

Benutzerhandbuch. Leitfaden zur Benutzung der Anwendung für sicheren Dateitransfer.

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

AUF LETZTER SEITE DIESER ANLEITUNG!!!

Microsoft Access 2013 Navigationsformular (Musterlösung)

CABito-APP Anleitung.

Anlegen eines DLRG Accounts

How to do? Projekte - Zeiterfassung

Einführung in PHP. (mit Aufgaben)

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

SEP 114. Design by Contract

Guide DynDNS und Portforwarding

Updatehinweise für die Version forma 5.5.5

Version 0.3. Installation von MinGW und Eclipse CDT

WebCar Mobil Betriebssystem Windows Phone 7.5 Bedienungsanleitung kwse 2012, Albershausen Im Morgen 67

GSM: Airgap Update. Inhalt. Einleitung

Installation und Einrichtung egk-lesegeräte

1) Farbsteuergerät in der Nikobus-Software unter Modul zufügen hinzufügen.

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Was meinen die Leute eigentlich mit: Grexit?

Einen Wiederherstellungspunktes erstellen & Rechner mit Hilfe eines Wiederherstellungspunktes zu einem früheren Zeitpunkt wieder herstellen

.NET Code schützen. Projekt.NET. Version 1.0

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Einrichtung eines Zugangs mit einer HBCI-Chipkarte bei der Commerzbank

EasyWk DAS Schwimmwettkampfprogramm

Installation und Einrichtung egk-lesegeräte

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Eigenes Projekt Ideen

TTS - TinyTimeSystem. Unterrichtsprojekt BIBI

Dokumentation für das Spiel Pong

Installation und Inbetriebnahme von SolidWorks

Karten-Freischaltung mit dem UNLOCK MANAGER

Windows 8. Der Task-Manager. Dieses Dokument kann frei verwendet werden. Keine Lizenzen, kein Copyright. Do what you want with it.

Drucken aus der Anwendung

Information zur Durchführung von. Software-Updates

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

FuxMedia Programm im Netzwerk einrichten am Beispiel von Windows 7

Hochschulrechenzentrum

Manuelle Konfiguration einer VPN Verbindung. mit Microsoft Windows 7

2.1 Erstellung einer Gutschrift über den vollen Rechnungsbetrag

Jederzeit Ordnung halten

Speicher in der Cloud

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Einspielanleitung für das Update DdD Cowis backoffice DdD Cowis pos

Installationsleitfaden zum Fakturierungsprogramm

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

GS-Programme 2015 Allgemeines Zentralupdate

Datensicherung. Beschreibung der Datensicherung

Benutzerhandbuch MedHQ-App

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Einrichten der Outlook-Synchronisation

Die Erstellung eigener Strukturprofile

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Einführung in die Programmierung

Installation OMNIKEY 3121 USB

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Elexis-BlueEvidence-Connector

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Transkript:

Hochschule Wismar Fakultät für Wirtschaftswissenschaften University of Technology, Business and Design Studiengang: Wirtschaftsinformatik (Bachelor) Wahlpflichtmodul Wintersemester 2011/2012: Programmiertechniken Mobile Agenten Prof. Dr. Uwe Lämmel Eingereicht am: 12.01.2012 Eingereicht von: Kristin Lasner und Carsten Frömming 1

Inhaltsverzeichnis 1. Projektbeschreibung... 4 1.1 Einführung... 4 1.2 Aufgaben... 4 2. Wesen des NXT... 5 2.1 Aufbau NXT... 5 2.2 Eingesetzte Software... 7 3. Projektaufgaben... 8 3.1 Einer schwarzen Linie folgen... 8 3.2 Fangen und Weglaufen... 10 3.2.1 Spielfeld... 10 3.2.2 Ermittlung eines Gewinners... 10 3.2.3 Eingesetzte Hard- und Software... 10 3.2.4 Ausarbeitung Fangen... 11 4. Fazit... 13 5. Quellen... 14 2

Abbildungsverzeichnis Abbildung 1: Bausatz NXT... 4 Abbildung 2: NXT Roboter Dahl... 5 Abbildung 3: NXT (Bild: http://lejos.sourceforge.net/)... 6 Abbildung 4: Parcours Einer schwarzen Linie folgen... 8 Abbildung 5 BattleCam-Software Oberfläche... 11 3

1. Projektbeschreibung 1.1 Einführung Im Rahmen des Wahlpflichtmodules Programmierkonzepte an der Hochschule Wismar galt es im Wintersemester 2011/2012 die zuvor erlernten Programmierkenntnisse der Sprache JAVA zu vertiefen. Hierfür bildeten sich unter der Leitung von Prof. Dr. Uwe Lämmel 4 Teams, welche jeweils mit einem Bausatz eines NXT Roboters ausgestattet wurden. Abbildung 1: Bausatz NXT Gemäß Bauanleitung setzten die Teams ihren Roboter zusammen und begannen in den darauffolgenden Wochen mit der eigenständigen Arbeit und der Bewältigung der Aufgaben. 1.2 Aufgaben Die Projektarbeit unterteilt sich in 2 Teilaufgaben. In der ersten Teilaufgabe, Einer schwarzen Linie folgen, gilt es sich vertraut zu machen im Umgang mit dem NXT und den zur Verfügung stehenden vordefinierten Klassen. In einer zweiten Teilaufgabe steht dann das übersichtliche Programmieren an vorderster Stelle. Unter dem Einsatz von Behavior, Arbitrator sowie Threads soll ein Programm entwickelt werden, welches einen anderen NXT auf einem festgelegten Spielfeld fängt (siehe Punkt 3.2). Die zuvor erworbenen Kenntnisse aus der Teilaufgabe Einer schwarzen Linie folgen sollen bei dieser Aufgabe vertieft werden. 4

2. Wesen des NXT Bei dem NXT handelt es sich um ein Produkt aus der Serie MINDSTORMS des Spielwarenherstellers Lego. Ein NXT kann mit Hilfe vieler verschiedener Programmiersprachen programmiert werden und ermöglicht so einen greifbaren Lernansatz für den Umgang mit Programmiersprachen. Aus diesem Grund findet der NXT häufig Anwendung in Lehreinrichtungen wie Schulen und Universitäten. Der NXT in seiner derzeitigen Form ist seit dem Jahr 2006 in Deutschland erhältlich. Zu seinen Vorgängern zählt unter anderem der RCX. Bei dem NXT handelt es sich folglich um eine Weiterentwicklung des RCX. 1 Abbildung 2: NXT Roboter Dahl 2.1 Aufbau NXT Das Innere des NXT bilden die hier aufgeführten Bestandteile: 32-Bit-ARM-Prozessor 256 KB Flash-Speicher 64 KB RAM 8-Bit-AVR-Koprozessor 4KB Flash-Speicher 512 Byte RAM 1 http://de.wikipedia.org/wiki/nxt 5

Der physische Aufbau des NXT beinhaltet nur wenige Punkte. Der NXT verfügt an der Oberseite über drei Motoreneingänge und eine USB-Schnittstelle. Diese Schnittstelle dient der Übertragung von Inhalten von einem externen Gerät auf den NXT. Des Weiteren sind an der Unterseite vier Sensoreneingänge vorhanden, an denen die verschiedenartigen Sensoren des NXT angeschlossen werden können. Auf der Vorderseite sind neben einem 4 Zeilen LCD-Display noch vier Knöpfe zur Bedienung des Gerätes zu finden. Diese unterteilen sich in zwei Pfeiltasten sowie zwei Tasten zum Bestätigen und Abbrechen von Anwendungen und Programmen des NXT. Abbildung 3: NXT (Bild: http://lejos.sourceforge.net/) Der NXT kann mit einem Akku oder aber sechs sogenannten A6-Batterien betrieben werden. Das hierfür vorgesehene Fach befindet sich auf der Rückseite des NXT. Die Kommunikation mit externen Geräten kann entweder via USB (Schnittstelle an der Oberseite) oder aber der eingebauten Bluetooth-Schnittstelle geschehen. Ein eingebauter Lautsprecher ermöglicht es zusätzlich monotone Töne abspielen zu lassen. 6

2.2 Eingesetzte Software Zum Arbeiten mit dem NXT werden verschiedene Softwareprodukte benötigt. Jeder NXT benötigt zum verarbeiten der aufgespielten Programme eine Firmware. Diese Firmware ist kostenfrei unter http://lejos.sourceforge.net/ erhältlich. Hier wird die Version 0.9 der Firmware verwendet. Die Erstellung der Quelltexte erfolgt mit dem Programm Eclipse Version 3.7.1. Die Kompilierung der Quelltexte erfordert, dass auf dem Rechner mit dem die Quelltexte erstellt werden, der Java SE Development Kit (hier in der Version 1.7) sowie die Lejos (LEGO Java Operating System) NXJ Software installiert ist. Für die zweite Teilaufgabe Fangen und Weglaufen sind für den Austausch der Koordinaten der Roboter eine BattleCam-Software sowie eine Webcam zusätzlich notwendig. Diese sind auf einem Arbeitsplatz-Rechner installiert und werden durch den Projektleiter, Prof. Dr. Uwe Lämmel, zur Verfügung gestellt. 7

3. Projektaufgaben Wie bereits unter Punkt 1.2 beschrieben, teilt sich die Projektarbeit in zwei Teilaufgaben auf. In einer ersten Aufgabe Einer schwarzen Linie folgen geht es hauptsächlich darum erste Eindrücke und Erfahrungen im Umgang mit dem NXT zu gewinnen (siehe Punkt 3.1). Im zweiten Abschnitt steht dann die Programmierung eines umfangreicheren Quellcode zur Vertiefung dieser Kenntnisse im Mittelpunkt (siehe Punkt 3.2). 3.1 Einer schwarzen Linie folgen In der ersten Teilaufgabe soll der Roboter einer schwarzen Linie folgen. Diese Linie beinhaltet diverse kritisch Stellen, wo sich herausstellen soll, ob der programmierte Quellcode flexibel genug ist diese zu bewältigen. Mit Hilfe eines Lichtsensors, welcher an der Front des NXT befestigt ist, verfolgt der NXT die schwarze Linie und absolviert somit den Parcours. Der Lichtsensor reagiert dabei auf farbliche Veränderungen des Untergrundes. Es wird dabei die Strategie verfolgt, dass der Roboter seine Fahrt stoppen soll, wenn der angebrachte Lichtsensor keine schwarze Linie finden kann. Dies geschieht bei Kurven und Krümmungen der Strecke. An dieser Stelle soll der Roboter sich zunächst eine gewisse Gradzahl nach links drehen und sich dann, wenn der Lichtsensor an dieser neuen Position ebenfalls keinen schwarzen Untergrund gefunden hat, sich doppelt so weit in die entgegengesetzte Richtung, sprich rechts, drehen. Dieser Vorgang wird so oft wie notwendig wiederholt. Findet der NXT an einer Stelle einen Farbwert, den er der Farbe schwarz zuordnen kann, setzt er sein Fahrt fort. Abbildung 4: Parcours Einer schwarzen Linie folgen 8

Hier ein kurzer Auszug aus dem Quelltext unseres Programms LinieFolgen: wert = licht.getlightvalue(); LCD.drawInt(wert, 0, 1); if(wert > schwarz) //Den aktuellen Farbwert einlesen //und auf der Variable 'wert' //speichern //Ausgabe des Wertes von 'wert' //auf dem Display //Wenn 'wert' größer als schwarz, //dann... { /*Hier beginnt die Methode wo der Roboter die verloren gegangene schwarze Linie durch drehen sucht*/ pilot.stop(); //Halte Roboter an while(!button.escape.ispressed() && licht.getlightvalue()> schwarz && //Solange der Sensor kein schwarz //erkennt und (winkel*dir*anz)<160) //der Rotatationswinkel < 160 { LCD.drawString("while", 3, 4); pilot.rotate(winkel*dir*anz); //drehe Roboter um 1. 15, 2. um //-30, 3. um 60, 4. //-120, //5. um 150 LCD.drawInt((winkel*dir*anz), 1, 2); dir = dir*(-1); //verändere die Richtung anz = anz+2; //Verdopple Rotationsradius }//while }//if Es handelt sich hier lediglich um die Methode zum finden der verloren gegangenen schwarzen Linie. 9

3.2 Fangen und Weglaufen Diese Aufgabe benötigt zwei Roboter gleichzeitig und lässt sie einen Wettkampf bestreiten. Bei der Aufgabe Fangen und Weglaufen handelt es sich um ein Spiel, bei welchem ein Roboter den Jäger und der zweite Roboter den Gejagten symbolisiert. Aus diesen Teilaufgaben soll eine ausgewählt und ein entsprechendes Programm zur Erfüllung entworfen werden. Unser Team entscheidet sich für die Programmierung des Jäger. 3.2.1 Spielfeld Der Wettkampf wird auf einer weißen Fläche bestritten. Diese weiße Fläche wird von einem konstant sieben Zentimeter breiten schwarzen Streifen umrahmt. Es befinden sich keinerlei sichtbare Muster auf dieser weißen Fläche. Die Fläche ist zudem einheitlich und verfügt über keine Anhebungen oder Hindernisse (siehe Abbildung 4). 3.2.2 Ermittlung eines Gewinners Das Ziel eines Wettkampfes ist es einen Gewinner zu ermitteln. In Vorgesprächen wurde unter den Projektgruppen und dem Projektleiter, Prof. Dr. Uwe Lämmel, festgelegt dass ein Fänger dann gewonnen hat, wenn er den Gejagten bewusst berührt oder in diesen hineinfährt. Auf der anderen Seite kann der Gejagte einen Sieg verbuchen, wenn er es schafft in einer vorher festgelegten Zeit von ein oder zwei Minuten dem Jäger aus dem Weg zu gehen und keine Berührung zwischen den beiden stattfindet. Ein Roboter disqualifiziert sich zudem automatisch, wenn er das Spielfeld verlässt oder aber seine Farbmarkierung verliert. Sein Gegner ist somit der Sieger. 3.2.3 Eingesetzte Hard- und Software Zur Bewältigung dieser Aufgabe steht zusätzlich eine Webcam zur Verfügung. Mit Hilfe dieser Webcam und eines Arbeitsplatzrechners wird die BattleCam-Software, erstellt durch Andreas Hauschild, ausgeführt. Auf diesem Wege werden die Koordinaten der beteiligten Roboter ermittelt und anschließend via Bluetooth ausgetauscht. 10

Abbildung 5 BattleCam-Software Oberfläche 3.2.4 Ausarbeitung Fangen Die Vorgabe lautete einen Quelltext zu entwickeln, welcher auf den Klassen Arbitrator und Behavior und deren Methoden und Eigenschaften zurückgreift. Mit Hilfe dieser Klassen lassen sich übersichtliche Programme erstellen. In einer Arbitrator-Klasse werden Objekte von anderen Klassen erzeugt. Es entstehen Behaviors. Der Arbitrator ist für die Verwaltung der Behaviors zuständig. public class Arbitrator { Behavior b1 = new Exit(); Behavior b2 = new Ausrichten(); Behavior b3 = new Vorwaerts(); Behavior b4 = new SchwarzeLinie(); Behavior [] array = {b2, b4, b1, b0}; Arbitrator arby = new Arbitrator(array); arby.start(); }//Arbitrator //erzeugen neuer Objekte // und die Ablage dieser // Objekte in einem Array Hier werden die einzelnen Verhaltensmuster generiert, welche der Roboter im Verlauf eines Spieles annehmen kann und anschließend in einem Array abgelegt. Am Ende wird der Arbitrator durch die Methode start() gestartet. Die Indexzahlen und die Reihenfolge bei der Ablage in einem Array sind dabei nicht unwesentlich. Je höher der index, desto höher ist auch die Priorität des Behaviors. Die Behavior-Klassen haben den folgenden Aufbau. 11

Beispiel Vorwaerts: public class Ausrichten implements Behavior { public static Roboter roboterausrichten; public Ausrichten(Roboter ausrichten){ roboterausrichten = ausrichten; }//public public boolean takecontrol() { //Lies die Koordinaten beider Roboter ein roboterausrichten.xkoordahl = roboterausrichten.rt.getx1(); roboterausrichten.ykoordahl = roboterausrichten.rt.gety1(); roboterausrichten.xkoorgegner = roboterausrichten.rt.getx2(); roboterausrichten.ykoorgegner = roboterausrichten.rt.gety2(); //Wenn die Methode ausrichtennotwendig()true() liefert oder der //Zustand des roboters = 1, dann führ action() aus return (roboterausrichten.ausrichtennotwendig() roboterausrichten.getzustand() == 1); }//takecontrol public void suppress() { //BESCHREIBUNG }//suppress public void action() { LCD.drawString("action ausrichten", 0, 2); roboterausrichten.ausrichten(); //Führe Methode ausrichten() //aus roboterausrichten.setzustand(2); //Setze den Zustand auf 2 }//action }//class Ausrichten Frei übersetzt handelt es sich bei einem Behavior um ein Verhalten. An dieser Stelle also ein Verhaltensmuster, wie sich der Roboter in einer bestimmten Situation verhält. Diese Situation wird in der takecontrol() Anweisung ermittelt. Diese Methode liefert einen Wahrheitswert zurück, der konsequenterweise nur zwei mögliche Rückgabewerte haben kann: true oder false. Ergibt die Prüfung in der oben genannten takecontrol() Anweisung true, so wird der Programmteil ausgeführt, welcher in der action() Anweisung steht. Die Strategie, welche hier zur Anwendung kommt, beschränkt sich darauf, dass der Jäger eine gewisse Zeit geradeaus fährt und nach dieser Zeit kurz hält, um sich gegebenenfalls neu auszurichten. Hier sieht die Gruppe noch starkes Optimierungspotential. 12

4. Fazit Die Aufgaben fordern von Studenten, die lediglich über Grundwissen in der Programmiersprache Java verfügen, ein intensives Selbststudium. Die erste Teilaufgabe Einer schwarzen Linie folgen bildet eine ideale Aufgabe zum Kennenlernen des NXT sowie der durch Lejos bereitgestellten Klassen. Nach erfolgreicher Installation und Einrichtung von Eclipse bzw. Lejos ist die Einarbeitungszeit gering und die Aufgabe kann zügig bearbeitet werden. Die Schwierigkeit besteht darin den geeigneten Algorithmus zum Finden der schwarzen Linie zu entwickeln. Die in der zweiten Teilaufgabe zu verwendeten Klassen Behavior, Arbitrator sowie Threads stellen allerdings höhere Ansprüche an die Programmierkenntnisse der Studenten. Die Recherche der zu verwendenden Klassen und ihre korrekte Umsetzung nehmen hier einen großen Zeitraum in Anspruch. Ebenfalls wird auf die Entwicklung eines Algorithmus zum Fangen des Gegners besonderes Augenmerk gelegt. Zurückblickend können, durch die praktische Anwendung der erstellten Programme am NXT und die selbstständige Bewältigung auftretender Probleme, die Kenntnisse hinsichtlich der Programmierung mit Java vertieft und ein praktischer Bezug hergestellt werden. 13

5. Quellen http://mindstorms.lego.com/en-us/default.aspx http://de.wikipedia.org/wiki/nxt http://www.roberta-home.de/de/was-bietet-roberta/roberta-reihe/roberta-thema-hardware-deslego-mindstorms-nxt-systems http://lejos.sourceforge.net/ http://www.wi.hs-wismar.de/~laemmel/lehre/lego/lego.html http://www.nxt-in-der-schule.de 14