Berechnung BASE drehen

  • Hallo zusammen,


    ich habe einen Palettierroboter KR180-2PA mit KRC2 Steuerung. In der Anlage wird auf 2 Palettierplätzen auf Paletten 1200x800mm palettiert. Für beide Palettierplätze habe an der jeweiligen Palette ein eigenes BASE-Koordinatensystem eingemessen. Der Nullpunkt der BASE liegt an einer Palettenecke. Die X-Y-Ebene liegt auf der Palettenoberseite. Die positive X-Achse zeigt an der Palettenkante in Längsrichtung der Palette, die positive Y-Achse zeigt an der Palettenkante in Querrichtung der Palette und die positive Z-Achse geht senkrecht nach oben. Die BASE kann beliebige X,Y,Z,A-Werte haben. Die B- und C-Komponente sind zu vernachläßigen, da die Palette waagerecht ausgerichtet ist.


    Nun zu meiner Fragestellung:
    Ich möchte das BASE-Koordinatensystem um 180° drehen, allerdings nicht um den Nullpunkt der BASE sondern um die Palettenmitte gedreht, so dass die BASE auf der diagonal gegenüberliegenden Seite der Palette liegt. Wie kann ich das rechnerisch am Besten lösen?


    Gruß HarryH

  • Schritt für Schritt zum Roboterprofi!
  • Hallo Harry


    Meinem Vertsändnis nach must du doch nur dein Base in A um 180° drehen und dann X+Y um die Abmaße deiner
    Palette verschieben. Dann müsste dein Base wie von dir gedacht auf der diagonal gegenüberliegenden Seite sein.


    Gruß


    Schybulla

    Weil der Klügere nach gibt - regieren die Dummen die Welt

  • so aus dem Bauch heraus würde ich es wie folgt machen:


    Translation -> Rotation -> Translation:
    d.h.
    Base:Verschiebung_zum_Drehpunkt:Rotation_um_A:(-Verschiebung_zum_Drehpunkt)


    Beispiel:

    Code
    BASE = {X 20.0, Y 50.0, Z 120.0, A 0.0,B 0.0, C 0.0}   ;bez. $World
    Drehpunkt = {X 220.0, Y 550.0, Z 120.0, A 0.0,B 0.0, C 0.0}   ;bez. $World
    
    
    ;Translation
    BASE=BASE:{X 200.0, Y 500.0}
    ;Rotation
    BASE=BASE:{A 180.0}
    ;Translation
    BASE=BASE:{X -200, Y -500.0}


    Ob das aber wirklich stimmt, müsste ich erst ausprobieren.


    lg Drudge

  • Müsste passen, ist der allgemeine Fall.
    Da hier Spezialfall müsste auch passen:

    Code
    versatz = $nullframe
    versatz.x = breite_palette
    versatz.y = laenge_palette
    base_neu=base_alt : versatz
    base_neu.a=base_neu.a+180
  • Reicht denn da nicht die einfache Funktion des Doppelpunktgenerators.


    $Base=Base_Data[Palette]:{X -1200,Y -800,Z 0,A 180,B 0,C 0} - maßlich mal ne Europalette angenommen.
    Oder liege ich da jetzt falsch ??


    Gruß


    Schybulla

    Weil der Klügere nach gibt - regieren die Dummen die Welt

    Einmal editiert, zuletzt von Schybulla ()

  • Vielen Dank für die Antworten,


    hat mir sehr weitergeholfen. Habe das jetzt so gelöst:


    BASE_Shift = $NULLFRAME
    BASE_Shift.x = nPallet[Laenge]
    BASE_Shift.y = nPallet[Breite]
    BASE_Shift.a = BASE_Shift.a + 180
    BASE_DATA_NEU = BASE_DATA_ALT : BASE_Shift


    Gruß HarryH

  • Ich hab zu dem Thema hier 2 Fragen:


    1. bei Translation -> Rotation -> Translation kommt es mir so vor als ob das KS zuerst an die gegenüberliegende Ecke Geschoben wird. Dann gedreht wird und nachfolgend wieder zurückverschoben wird. (Weil ja X u. Y bei der 1. und 2. Translation verändert werden) Oder hab ich einen Knoten im Hirn, dann bitte um Auflösung.


    2. Die eingesetzte Lösung versteh ich auch nicht ganz:

    Zitat

    BASE_Shift.a = BASE_Shift.a + 180


    Das kann doch nur funktionieren, weil die Palette zufällig gleich wie dein NULLFRAME ausgerichtet ist, oder? Sollte es nicht etwa so heißen?

    Code
    BASE_Shift.a = BASE_DATA_ALT.a + 180

  • 2. Die eingesetzte Lösung versteh ich auch nicht ganz:


    Das kann doch nur funktionieren, weil die Palette zufällig gleich wie dein NULLFRAME ausgerichtet ist, oder? Sollte es nicht etwa so heißen?

    Code
    BASE_Shift.a = BASE_DATA_ALT.a + 180


    die lösung sollte schon stimmen. die drehung ist ja nachher durch den doppelpunktoperator im bezug zur alten base.


    Code
    BASE_DATA_NEU = BASE_DATA_ALT : BASE_Shift

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • Asso, danke. Der : Operator addiert ja schon zu den alten Daten und NULLFRAME hat ja A=0 zu beginn und danach A=180 was danach addiert wird. Wenn ichs jetzt verstanden hab, dann könnte ich auch schreiben Base_shift.A = 180. Oder war jetzt wieder ein Denkschritt zu wenig? :genau:

  • :reib: falls ich jetzt keinen Denkfehler drin hab :)

    „Welten, regiert von künstlichen Intelligenzen,<br />mußten oftmals ihre schmerzlichen Erfahrungen machen.<br />Logik kennt keine Gefühle.“

  • @ rdizzy, @ Anubis,



    "Base_shift.A = 180" geht auch, da ich für die BASE-Verschiebung immer genau 180° habe (gegenüberliegende Ecke der Palette).


    Der resultierende A-Wert nach der Doppelpunktoperation wird (wie Anubis schon gesagt hat) ja durch das alte BASE bestimmt.



    Danke nochmal für die rege "Anteilnahme" :mrgreen:


    Gruß HarryH

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