Abrufen der Position von einem Beschleunigungsmesser auf einem Android-Telefon

Ich weiß, dass die zweimalige Integration der Beschleunigung mir die Position gibt (Beschleunigung -> Geschwindigkeit -> Position), aber wie kann ich das alles tun, wenn ich nur eine Reihe von Datenpunkten habe (z. B.: 1 Sekunde = einige # m / s ^2); Wie kann ich diese Datenpunkte nehmen und integrieren?

Hat das etwas mit numerischer Integration zu tun ?

Ja, auf jeden Fall: Die reine Integration von Daten ist gefährlich aus den Gründen, die in meiner Antwort angegeben und durch die Antwort von George GOrdon praktisch veranschaulicht werden.

Antworten (3)

Selbst wenn Sie auch Gyroskope haben, werden die Fehler von ihnen und von den Beschleunigungsmessern zu groß sein, wenn sie über einen sinnvollen Zeitraum integriert werden, und die Ergebnisse für die Position werden große Fehler aufweisen.

Was Sie konstruieren würden, ist ein Trägheitsnavigationssystem (INS). Dies erfordert hochpräzise Instrumente, wie Sie sie im INS finden, das in Militär- und anderen Flugzeugen verwendet wird. Ein genaues INS ist viel größer, als man in ein Smartphone stecken könnte – sogar in die lächerlich großen, die sie heutzutage vermarkten!

Sogar ein INS nach Militärstandard weist Fehler auf und seine Daten werden normalerweise mit GPS-Daten gemischt, um ein hochpräzises und robustes Navigationssystem bereitzustellen. Dieses integrierte System wird auch in Verkehrsflugzeugen verwendet.

Ich möchte eine andere Art und Weise hinzufügen, um die Antwort von George S. Gordon zu formulieren . Dies ist eine hervorragende praktische Möglichkeit, um zu sagen, dass die reine Integration einer Zeitreihe eine gefährliche Sache sein kann, da die Varianz des absoluten Fehlers bei ausreichender Zeit wird jeden positiven Wert übertreffen, egal wie groß . Damit veranschaulicht seine Antwort einen Punkt, der für die Datenverarbeitung und die Experimentalphysik von erheblicher Bedeutung ist.

Dies bedeutet, dass Ihre Ergebnisse abhängig von Ihrer Anwendung nur für eine begrenzte Zeit nützlich sind, wonach Sie Ihre Berechnung irgendwie neu kalibrieren müssen, indem Sie die Kenntnis der Position verwenden, die Sie aus einer unabhängigen Messung erhalten haben.

Zur weiteren Veranschaulichung: Jeder allgemeine Datenverarbeitungsalgorithmus, der auf eine Zeitreihe angewendet wird, bedeutet oft, dass Sie Ihr Ergebnis effektiv durch eine Wiederholungsbeziehung berechnen; Bei der k T H Schritt schätzen wir unser "Ergebnis" Y ( k ) aus unseren Rohdaten X ( k ) Wo X Und Y sind im Allgemeinen Spaltenvektoren:

(1) Y ( k + 1 ) = F ( Y ( k ) , X ( k ) )

Wo F : R N × R N R N ist eine allgemeine nichtlineare Funktion. In Wirklichkeit gibt es Lärm N ( k ) den Rohdaten hinzugefügt, sodass Sie stattdessen Folgendes berechnen:

(2) Y ~ ( k + 1 ) = F ( Y ~ ( k ) , X ( k ) + N ( k ) )

Manchmal, und Sie sollten immer bestrebt sein, Ihre Datenverarbeitung so zu gestalten, dass dies so ist, wenn Sie können, kann die oben genannte Wiederholung stabil sein . Das bedeutet, egal wie viele Schritte Sie in die Datenverarbeitung gehen, die Varianz des absoluten Schätzfehlers Y ~ Y bleibt begrenzt . Wenn unser Schätzer beispielsweise eine lineare Wiederholungsbeziehung ist:

(3) Y ( k + 1 ) = A Y ( k ) + B X ( k )

Wo A eine quadratische Matrix ist, deren jeder Eigenwert streng innerhalb des Einheitskreises auf der komplexen Ebene liegt, dann ist die Fehlervarianz N ~ T C T C N ~ Wo

(4) C = B + A B + A 2 B + A 3 B +

Und N ~ ist ein Vektor von Rauschstandardabweichungen, so dass die Varianz gegen den endlichen Wert konvergiert N ~ T B T ( ( ich D A ) 1 ) T ( ich D A ) 1 B N ~ . Wir müssen unseren Schätzer in diesem Fall NIE neu kalibrieren, wenn wir mit dieser begrenzten Varianz zufrieden sind.

Aber in Ihrem Fall ist dies nicht der Fall. Du machst eine doppelte Integration. Ihre diskretisierten Zustandsgleichungen lauten:

(5) v ( k ) = v ( k 1 ) + A ( k ) Δ X ( k ) = X ( k 1 ) + v ( k ) Δ

Wo A , v , X sind natürlich Beschleunigung, Geschwindigkeit und Position und Δ Ihr Diskretisierungsintervall. Der A ( k ) sind deine "Rohdaten" und dein Schätzer ist wie in Gleichung (3) mit A = ich D Und B ( k ) = ( 1 1 ) Δ A ( k ) . Sie können sehen, dass die Reihe (4) unbegrenzt wächst, daher die Notwendigkeit einer Rekalibrierung in regelmäßigen Abständen.

Theoretisch sind diese Berechnungen möglich. Aber es wird durch die Tatsache kompliziert, dass jeder der drei Beschleunigungsmesser (je einer in einer Achse senkrecht zu den anderen beiden) ständig seine Ausrichtung ändert. Sie könnten die Orientierung auf ähnliche Weise mit Daten von elektronischen Kreiseln verfolgen. Ich bin mir nicht sicher, ob Android-Geräte Gyros enthalten. Sie sind auch durch die Auflösung Ihrer Daten begrenzt, und Fehler würden sich ziemlich schnell einschleichen und die Genauigkeit für relativ kurze Zeiträume einschränken.