Ich habe einen MPU6050 (3-Achsen-Kreisel, 3-Achsen-Beschleunigung, eingebauter Bewegungsfilter namens DMP) an einer Autoachse verwendet, um den Achswinkel während der Fahrt zu messen. An einer langen Steilkurve (2 Grad) zeigt der Sensor 0 Grad an, während er sich bewegt (~40 km/h), aber wenn er angehalten wird, zeigt er korrekt an (2 Grad). Der physikalische Achswinkel ist jedoch in beiden Szenarien gleich.
Ich glaube, die Seitenkraft beim Durchfahren der Kurve beeinflusst die Interpretation der Sensoren, in welche Richtung die Schwerkraft geht, und passt die Rollwinkel entsprechend an. Siehe Bild;
Kann jemand etwas dazu sagen, wie dies gelöst werden könnte?
Zum Beispiel;
Zeit ist momentan ein kritischer Faktor in meinem Projekt.
Vielen Dank im Voraus für Ihren Beitrag
Bearbeiten 1: Ich bin auf diesen Thread gestoßen , in dem das OP anscheinend das gleiche Problem mit MPU6050 hatte und mit etwas Glück zum BNO055 ging, aber Kalibrierungsprobleme hatte. Dann wurde im letzten Beitrag gesagt, dass das Problem mit MPU9250 und RTIMULib (Open-Source-Filter) gelöst wurde. Ich frage mich, ob das Hinzufügen eines Magnetometers geholfen hat, da es einen festen 3D-Referenzpunkt gibt, der nicht von Beschleunigungskräften beeinflusst wird. Oder vielleicht hat er die Algorithmen in RTIMULib optimiert, um die gewünschte Ausgabe zu erhalten. Ich muss mich noch mit den Motion-Fusion/Filter-Algorithmen befassen. Bisher habe ich das nur die MPU6050 intern im DMP machen lassen. Irgendwelche Gedanken zu diesen möglichen Lösungen?
Es ist sicherlich lösbar.
Ich vermute, dass der Filter den Gyroskop-Messwerten und Absolutwerten der Beschleunigungsmesser aufgrund der Rausch- und Offset-Probleme, die MEMS-Sensoren inhärent sind, nicht sehr vertraut, und wenn er einen stabilen Zustand mit einer etwas stärkeren Schwerkraft als erwartet und einer konstanten Rate erreicht Er nimmt wiederum an, dass es sich um Offsets handelt, und hebt sie auf. Ein anderer Filter in Kombination mit einem Kalibrierungsprozess beim Start könnte dabei helfen, aber Sie benötigen möglicherweise bessere Sensoren.
Allerdings ist es normalerweise nicht schnell oder einfach, so etwas richtig und zuverlässig zum Laufen zu bringen. Wenn die Zeit kritisch ist, kann ich mir keine schnelle Lösung dafür vorstellen, die nicht darin besteht, Geld auf das Problem zu werfen und eine weitaus hochwertigere IMU- und Positionierungs-Engine-Software zu kaufen.
Ich denke du kannst dein Problem lösen. Sie müssen jedoch Ihren eigenen Sensorfusionsalgorithmus anstelle von DMP (Digital Motion Processor) verwenden. Da Sie nicht jeden einzelnen Wert von DMP ändern können, ähnelt es eher einer Blackbox. Soweit ich mich erinnere, beträgt die Datenrate von DMP 200 Hz oder weniger.
Sie können problemlos ergänzende Filter auf Ihrem System verwenden. Es bietet Ihnen die Möglichkeit, die Rate des Beschleunigungsmesser- und Gyroskopeffekts auf Ihrem System und viel mehr Datenrate (abhängig von Ihrer MCU) zu ändern. In Anbetracht Ihrer begrenzten Zeit finden Sie wahrscheinlich ergänzende Filtercodes für Ihre MPU6050 auf Github.
Einige weitere Forschungen geben mir einen besseren Einblick, wie andere das Problem lösen. In erster Linie eine Methode zur Berechnung der Zentrifugalbeschleunigung verwenden und diese dann kompensieren.
Diese Lösungen stammen von William Premerlani aus der Fixed-Wing-UAV-Community.
Verwendung von GPS; http://diydrones.com/profiles/blogs/acceleration-compensation-flight-testing
Verwenden Sie nur Accel und Gyro; http://diydrones.com/forum/topics/centrifugal-compensation-with-only-gyros-and-accelerometers
JimmyB
Chris Howard