Wie kann man die X-Achse richtig messen mit Android Code?

1 Antwort

Grob gesagt:

Das Gyroskop erkennt Rotationen - im dreidimensionalen Raum gibt es drei Achsen um die man rotieren kann:

    float[] values = event.values;
// Movement
float x = values[0];
float y = values[1
l; float z = values[2];


Die Doku schreibt:

The coordinate-system is defined relative to the screen of the phone in its
default orientation. The axes are not swapped when the device's screen
orientation changes.

The X axis is horizontal and points to the right,

 the Y axis is vertical and  points up and 

the Z axis points towards the outside of the front face of the screen

Mit anderen Worten - die Achsen sind nicht fest im Raum sondern beziehen sich auf die aktuelle Ausrichtung des Handys.

Es gibt also KEINE feste Achse die z.B. wie ein Lot immer von oben nach unten (Richtung Erdmittelpunkt) zeigen würde.
Liegt das Handy flach auf dem Tisch wäre das die Z-Achse.

Hält man hingegen das Handy im Hochformat wie ein Bild an die Wand dann würde die Y-Achse nach unten zeigen

Man muss also (je nach Ausrichtung des Handies) alle 3 Werte des Gyroskop berücksichtigen.

Die Werte eines Gyroskop "driften" allerdings im Lauf der Zeit davon - sie sind nur für kurze Zeiträume und auch nur relativ genau..

Um die tatsächliche Ausrichtung des Handys im Raum zu bestimmen sind sie alleine nicht geeignet - dazu eignen sich die Magnetfeldsensoren besser:

http://developer.android.com/guide/topics/sensors/sensors_position.html

Also vereinfacht gesagt.

Um dauerhauft einigermassen präzise zu erkennen wo Norden oder "unten" ist nimmt man diese Sensoren - und um kurzfristige Drehungen schnell berücksichtigen zu können die Werte des Gyroskop.

Je nachdem auf was es mehr ankommt (hohe absolute Genauigkeit aber langsam oder nur relative Genauigkeit aber schnell) muss man das für den jeweiligen Anwendungszweck auch noch "feintunen"

Das ist alles andere als trivial....



Corleonefactory 
Beitragsersteller
 15.03.2016, 20:35

Danke für deine Antwort, ich habe ein 3eck mit welchem ich mich wie bei Doodle jumb von links nach rechts bewege. Gibt es also keine einfache Lösung für mein Problem?

0