Mittwoch, 20. Juni 2012

IGD / Studium - Android Home Control

Im Sommer 2011 entwickelte ich im Rahmen eines Studienpraktikums für ein Ambient Intelligence Project am Fraunhofer IGD eine graphische Software-Infrastruktur mit welcher man eine intelligente Wohnungumgebung bequem vom Sofa aus bedienen kann: Das Android Home Control (AHC).

Die Software besteht aus drei wesentlichen Komponenten:
  1. Einer Android Applikation inkl. 3D Darstellung des zu steuernden Raumes
  2. Einer Server Komponente zur Anbindung an eine bestehende Software-Plattform
  3. Einem Kommunikationsprotokoll zwischen der Android App und Server
Das nicht ganz ernst
gemeinte App Logo.

Ein paar Hintergrundinfos

Das Fraunhofer-Institut für Graphische Datenverarbeitung in Darmstadt unterhält eine Installation einer Wohnumgebung zum Forschen an und zum Testen von intelligenten Systemen, welche den Alltag eines darin wohnenden Menschen unterstützen und bereichern sollen. Diese Wohnungsimulation wird von uns "Das Lab" genannt.

Das Lab dient als Demo-Szenario für die AHC Android App und wird mittels eines vereinfachten 3D Modells durch die App dargestellt. Für die Darstellung dienen Daten, welche aus der universAAL Softwareplattform ausgelesen werden: Die Abteilung Interactive Multimedia Appliances in der ich seit 2008 als Wissenschaftliche-Hilfskraft tätig bin entwickelt die o.g. Softwareplattform universAALDie Plattform zu beschreiben würde an dieser Stelle den Rahmen sprengen. 
Darstellung des 3D Modells des "Labs"
am Fraunhofer IGD in Darmstadt.
In Kürze zusammengefasst und für das Verständnis der Funktionsweise des AHC wichtig ist, dass diese Plattform eine Abstraktion und Komposition von Sensoren unterschiedlichster Geräte, Protokolle und Hersteller bereitstellt. Die von den Sensoren gelieferten Daten werden in einem situationsabhängigen Kontext verarbeitet und können z.B. dazu genutzt werden sich proaktiv auf die Bedürfnisse eines Benutzers einzustellen. Das bedeutet, dass die Umgebung unter Anderem Verhaltensmuster erkennen und darauf reagieren kann, wie z.B. wenn man sich abends auf das Sofa legt, so wird automatisch das Licht gedämmt. Andererseits kann der Benutzer seine Umgebung und die darin befindlichen Geräte steuern ohne deren Repertoire an Funktionen genau zu kennen. Zum Beispiel kann der Benutzer frei in den Raum sagen "Ich möchte Musik hören", doch im Wohnzimmer ist nirgends eine HiFi-Anlage installiert: Die Plattform kennt jedoch die Möglichkeiten des vorhandenen Fernsehers und weiß, dass dieser ebenso in der Lage ist Musik abzuspielen. Somit schaltet sie diesen ein und spielt auf diesem die gewünschte Musik ab. Die Kenntnis der Plattform über das physikalische Vorhandensein des Fernsehers, sowie seines Funktionsumfangs basiert auf einer internen ontologischen Darstellung der Umgebung, in welcher universAAL eingesetzt wird.


Bezug zu meiner Arbeit

Diese Ontologie wird von der AHC dazu genutzt geometrische Informationen über die Welt - hier das Lab - sowie den darin befindlichen Geräten  zu erhalten. Die Schnittstelle zwischen der Android App und der universAAL Plattform bildet der AHC Server. Dieser läuft, vereinfacht gesagt, auf dem Rechner, welcher die Plattform ausführt. Er übersetzt die Daten, welche von der AHC Android App kommen - welche wiederum mittels des von mir entwickelten Kommunikationsprotokolls übertragen werden - in die Kontext-Ereignisse, welche von universAAL verstanden werden. Gleichzeitig erfragt er Fakten der Umgebungsontologie und sendet diese an die AHC Android App. 

Ändert sich somit die Ontologie - Geräte kommen hinzu / werden entfernt, ändern ihre Position, werden ein- / ausgeschaltet, etc. - reflektiert sich dieser Sachverhalt auf die 3D Darstellung der AHC Android App. 

UniversAALs ontologische Darstellung gruppiert Geräte, Inventar und die Umgebung selbst durch die Angabe von Typen. Jeder Typ (Fernseher, HiFi Anlage, Licht etc.) wird durch eine Type-URI repräsentiert. Das jeweilige Gerät hingegen wird durch eine eindeutige Device-URI registriert. 
Nun werden beim Aufbereiten der Ontologie für die 3D Darstellung in der Android App eben diese URIs ausgewertet. Die AHC Android App hält 3D Modelle verschiedener Geräte, welche im Lab installiert sind, als darstellbare Ressourcen bereit. Diese Nachbildungen habe ich während anderer Arbeiten am Fraunhofer IGD mit 3ds max modelliert (siehe z.B. IGD - Meine Arbeiten Teil 1 -- Nursing Service ). Die AHC Android App arbeitet beim Aufbereiten zuerst die Device-URIs ab: Ist einer Device-URI ein 3D Modell zugeordnet so wird dieses verwendet und damit eine möglichst exakte Nachbildung der reellen Szene realisiert. Ist kein 3D Modell für eine Device-URI vorhanden, so wird die Type-URI zu Rate gezogen und ein Platzhalter-Objekt mit den entsprechenden Dimensionen des reellen Gerätes gesetzt. Dieses Dummy Objekt wird mit einer Textur ausgestattet, welches es dem Benutzer ermöglicht trotzdem zu erkennen, um welche Art von Gerät es sich handelt. Scheitert der Vergleich beider URI-Typen, so wird ein allgemeiner Platzhalter verwendet - z.B. auch für die Darstellung nicht benutzbarer Geräte (Die Darstellung dieser Platzhalter ist über ein Menü deaktivierbar und man schafft damit Übersicht in der Szene). Damit wurde eine breite Kompatibilität geschaffen, welche in der Kürze der Entwicklungszeit es trotz diverser Eventualitäten möglich macht, auch unbekannte Geräte zu steuern.
Die Wohnzimmerlampe stellt in diesem
Szenario Ein- / Aus-Funktionen zur
Verfügung.

Das Android Home Control erweitert die kontextsensitive und proaktive Interaktion mit der Wohnumgebung, welche die universAAL Plattform liefert, durch eine weitere Möglichkeit: Die direkte Steuerung.
Wie bereits erwähnt kennt die universAAL Plattform die einzelnen installierten Geräte der Wohnumgebung, sowie deren Funktionsmöglichkeiten. Wählt der Benutzer ein reaktives Gerät in der virtuellen 3D Darstellung aus, so fordert die Android App vom AHC-Server eine Dienstliste für das entsprechende Gerät via Geräte-ID an -  den oben erwähnten Device-URIs. 
Der AHC-Server erfragt nun wiederum bei der universAAL Plattform, welche Funktionen sie für genau dieses Gerät kennt und stellt eine Dienstliste zusammen. Jeder Eintrag in der Dienstliste besteht aus einem Funktionsnamen (Fernseher an, Fernseher aus, leiser, lauter, etc.) und den entsprechenden Datenstrukturen (z.B. boolschen Werten für ein / aus,  Zahlenwerten für die gewünschte Lautstärke, etc.). Die Liste wird an die AHC Android App übertragen und dort angezeigt. Wählt der Benutzer nun eine der möglichen Funktionen aus, so wird ein Aktionskommando an den AHC-Server gesendet und an die universAAL Plattform übersetzt. Nun erfolgt noch eine Rückmeldung vom AHC-Server an die App: Ist diese eine Fehlermeldung, so wird das dem Benutzer angezeigt. 

Enthält sie jedoch eine Erfolgsmeldung, geschehen zweierlei Dinge.
  1. Der aktuelle Status des Gerätes wird in der 3D Umgebung direkt wiedergegeben (z.B. Glühbirnensymbol leuchtet auf).
  2. In der reellen Umgebung führt das entsprechende Gerät die Aktion aus (z.B. Licht geht an).
Der Benutzer erhält in der weitesten Zoomstufe einen Überblick über die gesamte Wohnumgebung und ist somit in der Lage auch Geräte zu steuern, welche sich nicht in dem Raum befinden, in welchem sich der Benutzer aktuell selbst befindet. Die direkte Reflexion des Weltzustandes auf die 3D Darstellung informiert den Benutzer über Erfolg, oder Misserfolg seiner Aktion. Dies ermöglicht zeitgleich auch die Überwachung von Geräten, welche sich nicht im direkten Sichtfeld des Benutzers befinden.

Steuern lässt sich die AHC Android App bequem über den Touchscreen. Fingerbewegungen nach links und rechts erlauben das drehen und neigen der Kamera um einen festen Fokuspunkt, ohne dabei die jeweilige Seitenansicht verlassen zu können. Das soll vor allem auch nicht so versierten Benutzern die Navigation und Orientierung erleichtern. Möchte der Nutzer einen 90° Schwenk zu einer anderen Seitenansicht durchführen, so stehen ihm entsprechende Tasten in der grafischen Oberfläche zur Verfügung. Eine Windrose gibt des Weiteren Rückmeldung über die aktuelle Position der Kamera im Raum. Die Zoomstufe kann mittels der populären "Pinch-To-Zoom" Geste geändert werden. Reset Tasten für die Drehung, sowie den Zoom befördern die Kamera zu ihrem jeweiligen Ausgangspunkt zurück.

Da es sich bei dem Projekt um ein Ein-Mann-Praktikum während des Sommersemester gehandelt hat, für welches ich ca. vier Monate Zeit hatte (neben anderen Vorlesungen und privaten Verpflichtungen), ist das AHC Projekt rein als Demonstrator bzw. "Proof of concept" umgesetzt worden und damit natürlich noch stark entwicklungsfähig. Stolz macht mich, dass die gesamte Android Home Control Infrastruktur sehr robust und zuverlässig arbeitet, so dass sie bereits für weitere Praktikas anderer Studenten genutzt wurde und in meinen Notenspiegel mit einer 1.0 als Note einfloss.

Zusammengefasst

Menü zur Client-Server Kommunikation.
Der Fokus lag auf der Entwicklung einer grundlegenden Plattform zur direkten Steuerung einer Wohnumgebung von einem Tablet aus. In die Entwicklung flossen die folgenden Schritte ein:
  • Anbindung einer 3D EngineEs wurde die jpct-ae open source Engine genutzt.
  • Anbindung des Android-Tablets (genutzt wurde das Samsung Galaxy Tab mit Android 2.2 Froyo) an die vorhandene universAAL PlattformDies geschieht mittels einer TCP/IP Wireless-LAN Verbindung über ein eigens entwickeltes Kommunikationsprotokoll zwischen dem AHC Server und der AHC App. Dieses Protokoll sendet ein Containertoken zwischen Klient und Server, welcher alle serialisierbaren Objekte enthalten kann, plus einiger obligatorischen Metadaten. Somit ist das Protokoll für weitere Projekte gut erweiterbar. Die kabellose Verbindung zum AHC Server ermöglicht fast unbeschränkte Bewegungsfreiheit im zu steuernden Raum.
  • Entwicklung eines Formates zur Übermittlung der Räum- und Geräte-DarstellungDie universAAL Plattform nutzt eine komplexe Ontologie, deren Daten, welche für die Darstellung der Umgebung essentiell sind, in ein XML Format ausgelesen werden. Dazu wird der X3D Standard genutzt, der unter anderem vom InstantPlayer direkt gelesen und angezeigt werden kann. Die AHC Android App wurde mit einem XML / X3D Parser ausgestattet (basierend auf der Simple Api for XML), welcher die vom AHC Server gesendeten X3D Daten einlesen und für die Darstellung mittels der jpct-ae Engine aufbereiten kann.
  • Entwicklung einer intuitiven SteuerungDer Benutzer kann sich um einen festen Fokuspunkt mittels Touch-Gesten orientieren, indem er die Kamera schwenkt und kippt und mit einer Zweifinger-Geste in die Szene heranzoomt. Dies erleichtert das Selektieren teils, oder gänzlich verdeckter Geräte. Die Auswahl erfolgt mittels Berührung.
  • Entwicklung einer GUI aus den bereitgestellten GerätefunktionsdatenBei jeder Geräteauswahl wird das Menü neu aufgebaut, was sicherstellt, dass auch Funktionsumfangsänderungen möglichst zeitnah für die AHC App aktualisiert werden können.

Die Android Home Control App konnte auch auf der CeBit 2012 am Fraunhofer IGD Stand der Abteilung Interactive Multimedia Appliances ausprobiert werden und fand auch Erwähnung in der SWR Berichterstattung zur Messe.



Ein großer Dank von meiner Seite aus geht an meine beiden Betreuer Andreas Braun und Alexander Marinc, welche mich mit konstruktiver Kritik und erschöpfenden Wunschvorstellungen zu durchprogrammierten Nächten getrieben, mich aber auch an den richtigen Stellen gebremst haben! ;-)


Keine Kommentare:

Kommentar veröffentlichen