iOS/Android -Geräteorientierung (Tonhöhe, Gier, Rollen). Ist es besser mit Beschleunigungsmesser oder Gyroskop?

StackOverflow https://stackoverflow.com/questions/9304160

Frage

Ich recherchiere jetzt ein bisschen und jetzt muss ich mich entscheiden, welchen Weg ich gehen soll.

Meine Anforderungen: Sie müssen die Ausrichtung des Geräts relativ zur wahren Überschrift (geografischer Nordpol, nicht zum Magnetpol) kennen. Dafür muss ich Kompass verwenden und jetzt muss ich entscheiden, welches andere Ding, das Beschleunigungsmesser oder ein Gyroskop.

Da dies eine neue Sache für mich ist, habe ich die letzten Stunden damit verbracht, Stapel und Wikipedia -Artikel zu lesen, und trotzdem bin ich verwirrt.

Ich ziele beide Plattformen (iOS und Android) und entwickle sie mit Appcelerator Titanium. Mit Titan kann ich leicht die Werte von Accelerometer (X, Y, Z) und True Heading erhalten.

Da das iPhone 3GS kein Gyroskop hat, kann ich es auf diesem Gerät nicht verwenden. Neuere iPhones und Android -Geräte haben es.

Die Fragen sind also:

  1. Ist der XYZ- und Compas -Daten von Accelerometer ausreichend, um die Geräte -Tonhöhe, Rollen und Gier zu berechnen? Aber es muss genau sein.

  2. Ist es genauer, Trueheading von Compas zu verwenden und die Werte von Gyroscope anstelle von Beschleunigungsmesser zu verwenden?

  3. Ist es klug, sowohl Beschleunigungsmesser als auch Gyroskop mit Trueheading zu kombinieren?

Wenn ich die erste Straße nehme, muss ich kein Titanmodul schreiben, um die Gyroskop -Daten abzurufen, da ich nur Beschleunigungsmesserdaten enthält und ich diese auch auf dem 3GS -iPhone verwenden kann.

Wenn ich die zweite Straße nehme, muss ich zwei Module (iOS und Android) schreiben, um mir Gyroscope -Daten zu holen, und ich verliere 3GS -Unterstützung.

Wenn ich die dritte Straße nehme, muss ich wieder Titanmodule schreiben und verliere 3GS -Unterstützung.

War es hilfreich?

Lösung

Wenn Sie keine riesige installierte Basis von 3GS -Benutzern haben, aber eine neue App schreiben, kümmern Sie sich nicht um alte Hardware. IMO Es macht aus wirtschaftlicher Sicht keinen Sinn, sondern wird Ihre Anzahl von Alternativen in der Systemarchitektur verkleinern.

Was Sie suchen, wird als Sensorfusion bezeichnet. Dies erfordert folglich schwere Mathematik wie Kalman -Filter usw. Die gute Nachricht ist, dass es auf dem iPhone (Kernbewegung) und Afaik auch auf Andriod (klingt so, als wäre es in Sensorfusion auf Android implementiert?).

Abgesehen vom Namen weiß ich nicht viel über Appcelerator und kann daher nichts über eine einfache Möglichkeit sagen, ihn zu verwenden. Wenn nicht auf einer abstrakten Ebene implementiert, nehme ich an, dass AppCelerator Ihnen die Möglichkeit bietet, native API -Anrufe durchzuführen. Daher sollten Sie in der Lage sein, die native API einzubetten (nachdem Sie ungefähr einige Zeit gespielt haben ;-).

Im Allgemeinen hängt es von Ihren Anforderungen ab. Je schneller Sie ein genaues Ergebnis benötigen, desto mehr würde ich reale Sensorfusion einschließlich aller 3 Sensoren empfehlen. Wenn Sie mit einer langsameren Reaktionszeit in Ordnung sind, wird eine Kombination aus Kompass- und Beschleunigungsmesser in Ordnung sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top