Hallo,
ich versuche derzeit mit dem MPU6050 verschiedene Gesten zu erkennen.
Einmal die Rotation und die Bewegung entlang der Achsen. Die Kombination
beider Sachen bereitet mir jedoch die meisten Probleme.
Die Sensorwerte auszulesen, skalieren usw. war bisher kein Problem;
Diese Werte richtig zu verwenden jedoch schon.
Folgende Ansätze für die Rotation hatte ich bereits schon probiert,
jedoch endeten alle im selben Misserfolg:
- Rotation/Neigung anhang einer Winkelberechnung zu ermitteln
- Neutralposition (Acceleration auf z-Achse mit ungefähr 9,81) und mit
Hilfe des Gyroskopes erkennen in welche Richtung man rotiert, danach
wieder in die Neutralposition zu gehen, um weitere Rotationen zu
erkennen
- Neigung anhand des Wechsels der Beschleunigung (z sinkt, x steigt)
Verbinde ich jedoch nun die Ansätze mit einer Beschleunigungserkennung
entlang bspw. der x-Achse tritt folgendes Problem auf:
Bspw: Eine Bewegung nach rechts wird erkannt, wenn z ungefähr 9,81
beträgt und x einen steigenden Wert hat
Funktioniert soweit, aber: Neige ich den Sensor, steigt mein
Accelerator-Sensorwert für die X-Achse und der für die z-Achse sinkt,
dieser jedoch nicht schnell genug. Dies interpretiert mein Programm
ebenso als Rechtsbewegung, da halt Z weiterhin nahe der 9,81 ist und X
ansteigt.
Sieht jemand eine Möglichkeit dies zu unterbinden, oder hätte einen
Vorschläg wie ich die Sensorwerte anders interpretieren könnte?
Würde mich sehr freuen!
Grüße,
Alexander