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.
quelle
Antworten:
Stellen Sie zunächst sicher, dass Sie hier zwei wichtige Punkte verstehen:
Die Einstellungsbestimmung allein aus IMU-Daten ist bei Vorhandensein einer linearen Beschleunigung von Natur aus nicht eindeutig . Ohne zusätzliches Wissen über die Art der Beschleunigungen gibt es immer eine Obergrenze für die Genauigkeit, die Sie erreichen können.
Die Genauigkeit wird durch die Drift bei den integrierten Gyroskopmessungen begrenzt . Bei perfekten Kreiseldaten und Integration wären die Beschleunigungsmesserdaten überhaupt nicht erforderlich. Je näher Sie der Perfektion kommen, desto mehr können Sie die Beschleunigungen ignorieren.
Die Auswahl des Orientierungsalgorithmus ist hier weitgehend irrelevant. Alle arbeiten nach dem gleichen Prinzip: Verwenden der Richtung der Gravitationsbeschleunigung zur Driftkorrektur der integrierten Kreiseldaten mit einer variablen Gewichtung zwischen beiden. Wenn Sie versucht haben, die Parameter zu optimieren und nicht die gewünschten Ergebnisse erzielt haben, ist es unwahrscheinlich, dass Sie mit einem anderen Algorithmus bessere Ergebnisse erzielen.
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 Abnehmen von Beschleunigungen außerhalb eines bestimmten Bereichs. Im Wesentlichen kommt es darauf an, die linearen Beschleunigungen nur als kurze Vorkommen zu modellieren. Wenn Ihr System ständig in Bewegung ist, sind sie keine große Hilfe.
Sie können jedoch verschiedene Maßnahmen ergreifen, um Ihre Kreiselintegration zu verbessern:
Sie haben Recht, dass die von Ihnen verwendeten Sensoren nicht die höchste verfügbare Qualität aufweisen. Es ist jedoch möglich, sehr gute Ergebnisse mit Verbrauchersensoren zu erzielen, wenn diese ausreichend gut charakterisiert und kalibriert sind.
quelle