Wie werden Quaternionen verwendet, um eine PID-Quadcopter-Stabilisierungsschleife zu speisen?


9

Ich mache einen Quadcopter. Ich habe eine PID-Schleife eingerichtet, um sie auf einen bestimmten Euler-Winkel (Nick- und Rollwinkel) zu stabilisieren. Das Problem tritt auf, wenn sich die Rolle 90 Grad (45 Grad und mehr) nähert. Die Werte machen keinen Sinn mehr, da sie sich der Kardanverriegelung nähern. Ich beabsichtige, komplexe Manöver wie Schleifen usw. durchzuführen, die die 45-Grad-Rollgrenze überschreiten.

Wie kann ich Quaternionen verwenden, um dieses Problem zu lösen? (Ich bekomme Quaternionen von der MPU-9150.) Ich habe viele Artikel zum Thema Quaternionen gelesen, aber alle sprechen von Rotationen in 3D-Software und dem Tweening zwischen zwei Rotationspunkten. Dies macht wenig Sinn, da ich keine imaginären Zahlen und Matrizen kenne.


Hast du dein Problem gelöst? Wenn nicht, teilen Sie uns bitte mit, wie es läuft. Andernfalls möchten Sie möglicherweise eine der Antworten akzeptieren.
Marcv81

1
@ marcv81 Ja, es funktioniert jetzt ziemlich gut :) Danke, dass du mich daran erinnert hast, eine Antwort anzunehmen :)
Freund von Kim

Ich bin froh, dass es funktioniert. Es brachte mich dazu, an meinen eigenen Code zu denken und auch einen Fehler zu beheben :)
marcv81

Antworten:


6

Ein Quadcopter enthält (unter anderem) zwei separate und unabhängige Algorithmen: einen Einstellungsschätzungsalgorithmus und einen Steueralgorithmus.

Der Einstellungsschätzungsalgorithmus berechnet Informationen über die Ausrichtung des Quadcopters: die Roll-, Nick- und Gierwinkel.

Der Steueralgorithmus ist dafür verantwortlich, die Motoren so anzutreiben, dass die Ausrichtung des Quadcopters den Erwartungen des Piloten (oder der Autopilot-Software) entspricht. Dieser Algorithmus liest die geschätzten Quadcopterwinkel (aus dem Lageschätzungsalgorithmus) und ändert die Motordrehzahl, um zu versuchen, die gewünschten Winkel anzupassen. PIDs sind ein gut geeigneter und gängiger Regelalgorithmus für Quadcopter.

Gimbal Lock ist ein Phänomen, das im Einstellungsschätzungsalgorithmus auftreten kann. Es hat nichts mit dem Steueralgorithmus zu tun. Daher benötigen Sie keine Regler, Motoren oder Propeller, um die Kardanverriegelung zu testen: Sie können Ihren Code so ändern, dass Ihre Roll-, Nick- und Gierwinkel angezeigt werden, und testen, ob die richtigen Werte berechnet werden, wenn Sie Ihren Quadcopter manuell bewegen. Möglicherweise können Sie dies mit dem Quadcopter tun, der an Ihren Computer angeschlossen ist, über Bluetooth oder mit anderen Methoden, abhängig von Ihrer Plattform.

Wenn die Winkel korrekt berechnet werden, müssen Sie sich keine Gedanken über Quaternionen machen. Wenn sie nicht richtig berechnet werden, quaternions könntedir helfen. Der Einstellungsschätzungsalgorithmus muss 3 Winkel ausgeben, damit der Steueralgorithmus verwendet werden kann, er kann jedoch eine andere interne Darstellung wie Quaternionen oder 3x3-Matrizen verwenden. In diesem Fall würde es die Einstellungsinformationen immer noch in Winkel umwandeln, um dem Steueralgorithmus verwendbare Daten bereitzustellen. Im Allgemeinen sind Quaternionen nicht intuitiv, aber rechnerisch effizient. Dies macht sie gut geeignet für langsame Plattformen wie Arduino. Matrizen oder Winkel sind möglicherweise eine einfachere Wahl für schnellere Hardware. Wenn ich die eine oder andere Lösung ausarbeiten muss, lassen Sie es mich bitte wissen, aber es wäre ziemlich verfrüht, wenn ich zu diesem Zeitpunkt Einzelheiten angeben würde, da ich nicht davon überzeugt bin, dass Sie Quaternionen implementieren müssen.

Wenn die Winkel korrekt berechnet wurden, besteht die Art und Weise, wie Sie Ihre Quadcopter-Schleife erstellen, darin, die Winkelrate und nicht den Winkel zu steuern. Wenn Ihre Sticks den Quadcopter-Winkel darstellen, gibt es keine Möglichkeit, eine vollständige Schleife zu erstellen: Versuchen Sie, die Position der Sticks als Quadcopter-Loops zu visualisieren, und Sie sollten verstehen, warum. Wenn die Sticks jedoch die Winkelgeschwindigkeit steuern, können Sie die Geschwindigkeit steuern, mit der sie sich drehen.

Viel Glück bei Ihrem Projekt!

Hinweis: Der Einfachheit halber habe ich die theoretische Option, die Daten sowohl im Lageschätzungsalgorithmus als auch im Steueralgorithmus als Matrizen oder Quaternionen zu manipulieren, nicht erwähnt. Ich habe noch nie einen Quadcopter gesehen, der solche Algorithmen implementiert.


Vielen Dank für Ihre gründliche Antwort! Eine Person bei InvenSense sagte, dass Quaternionen in den meisten Anwendungen einfacher und besser seien als Euler-Winkel. Wenn man sich die angebundenen Daten ansieht, scheint es möglich zu sein, eine Achse zu korrigieren, um die Kardanverriegelung zu stoppen, wenn dies bevorsteht.
Freund von Kim

1
Eulerwinkel sind eine schlechte Wahl für die interne Darstellung der Orientierung. Sie sind einfach zu visualisieren, aber sehr schwer richtig zu manipulieren, um eine kardanische Verriegelung zu vermeiden. Quaternionen sind besser, weil Sie nicht auf Gimbal Lock stoßen würden, aber sie sind schwer zu visualisieren. Matrizen sind irgendwie einfacher zu visualisieren als Quaternionen, aber nicht so effizient, wenn Ihre Plattform langsam ist. Mein Quadcopter verwendet intern Quaternionen, konvertiert jedoch in Euler-Winkel, damit die PIDs verwendet werden können.
Marcv81

3

Zuerst denke ich, dass Sie zurückgehen und sich Ihren Code ansehen müssen. Die kardanische Verriegelung ist nur dann ein Problem, wenn Sie sich 90 Grad (innerhalb weniger Grad) nähern. Wenn Sie bei 45 Grad ein seltsames Verhalten feststellen, ist etwas anderes die Ursache.

Was Ihre Frage betrifft, werden Quaternionen normalerweise nicht direkt in der grundlegenden PID-Regelung verwendet, da sie ein kompliziertes Verhalten aufweisen, das zu nicht intuitiven Ergebnissen führt. Normalerweise werden sie entweder in Euler-Winkel konvertiert und dann im normalen PID-Regler verwendet, oder es werden spezielle nichtlineare Regler entwickelt, um sie zu verwenden.

Beachten Sie, dass PID für Ihre Schleifenmanöver im Allgemeinen kein sehr guter Regler ist: Die Verstärkungen, die in der Nähe des Schwebefluges gut funktionieren, funktionieren in großen Winkeln nicht mehr gut. Wenn jemand eine Schleife machen möchte, geht er normalerweise "offene Schleife", dh er startet das Manöver unter Kontrolle und wendet dann, sobald er einen bestimmten Winkel überschritten hat, einfach eine feste Reihe von Befehlen an, bis er die Schleife abgeschlossen hat. Herauszufinden, welche feste Reihe von Befehlen zu verwenden ist, ist der schwierige Teil und verwendet häufig Verstärkungslernen (eine Art formale Methode, um Versuch und Irrtum durchzuführen).


Vielen Dank für Ihren Einblick. Ich bin völlig neu in der Bare-Metal-Programmierung. Ich habe nur High-Level-Programmierung gemacht. Ich interessiere mich auch sehr für Physik und Mathematik, obwohl ich gerade die High School abgeschlossen habe, also weiß ich immer noch nicht zu viel ...
Freund von Kim

Ich mache das mit einem Freund und wir haben den PID-Regelkreis selbst "erfunden". Da wir an eine "richtige" Antwort gewöhnt waren, war es für uns sehr schwierig, sie zu verwenden, ohne zu wissen, dass dies ein üblicher Weg ist, um unser Problem zu lösen. Und als wir den PID-Regelkreis auf Wikipedia entdeckten, wurde unser eigener erfundener PID-Regelkreis "genehmigt".
Freund von Kim

Daher freue ich mich sehr über Ihre Erkenntnisse darüber, wie dies in Arbeitsprojekten häufig gemacht wird. Das seltsame Verhalten, von dem ich spreche, zeigte sich beim Betrachten des Diagramms in Serial Chart( code.google.com/p/serialchart ). Die Eingabe ist die direkte Euler-Ausgabe von der I2CDevLib (MPU-9150). Ich werde ein bisschen mehr testen. Der "Fehler" könnte durch ungenaue Bewegungen von mir selbst verursacht worden sein.
Freund von Kim

Die Rolle ist die blaue Linie. Rot ist Gieren, Grün ist Pech, Blau ist Rollen. Wie Sie sehen können, beginnen die Probleme bei etwa pi / 4 und nach außen. Ist das ein Problem mit der I2CDevLib oder soll es so sein? screencast.com/t/svPV3C8B Ich drehe das Gyroskop um 360 Grad um die Rollachse.
Freund von Kim

Ich habe gesehen, dass AeroQuad sich selbst nach dem Werfen in die Luft stabilisieren kann. Liegt das daran, dass es zuerst um die Rolle, dann um die Tonhöhe und dann um das Gieren geht?
Freund von Kim

3

Dieses Papier, Full Quaternion Based Attitude Control für einen Quadrotor von Emil Fresk und George Nikolakopoulos, zeigt, was Sie erreichen möchten.

Zusammenfassung - Ziel dieses Artikels ist es, ein neuartiges quaternionsbasiertes Steuerungsschema für das Lagekontrollproblem eines Quadrotors vorzustellen. Eine Quaternion ist eine hyperkomplexe Zahl von Rang 4, die verwendet werden kann, um die inhärente geometrische Singularität bei der Darstellung der Starrkörperdynamik mit Euler-Winkeln oder die Komplexität der Kopplung von Differentialgleichungen mit der Direction Cosine Matrix (DCM) zu vermeiden. In dem vorgestellten Ansatz werden sowohl das Einstellungsmodell des Quadrotors als auch das vorgeschlagene nichtlineare proportionale Quadrat ( P 2) verwendet) Steueralgorithmus wurden im Quaternionsraum implementiert, ohne Transformationen und Berechnungen im Winkelraum oder DCM des Eulers. Im gesamten Artikel werden die Vorzüge des vorgeschlagenen neuen Ansatzes analysiert und diskutiert, während die Wirksamkeit des vorgeschlagenen neuartigen quaternionsbasierten Controllers anhand erweiterter Simulationsergebnisse bewertet wird.


2
Vielen Dank für das entsprechende Papier @ jgkim2020. Aber können Sie das näher erläutern? Fassen Sie vielleicht die Ergebnisse des Papiers zusammen? (Links können doch veraltet sein). Vielleicht möchten Sie auch überprüfen, wie man antwortet
Ben

1
Ich stimme Ben zu - Eine Zusammenfassung des Papiers wäre großartig, da der Link-Tod normalerweise nach einer Weile eintritt.
Greenonline

2

Dieser kostenlose MOOC-Kurs, Willkommen bei AUMONAVx von TUMx! Autonome Navigation für fliegende Roboter kann helfen. Es bedeckt:

  • Lerntheorie
  • Übung Quadcoptor-Programmierung, die sowohl auf dem Stimulator als auch auf der tatsächlichen Hardware ausgeführt wird

Der Link funktioniert nicht.
Freund von Kim

Der Link funktioniert, wenn Sie angemeldet sind.
Freund von Kim

Video 1.4 hat eine Demo von vielen Quadrotoren, die erstaunliche Aktionen ausführen. Ich hoffe, Sie interessieren sich für das Thema.
EEd

Kann die FreeIMU-Software überprüfen, die a) fusionierte Daten von mehreren Sensoren (Frequenzkreisel, Kompass, Beschleunigungsmesser) liefert, stabilere, driftärmere und genauere Daten liefert als nur das Lesen von Rohdaten von Chip b) mehrere Ausgabeformate, einschließlich Tonhöhe, Rollen und Gieren, die möglicherweise einfacher zu visualisieren, zu verstehen und zu verwenden sind.
EEd

Danke für deine Hilfe. Ich verwende die MPU-9150 mit einem integrierten DMP (Sensor Fusion) sowohl des Gyroskops als auch eines Beschleunigungsmessers. Das Verschmelzen mit dem Magnetometer muss manuell erfolgen.
Freund von Kim
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.