Winkel B und C berechnen

  • Zitat


    Kannst du das bestätigen?


    nö...


    Ich habe:
    (J=SIN A, K=COS A)



    ( Jy + xK )
    B = ATAN ( --------- )
    ( J² + K² )
    ( --------------- )
    ( Z )



    ( Z )
    ( --------------------------------------------- )
    C = ACOS ( )
    ( ( ( Jy + xK ) ) )
    ( ( ( -------- ) ) )
    ( COS ( ATAN ( J² + K² ) ) )
    ( ( ( --------------- ) ) )
    ( ( ( Z ) ) )


    Noch eingefallen:
    mit J²+K² = 1 wirds übersichtlicher...


    ( Jy + xK )
    B = ATAN ( --------------- )
    ( Z )



    ( Z )
    ( --------------------------------------------- )
    C = ACOS ( ( ( Jy + xK ) ) )
    ( COS ( ATAN ( --------------- ) ) )
    ( ( ( Z ) ) )



    Viel Spass damit :mrgreen:

    Einmal editiert, zuletzt von Grubba ()

  • Schritt für Schritt zum Roboterprofi!
  • Also B stimmt schon mal überein, C jedoch nicht. Habe mal Werte eingetragen, Ergebnisse stimmen nicht überein.


    Kann dafür jetzt aber in meiner SRC schon mal das J²+K² entfernen, spart mir mit Sicherheit schon wieder 1ms... :ylsuper:

  • Ja das J²+K² hatte ich direkt rausgekürzt, da es wiegesagt immer 1 ist.
    Für C habe ich noch eine Fallunterscheidung drin:

    Code
    if ( z < 0 )
            c = 180.0 - c;


    Damit komme ich mit verschiedenen Testwerten auf die gleichen Resultate wie mit deiner Formel.


    Allerdings bin ich noch nicht ganz fertig.
    Schreibe mal meine Zwischenschritte auf.


    1. Tool steht an Position 1
    Pos1 = X 920.604126,Y -728.745239,Z 817.446411,A -115.381302,B -16.6707706,C 155.427002


    2. Tool soll an Position 1 um B und C gedreht werden um auf Position 2 zu zeigen
    Pos2 = X 917.087891,Y -729.155396,Z 811.407471


    3. Richtungsvektor berechnen
    R = Pos2 - Pos 1 = X -3.516235 X -0.410157 Z -6.03894


    4. Richtungsvektor auf Länge 1 normieren
    RNorm = x -0.50231 y -0.058593 z -0.862697


    5. Vektor in die Formel mit Drehwinkel A = -115.381302 (A aus Pos1) einsetzen und B,C berechnen
    b = -23.3789
    c = 160.0279


    Jetzt bin ich nicht ganz sicher, diese Werte für B un C geben nun an um welche Winkel ich das Tool drehen müsste, wenn es nicht an Pos1 stehen würde, sondern auf X = 0, Y = 0, Z = 1 mit den Winkeln A = 0, B = 0 und C = 0, ist das korrekt?
    Also müsste ich die Ergebnisse noch irgendwie mit der wahren Position des Tools ( Pos1 ) verknüpfen? Die Winkeländerungen müssten ja minimal sein, wie mit der ersten Methode über INV_POS() und den Doppelpunktoperator berechnet.

    Einmal editiert, zuletzt von Fahrrad ()

  • Zitat


    Jetzt bin ich nicht ganz sicher, diese Werte für B un C geben nun an um welche Winkel ich das Tool drehen müsste, wenn es nicht an Pos1 stehen würde, sondern auf X = 0, Y = 0, Z = 1 mit den Winkeln A = 0, B = 0 und C = 0, ist das korrekt?
    Also müsste ich die Ergebnisse noch irgendwie mit der wahren Position des Tools ( Pos1 ) verknüpfen? Die Winkeländerungen müssten ja minimal sein, wie mit der ersten Methode über INV_POS() und den Doppelpunktoperator berechnet.


    Wenn der Bleistift den der Roboter hält genau senkrecht steht, sind A,B und C = 0. So muss das Tool vermessen sein. Dann gilt, das nach den Drehungen um A, B und C auf deinen Punkt gezeigt wird. Die Ausgangsposition ist dann völlig egal, weil du den Richtungsvektor ja schon aus Start und Zielposition ermittelt hast.
    Übrigens kannst du den Winkel A wählen wie du willst, B und C passen sich ja selbständig an. Kann ganz nützlich sein, falls sich mit einem bestimmten Winkel A ansonsten nicht alle Positionen erreichen liessen.


    Ansonsten würde ich dir raten, einfach mal an den Robi zu gehen und von Hand die Achswinkel anzufahren. Dann sollte sich schnell erkennen lassen, obs passt.

  • So habe nun ausführlich am Roboter getestet, die berechneten Drehwinkel können aber nicht stimmen.
    Das Tool hat folgende Werte:
    TOOL_DATA[16]={X 0.144299999,Y 0.0107000005,Z 245.220795,A 0.0,B 0.0,C 0.0}
    steht also senkrecht auf dem Flansch.


    Ich bin nun auf Pos1 gefahren
    X 920.604126,Y -728.745239,Z 817.446411,A -115.381302,B -16.6707706,C 155.427002


    und bin dann dann von Hand in Weltkoordinaten gefahren um B und C auf die berechneten Werte von b = -23.3789 c = 160.0279 zu bringen. Die Position war dann also
    X 920.604126,Y -728.745239,Z 817.446411,A -115.381302,B -23.3789,C 160.0279
    Das Tool zeigt nun alles andere als auf Pos2, sondern GANZ wo anders hin.


    Ich bin wirklich gerade etwas ratlos, was mache ich denn noch falsch?

  • Ich sehe hier heute abend mal in mein Archiv und sende dir mal einen Programmauszug aus der SRC.


    Hab hier eben mal nochmal in mein Prog reingesehen und an einer Stelle B Und C getauscht habe. Ausserdem ist das Vorzeichen von Alpha invertiert, dass ist aber von der Definition des Tool abhängig. Kann aber bis morgen dauern.

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden