Hallo zusammen,
ich möchte eine Regelung für einen Hexacopter realisieren. Ich habe
allerdings ein grundsätzliches Problem, zudem mir noch keine Lösung
eingefallen ist.
Und zwar geht es konret darum, dass ich aus den vorgegebenen
Momenten(Mx,My,Mz) und der Gesamtschubkraft(Fz) die sechs
Rotorgeschwindigkeiten bestimmen möchte. Also nach dem Regelkreis wenn
klar ist welches Manöver ausgeführt wird und dieses "nur noch" auf de
Motoren übertragen werden muss.
Mir ist diese Berechnung von einem Quadrocopter (mit 4 Motoren) bekannt
und auch einleuchtend.
Aber wie funktioniert das bei 6 Motoren?
Folgendes Gleichungssystem habe ich aufgestellt und gilt es auszuwerten:
-Fz = b*(w1^2+ w2^2+w3^2+w4^2+w5^2+w6^2)
Mx = m*(w5^2+w6^2-w2^2-w3^2)
My = b*(c*(w1^2-w4^2)+a*(w2^2+w6^2-w2^2-w3^2))
Mz = d*(-w1^2-w3^2-w5^2+w2^2+w4^2+w6^2)
w1 -> w6 sind die Werte die ich berechnen möchte, allerdings ist dies
lediglich aus diesen 4 Gleichungen nicht möglich.
Ideal wäre eine Antwort von jemandem der weiß wie dies im allgemeinen
bei Hexacoptern realisiert wird. Leider ist es sehr schwer ausführliche
Theorie zu dieser Thematik zu finden.
Im Anhang ist die Anordnung der Motoren gezeigt wobei Motor 1 in der
positiven x-Achse liegt (Koordinatenursprung in der Mitte).
P.S. Ich habe die Frage auch schon in einem Mikrocopter-forum gepostet.
Und der Grund einen Hexacopter zu bauen? Weil er bessere Eigenschaften
hat? Mehr Schub, mehr Stabilitaet gegen Boen? Oder einfach mal ausm
Bauch raus... was die koennen koennen wir schon lange - und noch eins
obendrauf?
Als erster Ansatz, ohne mir die Grundlagen erst reinzuziehen.. den
Quadrokopter rechnen, und die Werte fuer den Hexa zusammen mischen, resp
als linearkombination rechnen.
Ich möchte einen Hexacopter (vor allem deswegen) weil er mehr Last
transportieren kann, und ich ungern mit einem Quadcopter anfange um dann
festzustellen, hier und da an Grenzen zu stoßen und dann doch auf einen
Hexa umsteigen "muss".
Eigentlich sollte meine Motivation einen Hexacopter zu bauen aber kein
Bestandteil der Frage sein. Diese Entscheidung steht für mich fest.
Das heißt du würdest empfehlen, die Werte des Quadro zu berechnen und in
Kombination mit der Wunsch-Bewegung, diese Werte auf die sechs Motoren
des Hexas verteilen.
was meinst du mit:
T. roll schrieb:> resp> als linearkombination rechnen.
Hexa hat mit mehr Last eher weniger zu tun (dafür gibts stärkere
Motoren/stärkere Akkus) als vielmehr mit Ausfallssicherheit: Ein Quadro
fliegt bei Ausfall eines Motors mit Sicherheit in die "Humusphäre", ein
Hexa (oder Okto) lässt sich noch stabilisieren / sicher landen.
Der Unterschied der Motivation koennte sich ja auch im mathematischen
Wissen niederschlagen...
Der Quadro hat die Stellglieder bei 0, 90, 180, 270 Grad. Weisen wir die
Nick und Roll Momente so zu :
Nick := + N @0 & -N @180
Roll := + R @90 & -R @270
Mit N & R den differentiellen Kraeften ueber den Diagonalen.
Das Dreh-Moment um die vertikale Achse ist der Unterschied zwischen
links und rechtslaufenden Motoren.
Dreh : proportional N + R
Dh wenn man nichts macht fuehren Nicken und Rollen auch zu einer Drehung
um die Hochachse. Dh unser koordinatensystem ist nicht fest am Flieger,
sondern bezueglich der Bewegungsrichtung.
Der Hexa hat seine Stellgleider bei 0, 60, 120, 180, 240, 300 Grad. Und
Nick und Roll werden so zusammngesetzt:
Nick := + A @0 + Bcos60@60 + C cos120@120 -A@180 -...
Roll :=
Mit A, B, C den differentiellen Kraeften ueber den Diagonalen.
Dh man steuert fuer den Auftrieb diagonal entgegengesetzte Motoren mit
einem Gleichsignal an, und fuer ein Moment um eine Achse mit einem
Differenzsignal. Dh man hat schliesslich diese 4 virtuellen
Stellgroessen
F1 fuer den Auftrieb
F2, F3, F4 fuer die Momente um die 3 um 60 Grad versetzten Achsen
Setzen wir den Auftrieb gleich Konstant. Dann haben wir fuer die drei
Momente Nick, Roll & Dreh, somit drei Stellgroessen F2, F3, F4. Die
Stellgroessen sind zwar nicht unabhaengig. Das sollte doch fast passen.
Vielen vielen dank schon einmal für die ausführlichen Antworten!
Entspricht folgende Aussage deiner(hacky) Überlegung:
Vier Rotorgeschwindigkeiten aus den Gleichungen mit den Drehmomenten und
der Gesamtschubkraft berechnen ->
Diese auf die Motoren verteilen z.B.:
Motor1 = Nick
Motor2 = Nick * Faktor(da Motor nicht den "vollen" Abstand wie Motor1
zum Mittelpunkt hat) + Roll(da Motor auch zum Rollen benutzt wird) *
Faktor
...
Motor 5 = -(Motor2)
Noch eine Frage, gibt es bei mikrocoptern nicht immer ein "vorne" und
daher ergibt sich ein festes Koordinaten System, oder ist dieser
Zusammenhang falsch?