Locations

  • Hallo zusammen,


    wenn ich mir die Locations mit listl oder die aktuelle Position ansehe, bekomme ich X, Y, Z, jaw, pitch und roll.


    So weit so gut. Nun sehe ich mir die Datei eines Programmes an, warum stehen da auf einmal ganz andere Werte.


    Weiss jemand den Zusammenhang ??? :wallbash:


    Gruß

  • ANZEIGE
  • Hallo,
    Die Locations sind im Vektor Format abgespeichert.Es handelt sich um eine 4x3 Matriz


    Die 3 ersten Spalten/Reihen bilden die RotationsMatriz, während die 4te Spalte die XYZ Werte darstellen



    mfG

  • Danke für die Info.


    Aber wie komme ich damit an yaw, pitch und roll ??? Diese Zahlen kann ich überhaupt nicht deuten.


    Die Werte für X, Y und Z sind ja recht einfach zu finden.


    Gruß

  • Hallo,



    Die Locations sind im Vektor Format abgespeichert.Es handelt sich um eine 4x3 Matriz


    Die 3 ersten Spalten/Reihen bilden die RotationsMatriz, während die 4te Spalte die XYZ Werte darstellen


    auch ohne Adept-Kenntnisse kann man schliessen, das es sich hierbei um homogene Koordinaten handelt:
    http://de.wikipedia.org/wiki/Homogene_Koordinaten
    Die sind allgemein in allen 3D-Anwendungen von Computerspielen über CAD bis zur Robotik gebräuchlich. Eigentlich handelt es sich um 4x4 Matrizen, aber die unterste Zeile ist in vielen Anwendungen immer 0 0 0 1, deshalb lässt man die oft weg.


    Dass in der vierten Spalte die x,y,z-Koordinaten stehen, hast du wohl schon gefunden.


    Die ersten drei Spalten bilden, wie schon gesagt, eine Drehmatrix.
    http://de.wikipedia.org/wiki/Drehmatrix


    Bildlich kannst du dir vorstellen, das die erste Spalte einen Vektor darstellt, der in die Richtung der X-Achse der Position zeigt, die zweite in Y-Richung, die dritte in Z-Richtung.


    Wie man im Prinzip von einer Matrix zu den Winkeln hin- und zurückkommt, wurde hier für Kuka beschrieben.
    http://www.roboterforum.de/rob….0.html;msg13660#msg13660


    Leider kann man das sicher nicht so direkt auf Adept übertragen, denn es gibt ungefähr genauso viele Definitionen für die drei Winkel, wie es Roboterhersteller gibt. Deshalb scheint jeder sein eigenes Format zu benutzen. :mrgreen:


    http://de.wikipedia.org/wiki/Eulerwinkel
    http://de.wikipedia.org/wiki/Roll-Pitch-Yaw-Winkel


    Um weiter zu kommen, müsste jetzt mal einer der Adept-Experten sagen, wie da die Winkel definiert sind. Vielleicht gibt es ja in irgendeiner Doku oder einem Quelltext eine fertige Umrechnung.


    Hoffe jetzt weißt du zumindest schon mal, was du da vor dir hast.


    Grüße


    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • Ja super, also wo kommt die Umrechnung her, hier muss es doch einen geben, der sich auskennt. :gutidee:


    Es wird also die Umrechnungsformel gesucht, die ganzen Links sind schon recht irreführend.


    Welches Koordinatensystem wird eingesetzt, X,Y,Z oder X,Y,X und wie wird das umgerechnet ???


    Gruß

  • Bei dem eingesetzen Koordinaten-System handelt es sich um ein Euler ZYZ.


    Wenn du da etwas tiefer in die Theorie einsteigen will hier ein Link.


    http://www.alhin.de/FH2/upload/Formelsammlung_HaRo.pdf


    ab Seite 4 wird die ZYZ Transformation erklärt.

    Es ist nicht einfach Ich zu sein aber irgend jemand muss es ja tun.<br /><br /><br />Björn Gentsch <br />Robotics Division<br /><br />NACHI EUROPE GmbH | Bischofstr. 99 |&nbsp; DE-47809 Krefeld, Germany<br />Phone: +49 (0)2151 7843338 |&nbsp; Mobile: +49 (0)172 / 1775455&nbsp; | Fax: +49 (0)2151-7843332<br />E-Mail: gentsch@nachi.de |&nbsp; Internet: http://www.nachi.de

  • Hallo und Danke Björn,


    habe mir deinen Link angesehen.


    Ich gebe mal zu, den raffe ich nicht. :waffen100: Wenn du, dann :grinser043:


    Es muss doch eine Umrechnungsformel geben, in die ich Zahlen einsetze und das Ergebnis bekomme. Am besten noch von yaw, pitch und roll nach Euler-Koordinaten und wieder zurück.



    Gruß


    PS: bin neu und wollte nebenbei die Smileys probiren, Sorry.

  • An alle die gerade versuchen, die Formeln zu wandeln.


    In welcher Reihenfolge sind die Werte der beiden geschriebenen Reihen zu verstehen, bzw. zu benutzen.


    Genauer, wie sind die Zahlen in die Matrix einzusetzen, sind die ersten drei Werte eine Reihe (von links nach rechts) oder eine Spalte (von oben nach unten) ??? Wie ist es bei adept festgelegt ???


    Gruß

    Einmal editiert, zuletzt von Voxe ()

  • Hallo Voxe,


    wofür brauchst du denn die Umrechnung der Werte in der Location Datei in die Koordinaten? Vielleicht kann man dir ja anders helfen.



    Pitl

  • Hm, ZYZ sollte hier in Abschnitt 2.12 auf Seite 18 beschrieben sein:
    http://www.geometrictools.com/Documentation/EulerAngles.pdf
    Wie üblich haben die Computergrafiker bessere Doku als die Roboterleute ...



    Genauer, wie sind die Zahlen in die Matrix einzusetzen, sind die ersten drei Werte eine Reihe (von links nach rechts) oder eine Spalte (von oben nach unten) ??? Wie ist es bei adept festgelegt ???


    Wenn es ein 4x3 Ausschnitt der Transformationsmatrix ist, sollte das klar sein. Eine Zeile hat die Länge 4, eine Spalte nur 3, weil man die vierte Zeile weggelassen hat.


    Hope that helps


    Urmel

    Einmal editiert, zuletzt von Urmel ()

  • Hallo,


    mein Kollege hat da noch eine Anwort gefunden. Er hat mich gebeten sie einzustellen. Danke an Günter.


    Adept matrices are stored in column order (r00, r10, r21, r01, r11, r21, r02, r12, r22, x, y, z), where in matrix form they look like
    r00 r01 r02 x
    r10 r11 r12 y
    r20 r21 r22 z
    0 0 0 1


    The upper left 3x3 matrix is a rotation matrix.
    The product of c=a:b is a standard matrix multiply, with
    c00=(first row of a) * (first column of b) = a00*b00 + a01*b10 + a 02*b21 + x * 0
    …etc…


    The rotation matrix of the inverse of b is just its transpose (flip across the diagonal).
    The X, Y, Z offset can be found by negating the offset, and multiplying by the transposed rotation matrix.
    if d=inverse(b), then D =
    b00 b10 b20 -x*b00-y*b10-z*b20
    b01 b11 b21 -x*b01-y*b11-z*b21
    b02 b12 b22 -x*b02-y*b12-z*b22
    0 0 0 1


    These things should be in most 3-D graphics and robot textbooks.



    Pitl

  • Hallo Pitl,


    dann muss ich da auch mal Danke an Günter sagen :goodpost:


    Ich hatte die fixe Idee, dem Roboter Locations von anderswo zu übergeben. Dabei ist mir halt das hiesige Thema aufgefallen. Du hattest gefragt, warum ich die Umrechnung brauche. Ich kann ja schlecht irgendwelche Zahlen da rein nageln.


    Allerdings habe ich gerade ne Menge Infos hier erhalten, die ich erstmal umsetzen muss. Hoffe bei meinem nächstem Problem diesbezüglich habt ihr noch mehr Tipps und Infos. Ich werde berichten :danke:


    Gruß, Voxe :danke:

  • Hallo Voxe,


    du musst dem Roboter die Positionen nicht unbedingt in diesem Format zur Verfügung stellen.


    Alternativ kannst du die Werte z.B. als Zahlen mit Trennzeichen in eine Datei schreiben und diese in V+ einlesen.
    Name;X;Y;Z;yaw;pitch;roll
    aufnahme;102.5;66;305;0;180;-270 (wichtig! Das Zeichen für Nachkommastellen ist in V+ der Punkt ".")


    Im V+ Language User's Guide im Bereich "Input/Output Operations " - "Disk i/O" findest du ein Programmbeispiel welches Daten in eine Datei schreibt und danach diese auch wieder ausliest.
    http://www1.adept.com/main/KE/…er/V+Programming_TOC.html



    Das Erstellen einer Position anhand von einem Positionsnamen und Werten als Strings funktioniert mit dem DOS-Befehl.
    $x = "102.6" (wird aus der Datei ausgelesen)
    $y = "66" (wird aus der Datei ausgelesen)
    $pos = "aufnahme" (wird aus der Datei ausgelesen)
    DOS "SET " + $pos + "=TRANS(" + $x + "," + $y + ")" (erzeugt eine Transformation mit dem Namen aufnahme und den beiden Werten x und y)



    Gruß
    Sunny

  • Hallo zusammen, :uglyhammer_2:


    habe da schon viel geschafft, :grinser043: aber wenn Pitch 0, oder 180 ist alles gut.


    Wenn das nicht so ist, kommt da zu viel Blödsinn raus. Sorry, will das mit nem Sechsachser machen.


    Und ein Danke an Sunny, dein Tip ist Gold wert, aber ich mein Ziel ist kein Aufwand in der V+ - Software, heisst die Locations sollen einfach geladen werden und alles ist gut.


    Gruß und Hoffnung auf Support von Voxe.

  • Hallo zusammen,


    hatte mal wieder einen Roboter zur Verfügung und habe eine Location gespeichert.
    yaw : -22.378; pitch : 150.817; roll : -43.525


    Die Matrix der Datei war


    mat[0] = -0.847554
    mat[1] = -0.395798
    mat[2] = -0.353544
    mat[3] = -0.279929
    mat[4] = 0.899379
    mat[5] = -0335792
    mat[6] = 0.450877
    mat[7] = -0.185635
    mat[8] = -0.873068


    dann habe ich durch einsetzen in die fogenden Formel des Links der FH Münster (Seite 4):
    mat[0] := cos(y)*cos(p)*cos(r)-sin(y)*sin(r);
    mat[1] := sin(y)*cos(p)*cos(r)-cos(y)*sin(r);
    mat[2] := -sin(p)*cos(r);
    mat[3] := -cos(y)*cos(p)*sin(r)-sin(y)*cos(r);
    mat[4] := -sin(y)*cos(p)*sin(r)-cos(y)*cos(r);
    mat[5] := sin(p)*sin(r);
    mat[6] := cos(y)*sin(p);
    mat[7] := sin(y)*sin(p);
    mat[8] := cos(p);


    leider waren die Ergebnisse folgende:
    mat[0] = -0.847554
    mat[1] = -0.279929
    mat[2] = -0.450880
    mat[3] = 0.877816
    mat[4] = -0.441562
    mat[5] = -0.185637
    mat[6] = -0.353546
    mat[7] = -0.335796
    mat[8] = -0.873066


    Ich will damit nicht anzweifeln, das es sich bei Adept um zyz-Euler-Koordinaten handelt, allerdings werden andere Formeln eingesetzt. Wie komme ich an diese heran :hilfe:


    Es kann doch nicht das größte Geheimnis der Welt sein.


    Gruß und Danke, Voxe

  • Hallo Voxe,


    die Lösung habe ich auch noch nicht gefunden.


    Was an deinen Ergebnissen auffällt ist, dass 7 deiner Ergebnisse identisch sind mit der Matrix der Datei. Allerdings an anderer Position. Dies deutet daraufhin, dass die Reihenfolge beim Speichern anderst ist.


    Datei entspricht deinem Ergebnis
    mat[0] = -0.847554 mat[0] = -0.847554
    mat[1] = -0.395798
    mat[2] = -0.353544 mat[6] = -0.353546
    mat[3] = -0.279929 mat[1] = -0.279929
    mat[4] = 0.899379
    mat[5] = -0335792 mat[7] = -0.335796
    mat[6] = 0.450877 mat[2] = -0.450880
    mat[7] = -0.185635 mat[5] = -0.185637
    mat[8] = -0.873068 mat[8] = -0.873066


    Bei mat[3] hast du dich in der Formel vertan
    deine mat[3] := -cos(y)*cos(p)*sin(r)-sin(y)*cos(r)
    pdf mat[3] := -cos(y)*cos(p)*sin(y)-sin(y)*cos(r)


    Bei mat[4] habe ich verschiedene Berechnungen im Internet gefunden. Leider fehlt mir ein entsprechendes Mathematikbuch.
    Deine Berechnung
    mat[4] := -sin(y)*cos(p)*sin(r)-cos(y)*cos(r)
    Hier die Berechnung auf Wikipedia
    mat[4] := cos(y)*cos(r)-sin(y)*cos(p)*sin(r)


    Ich hoffe ich konnte dir damit wenigstens ein wenig weiterhelfen.



    Gruß
    Sunny

  • Hallo Voxe,


    hier sind die korrekten Formeln in einem V+ Programm getestet. Die Ergebnisse entsprechen den Werten in der Datei.


    mat[0] = -SIN(y)*SIN(r)+COS(y)*COS(p)*COS(r)
    mat[1] = COS(y)*SIN(r)+SIN(y)*COS(p)*COS(r)
    mat[2] = -SIN(p)*COS(r)
    mat[3] = -SIN(y)*COS(r)-COS(y)*COS(p)*SIN(r)
    mat[4] = COS(y)*COS(r)-SIN(y)*COS(p)*SIN(r)
    mat[5] = SIN(p)*SIN(r)
    mat[6] = COS(y)*SIN(p)
    mat[7] = SIN(y)*SIN(p)
    mat[8] = COS(p)



    mat[0] -0.847553
    mat[1] -0.3958015
    mat[2] -0.3535465
    mat[3] -0.2799298
    mat[4] -0.8993776
    mat[5] -0.3357964
    mat[6] 0.4508805
    mat[7] -0.185637
    mat[8] -0.873067


    Gruß
    Sunny



    ps angehängt das V+ Programm inkl. Variablen als txt-Datei

  • Hallo Sunny,


    danke und :grinser043: für die Formeln.


    Habe sie auch bisschen getestet und muss sagen, klappt. :danke:


    Ich hatte zwischendurch diese mal benutzt :


    mat[0] := cos(y)*cos(p)*cos(r)-sin(y)*sin(r)
    mat[1] := -cos(y)*cos(p)*sin(r)-sin(y)*cos(r)
    mat[2] := cos(y)*sin(p)
    mat[3] := sin(y)*cos(p)*cos(r)+cos(y)*sin(r)
    mat[4] := -sin(y)*cos(p)*sin(r)+cos(y)*cos(r)
    mat[5] := sin(y)*sin(p)
    mat[6] := -sin(p)*cos(r)
    mat[7] := sin(p)*sin(r)
    mat[8] := cos(p)


    sie funktionieren oft, aber nicht immer. Die sind wohl eher für Scara-Roboter, weil wenn der Pitch nahe um 180 Grad ist, ist alles gut.


    Also, werden deine benutzt und gut ist.


    Gruß, Voxe

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