AHRS-Algorithmus unter kontinuierlichen linearen Beschleunigungen

9

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:

  1. 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.

  2. 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)

  3. 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.

Timtianyang
quelle
Wie integrieren Sie sich für Kalman?
C. Towne Springer
Bei Verwendung der Euler-Integration sind die Rotationen jedoch ausschließlich eine Achse, um DCMs zu vermeiden. @ C.TowneSpringer
Timtianyang
Soll das gut funktionieren? Das letzte Mal, als ich das gemacht habe (ALCM), war Euler ungeeignet. Euler ist eine Methode erster Ordnung mit einem lokalen Fehler proportional zum Quadrat der Schrittgröße und einem Bruttofehler proportional zur Schrittgröße. Wir haben Runge-Kutta 4. Ordnung mit einem Kalman-Filter verwendet. Ich denke, Newton-Feynman oder Euler bekommen erste Vermutungen, um Runge-Kutta zu starten. Haben Sie die Verarbeitung, um dies mit einer guten Aktualisierungsrate zu handhaben?
C. Towne Springer
Vielen Dank für den Vorschlag. Der lokale Fehler der Euler-Integrationsmethode wurde übersehen. Wir planen, die Filterung in der Post durchzuführen, damit die Komplexität der Berechnung nicht wesentlich eingeschränkt wird. @ C.TowneSpringer
Timtianyang

Antworten:

3

Stellen Sie zunächst sicher, dass Sie hier zwei wichtige Punkte verstehen:

  1. 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.

  2. 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.

  1. Verbessern Sie die Genauigkeit Ihrer Kreiselintegration.
  2. Modellieren Sie die Art der linearen Beschleunigungen irgendwie.

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:

  1. Holen Sie sich die bestmögliche Schätzung der Kreiselvorspannung . Nehmen Sie unmittelbar vor dem Gebrauch einige Sekunden lang statische Kreiselmessungen vor und mitteln Sie diese, um Ihre Versatzwerte zu erhalten. Verlassen Sie sich nicht auf eine einmalige vorherige Kalibrierung.
  2. Versuchen Sie, die Drift aufgrund der Temperatur zu minimieren. Lassen Sie die IMU vor der Kalibrierung / Verwendung auf die Betriebstemperatur im eingeschwungenen Zustand aufwärmen. Versuchen Sie, es während des Betriebs auf einer konstanten Temperatur zu halten.
  3. Verbessern Sie Ihr Kalibrierungsmodell. Erwägen Sie, Achseneffekte und Nichtlinearität sowie nur Skalierung und Versatz einzubeziehen.
  4. Verwenden Sie eine bessere Integrationsmethode. In den Kommentaren zu Ihrer Frage sind bereits einige Ideen enthalten.
  5. Sehen Sie, ob Sie die Kreiseldrift verfolgen können. Wenn der Orientierungsalgorithmus die Drift in eine bestimmte Richtung konsistent korrigieren muss, kann dies erkannt und verwendet werden, um die Vorspannungswerte vorsichtig anzupassen.

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.

Martin L.
quelle
Empfohlene Verbrauchersensoren?
Timtianyang