de

Welcome Gast


  • Login
Full load

Summer Term 2016
Projekt Entwicklung verteilter kontextbasierter Anwendungen
Tutorials
Neben einer umfangreichen Zusammenstellung von Links und eBooks (siehe Literatur-Tab) haben wir für die Veranstaltung verschiedene Tutorials erstellt. Sie finden Tutorials u.a. zu folgenden Themen
  • Einrichten der Entwicklungsumgebung
  • Einstieg in die Programmierung
  • Versionsverwaltung
  • Client-Server-Anwendungen
  • Datenbankzugriff
... in unserem Tutorial-Wiki unter

https://vsisprojects.informatik.uni-hamburg.de/tutorials/

Software
Die in dieser Veranstaltung benötigten Software-Pakete sind teils relativ groß. Um einen schnellen Download zu ermöglichen, halten wir die größten Pakete in aktueller Version auch auf unserem Server vor:  
Gerätschaften
Die im Rahmen des Praktikums bzw. Projekts zu entwickelnden Anwendungssysteme können eine Vielzahl unterschiedlicher Geräte einbinden. Hier finden Sie eine Übersicht über alle bei VSIS verfügbaren Geräte mit einer kleinen Beschreibung sowie ggf. Hinweise auf besondere Herausforderungen, die auf Sie bei der Programmierung warten.

iRobot Roomba 650 + RooWifi

Der iRobot Roomba 650 ist ein Staubsaugerroboter, welcher über die RooWifi-Schnittstelle per WLAN gesteuert werden kann. Auf diese Weise lässt sich der Roomba fernsteuern und die Sensordaten auslesen.

Siehe auch:

Besondere Herausforderungen

  • Es gibt keinen Emulator/Simulator. Es muss immer mit dem richtigen Roomba getestet werden
  • Das Fernsteuern und Auslesen der Sensordaten bringt eine gewisse Latenz (bis zu 1 Sekunde ?) mit sich. Die Echtzeitsteuerung wird dadurch erheblich erschwert.
  • Die richtige Welt reagiert oft nicht so, wie sich das ein Java-Programm vorstellt.

Philips Hue - intelligente Glühbirnen

Die intelligenten Glühbirnen der Hue-Serie lassen sich über eine Bridge im lokalen Netzwerk (und ggf. auch über das Internet) steuern. Die Bridge bietet ein REST-Interface, welches alle Funktionen der Glühbirnen offen legt. So ist es z.B. möglich die Lampen ein- und auszuschalten, fast stufenlos zu dimmen und in nahezu beliebige Farben aus dem RGB-Farbspektrum leuchten zu lassen.

Siehe auch:

Besondere Herausforderungen

  • Der Umgang mit den Hues gestaltet sich recht einfach. Im Wesentlichen Bedarf es der Netzwerk-Kommunikation und der Verarbeitung JSON-formatierter Nachrichten.

Flower Power - Pflanzensensor

Der Flower-Power-Pflanzensensor kann die Umweltbedingungen einer Pflanze wahrnehmen. Hierzu verfügt er über Sensoren zum Messen von Temperatur, Bodenfeuchtigkeit, Lichtintensität und Düngergehalt des Bodens. Die Sensoren können über Bluetooth LE abgefragt werden. Hierfür existieren ein nodeJS-Beispiel und eine eigens entwickelte Android-Bibliothek (siehe unten). Außerdem bietet der Hersteller Parrot Zugriff auf eine Datenbank mit tausenden von Pflanzeninformationen über eine REST-Schnittstelle.

Siehe auch:

Besondere Herausforderungen

  • Der Zugriff von Android aus auf die Sensoren über Bluetooth LE ist nicht trivial. Die bereitgestellte Bibliothek vereinfacht den Zugriff, ist aber noch im BETA-Stadium.
  • Der Zugriff von einem Windows-Computer auf die Sensoren funktioniert - wenn überhaupt - dann erst ab Windows 8. Für Linux benötigt man einen Bluetooth LE fähigen Bluetooth-Stack. Hier ist ein wenig Bastelarbeit notwendig.
  • Der Zugriff auf die JSON-formatierten Pflanzeninformationen über die REST-Schnittstelle des Herstellers sollte recht einfach sein.

Sensordrone

Die Sensordrone ist ein Sensorsystem, welches eine Vielzahl von Sensoren beherbergt. Hierzu gehören: Temperatursensor, Barometer, ein Sensor zum Messen der Helligkeit und Farbintensität (RGB), Gassensoren für oxidierende sowie reduzierende Gase (z.B. Alkohol, Kohlenmonoxid, Propan, Erdgas, Ozon, Chlor, Stickstoffdioxid), ein CO_2-Sensor, ein Infrarotsensor zum berührungslosen Messen der Temperatur eines Objekts und ein kapazitiver Näherungsschalter mit dem sich z.B. Leitungen oder Balken in der Wand finden lassen. Der Zugriff auf die Sensoren erfolgt über Bluetooth LE.

Siehe auch:

Besondere Herausforderungen

  • Die Annahme, unterschiedliche Gase identifizieren zu können, trügt. Die Gassensoren (außer CO_2) zeigen lediglich das Vorhandensein eines Gases an, um welches Gas es sich handelt, ist nicht ersichtlich. Außerdem sind die Sensoren nicht sonderlich genau, eignen sich also nur bedingt z.B. als Promilletester.
  • Der Zugriff von Android aus auf die Sensoren über Bluetooth LE ist nicht trivial. Es existieren eine Reihe von Beispielanwendungen seitens des Herstellers, in die man sich jedoch zunächst "einlesen" muss.
  • Der Zugriff von einem Windows-Computer auf die Sensoren funktioniert - wenn überhaupt - dann erst ab Windows 8. Für Linux benötigt man einen Bluetooth LE fähigen Bluetooth-Stack. Hier ist ein wenig Bastelarbeit notwendig.
  • Der Hersteller scheint die Produktion und Entwicklung der Sensordrone eingestellt zu haben. Entsprechend ist zu vermuten, dass der Support etwas dürftig ist.

SUNSpot - Sensoren

Ein SUNSpot-Sensor ist eine kleine Sensorplattform, welche einen Helligkeits- und Farbsensor, einen Temperatursensor, einen Beschleunigungssensor sowie zwei Druckknöpfe und 8 Farb-LEDs besitzt. Zusätzlich finden sich auf der Plattform eine 180 MHz CPU, 512 KB RAM und 4 MB Flash-Speicher sowie ein proprietäres Funkmodul.

Auf der Plattform lassen sich eigene Java ME-Programme ausführen. Auf diese Weise lassen sich die Sensoren abfragen und die LEDs ansteuern. Die Kommunikation über das Funkmodul erfolgt über normale Java Sockets.

Wir besitzen insgesamt drei SUNSpots, von denen zwei über eine eigene Batterie verfügen. Der dritte wird per USB an einen Host-Computer angeschlossen. Bei Inbetriebnahme der SunSPOTs bilden diese ein ad-hoc Multihop-Netzwerk und können untereinander sowie mit normalen Java-Programmen auf dem Host-Computer kommunizieren.

Siehe auch:

Besondere Herausforderungen

  • Die Batterien unserer SunSPOTs halten nicht mehr so lange.
  • Es existieren Entwicklungswerkzeuge, die beim Deployment und beim Debuggen der eigenen Java-Programme helfen. Auch ist es möglich, virtuelle SunSPOTs zu erzeugen.
  • Java ME ist eine Teilmenge des Standard-Javas, d.h. nicht alle Funktionen, die man zu benutzen gewohnt ist, stehen zur Verfügung.
  • Die Firma Sun (bzw. Oracle) hat den Support eingestellt. Es existieren aber alternative Foren, in denen man Hilfe, Ideen und auch Bibliotheken bekommen kann.

Scosche Rhythm+ Herzfrequenzmessgerät

Dieser Herzfrequenzmesser lässt sich sowohl am Handgelenk als auch am Unter- und Oberarm tragen. Er misst die Herzfrequenz mittels optischer Sensoren und überträgt die Messung per Bluetooth LE an ein anderes Gerät (z.B. ein Smartphone).

Siehe auch:

Besondere Herausforderungen

  • Der Zugriff von Android aus auf den Sensor über Bluetooth LE ist nicht trivial.
  • Der Zugriff von einem Windows-Computer auf die Sensoren funktioniert - wenn überhaupt - dann erst ab Windows 8. Für Linux benötigt man einen Bluetooth LE fähigen Bluetooth-Stack. Hier ist ein wenig Bastelarbeit notwendig.

Lego Mindstorms

Lego-Mindstorm-Roboter basieren auf Bausteinen der Lego-Technic-Serie, die zusammen mit einem "intelligenten" Baustein (sog. NXT) vielfältige Konstruktionen (Laufende Roboter, Fahrzeuge, Fabrikelemente) erlauben. Der NXT besitzt eine 48 MHz-CPU, 64 KB RAM sowie 256 KM Flash-Speicher, zudem einen Bluetooth 2-Chip, einen USB-Port, einen (schlechten) kleinen Lautsprecher sowie eine 100 x 64 px Anzeigefläche. Ausserdem hat der NXT drei Motorausgänge, um Schrittmotoren anzuschließen, sowie vier Sensoreingänge, um z.B. Farbsensor, Ultraschallsensor oder Berührungssensor anzuschließen.

Wir haben 2 Mindstorm-Bausätze, auf denen eine leJOS-Firmware (siehe unten) läuft. So können per USB kleine Java-Programme (Java Micro Edition) auf den NXT gespielt und dort ausgeführt werden. Auf diese Weise lassen sich lokal Sensoren auslesen und Motoren ansteuern. Alternativ existiert ein eigens entwickeltes Framework, welches die Abfrage und Steuerung aus der Ferne über Bluetooth ermöglicht.

Siehe auch:

Besondere Herausforderungen

  • Java ME ist eine Teilmenge des Standard-Javas, d.h. nicht alle Funktionen, die man zu benutzen gewohnt ist, stehen zur Verfügung.
  • Das Framework zur Interaktion mit den Mindstorms über Bluetooth ist BETA.
  • Mindstorms bewegen sich in der realen Welt und dort verhält sich nicht alles so, wie man es in Programmen vorsieht. Insbesondere sind die Sensoren nicht ganz akkurat, die Schrittmotoren hingegen haben eine Genauigkeit von ca. 1°.
  • Es existiert kein Emulator, d.h. es muss immer mit dem Gerät getestet werden.

Muse Headband

Das Muse Headband ist ein mobiles EEG (Elektroenzephalograf) zum Messen der Gehirnaktivitäten. Es verwendet insgesamt 7 verschiedene Sensoren, um Aktivitäten in verschiedenen sog. Bändern (Alpha-, Beta-, Gamma-, Delta- und Theta-Band), die unterschiedlichen mentalen Zuständen (Schlaf, Entspannung, Konzentration etc.) entsprechen, aufzuzeichen. Ein Beschleunigungssensor misst zudem die Neigung des Kopfes und detektiert das Blinzeln der Augen. Alle Daten werden per Bluetooth LE an ein Smartphone übertragen.

Siehe auch:

Besondere Herausforderungen

  • Das Interpretieren der Gehirnaktivitäten ist nicht trivial. Jemandem beim Denken "zugucken" ist leider nicht möglich :-(
  • Es existiert ein SDK, welches die Entwicklung von Anwendungen wesentlich vereinfachen soll. Wir haben aber leider keinerlei Erfahrung damit.
  • Ein bisschen mathematisches Grundverständnis zur Analyse der Daten sollte vorhanden sein.
  • Es existiert kein Emulator, d.h. es muss immer mit dem Gerät getestet werden.

iBeacon

Der Markenname iBeacon ist ein 2013 von Apple Inc. eingeführter, proprietärer Standard für Navigation in geschlossenen Räumen, basierend auf Bluetooth Low Energy (BLE). Das Verfahren wird ab iOS 7 bzw. Android Version 4.3 unterstützt und kann somit ab dem iPhone 4S sowie aktuellen Android-Geräten genutzt werden.

Siehe auch:

Besondere Herausforderungen

Indoor-Navigation mit iBeacons ist nicht trivial, da:
  • Die Signalstärke stark fluktuiert
  • Die Frequenz variiert
  • Signale von Wänden reflektiert werden
  • Störsignale von anderen Geräten auftreten (WiFi, DECT)

DIJ Phantom 3 Advanced

Die Phantom 3 ist ein Quadrokopter, welcher über eine HD Front- und eine Bodenkamera, eine elektronische Flughilfe, mittels derer der Quadrokopter relativ einfach gesteuert werden kann, sowie eine Reihe von Sensoren (Gyroskop, Accelerometer, Druckfühler, Ultraschall) verfügt.

Die Kommunikation mit dem Quadrokopter, d.h. das Senden von Steuerungs- und Konfigurationsbefehlen sowie der Empfang von Sensordaten und dem Videostrom, erfolgt über ein Android/iOS-SDK des Herstellers.

Siehe auch:

Besondere Herausforderungen

  • Es gibt keinen Emulator/Simulator. Es muss immer mit dem richtigen Quadrokopter getestet werden
  • Der Akku des Quadrokopters hält ca. 20-30 Minuten.
  • Die richtige Welt reagiert oft nicht so, wie sich das ein Java-Programm vorstellt.

ARDrone 2

Die ARDrone 2 ist ein low-cost Quadrokopter, welcher über eine HD Front- und eine Bodenkamera, eine elektronische Flughilfe, mittels derer der Quadrokopter relativ einfach gesteuert werden kann, sowie eine Reihe einfacher Sensoren (Gyroskop, Accelerometer, Druckfühler, Ultraschall) verfügt.

Die Kommunikation mit dem Quadrokopter, d.h. das Senden von Steuerungs- und Konfigurationsbefehlen sowie der Empfang von Sensordaten und dem Videostrom, erfolgt über eine WLAN-Verbindung. Das YADrone-Rahmenwerk bietet Java-Programmierern eine high-level API zur Interaktion mit dem Quadrokopter.

Siehe auch:

Besondere Herausforderungen

  • Es gibt keinen Emulator/Simulator. Es muss immer mit dem richtigen Quadrokopter getestet werden
  • Die Akkus des Quadrokopter (wir haben 4 Stück) halten ca. 0.1 - 8 Minuten.
  • Der Quadrokopter ist bereits ein wenig angeschlagen und steht nicht mehr gänzlich stabil in der Luft
  • Die richtige Welt reagiert oft nicht so, wie sich das ein Java-Programm vorstellt.
  • Das YADrone-Rahmenwerk unterstützt kein Video unter Android