Hallo zusammen, ich möchte mit einem MPU6050 einfache Gesten erkennen z.B. einfache (lineare) vorwärts Bewegung um (ca. 15 cm). Sowie links, rechts und rückwärts. Zum auslesen der Accelerometer & Gyro Daten verwende ich momentan die i2cdevlib libary: https://github.com/jrowberg/i2cdevlib Die rohen Daten passen soweit (verwende den FIFO buffer), jetzt wollte ich als erstes die Schwerkraft aus den Daten raus bekommen um die reelle Beschleunigung in x y und z Richtung zu erhalten. Hier fangen leider die Schwierigkeiten an. Hab es natürlich erst mal mit den mitteln versucht die in der i2cdevlib libary schon vorhanden sind. Also DMP ausgelesen um die Lage des mpu zu erhalten (als Quaternion) und dann über .dmpGetGravity() die Schwerkraft ermittelt um anschließend mit .dmpGetLinearAccel() die reelle Beschleunigung zu erhalten. Leider ist es so das wenn ich den Sensor im Raum drehe die Beschleunigungswerte weiterhin von der Schwerkraft beeinflusst werden, die funktion dmpGetLinearAccel() scheint also leider nicht das zu machen was sie soll. Hat hier vielleicht jemand die selben Probleme gehabt und kann mir Tipps geben. Bevor ich die Beschleunigung in Geschwindigkeit und dann in Strecke umrechnen kann sollten die werte ja passen. Gruß Matthias
Ich habe zwar noch nicht die DMP-Einheit benutzt, aber für den 9250 habe ich mir das hier mal auf einen SoC portiert: https://github.com/kriswiner/MPU9250 Funktioniert auch ganz gut - nur mein Magnetometer scheint manchmal ein wenig zu spinnen... Tom
Ohne perfekte Orientierung kannst du auch nicht die statisch bestimmte Schwerkraft aus deiner Beschleunigung rausrechnen. Und perfekte Orientierung bekommst du nicht hin, mit entsprechender Kalibrierung von Gyro, Accelerometer und Magnetometer. Ich würde vielleicht versuchen die Gravitation mittels Low-Pass-Filter zu bestimmen und dann von der gemessenen Beschleunigung abzuziehen, kann dir aber nicht genau sagen wie gut diese Approximation in der Realität ist, das ist abhängig von Frequenz, Typ des Accelerometers etc. Besser wäre es, die Orientierung mittels EKF oder UKF (oder Madgwick-Filter) ordentlich zu bestimmen, obwohl ich nicht weiß wie das deine Bibliothek macht. P.S: die Beschleunigung doppelt zu integrieren ist abenteuerlich und wird nicht zu befriedigenden Ergebnissen führen
Schon mal vielen Dank für die Antworten. Ist leider ziemlich ernüchternd :-( Vielleicht hat ja jemand eine andere Idee für mich wie ich mein Projekt am besten umsetzen könnte. Folgendes soll der Sensor können: - Erkennen ober er in x, y oder z Achchse bewegt wurde - Sobald die Bewegung stoppt, Prüfen ob die Bewegung mindestens 15 cm aber maximal 30 cm war (muss nicht sehr genau sein +- 5 cm) und dann wieder neu beginnen zu messen - Und er sollte verkraften das der Sensor bei Bewegung in x, y oder z Richtung eventuell nicht ganz gerade gehalten wird - und schnellere Bewegungen sollten ihm auch nichts ausmachen Gruß Matthias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.