absolute Koordinaten meines TPs trotz Base?

  • Ja Servus alle mit einander.
    Folgendes Problem will gelöst werden und sucht Helfer.
    ich bewege einen Roboter auf einem Baskoordinatensystem mit einem Toolkoordinatensystem
    wobei das Base stetig mit seinen Koordinaten verändert wird.
    Nun kann ich mit $pos_act die Position meines Tp in Bezug auf mein Base ermitteln.
    Wie das halt so ist.
    Nun benötige ich jedoch auch die absoluten Koordinaten in Bezug auf $robroot.
    Ein funktionierender Ansatz, der auch funktioniert, ist der, dass ich mir bei einem Roboterhalt
    mein Base zwischenspeichere, es dann kurz auf $nullframe setze mir die aktuelle $pos_act merke und
    dann das Base wieder zurücksetze.


    Das ganze gefällt mir aber nicht so recht und deshalb frage ich:
    gibt es vielleicht ein Variable($pos_act_abs?) die die Koordinaten beschreibt,
    oder kann man da mit dem (mir noch fremden) geometrischen Operator etwas zaubern?


    mmhh ?


    vielen Dank fürs Lesen und Helfen.... Soma

  • Schritt für Schritt zum Roboterprofi!

  • Ein funktionierender Ansatz, der auch funktioniert, ist der, dass ich mir bei einem Roboterhalt
    mein Base zwischenspeichere, es dann kurz auf $nullframe setze mir die aktuelle $pos_act merke und
    dann das Base wieder zurücksetze.


    Spring in ein Unterprogramm:


    DEF GETPOS_ROOT()
    $BASE=$ROBROOT
    MyPos=$POS_ACT
    END


    Nach dem Rücksprung müßte $BASE die ursprünglichen Werte aufweisen. Bin mir da jetzt nicht zu 100% sicher...
    Ich meine $BASE gilt dann nur für dieses UP.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Ich würd's eher nicht so probieren, denn 1. ist $BASE eine globale Systemvariable, die die aktuelle BASE enthält. Diese wird also nicht nach dem Verlassen des UPs wieder 'zurückgesetzt'.
    2. Wenn schon direkte BASE-Abwahl, dann bitte mit $BASE = $WORLD (vgl. auch BAS.SRC von KUKA).


    Mit dem geometrischen Operator sollte es gehen, ich hab nur grad keinen ROB zur Hand zum Austesten. Spätestens am Mittwoch (26.09.) könnte ich das aber nachliefern....


  • Ich würd's eher nicht so probieren, denn 1. ist $BASE eine globale Systemvariable, die die aktuelle BASE enthält. Diese wird also nicht nach dem Verlassen des UPs wieder 'zurückgesetzt'.
    2. Wenn schon direkte BASE-Abwahl, dann bitte mit $BASE = $WORLD (vgl. auch BAS.SRC von KUKA).


    Mit dem geometrischen Operator sollte es gehen, ich hab nur grad keinen ROB zur Hand zum Austesten. Spätestens am Mittwoch (26.09.) könnte ich das aber nachliefern....


    mit dem nachliefern wäre super.
    hab nen bissel mit dem kleinen geomop gespielt abba so recht versteh ich das nicht.
    ja und dass das base nicht wieder rückgestellt wird ist mir auch irgendwie klar.
    siehe bas.src



    jedoch mag ich die zeilen gern in ein unterprogramm tun.. sieht schicker aus....
    ja und das es da keiner Variable gibt, find ich schon komisch... naja


  • Ich würd's eher nicht so probieren, denn 1. ist $BASE eine globale Systemvariable, die die aktuelle BASE enthält. Diese wird also nicht nach dem Verlassen des UPs wieder 'zurückgesetzt'.


    Stimmt. Hab's nochmal nachgelesen. Die Base wird nur zurückgesetzt, wenn das UP durch einen Interrupt aufgerufen wurde.

    Greetings, Irrer Polterer!

    Wie poste ich falsch? Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.


    Life is a beta version. Full of bugs and no Manual.

  • Es ging nun doch schneller als erwartet, da ich noch einen PC mit OfficeLite gefunden hab.
    Also das Problem mit dem geometrischen Operator zu lösen, ist eigentlich recht simpel:


    DECL POS WorldPosAct
    ...
    WorldPosAct = $BASE:$POS_ACT


    In WorldPosAct steht jetzt die Position des TCP im Weltkoordinatensystem.


    Ob es sich lohnt, die eine Zeile in ein UP zu verfrachten, sei jedem selbst überlassen.

  • hallo hinky vielen dank...
    habe das ganze heut auch ausprobiert, nur führt diese kleine zeile zu einem Vorlaufstop und somit
    bringt mit das ganze irgendwie garnichts.
    ja und mein ansatz scheitern ebenfalls durch den vorlaufstop....



    schade,schade

  • Hallo soma,
    den Vorlaufstop kannst Du unterbinden, indem du unmittelbar vor die Zeile mit der Pos.-Erfassung eine Zeile mit CONTINUE einfügst, allerdings frage ich mich, welchen Zweck Deine Positionserfassung hat, wenn der Roboter in Bewegung ist. Ohne Vorlaufstop erfolgt die Erfassung der Istposition 'irgendwo' auf der Bahn, ist ein solcher Wert denn ausagekräftig :?: :gutenacht:

  • ja!!!
    das wäre er
    bei einem Vorlauf von 3 weiß ich somit genau wo ich mich befinde...
    mein robi fährt oder rotiert stets nur in eine richtung,mit mir bekannten Bewegungen.
    bei der erfassung der absoluten koordinaten, geht es darum den roboter in seiner Bewegung auf einen
    bestimmten bereich zu begrenzen. dieser bereich hat eine gewisse toleranz.
    ....



    ich werds mal probieren... danke

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