Berechnen Sie die Geschwindigkeit vom Beschleunigungsmesser

Ich versuche, meinen Beschleunigungsmesser auf meinem Mobilgerät (Smartwatch, um genau zu sein) zu verwenden, um die Armschwunggeschwindigkeit einer Person zu berechnen.

Die vom Beschleunigungsmesser zurückgegebenen Daten sind in m / s 2 .

Da die Beschleunigung eines Personenarms nicht konstant ist, kann ich die Gleichung nicht verwenden v0 + at, um die Geschwindigkeit zu berechnen.

Ich war noch nie gut in Physik, also wie berechne ich Geschwindigkeit mit unterschiedlicher Beschleunigung?

Sie müssen ein numerisches Integral berechnen. In seiner einfachsten Form ist das nur eine Summe der Beschleunigungsabtastwerte multipliziert mit dem Zeitschritt. Allerdings misst Ihr Beschleunigungsmesser die Beschleunigung entlang dreier Achsen, die sich relativ zu einem tatsächlichen physischen Bezugsrahmen drehen. Außerdem kann der Beschleunigungssensor nicht zwischen Schwerkraft ( g z ) und eine Beschleunigung von 1g in Richtung Boden. Das Kompensieren dieser Dinge und der Fehlerkomponenten des Beschleunigungsmessers ist ein schwieriges Rechenproblem.
@CuriousOne Mir ist klar, dass es Fehlerspannen geben wird, also suche ich nicht nach etwas sehr Genauem, ich werde den Benutzer wissen lassen, dass es sich um eine geschätzte Geschwindigkeit handelt
Das Problem besteht nicht in kleinen Fehlern, sondern in einem zehnmal größeren Signal, das von der Ausrichtung Ihres Geräts abhängt und das überlagert wird, was Sie zu messen versuchen. Wenn Sie nicht bereits Code haben, der dies korrigiert, ist das Problem ziemlich schwierig.
@CuriousOne - ist g ein Problem? - Wenn ich in einem Aufzug nach unten fahre, spürt mein Bauch die Abwärtsbeschleunigung, auch wenn sie weniger als beträgt g . Ich denke, der Beschleunigungsmesser im Telefon sollte das auch fühlen können. Was denkst du?
@tom: Das Problem ist nicht, dass der Beschleunigungsmesser die Gravitationsbeschleunigung nicht messen kann, das Problem ist, dass er den Unterschied zwischen der Gravitationsbeschleunigung und einer tatsächlichen Beschleunigung im Trägheitssystem, in dem die Messung durchgeführt werden soll, nicht erkennen kann. Je tiefer Grund dafür ist, dass die Erdoberfläche KEIN Inertialsystem ist, wir tun nur gerne so. Und wenn Sie sich die Fehlerausbreitung einer konstanten Beschleunigung von einem g ansehen, die vektoriell einer kleinen (0,01-0,1 g) Beschleunigung überlagert ist, an der wir normalerweise interessiert sind, sind die resultierenden Fehler enorm.
@CuriousOne danke für die Antwort, interessanter Punkt - ich frage mich, ob das zu pessimistisch ist, aber ich denke, der beste Weg, dies herauszufinden, wäre, es auszuprobieren und zu sehen, ob die Geschwindigkeit zurückgeht, wenn das Telefon bewegt und wieder zur Ruhe gebracht wird Null oder nicht.
@tom: Ich habe nicht versucht, pessimistisch zu klingen, ich gehe lediglich auf die eigentliche Herausforderung ein. Ich bin mir ziemlich sicher, dass man einen sehr vernünftigen Job machen kann, wenn das Handy über hochwertige Hardware verfügt, was eher für iPhones als für Android-Hardware gilt. Ich habe dies vor einiger Zeit auf Android-Telefonen versucht und bin sowohl auf der Hardware- als auch auf der Softwareseite auf sehr hässliche Probleme gestoßen. Allerdings habe ich mich nicht sehr angestrengt (ca. eine Woche Vollzeit). Ich bin sicher, dass jemand, der sich wirklich darum kümmert und mehrere Monate Forschung und Entwicklung investiert, es einigermaßen gut zum Laufen bringen kann.
@CuriousOne - wieder interessant. Wenn sich die Technologie verbessert, wird es vielleicht bald auf Android realistisch sein ... danke für Ihre Einsicht.
@tom: Es ist weniger ein Technologie- als vielmehr ein Wirtschafts-/Lizenzierungsproblem. Es gibt zu jedem Zeitpunkt nicht mehr als eine Handvoll vollständig charakterisierter iPhone-Designs, über die Apple die volle Kontrolle hat. Die Android-Plattform hingegen besteht aus Tausenden von Geräten ohne feste technische Anforderungen an die Beschleunigungsmesser, außer dass sie oben von unten unterscheiden können. Das merkt man leider. Allerdings soll es auf dieser Seite um Physik gehen. Wir sollten diese Diskussion hier nicht führen.

Antworten (2)

Sie müssen die Beschleunigung integrieren, um die Geschwindigkeit zu erhalten.

v ( t ) = t = 0 t a . d t

Es gibt eine Reihe von Möglichkeiten, dies numerisch zu tun.

Ich gehe davon aus, dass Sie diese Messwerte regelmäßig mit einem Abstand von erhalten δ t , zum Beispiel δ t = 100 m s oder sowas ähnliches.

Das geht am einfachsten

v ( t ) = v ( 0 ) + a × δ t

wo v ( t ) ist die Geschwindigkeit zur Zeit t . aber es gibt raffiniertere Möglichkeiten, dies zu tun - ich werde sie hier nicht wiederholen, aber Sie möchten sich vielleicht die Simpson-Regel ansehen, die hier beschrieben wird .

Das Problem wird dadurch kompliziert, dass die Geschwindigkeit dreidimensional ist – Sie müssen also in jede der drei Dimensionen x, y und z getrennt integrieren.

Es hängt davon ab, wie das Telefon Ihnen die Informationen über die Beschleunigung gibt, aber wenn Sie es bekommen a x , a j und a z in regelmäßigen abständen dann kannst du folgendes tun...

vx += ax * dt;
vy += ay * dt;
vz += az * dt;

Wenn Sie die Beschleunigung als rohe Zahl und Winkel erhalten, müssen Sie von Polarkoordinaten in xyz-Komponenten umwandeln, um sie addieren zu können.

Gesamtgeschwindigkeit, | v | ist natürlich gegeben durch | v | = v x 2 + v j 2 + v z 2

Ich würde natürlich versuchen, damit anzufangen v = 0

Curious One, wirft einen wirklich interessanten Punkt auf g - Der beste Weg, dies zu testen, besteht darin, es zu codieren und auszuprobieren - Schütteln Sie das Telefon und sehen Sie, ob die Geschwindigkeit auf Null zurückgeht, wenn es nach dem Schütteln oder Bewegen in Ruhe ist ....

... können Sie Ihre Ergebnisse posten, wenn Sie dies tun und es ausprobieren?

Ein weiteres Problem ist das Verdrehen des Telefons und des Beschleunigungsmessers – dies würde erfordern, dass Sie über Winkelbeschleunigung usw. nachdenken, aber die hier skizzierten Grundprinzipien wären dieselben, wenn Sie über Winkel nachdenken müssten.

Ja, die Informationen kommen sehr schnell, ungefähr 20 Abtastungen alle 1000 ms. Die Informationen vom Sensor haben die Form von a x , a j , a z . Ich habe bereits einige Tests durchgeführt, um zu sehen, wie viel Drift im Sensor vorhanden ist, wenn er still steht, und es gibt eine ziemliche Drift. Ich werde eine Art Kalibrierung vornehmen, um zu versuchen, das Rauschen herauszufiltern

Wenn Sie also die vertikale Beschleunigung numerisch integrieren möchten, müssen Sie 1 g von der vertikalen Beschleunigung subtrahieren, die Sie vom Beschleunigungsmesser messen

Warum musst du 1g abziehen?
Weil 1g keine "sichtbare" Geschwindigkeit erzeugt, aber wie oben gesagt, kann der Beschleunigungsmesser nicht zwischen Schwerkraft und anderen Beschleunigungen unterscheiden. Sie subtrahieren also 1 g in dem Wissen, dass jede andere Beschleunigung, abgesehen von dieser, eine tatsächliche Geschwindigkeit erzeugt hat, die in eine Richtung zeigt: Wenn die gemessene Beschleunigung weniger als 9,8 beträgt, ist die Geschwindigkeit negativ, zeigt also zum Boden, wenn sie mehr als 9,8 beträgt es wird eine positive Geschwindigkeit sein, die zur Decke/zum Himmel zeigt. (Herkömmlicherweise zeigt der 1g-Vektor vom Boden zur Decke). hoffe ich habe mich klar genug ausgedrückt!