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.
quelle
Antworten:
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.
quelle
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).
quelle
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.Dieses Papier, Full Quaternion Based Attitude Control für einen Quadrotor von Emil Fresk und George Nikolakopoulos, zeigt, was Sie erreichen möchten.
quelle
Dieser kostenlose MOOC-Kurs, Willkommen bei AUMONAVx von TUMx! Autonome Navigation für fliegende Roboter kann helfen. Es bedeckt:
quelle