Ich habe mehrere Algorithmen ausprobiert, um Nicken, Rollen und Gieren unter kontinuierlichen linearen Beschleunigungen und Vibrationen (kleiner als 0,4 g, Frequenz unter 10 Hz) zu erhalten. 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 beim Nicken und Rollen 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 sich den wahren Werten annähern. Dies ist sinnvoll, da dem Kreisel bei linearen Beschleunigungen mehr vertraut wird und berechnete Winkel driften, wenn die Kreiselintegration driftet.
Mahonys Algorithmus . Im Gegensatz zu Madgwick driftet es überhaupt nicht, egal welche Werte ich für Ki und Kp verwende. Es wird jedoch immer von linearen Beschleunigungen beeinflusst. (Fehler größer als +-6deg)
Traditioneller Kalman-Filter . Es wurde viel Zeit darauf verwendet, diese riesigen R- und Q-Vektoren abzustimmen. Bisher hat es die gleiche Leistung wie das von Mahony.
Ich verwende Razor IMU . Ich weiß, dass es mit billigen Sensoren unmöglich ist, das gleiche Ergebnis wie mit diesem zu erzielen .
Es gibt noch ein paar weitere Optionen wie UKF, aber es ist schwierig zu verstehen oder zu implementieren.
Jeder Vorschlag ist willkommen.
Stellen Sie zunächst sicher, dass Sie hier zwei wichtige Punkte verstehen:
Die Bestimmung der Lage aus IMU - Daten allein ist in Gegenwart einer linearen Beschleunigung von Natur aus mehrdeutig . Ohne zusätzliches Wissen über die Art der Beschleunigungen gibt es immer eine Obergrenze für die erreichbare Genauigkeit.
Die Genauigkeit wird durch die Drift in den Messungen des integrierten Gyroskops begrenzt . Bei perfekten Kreiseldaten und Integration würden die Beschleunigungsmesserdaten überhaupt nicht benötigt. Je näher man der Perfektion kommt, desto mehr kann man die Beschleunigungen ignorieren.
Die Auswahl des Orientierungsalgorithmus spielt dabei weitgehend keine Rolle. Alle arbeiten nach dem gleichen Prinzip: Verwenden der Richtung der Gravitationsbeschleunigung, um die integrierten Kreiseldaten zu driften, mit einer variablen Gewichtung zwischen den beiden. Wenn Sie versucht haben, die Parameter zu optimieren und nicht die gewünschten Ergebnisse erzielt haben, werden Sie mit einem anderen Algorithmus wahrscheinlich nicht besser abschneiden.
Es gibt also im Wesentlichen zwei Dinge, die Sie tun können.
Die zweite Option ist schwer zu diskutieren, da sie von den Details der Bewegung abhängt, die Sie studieren. Es gibt einige einfache Tricks wie das Verwerfen oder Entgewichten von Beschleunigungen außerhalb eines bestimmten Bereichs. Im Wesentlichen laufen diese darauf hinaus, die linearen Beschleunigungen nur als kurze Ereignisse zu modellieren. Wenn Ihr System ständig in Bewegung ist, helfen sie nicht weiter.
Es gibt jedoch mehrere Dinge, die Sie tun können, um Ihre Kreiselintegration zu verbessern:
Sie haben Recht, dass die von Ihnen verwendeten Sensoren nicht von der höchsten verfügbaren Qualität sind. Es ist jedoch möglich, sehr gute Ergebnisse mit Consumer-Sensoren zu erzielen, wenn sie ausreichend gut charakterisiert und kalibriert sind.
C. TowneSpringer
Timtianyang
C. TowneSpringer
Timtianyang