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˙v˙r˙w˙=v=−ge3+exp([r])e3u1/m=w+12[r]w+(1−||r||2tan(||r||/2))[r]2||r||2w=⎡⎣⎢k1(u2−rx)+k2wxk1(u3−ry)+k2wy0⎤⎦⎥
wobei , repräsentiert die schiefsymmetrische Matrix von ,repräsentiert die Größe von , und
e3=[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 .