Seite 175 von 1010

#2611 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:06:19
von speedy
Mataschke hat geschrieben:Prinzipiell ne Virtuelle TS Drehung
Und das kannst du in deiner Funke nicht programmieren ? Also einfach 2 Modelle und das eine drehst halt mit irgendwelchen Mischern oder so.


MFG
speedy

#2612 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:08:31
von Mataschke
speedy hat geschrieben:Also einfach 2 Modelle und das eine drehst halt mit irgendwelchen Mischern oder so.
und dann?

ich brauch die Berechung der Sensoren um 45° gedreht sonst wird das nix ;-)

#2613 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:13:32
von speedy
Mataschke hat geschrieben:ich brauch die Berechung der Sensoren um 45° gedreht sonst wird das nix
Ach - du bekommst das sicher auch ohne dem hin. ;)

Die Umschaltung der Berechnung der Sensoren sollte man doch mit nem zusätzlichen "Schalter" im Code hinbekommen ? So nach dem Motto "Wenn + oder achHeuteMalPlus dann mach Berechnung +"


MFG
speedy

#2614 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:15:23
von Mataschke
speedy hat geschrieben:dann mach Berechnung +"
:joker: you made my day :mrgreen:

#2615 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:31:29
von crashspeed
Hi Chris,

der Nunchuk wird gar nicht erst erkannt. Die Leitungen habe ich durchgeklingelt. Die Brücke ist auch vorhanden und Kurzschlüsse kann ich auch ausschließen.
Habe zwar die Platine durchgesägt aber er lief ja danach. Kann man irgendwie nachmessen ob der Sensor überhaupt arbeitet , wenn Spannung am Nunchuk anliegt ?

Gruß Marcel

#2616 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:41:16
von speedy
Mataschke hat geschrieben:
speedy hat geschrieben:dann mach Berechnung +"
:joker: you made my day :mrgreen:
Freut mich.

Und jetzt willst mir sicherlich noch erklären warum ?


Wenn ich mir den Code (MultiWiiV1_5.pde) so anschaue, dann sehe ich für die Berechnung nur an einer Stelle eine Unterscheidung:

Code: Alles auswählen

  if (armed ) {
    #ifdef BI
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH]; //FRONT
    #endif
    #ifdef TRI
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 ; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 ; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 ; //LEFT
    #endif
    #ifdef QUADP
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]  + axisPID[YAW]; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]  + axisPID[YAW]; //LEFT
      motor[3] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] - axisPID[YAW]; //FRONT
    #endif
    #ifdef QUADX
      motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[PITCH] - axisPID[YAW]; //REAR_R
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH] + axisPID[YAW]; //FRONT_R
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[PITCH] + axisPID[YAW]; //REAR_L
      motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH] - axisPID[YAW]; //FRONT_L
    #endif
    #ifdef Y6
      motor[0] = 1500 + rcCommand[THROTTLE]                 + axisPID[PITCH]*4/3 + axisPID[YAW]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //LEFT
      motor[3] = 1500 + rcCommand[THROTTLE]                 + axisPID[PITCH]*4/3 - axisPID[YAW]; //UNDER_REAR
      motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_RIGHT
      motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_LEFT
    #endif
    #ifdef HEX6
      motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_R
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_R
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_L
      motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_L
      motor[4] = 1500 + rcCommand[THROTTLE]                   - axisPID[PITCH]   + axisPID[YAW]; //FRONT
      motor[5] = 1500 + rcCommand[THROTTLE]                   + axisPID[PITCH]   - axisPID[YAW]; //REAR
    #endif
  }
Und was spricht jetzt dagegen, aus den ganzen ifdef's folgendes zu machen:

Code: Alles auswählen

  if (armed ) {
    #if defined(BI)
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH]; //FRONT
   #elif defined(TRI)
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH]*4/3 ; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 ; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 ; //LEFT
    #elif defined(QUADP) || defined(heuteMalPlus)
      motor[0] = 1500 + rcCommand[THROTTLE] + axisPID[PITCH] - axisPID[YAW]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]  + axisPID[YAW]; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]  + axisPID[YAW]; //LEFT
      motor[3] = 1500 + rcCommand[THROTTLE] - axisPID[PITCH] - axisPID[YAW]; //FRONT
    #elif defined(QUADX) && !defined(heuteMalPlus)
      motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] + axisPID[PITCH] - axisPID[YAW]; //REAR_R
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH] + axisPID[YAW]; //FRONT_R
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] + axisPID[PITCH] + axisPID[YAW]; //REAR_L
      motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH] - axisPID[YAW]; //FRONT_L
    #elif defined(Y6)
      motor[0] = 1500 + rcCommand[THROTTLE]                 + axisPID[PITCH]*4/3 + axisPID[YAW]; //REAR
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //RIGHT
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 - axisPID[YAW]; //LEFT
      motor[3] = 1500 + rcCommand[THROTTLE]                 + axisPID[PITCH]*4/3 - axisPID[YAW]; //UNDER_REAR
      motor[4] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_RIGHT
      motor[5] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL] - axisPID[PITCH]*2/3 + axisPID[YAW]; //UNDER_LEFT
    #elif defined(HEX6)
      motor[0] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_R
      motor[1] = 1500 + rcCommand[THROTTLE] - axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_R
      motor[2] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 + axisPID[PITCH]/2 + axisPID[YAW]; //REAR_L
      motor[3] = 1500 + rcCommand[THROTTLE] + axisPID[ROLL]/2 - axisPID[PITCH]/2 - axisPID[YAW]; //FRONT_L
      motor[4] = 1500 + rcCommand[THROTTLE]                   - axisPID[PITCH]   + axisPID[YAW]; //FRONT
      motor[5] = 1500 + rcCommand[THROTTLE]                   + axisPID[PITCH]   - axisPID[YAW]; //REAR
    #endif
  }

MFG
speedy

#2617 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:46:17
von ChristophB
Wäre dann eine virtuelle Taumelscheibendrehung nicht einfacher? Die Sensoren wirken dann weiterhin auf die korrekten Achsen den MWC wie gehabt. Nur du steuerst um 45 Grad versetzt. Ich glaube aber dann schmeißt du den öfter in den Dreck da sich das Gehirn immer an der falschen Ausrichtung orientiert.

Gruß Christoph

#2618 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 19:54:21
von Crizz
@Marcel : das kann ich dir so nicht sagen. Ich hab mir extra einen Arduino, WMP und NK samt Empfänger "auf Halde" gelegt, damit ich jederzeit alle Komponenten prüfen kann, wenn mal was ist. So hab ich auch gleich Ersatz greifbar. Kostet ja nicht die Hölle, das Zeug. Und man hat schnell raus, ob die Hardware was hat, oder es an der Verkabelung liegt. Nei einfachere Idee hab ich aktuell leider für dich nicht parat, sorry.

#2619 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:05:02
von Mataschke
ChristophB hat geschrieben: Nur du steuerst um 45 Grad versetzt. Ich glaube aber dann schmeißt du den öfter in den Dreck da sich das Gehirn immer an der falschen Ausrichtung orientiert.
Nenene ,

es geht mir ja lediglich um das mechanische Problem der Sensoren dass die eben nicht 90° in FLugrichtung sind .... also muss ich ihm im Sketch die Drehung mitteilen ...

#2620 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:07:12
von speedy
Mataschke hat geschrieben:es geht mir ja lediglich um das mechanische Problem
aso - na aber das muß man doch auch rausrechnen können ? - halt immer "plus 45 Grad" ... oder du baust ne drehbare Elektronikplatine. :)


MFG
speedy

#2621 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:15:57
von crashspeed
Yeap , Vielen Dank Chris,

werde sehen das ich mir auch ein paar Ersatzteile hinlege!

Bis hoffentlich bald bei besseren Temperaturen...

#2622 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:20:55
von Michael Brakhage
Hallo

bin neu hier im Forum, lese aber schon sehr lange mit.

Ich habe bereits einen tricopter und bin jetzt eben mit dem quadrocopter fertig geworden.
hat jemand erfahrung mit den roxxy820 bl reglern? die habe ich nämlich verbaut weil grade nichts anderes lieferbar war.

der quadro zeigt ein seltsames verhalten. ich muss noch minthrottle im sketch anpassen, weil die motore bei scharfschalten nicht starten. kommen die regler mit dem standartwert von 4 auf p nicht klar? ich habe schonmal von usern gelesen welche den roxxy720 mit einem p wert von 1.4 fliegen. ist ja sehr niedrig.

kann mir da jemand helfen?
daaaanke

#2623 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:21:37
von yacco
@Michael und andere, das ganze ist doch nichts anderes als eine Drehung der Nick und Roll Kanäle (2. EDIT) um die Yaw-Achse, also

Code: Alles auswählen

roll  = rcHysteresis[ROLL]  - 1500;
pitch = rcHysteresis[PITCH] - 1500;

rcHysteresis[ROLL]  =  cos(alpha) * roll + sin(alpha) * pitch + 1500;
rcHysteresis[PITCH] = -sin(alpha) * roll + cos(alpha) * pitch + 1500;
Mir fällt gerade auf, dass es doch einen Unterschied zwischen der QuadP und QuadX Konfiguration gibt: in der QuadX Variante gehen die axisPID Werte von ROLL und PITCH viel stärker in die Berechnung ein als in der QuadP Variante. Sprich, der QuadX müßte auf Roll und Nick eigentlich etwas aggressiver sein. Nach der Formel oben müßte der Code eigentlich so aussehen:

Code: Alles auswählen

    #elif defined(QUADX)
      motor[0] = 1500 + rcCommand[THROTTLE] - 0.707 * (axisPID[ROLL] + axisPID[PITCH]) - axisPID[YAW]; //REAR_R
      motor[1] = 1500 + rcCommand[THROTTLE] - 0.707 * (axisPID[ROLL] - axisPID[PITCH]) + axisPID[YAW]; //FRONT_R
      motor[2] = 1500 + rcCommand[THROTTLE] + 0.707 * (axisPID[ROLL] + axisPID[PITCH]) + axisPID[YAW]; //REAR_L
      motor[3] = 1500 + rcCommand[THROTTLE] + 0.707 * (axisPID[ROLL] - axisPID[PITCH]) - axisPID[YAW]; //FRONT_L
Seid ihr noch bei mir? :mrgreen:

#2624 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:23:16
von Mataschke
ich bin immer bei dir wenn du Code Hackst ;-)

aber verstehen ich will ... :oops:

#2625 Re: Der WII-Copter ( Selbstbau-Projekt )

Verfasst: 01.02.2011 20:25:21
von Maik262
yacco hat geschrieben:Seid ihr noch bei mir? :mrgreen:
Jou Batman :shock:

Ich suche mir jez mal nen Strick, denn:

Code: Alles auswählen

#elif defined(keineSorgen)
Strick + Aufhängen = Sorgenfrei; //einfachste Problemlösung