Virtueller Arm (Winkelfrage)



  • moin!

    Kurz zum projekt:
    ich habe einen Roboterarm, mit 4 Servos (Motoren), die je eine axialrichtung haben. die ersten 3 machen quasi ein kugelgelenk, der 4te ist so wie unser ellenbogen-gelenk.

    mein Koordinatensystem:
          y
          |  /   
          | /
          |/   
    --------------x
         /|
        / |     
       /  |
      z
    

    Aufbau:
    [Halterung] -X- [Drehservo] -Y- [Winkelhalterung] -Z- [Oberarm] -Z- [Unterarm]

    Mein Problem ist jetzt übergang von Winkelhalterung zum Oberarm. Sprich Servo 3. der sich an der Z achse drehen kann.
    sofern Servo 1 und Servo 2 keinen winkel haben, dreht sich der Servo 3 ja nur in Z richtung.
    Wie berechne ich die Winkelanteile sobald Servo 1 und Servo 2 werte ≠ 0 haben?
    Ich habs mir oft gezeichnet, aber ich hab das gefühl ich hab den falschen ansatz.
    ich versuch immer das auf eine ebene zu projezieren und damit winkelanteile zu berechnen, aber das ist murks....



  • moin
    ich vermute das ich erklärend versagt habe 😃
    ich erzähl mal mehr dazu was ich habe:

    Ich habe den Punkt an dem der Oberarm sitzt berechnet. B ( X, Y, Z).
    und den Ausgangspunkt habe ich auch. Sprich A (X, Y, Z).
    dh ich kann einen Schönen Vektor von A zu B berechnen.

    Der Robo arm wird bis einschließlich Oberarm perfekt dargestellt. (ich lasse einfach winkel von -90 bis 90 grad druchlaufen grad für grad darstellen)
    Wenn Servo 3 Keine Drehung hat wird der Oberarm so richtig an gezeigt:

    data.transrotX = servo2_angle;
    		data.transrotY = servo1_angle;
    		data.transrotZ = part[0].angle[2]; // Voreinstellung 90°
    

    Aber egal welcher Achse ich jetzt servo3_angle hinzufüge, wird der oberarm völlig verdreht. falsch und schief.



  • push.

    Versuch Nummer 3:
    diesmal bin ich zuhause und kann bilder hochladen.
    http://www.img-host.de/bild.php/70380,veranschaulichungSREX5.gif
    Hier kann man 3 Screenshots aus meinem Render sehen. gezeigt ist der Arm vollständig ohne Unterarm. Gedreht wird am ersten Servo und am zweiten.
    Der dritte servo ist mommentan standartgemäß auf 90°. der oberarm dreht sich einfach mit.
    Wie man sehen kann sieht alles fehlerfrei aus.
    Der Punkt A an an den der Oberarm verschoben wird wird immer berechnet, anhand der drehung im Servo 1 und 2.
    wie auch im Koordinatensystem eingezeichnet.

    jetzt würde ich gerne den servo 3 auch drehen lassen. aber natürlich in seiner richtung. im ruhezustand würde der Oberarm ja nur um die Z achse gedreht werden müssen. wenn er aber schon um Winkel a und b gedreht wurde ist das nicht so leicht... (zumindest versteh ich es einfach noch nicht).

    Wie auch im Koordinatensystem eingezeichnet, dreht sich der oberarm ja in einem winkel der zum rest des armes steht.

    Mein problem ist jetzt:
    ,dass ich es nicht hinbekomme das Mesh des Oberarmes so zu rotieren, dass er korrekt und passend in seiner halterung bleibt (sich nicht herrausdreht), aber einen eigenen winkel haben kann. sprich sich an seinem servo drehen kann.

    mfg
    Chris

    PS: ich kann jeden noch so kleinen gedankenstoß oder ansatz gebrauchen... ich steh echt auf dem schlauch 😞


Anmelden zum Antworten