Ich habe verschiedene Algorithmen ausprobiert, um bei kontinuierlichen linearen Beschleunigungen und Vibrationen (kleiner als 0,4 g, Frequenz unter 10 Hz) Nick-, Roll- und Gierbewegungen zu erzielen. Keiner von ihnen liefert gute Ergebnisse, da die Messwerte entweder driften oder zu stark von linearen Beschleunigungen beeinflusst werden. Was ich erreichen möchte, ist, wenn die externe Beschleunigung kleiner als + -0,4 g ist, sollte der Fehler bei Nick- und Rollbewegung kleiner als + -1 Grad sein.
Ich habe diese Algorithmen ausprobiert:
Madgwicks Algorithmus . Wenn die Beta-Verstärkung sehr hoch eingestellt ist, ist die Konvergenz schnell, aber Winkel sind anfälliger für lineare Beschleunigungen. Ich habe es heruntergestimmt und den Fehler bei linearen Beschleunigungen auf + -0,5 Grad reduziert. Wenn die Vibration jedoch kontinuierlich ist, driften die Messwerte und es dauert ewig, bis sie zu wahren Werten konvergieren. Dies ist sinnvoll, da bei linearen Beschleunigungen dem Kreisel mehr vertraut wird und berechnete Winkel mit zunehmender Kreiselintegration driften.
Mahonys Algorithmus . Im Gegensatz zu Madgwick driftet es überhaupt nicht, unabhängig davon, welche Werte ich für Ki und Kp verwende. Es wird jedoch immer von linearen Beschleunigungen beeinflusst. (Fehler größer als + -6 Grad)
Traditioneller Kalman Filter . Es wurde viel Zeit darauf verwendet, diese riesigen R- und Q-Vektoren abzustimmen. Bisher hat es die gleiche Leistung wie Mahony.
Ich benutze Rasiermesser IMU . Ich weiß, dass es mit billigen Sensoren unmöglich ist, das gleiche Ergebnis wie mit diesem zu erzielen .
Es gibt ein paar weitere Optionen wie UKF, aber es ist schwierig, sie zu verstehen oder umzusetzen.
Jeder Vorschlag ist willkommen.