Forum: Mikrocontroller und Digitale Elektronik Hexacopter Motorwerte ermitteln


von Florian K. (f-kae)


Angehängte Dateien:

Lesenswert?

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.

von T. roll (Gast)


Lesenswert?

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.

von Florian K. (f-kae)


Lesenswert?

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.

von Michael R. (Firma: Brainit GmbH) (fisa)


Lesenswert?

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.

von Purzel H. (hacky)


Lesenswert?

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.

von Timmo H. (masterfx)


Lesenswert?

Also beim MultiWii Projekt haben die das so gemacht
1
  #ifdef HEX6
2
    motor[0] = PIDMIX(-7/8,+1/2,+1); //REAR_R
3
    motor[1] = PIDMIX(-7/8,-1/2,-1); //FRONT_R
4
    motor[2] = PIDMIX(+7/8,+1/2,+1); //REAR_L
5
    motor[3] = PIDMIX(+7/8,-1/2,-1); //FRONT_L
6
    motor[4] = PIDMIX(+0  ,-1  ,+1); //FRONT
7
    motor[5] = PIDMIX(+0  ,+1  ,-1); //REAR
8
  #endif
Beim Quad siehts so aus (je nachdem ob + oder X)
1
  #ifdef QUADP
2
    motor[0] = PIDMIX( 0,+1,-1); //REAR
3
    motor[1] = PIDMIX(-1, 0,+1); //RIGHT
4
    motor[2] = PIDMIX(+1, 0,+1); //LEFT
5
    motor[3] = PIDMIX( 0,-1,-1); //FRONT
6
  #endif
7
  #ifdef QUADX
8
    motor[0] = PIDMIX(-1,+1,-1); //REAR_R
9
    motor[1] = PIDMIX(-1,-1,+1); //FRONT_R
10
    motor[2] = PIDMIX(+1,+1,+1); //REAR_L
11
    motor[3] = PIDMIX(+1,-1,-1); //FRONT_L
12
  #endif

mit
1
#define PIDMIX(X,Y,Z) rcCommand[THROTTLE] + axisPID[ROLL]*X + axisPID[PITCH]*Y + YAW_DIRECTION * axisPID[YAW]*Z

von Florian K. (f-kae)


Lesenswert?

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?

von Timmo H. (masterfx)


Lesenswert?

Du meist sowas wie das Carefree. Hierbei orientiert sich das "Vorne" an 
der Kompassausrichtung: 
http://www.youtube.com/watch?feature=player_detailpage&v=a-qqvgJqfh0#t=457s
Dort muss natürlich ständig das "Koordiantensystem" gedreht werden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.