Woher weiß man die gewünschte Ausrichtung eines Quadcopters?

7

Ich versuche ein Quadcopter-Modell auf Simulink zu simulieren. Ich möchte einen PID-Regler für jeden der Winkel X, Y, Z und Phi, Theta, Psi implementieren. PID erhält den Fehler als Eingabe, der minimiert werden soll. Für X, Y und Z werden die gewünschten Werte vom Benutzer eingegeben und die tatsächlichen Werte werden aus den Beschleunigungsmesserdaten berechnet, daher ist der Fehler der gewünschte eingestellte Wert - der tatsächliche Wert.

Für Phi, Theta und Psi können die tatsächlichen Werte vom Gyroskop und Beschleunigungsmesser (Sensorfusion) erhalten werden, aber ich weiß nicht, wie die gewünschten Werte für jeden von ihnen berechnet werden sollen, da der Benutzer normalerweise daran interessiert ist, die Position anzugeben Werte X, Y und Z wie gewünscht, nicht die Winkelwerte! Das Fehlen der gewünschten Werte hindert mich daran, den für den PID-Regler erforderlichen Winkelfehler zu berechnen.

Moayad Hani Abu Rmilah
quelle

Antworten:

8

Sie versuchen, mehr PIDs zu implementieren, als Sie Freiheitsgrade haben . In einem Quadcopter haben Sie nur 4: dh (Höhe, Roll, Pitch und Yaw).(Z,ϕ,θ,ψ)

Geben Sie hier die Bildbeschreibung ein

via ( http://www.draganfly.com/uav-helicopter/draganflyer-x4/features/stability.php )

Interessanterweise aus einer PID - Perspektive Sie auf jeden Fall tun haben Werte gewünscht für und : Sie wollen , dass sie beide auf Null auf Standard, so dass Ihre quadcopter schwebt stabil. (Sie können auf einen festen Wert wie Null beschränken. Da der Quadcopter jedoch symmetrisch zur Z-Achse ist, müssen Sie nur eine übermäßige Drehung verhindern, indem Sie den Term 'D' in der PID erhöhen.) Die Z PID kann dann eingestellt werden, um sicherzustellen, dass Sie eine gewünschte Höhe einstellen und halten können.ϕθψψ

Im einfachsten Fall sitzen die X- und Y-PIDs also "über" den anderen PIDs.
Verarbeitungskette

Mit anderen Worten, die Ausgabe der X- und Y-PIDs wird (jeweils) zu den gewünschten und Winkeln, die den Quadcopter in Richtung der gewünschten Position bewegen. (Beachten Sie, dass Sie das weltweit gewünschte X und Y in das Quadcopter-relative X und Y konvertieren müssen, um zu kompensieren . Diese Antwort enthält mehr.)ϕθψ

Es gibt ausgefeiltere Möglichkeiten zur Steuerung von Luftfahrzeugen, aber dies ist eine der am einfachsten zu erlernenden.

Ian
quelle
Ein Quadcopter verfügt nicht über genügend Freiheitsgrade, um zusätzlich zu einer Neigung von 45 Grad eine X-, Y- und Z-Position zu halten.
Ian
Ja, es muss der Anstellwinkel geändert werden , um die Position in X und Y (bei dieser Art von Quad-Copter) zu korrigieren, und daher wird dies nicht als direkter DOF davon angesehen, danke.
Diego C Nascimento
Warum haben Sie Ihren ursprünglichen Kommentar gelöscht?
Ian
Es steht mir frei, meine Kommentare zu löschen :) Wie auch immer, es ist falsch und es gibt nicht viel zur Antwort hinzuzufügen, deshalb habe ich gelöscht.
Diego C Nascimento
@Ian Durch Setzen der gewünschten Werte von ϕ und θ auf Null ist es nur gut, die Ausrichtung in der horizontalen Ebene beizubehalten (der Quadcopter bewegt sich nicht entlang der X- und Y-Achse). Wenn es sich beispielsweise vorwärts (entlang X) bewegen soll, sollte sich der gewünschte Wert von θ ändern. Ich denke, es gibt eine Gleichung, mit der ich die gewünschten Winkel aus der gewünschten Position berechnen kann. Würden Sie den letzten Satz "(Beachten Sie, dass Sie ..." erklären?
Moayad Hani Abu Rmilah
4

Definieren des Status des Quadcopters als wobei , , und die Position, Geschwindigkeit, Winkelposition bzw. Winkelgeschwindigkeit des Quadcopters sind. Ein vereinfachtes Übergangsmodell für einen Quadcopter mit PD-Steuerung ist: x=[pvrw]Tpvrw

p˙=vv˙=ge3+exp([r])e3u1/mr˙=w+12[r]w+(1||r||2tan(||r||/2))[r]2||r||2ww˙=[k1(u2rx)+k2wxk1(u3ry)+k2wy0]
wobei , repräsentiert die schiefsymmetrische Matrix von ,repräsentiert die Größe von , unde3=[001]T[r]r||r||rk1k2stellen die proportionalen bzw. abgeleiteten Verstärkungen dar, und die Steuerung besteht aus dem gewünschten Gesamtschub , dem gewünschter Rollwinkel , der gewünschte Nickwinkel und unter der Annahme, dass das Gieren gleich bleibt. Beachten Sie, dass hierfür ein PD-Controller verwendet wird, da der Integrationsterm I im Allgemeinen für die Trajektorienverfolgung nicht nützlich ist.u=[u1u2u3]Tu1u2u3

Mit diesem Modell können Sie unter Berücksichtigung des aktuellen Status berechnen, wie sich der Status ändern wird. Dies gibt Ihnen natürlich nicht die gewünschten Winkelpositionen, nach denen Sie gefragt haben. Angenommen, der Benutzer erwartet, dass der Quadcopter schwebt, sobald er die angegebene gewünschte Position erreicht hat dann benötigen wir für den Endzustand.xp=[X,Y,Z]Tv=r=w=[000]T

Dies gibt Ihnen jedoch immer noch nicht die gewünschten Winkel für den Übergang zwischen dem Anfangszustand und dem Endzustand . Um dies zu erreichen, benötigen Sie einen Controller höherer Ebene, um eine Trajektorie mit zu berechnen , für den Zustandsraum und den Kontrollraum und einige Reisezeit . Diese Flugbahn gibt Ihnen zu jedem Zeitpunkt die gewünschten Winkel.xixf=[pvrw]Tπ=(x[],u[],τ)x:[0,τ]Xu:[0,τ]UXUτ

Leider gibt es viele Möglichkeiten, diese Flugbahn zu berechnen. Eine Möglichkeit besteht darin, meine eigene Arbeit in diesem Bereich zu betrachten. Speziell mein Artikel mit dem Titel Kinodynamic RRT *: Asymptotisch optimale Bewegungsplanung für Roboter mit linearer Dynamik .

DaemonMaker
quelle