Wie klassifiziere ich Beschleunigungsmesserdaten?


7

Ich versuche mithilfe des Beschleunigungsmessers des iPhone festzustellen, ob ein Auto beschleunigt oder gebremst hat.

In der folgenden Abbildung habe ich die gesammelten Daten aufgezeichnet. (Um die Daten zu sammeln, lag das Telefon flach im Auto und zeigte auf die Oberseite des Telefons nach vorne).

Das Problem, das ich jetzt habe, ist, dass ich visuell deutlich sehen kann, wo das Auto beschleunigt und wo es gebremst hat (siehe unten). Aber ich kann nicht herausfinden, wie man das programmatisch macht.

Grundsätzlich möchte ich wissen, wie oft ein Auto in einem bestimmten Zeitfenster gebremst oder beschleunigt hat. (Fenstergröße ca. 10-30 Sekunden).

Jede Hilfe wäre sehr dankbar.

Danke im Voraus! Beschleunigung |  Bremsen eines Autos


Was ist das Gerät auf der x- -Achse?
Gilles

Die Einheit der x-Achse ist die Zeit. Ich habe mit 60 Hz abgetastet. Die durch 60 geteilten Werte auf der x-Achse würden also Sekunden darstellen.
Riik

Okay, es ist die Anzahl der Proben. Eine Möglichkeit wäre, ein Schiebefenster mit der von Ihnen vorgeschlagenen Größe zu erhalten und Bedingungen für den Mittelwert und die Varianz der gesammelten Proben festzulegen, falls erforderlich, Bedingungen für Nulldurchgangsintervalle hinzuzufügen. Wenn Sie die Analyse jedoch ohne die Kurzzeitfenster durchführen, kann die Anzahl der ansteigenden Flanken des Aktivitätssignals (blaues Signal) nicht angeben, wie oft Sie beschleunigt haben, und fallende Flanken zum Brechen?
Gilles

1
@PaulR danke für die Klarstellung! Ich habe die Frage gerade entsprechend aktualisiert.
Riik

2
OK, wenn Sie die Beschleunigungsmesserdaten verwenden, können Sie im Prinzip nur das Vorzeichen der Beschleunigung verwenden (- zum Bremsen, + zum Beschleunigen). Das Problem ist das Geräusch. Wahrscheinlich können Sie das SNR mit einem Savitzky Golay-Filter ausreichend erhöhen .
Matt L.

Antworten:


1

Sie sollten eine STFT für das Beschleunigungsmessersignal in Betracht ziehen. Auf diese Weise können Sie die Frequenz des Signals visualisieren. Wenn Sie die Frequenz der Bremsen bestimmen können, sollten Sie in der Lage sein, einen Schwellenwert für diese bestimmte Bremsfrequenz festzulegen und bei jeder Überschreitung zu zählen. Sie können auch messen, wie lange das Bremsen dauert.

Wie verarbeiten Sie Ihr Signal? Matlab und Python verfügen über die Specgram-Funktion, mit der Sie die tatsächliche Frequenzbremsung anzeigen können. Von dort aus können Sie die Bremsfrequenz sowie einen Schwellenwert bestimmen.


1

Wenn die Bremsen betätigt werden, kehrt die Beschleunigung entlang der Bewegungsrichtung das Vorzeichen um. Wenn Sie Ihr Telefon beispielsweise so positionieren, dass die z-Achse des Beschleunigers in Richtung der Schwerkraftachse (dh zur Erde gerichtet) liegt, beträgt die Beschleunigung entlang der z-Achse -g. Wenn andererseits die negative z-Achse mit g ausgerichtet ist, misst die z-Achse des Beschleunigungsmessers + g. Dies ist analog zu dem Szenario, in dem ein Auto beschleunigt und bremst, obwohl die Größe der Verzögerung etwas geringer ist als die Beschleunigung. Sie können beginnen, indem Sie die Referenzachse als g-Achse definieren und die anderen 2 Achsen basierend auf der Richtung der geringsten und maximalen Beschleunigung mithilfe einer Rotationsmatrix definieren. Grundsätzlich ändern Sie die Referenzachse von den x-, y- und z-Koordinaten, die auf der Ausrichtung des Telefons basieren, zu einem stationären g, a, s-Referenzsystem (wobei g die Schwerkraftachse ist, a ist die Richtung der maximalen Beschleunigung und s die stationäre Achse). Sie können auch ein Gyroskop verwenden, um diese Achsendrehung zu erreichen, wie in beschriebendiese Seite. Wenn Sie den Beschleunigungsmesser Daya in den transformierten Achsen anzeigen können, können Sie Beschleunigungs- und Verzögerungsbereiche basierend auf dem Signal von nur einer Achse einfach klassifizieren, unabhängig von der Ausrichtung des Telefons, indem Sie nach Nulldurchgängen suchen.


1

Sie sollten die Ausrichtung des Telefons kennen, da das Achsensignum mit der Fahrzeugbewegung übereinstimmen muss. Unter der Annahme, dass das Achsensignal korrekt ist, können Sie filterdas Beschleunigungsmessersignal eingeben lowpass, um die Hochfrequenz zu reinigen, noiseund dann das Signalsignal anzeigen, um festzustellen, ob es sich um eine Unterbrechung handeltein(tich)<0 oder eine Beschleunigung ein(tich)>0.

Sie sollten beispielsweise versuchen, mit einem butterworthTiefpass zweiter oder dritter Ordnung mit einer niedrigen Frequenz zu filtern10H.z oder auch weniger, sollten Sie einige Schnittfrequenzen ausprobieren, die in der Grafik angezeigt werden.

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.