Ich möchte die Beschleunigung (vorwärts und lateral getrennt) mit einem Android-Smartphone messen, um das Fahrverhalten / -stil analysieren zu können.
Mein Ansatz wäre wie folgt:
Kalibrierung (keine Bewegung / erste Bewegung):
Während das Auto stationär ist, würde ich die Größe der Schwerkraft mit Sensor.TYPE_GRAVITY
berechnen und es direkt auf die z-Achse drehen (nach unten zeigend, eine flache Oberfläche vorausgesetzt). Auf diese Weise sollten die Winkel pitch und roll nahe null und gleich den Winkeln des Autos relativ zur Welt sein.
Danach beginne ich mich geradeaus mit dem Auto zu bewegen, um eine erste Bewegungsangabe mit Sensor.TYPE_ACCELEROMETER
zu erhalten und diese Größe direkt auf die x-Achse zu drehen (nach vorne zeigend). Auf diese Weise sollte der Gier Winkel gleich dem Kurs des Fahrzeugs relativ zur Welt sein.
Ausrichtung aktualisieren (während der Fahrt):
Um die Koordinatensysteme während der Fahrt in einer Linie halten zu können, verwende ich Sensor.TYPE_GRAVITY
, um die Roll- und Nicklage des Systems über
wobei A_x, y, z die Erdbeschleunigung ist.
Normalerweise wird der Gierwinkel über Sensor.ROTATION_VECTOR
oder Sensor.MAGNETIC_FIELD
beibehalten. Der Grund dafür ist, dass ich die Anwendung auch in Elektrofahrzeugen verwenden werde. Die hohen Beträge von Volt und Ampere, die von dem Motor erzeugt werden, würden vermutlich die Genauigkeit dieser Sensorwerte beeinträchtigen. Daher ist die beste Alternative, die ich kenne (obwohl nicht optimal), die Verwendung des GPS-Kurses, um den Gierwinkel beizubehalten.
Durch die Anwendung aller oben genannten Drehungen sollte es möglich sein, eine Ausrichtung zwischen den Koordinatensystemen des Smartphones und des Fahrzeugs beizubehalten und mir so die reinen Werte für die Vorwärts- und Querbeschleunigung auf der x- und y-Achse zu geben.
Wenn Sie Zugriff auf den Quellcode des GPS haben, können Sie die Vorwärtsbewegung nicht finden, indem Sie die Entfernung / Zeit vom GPS berechnen?
Wenn das Ziel darin besteht, treibendes Verhalten und Stil zu finden, würde ich mir vorstellen, einen großen Datensatz zu sammeln und dann einen k-Cluster-Algorithmus zu verwenden, um die Daten zu sortieren, gefolgt von lstmRNN (um Vorhersagen zu treffen). (Obwohl dies erfordert, dass Sie Daten von einem großen Satz haben, weiß ich nicht, ob dies möglich ist, noch weiß ich, welche Faktoren Sie in Ihren Datensatz aufnehmen möchten).
Klingt jedoch nach einem interessanten Problem.
Tags und Links java android android-sensors inertial-navigation