Android Orientation Drift
Heute mal ein Beitrag, der lediglich ein (lästiges) Phänomen zeigt, aber leider keine Lösung nennt. Bitte nicht hauen.
Viele moderne Smartphones haben eine Vielzahl von Sensoren. Mein Nexus 4 hat zum Beispiel nicht nur einen Kompass, sondern auch einen Helligkeitssensor, ein Barometer und ein Gyroskop. In diesem Beitrag geht es um den Kompass sowie das Gyroskop.
Sensor API
Android macht es dem Entwickler einfach und abstrahiert die meisten Sensoren (wer es genauer wissen möchte, kann einen Blick in die Doku werfen). So hat man eine Vielzahl von angebotenen Sensoren. Die App Sensor Readout zeigt mir bei meinem Nexus 4 folgende Sensoren an:
- LGE Accelerometer Sensor
- LGE Magnetometer Sensor
- Orientation
- LGE Proximity Sensor
- LGE Light Sensor
- LGE Gyroscope Sensor
- LGE Barometer Sensor
- Gravity
- Linear Acceleration
- Rotation Vector
- Rotation Vector Sensor
- Gravity Sensor
- Linear Acceleration Sensor
- Orientation Sensor
- Corrected Gyroscope Sensor
Nicht alle davon sind echte Sensoren. Viele haben einfach nur unterschiedliche Namen oder sind Kombinationen aus mehreren Sensoren.
Kompass
Oder: Wo ist Norden? Die meisten Leute würden nun vorschlagen, den "LGE Magnetometer Sensor" zu nehmen, da dieser das Magnetfeld misst. Das erzeugt dann etwa sowas:
Ruhig liegend … … oder gleichmäßig gedrehtWie man sieht, sind die Daten ungefiltert, der Kompass würde ohne zusätzliche Glättung zittern. Android bietet nun abstrakte Sensoren, um es dem Entwickler einfacher zu machen. Diese nutzen aber das Gyroskop (so scheint es mir jedenfalls) und das kann ohne Korrektur schnell mal einen Drift bekommen. Zwar wird korrigiert, aber nicht in jeder Situation. (Wem das Ganze noch nicht so recht klar ist: ThinkPad-Nutzer können ihren Trackpoint ganz langsam in eine Richtung bewegen, sodass sich der Mauszeiger nicht bewegt. Wenn man ihn dann loslässt, bewegt sich der Zeiger in die entgegengesetzte Richtung.) Hier ein paar Beispiele:
Und das war es auch schon mit diesem Beitrag. Aufgefallen ist es mir beim Kompass von GPS Status & Toolbox, als ich das Smartphone nach Süden zeigend auf dem Tisch liegen hatte und sich der Kompass langsam drehte. (Apropos Kompass: Selbst nach einer sorgfältigen Kalibrierung zeigt er bei mir fast nie nach Norden. Bei einer Autofahrt ist es besonders schlimm. In Google Maps schaut man dann immer 30-90° in die falsche Richtung.) Eine Lösung, wie man dieses Problem beseitigen kann, habe ich nicht.