Sensoren Android

Peer Wagner

Magnetfeldsensoren

Für die Sensorik gilt es zunächst einige Gegebenheiten zu klären. Wichtig ist dabei als erstes das verwendete Koordinatensystem der Smartphones, ohne das keine vernünftige Beschreibung möglich ist. Das unten stehende Bild zeigt ein Smartphone mit den drei Raumachsen eingezeichnet. Der Referenzrahmen für die Achsen ist der Bildschirm des Smartphones. Die Achsen bilden ein Rechtssystem, in der die x-Achse horizontal liegt und nach rechts zeigt, die y-Achse liegt dann vertikal und zeigt nach oben. Die z-Achse ist damit festgelegt und zeigt aus dem Bildschirm nach vorne hinaus. Das Koordinatensystem ist dabei immer nur durch den Standard-Ausgangszustand bestimmt und die Achsen werden nicht neu definiert, sollte sich der Bildschirm bei einer Drehung des Gerätes ebenfalls drehen. Der aufmerksame Leser wird auch festgestellt haben, dass diese Definition der Achsen nicht wie in einer 2D-API ist, sondern den Ursprung in der "Mitte" des Grätes hat. Für alle 2D-API Zugriffe gilt wie auch bei sonstigen Angaben in Bildschirmkoordinaten, dass der Ursprung in der linken oberen Ecke des Bildschirms sitzt.

Abb. 1: Koordinatensystem eines Handies
Das neben stehende Bild1 zeigt die Koordinatenachsen, wie sie für die Lageberechnung bei einem Android-Smartphone festgelegt sind. Das Koordinatensystem wird in Referenz zum Bildschirm festgelegt und bildet ein Rechtssystem.

Wie der Name Magnetfeldsensor bereits verrät, wird mit ihnen das lokale Magnetfeld gemessen. Für den Laien ist ein Magnetfeld beziehungsweise seine Stärke eher eine sehr abstrakte Größe, da sie im Alltag kaum an Bedeutung zu haben scheint. Dem ist allerdings nicht so. Ein Magnetfeld beziehungsweise die magnetische Flussdichte, die ein Maß für die Stärke ist, wird allgemein in der Einheit Tesla [T] gemessen, wobei das Erdmagnetfeld in etwa 30-60 µT beträgt. Jedes elektrisch betriebene Gerät erzeugt oftmals unbeabsichtigt ein magnetisches Feld. Dies geht von Fernsehern über den Toaster oder auch ein Ladegerät eines Smartphones bis hin zu Hochspannungsleitungen, Autos und auch Eisenbahnen. Es gibt also heutzutage kaum noch ein Umfeld das frei von elektromagnetischer Strahlung ist. Das Problem dabei ist, dass alle diese Quellen durchaus in die Größenordnung des Erdmagnetfeldes gelangen können. Auf einer Internetseite der TU Graz zum magnetischen Feld lassen sich sehr schön die Größen solcher Einflüsse mit dem Erdmagnetfeld vergleichen.

Die Funktion des Kompass wird demnach von vielen verschiedenen äußeren Quellen beeinflusst, welche auch noch in Größenordnungen liegen, die dem Erdmagnetfeld, an dem sich der Kompass eigentlich ausrichten sollte, gleich kommen. Es ist also wenig verwunderlich, dass die Sensorwerte der Magnetfeldsonsoren nicht immer die zuverlässigsten sind.

Beschleunigungssensoren

Die Beschleunigungssensoren in einem Smartphone sind ähnlich den Megnetfeldsensoren. Es handelt sich jedoch nicht um Gyrosensoren, sondern tatsächlich "nur" um einen drei Achsen Beschleunigungssensor, denn die Beschleunigung wird entlang der gleichen Achsen wie das Magnetfeld gemessen. Auf Grund dieser Gegebenheit ergibt sich eine Besonderheit, die man bedenken sollte, wenn man mit den Werten der Sensoren arbeitet. Und zwar ist dies die Lage des Sensors im Gerät. Wie das oben stehende Bild zeigt, liegt der Ursprung des Koordinatensystems im Mittelpunkt des Smartphones. Dies ist aber natürlich nur eine Annahme und kann in keinem Fall von allen Sensoren des Smartphones erfüllt werden. Diese Abweichung vom idealen Mittelpunkt des Gerätes kann dazu führen, dass Drehungen des Smartphones eine Scheinkraft auf die Sensoren auswirken, die jedoch keinesfalls gewünscht ist. Für die Detektion von Drehungen ist somit ein Gyrosensor unerlässlich. Anders sieht es bei der Bestimmung der Lage des Gerätes aus. Hierbei wird nicht die Drehung selbst, sondern der momentane Zustand des Gerätes erfasst und mit Hilfe der Magnetfeldsensoren in eine Lagebeschreibung umgerechnet. Bevor wir uns jedoch der Lageberechnung zuwenden soll auf einen weiteren Punkt hingewiesen werden. Beschleunigung ist eigentlich als Änderung der Geschwindigkeit eines Gegenstandes definiert. Oder in einer Formel ausgedrückt:

Da wir uns jedoch zu jedem Zeitpunkt im Gravitationsfeld der Erde befinden, scheint ein ruhendes Smartphone mit der Gravitationskonstanten g=9,81m/s^2 beschleunigt zu werden. Es wird somit tatsächlich folgendes von den Sensoren gemessen:

Aus dieser Beschreibung ergibt sich, dass man den Vektor für die Gravitation am besten durch die Verarbeitung der Sensorwerte mit einem Tiefpassfilter erhält. Dies hat zusätzlich den Vorteil, dass ungewollte 'Ausreißer' aus den Werten gemittelt werden und so eine einigermaßen zuverlässige Messung stattfinden kann. Die Anwendung eines Tiefpassfilters wird noch einmal ausführlicher bei den Messungen der Sensortoleranzen beschrieben.

Lageberechnung

Nachdem die Grundlagen der Sensorik für Magnetfeld- und Beschleunigungsberechnung erläutert wurden, lässt sich nun die eigentliche Lageberechnung beschreiben. Auch wenn man oftmals von Lagesensoren spricht, so sind solche Art der Sensoren in kaum einem modernen Smartphone tatsächlich verbaut. Vielmehr wird die Lage aus vorhandenen Magnetfeldsensoren und Beschleunigungssensoren gewonnen. Dies mag darin begründet sein, dass so gut wie jedes Smartphone inzwischen eine Kompassfunktionalität liefert. Diese Funktionalität setzt selbstverständlich die Anwesenheit von Magnetfeldsensorik voraus. Die Verwendung von Accelerometern ist dann nur noch ein kleiner Schritt. So erschließen sich mit diesen größere Einsatzmöglichkeiten als es mit nur auf die Lage beschränkten Sensoren der Fall wäre. Aus diesem Grund wurde in den beiden vorangegangenen Punkten zuerst einmal getrennt auf die beiden Sensorarten und ihre Verwendung eingegangen.

Auch für die Lageberechnung muss als erstes wieder einmal auf die verwendeten Koordinatensysteme eingegangen werden. Da bei der Bestimmung des Magnetfeldes oder der Beschleunigung bisher immer nur der Vektore relativ zum Gerät wichtig war, ist nun die Ausrichtung des Gerätes relativ zur Beschreibung der Vektoren innerhalb eines Weltkoordinaten-/Referenzsystems nötig. Dieses Referenzsystem ist für die Beschreibung der Rotationsmatrix R des Systems verschieden von der Beschreibung der Rotation des Gerätes zu einem Referenzsystem. Die nachstehenden beiden Bilder zeigen beide Systeme.

Das neben stehende Bild2 zeigt die Koordinatenachsen, wie sie für die Lageberechnung als Referenz-Koordinatensystem festgelegt sind. Die Achsen beschreiben dabei ein orthonormales Rechtssystem auf der gedachten Erdoberfläche. Tangential nach Norden zeigend befindet sich die y-Achse, senkrecht auf der Oberfläche in den Himmel zeigen die z-Achse und auf Grund der Definition als Orthonormalensystem die x-Achse ebenfalls tangential nach Osten zeigend.
Abb. 2: Weltkoordinatensystem
Abb. 3: Referenzsystem
Das neben stehende Bild3 zeigt die Koordinatenachsen, wie sie für die Orientierungsberechnung festgelegt sind. Sie sind um 180° gedreht zum eigentlichen Referenzsystem für die Rotationsmatrix. Zusätzlich zu sehen sind die Beschreibung der Werte. Der Azimuth ist die Drehung des Smartphones um die z-Achse und gibt damit den Winkel zum geomagnetischen Norden an, der Pitchwinkel ist der Anstellwinkel des Gerätes als Drehung um die x-Achse und der Roll die seitliche Drehung um die z-Achse.

Alle Winkel aus der Berechnung der Orientierung werden im Radialmaß gespeichert, wobei die übliche Umrechnung gilt:

Die so errechneten Werte für die Orientierung liegen in verschiedenen Intervallen. Der Azimuth läuft von -pi bis pi, der Pitch von -pi/2 bis pi/2 und der Roll von -pi bis pi. Diese Werte stellen auch einen der großen Stolpersteine dar, da die Intervalle in denen die Winkel laufen nur unzureichend und an der falschen Stelle in der Android-API dokumentiert sind. Für die von uns entwickelte Applikation ist somit der Azimuth für den Kompass zuständig, während über die Pitch- und Rollwinkel definiert wird in welche Ansicht der Benutzer wechseln möchte.

Global Positioning System

Vom Global Positioning System, kurz GPS, hat bestimmt jeder schon einmal etwas gehört. Es handelt sich bei diesem System um ein satellitengestütztes Ortungssystem, das mittlerweile weltweit in der zivilen Technik Anwendung findet. Zur Ortung eines GPS-Empfängers werden in der Regel vier Satelliten benötigt. Dies erklärt sich dadurch, dass drei Satelliten für die Laufzeitmessung, also die eigentliche Entfernungsbestimmung benötigt werden, und ein weiterer, der eine exakte Uhrzeit sendet. Eine exakte Uhrzeit ist deshalb nötig, da sonst die Laufzeitmessung falsche Werte ergibt und sich alleine durch wenige Sekunden Unterschied die Genauigkeit drastisch reduziert. Derzeit sind in etwa Genauigkeiten von 10 Metern möglich, wobei die vom Militär eingesetzte Technik sogar wenige Zentimeter erlaubt. Für eine Vertiefung eignet sich der Wikipedia Artikel, der die verschiedenen Techniken von und Einflüsse auf das GPS sehr genau erklärt.


1 http://developer.android.com/reference/android/hardware/SensorEvent.html - Android API, Beschreibung der SensorEvent Klasse

2 http://developer.android.com/reference/android/hardware/SensorManager.html#getRotationMatrix%28float[],%20float[],%20float[],%20float[]%29 - Android API, Beschreibung des Koordinatensystems und der Rotationsmatrix in der SensorManager Klasse

3 http://developer.android.com/reference/android/hardware/SensorManager.html#getOrientation%28float[],%20float[]%29 - Android API, Beschreibung des Koordinatensystems und der Orientierungsberechnung in der SensorManager Klasse


Page last modified on March 21, 2011, at 05:33 PM