Punkte im Raum verschieben, Kreisbewegung machen

  • Hallo,


    ich habe folgendes Anliegen:


    ich möchte mit dem Roboter eine Kreisbewegung mittels MoveC durchführen.


    Dazu habe ich 3 Punkte im Raum: Startpunkt(S), Mittelpunkt(M), Endpunkt(E).


    Die Kreisbewegung ist immer die selbe, bleibt also immer gleich.
    Doch die Positionen von (S), (M) und (E) ändern sich. (S) ist immer mein Referenzpunkt.
    Das heißt, wenn ich die Koordinaten von (S) im Raum verschiebe, müssen dementsprechend die Koordinaten
    von (M) und (E) auch verschoben werden, sodas die Kreisbewegung immer die gleiche bleibt.


    Wenn ich alle Punkte mit Offs() verschiebe bekomme ich eine Fehlermeldung, dass der Kreisbogen ungestimmt sei.
    Deshalb möchte ich nun den Abstand der Punkte (M) und (E) zu (S) ermitteln, so dass ich nur (S) verschieben muss und
    die anderen 2 Punkte verschieben sich dann automatisch.


    Hat jemand einen Tipp wie ich dies lösen könnte?

  • ANZEIGE

  • Den Objectframe im Werkobjekt des entsprechenden Bewegungsbefehls verschieben.


    vielen Dank für die Antwort.


    Meinst Du "CirPathMode"? Könntest du eventuell ein Beispiel geben?

    Einmal editiert, zuletzt von abb2400 ()

  • Nein, er meinte das Basiskoordinatensystem zu verschieben statt die Punkte. Denn dafür ist es da.
    Beim ABB sehr einfach zu machen, indem man im OFrame was eingibt bzw. speichert. Lies mal im Handbuch unter Datentypen | Wobjdata. Unmittelbar vor der Kreisbewegung berechnen und reinschreiben, dann verwenden, und hinterher (falls nötig) wieder clearen oder anderes verwenden.


    Grüße,
    Michael

  • Genau, das mit dem OFrame ist der einfachste Ansatz. Dabei würde ich den S-Punkt auf 0,0,0 legen (Einmessroutine) und die beiden Punkte teachen.
    bekommst Du nun neue XYZ Werte (relativ zum eingemessenen Nullpunkt) kannst Du sie direkt in die XYZ-Werte vom OFrame eintragen und schon ist die Bahn verschoben.


    Gruß Stromer

  • Beispiel (quick and dirty):

    Code
    ! Verschiebung um x=50 / y=10
        wTemp:=wBand;
        wBand.oframe.trans.x:=wBand.oframe.trans.x+50;
        wBand.oframe.trans.y:=wBand.oframe.trans.y+10;
        MoveC P1,P2l,v30,fine,tGreifer\WObj:=wBand;
        wBand:=wTemp;
  • Vielen Dank für Eure Antworten.


    Ist es üblich das man einfach das gesamte Koordinatensystem verschiebt? In meinem Fall müsste ich ja dann innerhalb einer Sekunde jedes Mal das Koordinatensystem verschieben!

    Einmal editiert, zuletzt von abb2400 ()

  • und noch eins zu:



    [...] Dabei würde ich den S-Punkt auf 0,0,0 legen (Einmessroutine) und die beiden Punkte teachen. [...]


    (S) ist bei mir irgendwo mitten im Raum, ist dies nicht möglich??

  • Problem gelöst. Vielen Dank für Eure Unterstützung.

    Einmal editiert, zuletzt von abb2400 ()


  • Üblich oder nicht ist wurscht, was zählt ist das Ergebnis.


    naja es zählt zwar das Ergebnis, aber es gibt ja elegante Lösungen und schlechte Lösungen. Ich wollte halt nur wissen, ob diese Methode die gängigste ist. Aber ich denke das ist die einfachste und beste Lösung für das Problem

  • dann habe ich noch eine Frage:


    ich habe ja die Kreisbewegung mit den 3 Punkten (S), (M) und (E).
    Die Kreisbewegung wird so lange ausgeführt bis ein Sensor erreicht ist, also wenn der digitale Eingang von 0 auf 1 schaltet.
    Jetzt soll an dem Punkt, wo der Interrupt ausgelöst wurde der gleiche Weg nach Startpunkt (S) zurückgefahren werden.
    Es geht mir nicht um die Befehle für den digitalen Eingang etc, sondern dass der Roboter den gleichen Weg zurückfährt, egal wo auf der Kreisbewegung der Interrupt ausgelöst wurde.

    Einmal editiert, zuletzt von abb2400 ()

  • Ah, beim ABB kann man gar keinen Winkel angeben, soweit ich weiß.... so trivial scheint das gar nicht zu sein, wenn ich drüber nachdenke.
    Wenn Du sicher sein kannst, dass der Hilfspunkt überfahren wurde, bevor der Sensor kommt, wäre es kein Problem... anderenfalls würde ich wirklich eine Runde rechnen und mir die Punkte für eine neue Kreisbahn zurück generieren, d. h., eigentlich bräuchte man ja nur einen neuen Hilfspunkt. Startpunkt wäre die Interrupt-Position, Endpunkt wäre der alte Startpunkt.
    Wenn es einen gewissen Mindestabstand zwischen Startpunkt und Sensorauslösung gibt, käme wohl auch eine schmutzige Lösung infrage, die irgendwo auf der Bahn Istpositionen speichert.


    Der ABB an sich kennt, soweit ich weiß, keine Möglichkeit, auf einer Kreisbahn einfach umzukehren.


    Grüße,
    Michael

  • Der Mittelpunkt wird je nach Abbruchsituation mal überfahren mal nicht, deshalb kann ich mich nicht danach richten.


    Gibt es denn ne Möglichkeit wie ich zurück zum Startpunkt (S) fahre, ohne die Orientierung zu ändern? Weil so bald ich einfach sage fahr zum Punkt (S) zurück, dann ändert der Roboter die Orientierung, und dabei kann es sein, dass ich das Werkstück beschädige.

  • Hallo abb2400,


    soweit ich weiß, gibt es eine Funktion, mit der man eine Bahn aufzeichnen kann und auch wieder zurück fahren kann. Ich muß allerdings zugeben, dass ich das noch nie gemacht habe. Ist was mit PathRec, kannst ja mal in die Doku schauen.


    Gruß
    Stromer


  • Der Mittelpunkt wird je nach Abbruchsituation mal überfahren mal nicht, deshalb kann ich mich nicht danach richten.

    Wobei der "Mittelpunkt" ja nicht in der Mitte liegen muss, das ist ja lediglich aus Genauigkeitsgründen erstrebenswert. Es spricht grundsätzlich nichts dagegen, den Hilfspunkt auf 5% der Strecke zu legen.
    Aber wie gesagt, man könnte ihn ja auch neu berechnen, auf das Teilstück, was (zurück) zu fahren wäre.


    Gibt es denn ne Möglichkeit wie ich zurück zum Startpunkt (S) fahre, ohne die Orientierung zu ändern? Weil so bald ich einfach sage fahr zum Punkt (S) zurück, dann ändert der Roboter die Orientierung, und dabei kann es sein, dass ich das Werkstück beschädige.

    Du meinst linear? Sicher, dann musst Du nur vorher den robtarget.rot (q1 - q4) von der Istposition (Funktion CRobT(), vorher gründlich anhalten!) in den neuen Zielpunkt übertragen, robtarget.trans (die xyz-Daten) dagegen aus dem alten Startpunkt nehmen.


    Eventuell musst Du aufpassen mit der Konfigurationsüberwachung (confL), falls die Bewegung durch Konfigurationen führt, die er sonst nicht erreichen würde.


    Stimmt, PathRec usw. wäre auch noch eine Möglichkeit, habe ich aber auch noch nie verwendet. Ist irgendwas neumodisches :P ....


    Grüße,
    Michael

Hilfe und Support für ABB Roboter Programmierung, Konfiguration, Inbetriebnahme finden Sie hier im ABB Roboter Forum. ABB Rapid Programmierung ist einfach, die Roboterforum Community hilft sehr gerne.

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