2014-05-12 15 views
5

Ich versuche, Sebastian Madgwicks IMU algorithms Roll, Nick und Gier von meinem Sensor zu erhalten, die eine MPU-9150 ist. Der Ordner, den ich heruntergeladen habe, enthielt einige Beispieldaten und ich ersetzte diese Daten durch meine eigenen, wobei ich darauf beharre, dass Einheiten/Konventionen gleich bleiben usw. Das Problem ist, dass die Ausgabewinkel des Algorithmus mit meinen Daten nicht viel Sinn ergeben sind sehr laut, vor allem der Gierwinkel. Die Roll und Pitch scheinen plausibel, aber ich kann nur von meinem Beschleunigungsmesser/Gyroskop Daten besser werden. Ich habe eine Zeichnung seiner Beispieldaten (was funktioniert), meiner Daten und meiner Ausgabe angehängt.Implementieren Madgwick IMU-Algorithmus

Gibt es einige zusätzliche Filterung, die ich mit meinen Daten zu tun habe, bevor ich diese Algorithmen benutze? Bisher habe ich nur mit der Median-Filterung herumgespielt, und das schien keinen Unterschied zu machen.

Dank

Example data Example data output My data My data output

+0

Sind Sie sich der [Instabilität der Euler-Winkel] bewusst (http://stackoverflow.com/q/5010978/341970)? Ich schätze, dass Sie das sehen, aber nicht entscheiden können, die Frage ist mir nicht klar. – Ali

+0

@Ali die Implementierung er Referenzen verwendet Quaternionen intern, so dass es wahrscheinlich nicht instabil wird, obwohl es ein Problem mit der Euler-Winkel-Konvertierung sein könnte. Wahrscheinlich ist c0redumb jedoch korrekt. – kerblogglobel

Antwort

3

ich von Tobias Simon einige Hinweis auf die Instabilität Ausgabe des Algorithmus passiert Magdwick zu finden wie hier

http://diydrones.com/forum/topics/madgwick-imu-ahrs-and-fast-inverse-square-root

detaillierte

Die Problem war mit der schnellen Inv Quadratwurzel verwendet in der Magdwick-Implementierung. Ich wusste nicht, wo das Problem lag. Vielleicht liegt es an der Genauigkeit des Algorithmus oder vielleicht daran, dass der ursprüngliche Code auf einem 64-Bit-Rechner nicht funktioniert hat. Wenn die Implementierung durch eine andere (besser?) Ersetzt wird, wird eine erstaunlich bessere und stabilere AHRS-Berechnung erreicht. (Oder machen einige kleine Änderung am Code für 64-Bit-Maschine gelöst auch das Problem? Bitte lesen Sie die Kommentare der ursprünglichen Note von Tobias Simon.)

Eine bessere inverse Quadratwurzel Implementierung hier

gefunden werden kann

https://pizer.wordpress.com/2008/10/12/fast-inverse-square-root/