Kann ich mit FFT Beschleunigungsmessergesten interpretieren?


10

Ich muss zwei verschiedene Gesten erkennen, die beim Betrachten von Beschleunigungsmesserdaten auftreten. Hier ist ein Run Down (so kurz ich es machen kann):

Nehmen wir an, ein iPhone pendelt hin und her, während es offen bleibt. Der Benutzer kann entweder eine Schwingung (einmal vorwärts oder rückwärts, Geste eins) oder eine kontinuierliche Schwingung für eine beliebige Zeitdauer (Geste zwei) ausführen.

Derzeit enthält mein Code eine Liste der Beschleunigungsmesserdaten (y-Achse) des Geräts aus den letzten 50 Bildern. Jeder Frame dieser Daten wird einem FFT-Algorithmus unterzogen (dieser http://goo.gl/yi3mn ), und dann versuche ich, den angegebenen Frequenzbereich zu interpretieren. Ich habe eine starke Beziehung zwischen der Geschwindigkeit der Schwingungen und der Leistung des mittleren bis niedrigen Bereichs des Frequenzraums festgestellt.

Das Problem ist, dass ich (in Echtzeit, wenn die Bewegung etwas auf dem Bildschirm animiert) erkennen muss, ob die gerade beendete Schwingung eine singuläre Schwingung ist oder eine, die sich in die entgegengesetzte Richtung in eine andere Schwingung fortsetzt. Hier sollte ich darauf hinweisen, dass Beschleunigungsmesser mit Druckplatten arbeiten. Wenn eine Schwingung stoppt, zeigen die Eingangsdaten den entgegengesetzten Wert wie zu dem Zeitpunkt, als die Schwingung durchgeführt wurde. Dies macht es schwierig, einen offensichtlichen Unterschied zwischen einer einzelnen Vorwärtsbewegung und einer doppelten Vorwärts- und Rückwärtsbewegung (am Ende jeder ersten Schwingung) zu erkennen.

Kann jemand vorschlagen, wie ich eine FFT verwenden könnte, um einen genauen Größenwert (oder etwas anderes Nützliches) zu entschlüsseln, mit dem ich den Unterschied zwischen den oben beschriebenen Gesten erkennen kann?

Ich habe die Daten, die ich verwende, in Textdateien aufgezeichnet. Dies sind die Rohdaten (g-Kraftwerte) entlang der y-Achse des Beschleunigungsmessereingangs.

http://pastebin.ca/2108123 zeigt Daten für 2 einzelne Schwingungen (ich halte das Gerät noch am Anfang, Ende und zwischen den beiden Schwingungen).

Geben Sie hier die Bildbeschreibung ein

HINWEIS: Neue Rohdaten mit 20 Schwingungen wurden hochgeladen, aber noch nicht geplottet. http://pastebin.ca/2108387 zeigt Daten für 20 kontinuierliche Schwingungen (ich halte das Gerät noch am Anfang und Ende).

Geben Sie hier die Bildbeschreibung ein


Nachdem ich die Daten nicht selbst gesehen habe, ist mein erster Eindruck, dass dies keine gute Anwendung für eine FFT zu sein scheint. Haben Sie einige erfasste Daten, die Sie entweder im Rohformat oder als Plot veröffentlichen können?
Jason R

Hallo, danke für das Feedback. Wäre nur eine Datei mit jedem Wert chronologisch akzeptabel, mit einem Trennzeichen ','? Ich erhalte ungefähr 60 Werte pro Sekunde. Ich vermute, dass dies auch keine gute Anwendung ist. Vielleicht können wir es aber mit einigen Daten durcharbeiten.
Rykardo

2
Wenn Sie die Rohdaten veröffentlichen, ist es wahrscheinlich, dass jemand sie in ein Diagramm umwandelt und Ihren Beitrag damit bearbeitet.
Jason R

Ok toll. Wird in Kürze einige hochladen.
Rykardo

Das hat viel länger gedauert als ich erwartet hatte. Ich führe das Projekt mit Unity aus, das die Eingabedaten vom Gerät nur mit 60 Bildern / Sekunde empfangen kann. Dies bedeutet, dass ich keine hohe Abtastrate haben kann, aber trotzdem. Ist es das, was Sie mit Ihrem Vorschlag gemeint haben?
Rykardo

Antworten:


2

Wenn ich mir die Daten ansehe, kann ich nicht erkennen, warum Sie FFT für diesen Zweck verwenden möchten (ich kann mich jedoch irren). Nehmen wir an, Sie möchten einzelne oder mehrere Bewegungen basierend auf diesem Datensatz (den Sie angehängt haben) als Methoden erkennen, nach denen ich suchen würde

  1. Etwas in der Richtung der Änderungsrate der absoluten Werte. Erste Ableitung würde gut tun, denke ich.
  2. Wavelet-Transformation vielleicht? Ich kann nicht näher auf seine Nützlichkeit eingehen, bis ich weiß, ob Sie die Position der Spitzen wissen wollen oder nicht.

Wenn Sie nur Einzel- oder Mehrfachschwingungen erkennen möchten, ist FFT meiner Meinung nach keine sehr gute Wahl für die Analyse.


Danke für die Rückmeldung! Ein Freund schlug vor, dass FFT der richtige Weg sein könnte, bevor ich noch nie einen benutzt hatte. Was ich erkennen muss, ist, ob am Ende jeder Schwingung eine neue Schwingung beginnt oder nicht. Die obigen Darstellungen sollten zeigen, warum es schwierig ist. Ich dachte, ich könnte einen Größenalgorithmus verwenden, aber das ist schwierig, da die Leistung / Geschwindigkeit der Schwingungen pro Benutzer unterschiedlich ist.
Rykardo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.