Internet der Dinge WS2015/Interdog

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche
Interdog logo.png

Inhaltsverzeichnis

Interdog

Lokalisierung eines Hundes in einem geschlossenen Raum

Ziel des Projektes ist ein Aufbau aus einem Sender, mehreren Sensoren und einem Server, mit dem die Position eines Hundes innerhalb eines Raums bestimmt werden kann. Die Positionsdaten sollen anschließend ausgewertet werden und in einem Web-Portal einzusehen sein. Hierfür sollen die Sensoren an definierten Stellen im Raum angebracht werden, so dass mit den empfangenen Signalen die aktuelle Position des Senders und damit des Hundes im Raum bestimmt werden kann. Basierend auf den vorhandenen Daten, wäre es weiterhin denkbar, Reaktionen auf das Verhalten des Hundes umzusetzen, beispielsweise bei Annäherung an einen bestimmten Sensor.

Geplante Arbeitsschritte

A1 Beschreibung der relevanten Software- und Hardware-Umgebung und Werkzeuge

A2 Konzeption einer Schnittstelle zur Übermittlung der Empfangsstärke an den Server

A3 Konzept zur räumlichen Ortung anhand der verschiedenen Empfangsstärken

A4 Evaluation/Überarbeitung des Systems in Bezug auf die Anzahl und Positionierung der Sensoren

A5 Untersuchung und Auswahl geeigneter BLE-Tags

A6 Lesen der Empfangsstärke des BLE-Tags von einer Sensor

A7 Implementierung der Schnittstelle zum Austausch der Empfangsstärke zwischen den Sensoren

A8 Implementierung der räumlichen Ortung anhand der ausgetauschten Empfangsstärken

A9 Konzept zur (visuellen) Auswertung der Bewegungsdaten im Internet

A10 Implementierung des Web-Portals

A11 Fallstudie mit Beispielszenario und Bewertung der Praxistauglichkeit sowie ein Ausblick auf weitere Anwendungsmöglichkeiten.

Analyse

Technische Umgebung

Es werden drei Typen von Geräten benötigt:

  1. Ein Sender, der am Hundehalsband befestigt werden kann.
  2. Ein Gerät, das als Sensor fungiert und das Signal des Senders empfängt und einem Server mitteilt. Dieses Gerät wird je nach Versuchsaufbau mehrfach benötigt.
  3. Einen Server, der die gemessenen Signale von den Sensoren empfängt, verarbeitet und visualisiert.

Sender

Der Sender muss in der Lage sein, bei geringem Energieverbrauch kontinuierlich ein Signal auszusenden, anhand dessen die Position bestimmt werden kann. Dafür muss das Signal stark genug sein, um innerhalb eines Raumes von jedem der Sensoren empfangen werden zu können. Darüber hinaus muss der Sender klein genug sein, um am Hund befestigt werden zu können. Für die Signalübertragung wird Bluetooth Low Energy verwendet.

Sensoren

An die Sensoren werden folgende funktionale Anforderungen gestellt:

  • Sie müssen das Signal des Senders empfangen können.
  • Sie müssen das gemessene Signal an den Server senden können.

Die nicht funktionalen Anforderungen an die Sensoren sind etwa der Preis, der Stromverbrauch und die Portabilität.

Server

Der Server sollte über ausreichend Rechenleistung verfügen. Er muss die Signale der Sensoren empfangen und verarbeiten. Anhand dieser bestimmt er die Position des Hundes im Raum. Um das Ergebnis zu visualisieren und ins Internet zu bringen, muss auf ihm ein Web-Server gestartet werden können.

Hardware

iBeacon

Ein iBeacon erfüllt unsere Anforderungen an den Sender, da er klein genug ist um ihn am Hund zu befestigen und gleichzeitig eine hohe Akkulaufzeit hat. iBeacon ist eine von Apple patentierte Technologie zur Positionsbestimmung innerhalb von Gebäuden. Synonym wird auch der Begriff Beacon verwendet. Beacons nutzen Bluetooth Low Energy (BLE) und senden in einer meist einstellbaren Frequenz Bluetooth Advertisement-Packages aus, die es ermöglichen den Beacon eindeutig zu identifizieren. Die Identifikation erfolgt über die UUID des Gerätes, die Teil des Advertisement-Package ist. Darüber hinaus ist es möglich eine kleine Menge an Informationen (4 Byte) mitzugeben. Ein Empfänger kann durch die Signalstärke bei Empfang des Advertisement-Packages seine ungefähre Entfernung zum Beacon ableiten.

Die Verwendung von Bluetooth Low Energy ermöglicht dem Beacon eine sehr lange Akkulaufzeit. Die Funktionsweise des Beacons erklärt die lange Akkulaufzeit recht gut: Da er meist als autonomes Gerät agiert, also keine Verbindungen zulässt, schaltet er sich fast komplett ab, wacht dann nach einer bestimmten Zeit wieder auf, sendet sein Paket und schaltet sich wieder ab. Erreicht die Batterie des Beacons allerdings eine zu niedrige Spannung kann das Signal schwanken.

Ein Anwendungsfall ist beispielsweise die Orientierung innerhalb eines Einkaufszentrums. Dazu werden mehrere Beacons an strategischen Stellen im Einkaufszentrum platziert. Eine mobiles Gerät, das Bluetooth LE fähig ist und die App des Einkaufszentrums installiert hat, kann dann anhand der empfangenen Signale der verschiedenen Beacons die ungefähre Position des mobilen Geräts ableiten. [1]

Wir würden dann umgedreht vorgehen und einen Beacon am Hundehalsband befestigen und mit mehreren Empfängern die Position des Beacons bestimmen.

Der verwendete BLE-Beacon

Raspberry Pi

Ein Raspberry Pi erfüllt - da, mit entsprechender Hardware, vielseitig erweiterbar - nicht nur unsere Anforderungen an die Sensoren, sondern auch die an den Server.

Die ausreichend große CPU ermöglicht die Positionsbestimmung, Webvisualisierung mit einem Webserver zu betreiben. Mit einem Wlan-Dongle ist er leicht ins Heimnetz eingebunden und ein Bluetooth-Dongle ermöglicht die Kommunikation mit dem Beacon. Um Kosten zu sparen kann der Pi auch mit LAN ins Heimnetz eingebunden werden.

Die größten Nachteile sind der Preis und der Stromverbrauch. Mit einem Preis von rund 40€ für den Raspberry Pi 2 ist er nicht gerade billig. Dazu kommen noch die Kosten für die beiden Dongles. Außerdem ist der Stromverbrauch so hoch, dass auf Dauer zwangsläufig ein Netzteil erforderlich ist. Hierfür müssen im Raum an den noch zu bestimmenden Positionen Steckdosen vorhanden sein.

Hier stellt sich die Frage, ob man mit der Verwendung von vier Raspberry Pis nicht über das Ziel hinaus schießt. Die Rechenleistung wird nur für die Positionsbestimmung und Webvisualisierung benötigt. Die reine iBeacon-Erkennung erfordert keine so große CPU. Es wäre daher möglich andere Hardware zu verwenden, die in der Lage ist den Bluetooth Scan nach dem iBeacon durchzuführen und die Daten per TCP an einen einzelnen Pi zu senden. Hierfür könnte beispielsweise der recht neue Raspberry Pi Zero[2] eingesetzt werden, der nur 9€ kostet.

Einer der verwendeten Raspberry Pis mit Bluetooth- und WLAN-Stick

Verfahren zur Positionsbestimmung

Trilateration

Hierbei wird anhand der Entfernung des Empfängers zu drei bekannten Punkten, seine Position im Raum berechnet. Dazu muss ein Distanzmaß vorhanden sein. Die Time of Arrival und Time Difference of Arrival Methoden beschreiben wie anhand von Radio-, bzw, Mikrowellen ein Distanzmaß erstellt werden kann. Ein Distanzmaß kann aber auch anhand der Signalstärke bestimmt werden.

Cell of Origin

Wird bei GSM verwendet. Hierbei gibt es mehrere Funkzellen, der Empfänger loggt sich immer an der am nächsten gelegenen Funkzelle ein. Das Cell of Origin Verfahren ortet den Empfänger an der Funkzelle an der er gerade eingeloggt ist. Dies ist allerdings offensichtlich kein Verfahren, das innerhalb eines Raumes anwendbar ist.

Time of Arrival (ToA)

Hier wird die Zeit gemessen, die ein Radiosignal vom Sender zum Empfänger benötigt. Ist dann die Position von drei Sendern bekannt und die jeweilige Dauer des Signals zum Empfänger, kann daraus die Position des Empfängers berechnet werden. Hierbei ist es nötig die Uhren der Sender und des Empfängers synchron zu halten. Da Radiowellen sich genauso schnell ausbreiten wie Licht (also rund 300.000.000 m/s) müssen die Uhren mit einer Genauigkeit im Nanosekundenbereich arbeiten, um eine Messung mit einem Meter Genauigkeit durchführen zu können.

Multilateration / Time Difference of Arrival (TDoA)

Wird beispielsweise bei GPS verwendet. Ähnlich wie ToA, aber hierbei wird nicht mit absoluten Werten gerechnet, sondern mit der Differenz.

Locationmapping / Fingerprinting

Hierbei wird der Raum in ein Raster unterteilt. Für jede Zelle des Rasters werden Messwerte der einzelnen Sensoren erhoben und als Referenzwerte zu dem jeweiligen Feld gespeichert. Dieser Vorgang wird als Kalibrierung bezeichnet. Zur Ortung werden die aktuell gemessenen Werte aller Sensoren mit den Referenzwerten verglichen und so einem (oder prozentual mehreren) Feldern zugeordnet. Diese Methode hat den Vorteil, dass sie Schwankungen des Signals durch die Kalibrierung von selbst ausgleicht. Die Kalibrierung ist aber auch der große Nachteil dieser Methode, da zunächst eine ausreichend große Menge an Referenzwerten für jedes Feld erhoben werden muss.

Mote Track

Bietet ein Verfahren bei dem anhand von Radiosignalen die Position eines Senders auf bis zu einem Meter genau bestimmt werden kann. Der Versuchsaufbau ist ähnlich zu dem von uns geplanten Verfahren. Hierbei werden in einem Gebäude zahlreiche Empfänger verteilt und es ist in der Lage mehrere Beacon Nodes zu behandeln.[3]

Auswertungsmöglichkeiten der Positionsdaten

Der wichtigste Teil eines Internet der Dinge Projekts ist es, selbiges in das Internet zu bringen. Daher sollen hier verschiedene Möglichkeiten zur Auswertung der berechneten Positionsdaten besprochen werden.

Persistierung

Zunächst einmal macht es Sinn die berechneten Positionsdaten zu speichern. Hierfür kann eine Datenbank, aber auch eine einfache Textdatei verwendet werden. In dieser sollte immer die Zeit und die berechnete Position abgespeichert werden. Anhand der gespeicherten Daten kann später eine Langzeitauswertung erstellt werden.

Liveanzeige

Oft möchte man nicht nur eine Statistik über den Bewegungsablauf seines Hundes, sondern sich auch im Internet anschauen, wo sich der Hund denn gerade befindet. Dafür bietet es sich an die Position des Hundes auf einem Grundriss des Raumes anzuzeigen. Der Nutzer kann so direkt sehen wo sein Hund sich gerade befindet.

Interaktion mit dem Hund

Die Live-Anzeige könnte auch eine Interaktion mit dem Hund ermöglichen. Hierfür könnte der Nutzer über das Web-Portal Sprach-Nachrichten an den Hund schicken. Etwa wenn er wieder Richtung des Sofas läuft, um das Verhalten zu unterbinden.

Eine andere Möglichkeit wäre es automatisiert mit dem Hund zu interagieren. Bestimmtes Verhalten des Hundes löst eine definierte Aktion aus.

Benachrichtigung

Da es sehr wahrscheinlich ist, dass der Nutzer nicht ständig auf die Live-Anzeige schauen kann, wären Benachrichtigungen eine sinnvolle Erweiterung des Systems. Verlässt, oder betritt, der Hund eine definierte Zone wird eine Benachrichtigung an den Nutzer gesendet.

Konzept

Wir haben uns entschieden die Ortung des Hundes im Raum anhand eines Beacons und mehreren Raspberry Pis als Sensoren umzusetzen. Einer dieser Raspberry Pis fungiert darüber hinaus als Server. Die Positionsbestimmung soll durch Locationmapping erfolgen.

Aufbau der Hardware

Der Hardwareaufbau besteht aus vier Raspberry Pis, die sinnvoll im Raum positioniert werden müssen. Jeder dieser Pis erhält eine eindeutige Nummer (Pi-Nummer), über die er identifiziert werden kann. Die softwareseitige Konfiguration der Raspberry Pis wird im Abschnitt Implementierung näher beschrieben. Der Beacon muss am Hund angebracht werden.

In diesem Abschnitt soll beschrieben werden, wo die Sensoren positioniert werden und wie der Sensor am Hund angebracht wird.

Positionierung der Sensoren

Um verwertbare Signale von den Sendern zu erhalten, können diese nicht vollkommen willkürlich im Raum aufgestellt werden. Die Signalverbreitung unterliegt verschiedener Einflüsse, die es bei der Platzierung zu beachten gilt.

Statische Hindernisse

BLE-Signale können Festkörper nur bedingt durchdringen. Daher haben Hindernisse im Raum, je nach Beschaffenheit und Material, teilweise erheblichen Einfluss auf die Signalstärke. Sensoren mit sehr kurzer Distanz zum Sender erscheinen durch Objekte in der Sichtlinie deutlich weiter entfernt. In einem generischen Raum führt dies unweigerlich zu Problemen bei der Ortung.

Dieser grundsätzliche Störfaktor spielt im hier beschriebenen Versuchsaufbau keine entscheidende Rolle. Das prototypische System ist darauf ausgelegt im Anwendungsraum kalibriert zu werden. Statische Objekte beeinflussen Kalibrierung und Ortung gleichermaßen. Die Klassifizierung, während der das Signal - basierend auf Wahrscheinlichkeiten - einem Feld zugeordnet wird, funktioniert unabhängig von der Ausstattung des Anwendungraumes. Die Möglichkeit des Signals, sich gleichmäßig im Raum auszubreiten, wirkt sich jedoch durchaus positiv auf die Zuverlässigkeit der Klassifizierung aus.

Dynamische Hindernisse

Eine ähnliche Rolle für die Funktionalität des Systems spielen bewegliche Objekte. Im Gegensatz zu statischen Objekten, sollte allerdings die Einflussnahme durch dynamische während des Kalibrierungsvorgangs eines Feldes dringend vermieden werden. Fehlerhafte Klassifizierungen die später bei der Lokalisierung auftreten, können im Einzelfall erklärt und gegebenenfalls vernachlässigt werden. Werden die bei der Kalibrierung gesammelten Trainingsdaten signifikant durch dynamische Störquellen im Raum verfälscht, ist die Nachvollziehbarkeit späterer Fehlortungen nicht gegeben.

Bodennähe der Sensoren

Weiterhin ist die Platzierung der Sensoren im Raum unabhängig von anderen Objekten ein nicht zu vernachlässigender Faktor. Den deutlichsten Einfluss auf die Differenzierbarkeit der versendeten Signale hat die Entfernung von Sensoren - und auch die des Senders - zum Fußboden des Versuchsraumes. Eine möglichst gleichmäßige Erhöhung aller beteiligter Sende- und Empfangseinheiten, hat eine bemerkenswerte Verbesserung der empfangen Signale zur Folge. Dies äußert sich einerseits in Form seltenerer Schwankungen, andererseits erhöht sich die Eindeutigkeit der Zuordnung eines Signals zu einem bestimmten Feld.

RSSI-Varianz: Der gemessene RSSI-Wert (y) eines Pis über die Zeit (x)

Ein Grund dafür ist, dass in der Regel eine klare Sichtlinie zwischen Sender und Empfänger entsteht, was aber natürlich wiederum in Abhängigkeit statischer Hindernisse zu betrachten ist. Der entscheidende Vorteil in der Platzierung mit Abstand zum Boden des Raumes ist die Vermeidung Reflexion durch denselben, unmittelbar nach Versenden des Signals. Hierdurch entstehen schnell Signale die schwer bis nicht vernünftig zu interpretieren sind.

Es empfiehlt sich also eine erhöhte Anbringung der Sensoren - nach Möglichkeit an der Decke des Raumes. Außerdem sollte darauf geachtet werden, dass die Bluetoothempfängereinheit in alle Richtungen eine möglichst ungehinderte Sichtlinie zum Sender hat.

Anbringung des Senders

BLE sendet mit einer Frequenz von 2,4 GHz. Dies führt unausweichlich zu dem Problem, dass Flüssigkeiten nicht, oder nur zum Teil, durchdrungen werden können. Dies ist auf einen Effekt zurückzuführen dem sich auch Mikrowellenherde bedienen. Hierbei werden Wasserstoff Moleküle, die einen rotationsfähiges elektrisches Dipolmoment besitzen, angeregt und in Bewegung versetzt. Durch die Rotation der Moleküle erhöht sich die kinetische Energie des Wassers und somit seine Temperatur.

Da aber der Beacon selbst nur eine sehr geringe Leistung aufweist (betrieben durch eine Knopfzelle (ca. 1.55V, Leistungskapazität im mAh Bereich) Wird die Energie zwar von der Rotation der Wassermoleküle absorbiert aber ein rapides erhitzen des Wassers durch die geringe Leistung verhindert. Im Vergleich die Leistung eines Mikrowellen Herde fängt bei ca. 500W an.

Aus diesem Grund wird die Installation des BLE-Beacons auf dem Rücken des Hundes vorgenommen.

Implementierung

Architektur

Unser System besteht aus drei verschiedenen Teilsystemen.

  • Auf den Sensoren wird das Programm interdog_client.py gestartet. Das führt einen Bluetooth-Scan durch und schickt die gemessenen Werte an die IP des Servers.
  • Auf dem Server wird das Programm interdog_main.py gestartet. Dieses öffnet einen TCP-Socket und empfängt darüber die gemessenen Werte der einzelnen Sensoren. Es startet darüber hinaus einen Web-Server für die Visualisierung.
  • Ist das System noch nicht kalibriert, muss zunächst das Programm calibrate.py gestartet werden. Darüber wird interaktiv die Kalibrierung durchgeführt.

Vereinfachtes Klassendiagramm

Konfiguration der Raspberry Pis

Auf den Raspberry Pis wurde Raspian als Betriebssystem genutzt. Um das Bluetooth-Dongle nutzen zu können muss zunächst Bluez installiert werden.

sudo apt-get install libdbus-1-dev libdbus-glib-1-dev libglib2.0-dev libical-dev libreadline-dev libudev-dev libusb-dev make
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.36.tar.xz
tar xvf bluez-5.36.tar.xz
./configure
make
sudo make install
 
#Sicherstellen, dass der Adapter erkannt wurde
lsusb
#Den Status des Bluetooth Adapters abfragen
hciconfig
#Falls der Adapter als DOWN gemeldet ist, muss er noch aktiviert werden.
sudo hciconfig hci0 up
 
#Danach müssen noch die erforderlichen python libraries installiert werden
sudo apt-get install python-bluez python-matplotlib

Nachdem diese Schritte vollzogen sind können unsere Programme auf den Pis gestartet werden.

Auslesen der Empfangsstärke des Sensors

Um mit Python einen Bluetooth Scan durchzuführen wurde die Klasse blescan.py[4] genutzt. Das unten stehende Code-Snippet zeigt exemplarisch wie ein BLE-Scan durchgeführt werden kann. Zunächst muss die Device ID des Bluetooth Adapters angegeben werden. Diese kann wie oben beschrieben über hciconfig ermittelt werden. Nutzt man nicht mehr als einen Bluetooth-Adapter sollte dieser die ID 0 haben. Darüber wird dann mit der Klasse blescan in einer Dauerschleife ein Scan durchgeführt.

BLE-Scan mit Interdog_Client auf drei Pis
import bluetooth._bluetooth as bluez
import blescan

hci_dev_id = 0
try:
   sock = bluez.hci_open_dev(hci_dev_id)
except:
     print "error accessing bluetooth device..."
blescan.hci_le_set_scan_parameters(sock)
blescan.hci_enable_le_scan(sock)
 
while True:
   #Wir möchten pro Scan genau ein Gerät finden
   found_devices = blescan.parse_events(sock, 1)
   if found_devices:
       print found_devices[0]

Wurde ein Device gefunden, erhalten wir einen String mit sämtlichen Attributen des Advertisement-Packages und dem RSSI-Wert.

UUID:	67 67 23 74 00 00 00 ff ff 00 00 ff ff 00 02 00
MAJOR:	00 04
MINOR:	5d c6
MAC:	34:b1:f7:ce:84:c5
RSSI:	-87

Schnittstelle zur Übermittlung der Empfangsstärke an den Server

Da die Positionsbestimmung nur erfolgen kann, wenn die RSSI-Werte der einzelnen Sensoren zusammen ausgewertet werden, müssen die Werte korrekt zusammengeführt und ausgewertet werden. Hier soll beschrieben werden, wie die zuvor gemessenen einzelnen RSSI-Werte an den Server übermittelt werden sollen.

Hierfür ist eine reguläre Client-Server-Architektur vorgesehen. Auf dem Server wird durch Interdog_Server Port 9999 geöffnet. Dort wird auf ankommende Daten gehorcht. Die Sensoren versuchen sich mit dem Server zu verbinden und senden, bei erfolgreicher Verbindung, den gemessenen RSSI-Wert zusammen mit ihrer Pi-Nummer und einem Timestamp als JSON-String an den Server.

Interdog_Server

Hier wird, wie bereits erwähnt, auf Port 9999 ein TCP-Socket geöffnet. Die Clients verbinden sich mit dem Server, der für jede neue Verbindung einen neuen Thread erstellt, in dem die ankommenden Daten eines Sensors gespeichert werden. So kann sichergestellt werden, dass auch wirklich alle gemessenen Werte empfangen werden.

Auf Anfrage führt Interdog_Server die empfangenen Daten aus den einzelnen Threads zusammen und erstellt aus ihnen einen feature vector, anhand dessen dann die Positionsbestimmung erfolgen kann.

Räumliche Ortung anhand der verschiedenen Empfangsstärken

Implementiert wurde ein KNN-Klassifizierer und ein Locationmapping zur Konstruktion der Trainingsdaten. Dieser ermittelt, anhand der gelernten Daten, die Position des Hundes im Raum. Als Rückgabewert wird ein Dictionary zurückgegeben, dieses enthält die Wahrscheinlichkeitsverteilung des Hundes im Raum.

K-Nearest Neighbor

Um eine räumliche Ortung zu realisieren wurde ein Verfahren aus dem Bereich des Machine Learning verwendet. Aus transparenz Gründen und aufgrund der geringen Datenmenge wird mittels K-Nearest-Neighbor die wahrscheinlichste Position im Raum lokalisiert.

Training

Es wird ein sogenannter feature vector verwendet, welcher die Eigenschaften(empfangenen RSSI-Werte) einer Position im Raum beschreibt. Der hieraus resultierende Vector besteht aus n-Dimensionen, wobei n aus der Anzahl der im Sensornetz verwendeten Sensoren besteht. Hierfür wird aus der Locationmap jeder Eintrag mit einem Label (Bezeichnung der Position) versehen. Als Trainingsset wird dann eine Kombination aus feature vectoren und den ihnen zugehörigen Labels bezeichnet. Die hieraus resultierenden Daten eines Trainingsset-Eintrags enthalten die empfangenen RSSI-Werte: np.array([-30, -32, -40, -50]) und ein Label zb.: G00. Dieser Vorgang wird solange wiederholt bis allen feature-vectoren ein Label zugewiesen wurde.

Klassifizierung

Nachdem einmal trainiert wurde kann das entstandene Trainingsset verwendet werden um Ähnlichkeiten zwischen der aktuellen Position des Hundes(dog_feature) und dem Trainingssets(location_features) zu bestimmen. Als Ähnlichkeitsmaß wird der Normalenvektor zwischen der aktuellen Position des Hundes und jedem einzelnen Eintrag in dem Trainingsets ermittelt. Zur eigentlichen Klassifizierung werden dann die k-nächsten Nachbarn gesucht, welche sich durch die geringste Distanz zur aktuellen Position des Hundes auszeichnen.

Als Ergebnis liegt dann eine Wahrscheinlichkeitsverteilung vor, anhand dessen Rückschlüsse auf die Position des Hundes im Raum getroffen werden kann.

Visuelle Auswertung der Positionsdaten

Letzter Schritt, nach dem Versenden und Empfangen der Bluetoothsignale und deren Umwandlung in Positionsdaten, ist ihre visuelle Aufbereitung und Bereitstellung für den Benutzer. Ein Ansatz ist direkte Übertragung der Position in eine Webanwendung zur sofortigen Ansicht der aktuellen Position, ein anderer die spätere Analyse einer Sammlung aufgezeichneter Daten.

Liveansicht im Browser

Visualisierung im Browser
Heatmap der aufgezeichneten Positionsdaten

Hauptaugenmerk bei der Visualisierung in der prototypischen Anwendung war die Möglichkeit, die Bewegung des Hundes während der Laufzeit mitverfolgen zu können.

Hierzu wurde eine simple visuelle Webschnittstelle erstellt. Sie repräsentiert den Raum durch ein Gitter aus quadratischen Feldern, deren Anzahl aus Breite und Länge des Versuchsraums hergeleitet wird. Basierend auf der Vorhersage, in welchem Bereich des Raumes der Hund sich aufhält, wird mit jeder Aktualisierung das entsprechende Feld eingefärbt. Die Darstellung ist in der nebenstehenden Abbildung Visualisierung im Browser zu sehen.

Um die Position des Hundes im Browser anzeigen zu können, wird ein python-Webserver verwendet, der durch den Visualizer gestartet wird. Nach dem beim Start von Interdog_Main, der Visualizer instanziiert wird, erzeugt dieser wiederum eine Instanz eines WebsocketHandlers, um die verbundenen Clients zu verwalten und Nachrichten an diese zu senden. Der Webserver öffnet dann den Port, über den sich Clients (Browser) mit Interdog_Main verbinden können. Wird eine Verbindung aufgebaut, stößt die in Interdog_Main gestartete Visualizer-Instanz einen periodischen Callbackloop an. Dieser ruft in einem angegebenen Zeitintervall, die Funktion auf, mit der aus den neuesten RSSI-Werten der Sensoren die geschätzte Hundeposition bestimmt wird.

Die Websockets zur Anbindung von Clients, sowie der Webserver selbst, wurden mit Hilfe des python-Frameworks tornado[5] erstellt.

Letztendlich dargestellt werden Raum und Hundeposition in einer simplen HTML-Seite. JavaScript wird verwendet um Nachrichten des WebsocketHandlers zu empfangen und zu verarbeiten.

Langzeitanalyse

Neben der direkten Präsentation der aktuellen Hundeposition in der Webanwendung kann auch eine Auswertung der Daten über längere Zeit für den Anwender von Interesse sein .

Da sich der Versuchsaufbau auf einen fest abgesteckten Raum ausgelegt ist, bietet sich die Visualisierung in einer Heatmap an. Durch einfaches Aufsummieren der geschätzten Positionen des Hundes lässt sich bereits eine aussagekräftige Darstellung der Bewegung des Hundes über den Zeitraum eines Anwendungsdurchlaufes erzeugen.

Nebenstehende Abbildung zeigt die Verteilung der vorhergesagten Positionen während eines realen Tests im Versuchsraum mit drei Meter Breite und fünf Meter Länge. Die einzelnen Kreise repräsentieren jeweils ein Feld. In einem roten bis weißen Kreis befand sich der Hund besonders häufig im Gegensatz zu vorwiegend grünen bis blauen Kreisen.

Evaluation

Während der Entwicklung und der ersten funktionalen Tests wurde der BLE-Beacon nicht von einem Hund getragen. Er wurde per Hand in verschiedene Felder gelegt, um eine Bewegung zu simulieren. Zudem war der Versuchsraum zu Anfang deutlich kleiner, was unter anderem zu einem sehr geringen Abstand zwischen den einzelnen Sensoren und damit zu schwer differenzierbaren Signalen führte. Um die tatsächliche Praxistauglichkeit der Anwendung zu erproben, wurde sie abschließend im geplanten Versuchsaufbau zum Einsatz gebracht. Während der Testläufe, zu denen auch ein Demonstrationsvideo entstanden ist, wurden Funktionalität und Genauigkeit der Anwendung zunächst durch Beobachtung der Web-Visualisierung und den Vergleich mit der tatsächlichen Position des Hundes bewertet. Außerdem wurden die Anwendungsdaten für spätere Analyse aufgezeichnet. Teilweise mussten auch Daten zur Auswertung verwendet werden, die zwar im richtigen Raum, aber - aufgrund der Gegebenheiten - ohne Hund generiert wurden.

Ortungsgenauigkeit

Zur analytischen Bewertung der Ortungsgenauigkeit konnten aus verschiedenen Gründen keine Daten verwendet werden, die mit Hund aufgezeichnet wurden. Einerseits gab es keine Möglichkeit unter Aufsicht ausreichend Daten zu sammeln. Andererseits ist es für die Analyse nötig, die tatsächliche Position zu jedem Zeitpunkt zu kennen, um sie mit der Schätzung vergleichen zu können. Diese Daten könnten nur per Hand durch Beobachten der Hundepositionen aufgezeichnet werden.

Die Darstellung der Abweichung zwischen den geschätzten und den tatsächlichen Positionen wird in einer sogenannten Confusion Matrix verdeutlicht. Hierbei handelt es sich um eine übliche Methode zur Visualisierung der Fehlerrate für Machine Learning Algorithmen. Sie wird im Zusammenhang mit multi-label Klassifikationen verwendet und zeigt die Häufigkeit, mit der Daten richtig klassifiziert worden sind und zudem, welchen Labels sie im Fehlerfall zugeordnet wurden.

Evaluation Set: Hierfür wurde eine Locationmap ohne Hund erstellt. In jedem Feld wurden 350 Features erhoben. Diese wurden anschließend in 200 Trainings und 150 Test Features aufgeteilt.

Dog Set: Hierfür wurde eine Locationmap mit Hund erstellt. Hier gab es also auch dynamische Hindernisse. (Hund musste für die Kalibrierung geführt werden) In jedem Feld wurden 150 Features erhoben. Dieses wurden anschließend in 100 Trainings und 50 Test Features aufgeteilt.

Confusion Matrix: In der Confusion Matrix wurden auf der y-Achse die echten Labels und auf der x-Achse die klassifizierten Labels aufgetragen. Werte die direkt auf der Diagonalen liegen repräsentieren richtig positive. Werte die neben der Diagonalen liegen sind falsch Klassifiziert worden.

Confusion Matrix: Evaluation Set Confusion Matrix: Dog Set
Eval confusion matrix dim3x5 knn8 test size150.png
Dog confusion matrix dim3x5 knn8 test size50.png

An der Confusion Matrix unseres Evaluation Sets kann man erkennen, dass es kaum Fehlklassifikationen gibt. Hierbei konnten wir mit unserem KNN-Ansatz eine Genauigkeit von knapp 98% erreichen.

Im Dog Set wurde erwartungsgemäß eine geringere Genauigkeit erzielt. Sie lag bei knapp 79%. Beispielsweise wurde Feld (0,4) zehn mal als Feld (0,2) klassifiziert oder Feld (2,1) elf mal als Feld (1,1).

Da die meisten vorhanden Verfahren ein binäres Klassifikationsproblem voraussetzen wird nun jedes Feld einzeln betrachtet und als eigenständiger Klassifizierer angesehen. Hierfür wurde aus dem zweidimensionalen Array, eine eindimensionale Liste der Form [0,...,1] gemacht die nur an der Stelle eine 1 enthält die dem jeweiligem Feld zugeordnet ist.

Die ermittelten Ergebnisse eines Feldes werden nun im weiteren Verlauf näher analysiert.

Precision und Recall

Dies sind Begriffe aus dem Bereich des Machine Learning, bzw. genauer gesagt des Information Retrival. Sie bezeichnen jeweils ein bestimmtes Verhältnis zwischen vorhergesagten und tatsächlichen Werten und geben somit Auskunft über die Qualität des angewandten Algorithmus bei der Anwendung auf einen Datensatz.

Die Precision - im Deutschen als Genauigkeit bezeichnet - bezeichnet den Anteil korrekter Vorhersagen an der Ergebnismenge.

Der Recall - Trefferquote, im deutschsprachigen Raum - gibt den Anteil der bei einer Klassifikation als relevant eingestufter Elemente und damit die Vollständigkeit des Ergebnisses an.

In diesem speziellen Fall sind diese beiden Werte je Feld des Versuchsraums zu verstehen. Precision bedeutet also: Menge von Feature-Vektoren, die dem Feld zugeordnet wurden und für die das auch korrekt war. Recall: Anteil der Feature-Vektoren, die dem Feld zugeordnet wurden, an allen, die ihm hätten zugeordnet werden sollen.

In den Nachfolgenden Tabellen bezieht sich jeder Graph auf ein Feld des Versuchsraums. Zur besseren Übersicht wurden die Tabellen um 90° im Uhrzeigersinn gedreht.

Precision Recall: Evaluation Set
Eval precision recall(2, 0) dim3x5 knn8 test size150.png
Eval precision recall(1, 0) dim3x5 knn8 test size150.png
Eval precision recall(0, 0) dim3x5 knn8 test size150.png
Eval precision recall(2, 1) dim3x5 knn8 test size150.png
Eval precision recall(1, 1) dim3x5 knn8 test size150.png
Eval precision recall(0, 1) dim3x5 knn8 test size150.png
Eval precision recall(2, 2) dim3x5 knn8 test size150.png
Eval precision recall(1, 2) dim3x5 knn8 test size150.png
Eval precision recall(0, 2) dim3x5 knn8 test size150.png
Eval precision recall(2, 3) dim3x5 knn8 test size150.png
Eval precision recall(1, 3) dim3x5 knn8 test size150.png
Eval precision recall(0, 3) dim3x5 knn8 test size150.png
Eval precision recall(2, 4) dim3x5 knn8 test size150.png
Eval precision recall(1, 4) dim3x5 knn8 test size150.png
Eval precision recall(0, 4) dim3x5 knn8 test size150.png
Precision Recall: Dog Set
Dog precision recall(2, 0) dim3x5 knn8 test size50.png
Dog precision recall(1, 0) dim3x5 knn8 test size50.png
Dog precision recall(0, 0) dim3x5 knn8 test size50.png
Dog precision recall(2, 1) dim3x5 knn8 test size50.png
Dog precision recall(1, 1) dim3x5 knn8 test size50.png
Dog precision recall(0, 1) dim3x5 knn8 test size50.png
Dog precision recall(2, 2) dim3x5 knn8 test size50.png
Dog precision recall(1, 2) dim3x5 knn8 test size50.png
Dog precision recall(0, 2) dim3x5 knn8 test size50.png
Dog precision recall(2, 3) dim3x5 knn8 test size50.png
Dog precision recall(1, 3) dim3x5 knn8 test size50.png
Dog precision recall(0, 3) dim3x5 knn8 test size50.png
Dog precision recall(2, 4) dim3x5 knn8 test size50.png
Dog precision recall(1, 4) dim3x5 knn8 test size50.png
Dog precision recall(0, 4) dim3x5 knn8 test size50.png
Precision and Recall: Evaluation Set Precision and Recall: Dog Set
Eval all precision recall dim3x5 knn8 test size150.png
Dog all precision recall dim3x5 knn8 test size50.png

Receiver Operating Characteristic

Die Receiver Operating Characteristic stammt aus der Grenzwertbetrachtung und wird meistens zur Bewertung von freien Parametern verwendet. Sie kann aber auch als eine Art von Qualitätsmaß fungieren. Hierbei wird die True-Positiv-Rate der False-Positiv-Rate gegenübergestellt. Eine Kurve nahe der Diagonalen spricht für ein Zufalls Ergebnis. Eine stark steigende Kurve spricht für eine geringe falsch Klassifizierung. Als Maß wird hier meistens die Fläche unter der Kurve AUC berechnet. Sie kann Werte zwischen 0 und 1 annehmen. Ein Wert um die 0.5 entspricht dem Zufall. Um so näher der Wert der AUC an 1 umso genauer ist die Klassifikation.

In den Nachfolgenden Tabellen bezieht sich jeder Graph auf ein Feld des Versuchsraums. Zur besseren Übersicht wurden die Tabellen um 90° im Uhrzeigersinn gedreht.

Receiver Operating Characteristic: Evaluation Set
Eval roc(2, 0) dim3x5 knn8 test size150.png
Eval roc(1, 0) dim3x5 knn8 test size150.png
Eval roc(0, 0) dim3x5 knn8 test size150.png
Eval roc(2, 1) dim3x5 knn8 test size150.png
Eval roc(1, 1) dim3x5 knn8 test size150.png
Eval roc(0, 1) dim3x5 knn8 test size150.png
Eval roc(2, 2) dim3x5 knn8 test size150.png
Eval roc(1, 2) dim3x5 knn8 test size150.png
Eval roc(0, 2) dim3x5 knn8 test size150.png
Eval roc(2, 3) dim3x5 knn8 test size150.png
Eval roc(1, 3) dim3x5 knn8 test size150.png
Eval roc(0, 3) dim3x5 knn8 test size150.png
Eval roc(2, 4) dim3x5 knn8 test size150.png
Eval roc(1, 4) dim3x5 knn8 test size150.png
Eval roc(0, 4) dim3x5 knn8 test size150.png
Receiver Operating Characteristic: Dog Set
Dog roc(2, 0) dim3x5 knn8 test size50.png
Dog roc(1, 0) dim3x5 knn8 test size50.png
Dog roc(0, 0) dim3x5 knn8 test size50.png
Dog roc(2, 1) dim3x5 knn8 test size50.png
Dog roc(1, 1) dim3x5 knn8 test size50.png
Dog roc(0, 1) dim3x5 knn8 test size50.png
Dog roc(2, 2) dim3x5 knn8 test size50.png
Dog roc(1, 2) dim3x5 knn8 test size50.png
Dog roc(0, 2) dim3x5 knn8 test size50.png
Dog roc(2, 3) dim3x5 knn8 test size50.png
Dog roc(1, 3) dim3x5 knn8 test size50.png
Dog roc(0, 3) dim3x5 knn8 test size50.png
Dog roc(2, 4) dim3x5 knn8 test size50.png
Dog roc(1, 4) dim3x5 knn8 test size50.png
Dog roc(0, 4) dim3x5 knn8 test size50.png
All Receiver Operating Characteristic: Evaluation Set All Receiver Operating Characteristic: Dog Set
Eval all roc dim3x5 knn8 test size150.png
Dog all roc dim3x5 knn8 test size50.png

Ausblick auf weitere Anwendungsmöglichkeiten

Da es sich bei der Anwendung lediglich um einen Prototypen handelt, existieren einige Stellen, an denen man für die Verbesserung der Benutzbarkeit und Erhöhung der Praxistauglichkeit ansetzen kann.

Erweiterung der Webanwendung

Der aktuelle Stand der Datenvisualisierung ist sehr simpel gehalten. Denkbar wäre hier beispielsweise die Anzeige nicht nur der neuesten Position, sondern des zuletzt zurück gelegten Weges. Zudem könnte man die Heatmap in die Webanwendung integrieren. Die im Abschnitt Langzeitanalyse beschriebene Auswertung ist offline geschehen. Als interaktiver Teil der Anwendung wäre es zum Beispiel möglich, dem Benutzer die Möglichkeit zu geben, die Verteilung der Hundepositionen über einen ausgewählten Zeitraum einzusehen.

Die Zeitstempel der erfassten Daten könnten auch noch anderweitig visualisiert werden. Beispielsweise könnten in einem Graphen angezeigt werden, zu welcher Tageszeit, der Hund besonders viel Aktivität zeigt. Hier bedarf es weiterer Analysearbeit um sinnvolle und aussagekräftige Auswertungsmöglichkeiten zu bestimmen.

Weitere Verarbeitungsmöglichkeiten

Anstatt die von der Anwendung erzeugten Daten nur zu visualisieren und dem Anwender zur Verfügung zu stellen, wäre es auch denkbar, auf bestimmte Ereignisse automatisiert zu reagieren. Beispielsweise könnte der Benutzer benachrichtigt werden, wenn der Hund besonders aktiv ist.

Einzelnachweise

  1. https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf
  2. https://www.raspberrypi.org/blog/raspberry-pi-zero/
  3. http://www.eecs.harvard.edu/~konrad/projects/motetrack/
  4. https://github.com/switchdoclabs/iBeacon-Scanner-/blob/master/blescan.py
  5. http://www.tornadoweb.org/en/stable/