Frage zur Koordinatensystem erstellung

  • Hallo!


    Ich hätte mal eine Frage, ob ich ein Werkobjekt-Koordinatensystem erstellen kann ähnlich wie bei einem Faro-Arm mittels 3 Punkte Eingabe?
    Noch genauer:
    Ich benutze den Roboter hierbei im Handbetrieb und habe eine selbstgebaute Meßspitze (als Werkzeug einprogrammiert). Nun bekomme ich 3 Punkte mit Koordinaten (alle 3 in X,Y,Z) vorgegeben, daraus soll ich dann ein Koordinatensystem erstellen, quasi das des gesamten Fahrzeugs. Denn dann soll ich so ein Objekt (Motorhaube) an bestimmten Punkten anfahren. Habe aber nur die Fzg-Koordinaten vorlegen. Ich würde den Roboter dann wie einen Meßarm wie zB von Faro benutzen.


    Könnte mir da jemand Tips geben oder überhaupt beantworten können ob das funktioniert? Oder ob das noch einfacher ist?
    Leider fehlt mir eine Schulung oder Ausbildung - ich kann mit dem Roboter eigentlich nur die Sachen machen, die ich mir selbst angeeignet habe, bislang reichte es auch für unsere Zwecke, da das meiste in Handbetrieb ist.
    Der Robi ist ein IRB 6400, wenn mich nicht alles täuscht, BJ 1999

  • ANZEIGE
  • Hallo Alex666.


    Klar kannst Du dir das Wobj mittels 3 Punkten ermitteln. Geht manuell über das Bewegungsmenü oder über das Datentypmenü. Man kann sich aber auch ein kleines Prog für schreiben was das erledigt. Muß halt einmal geteacht werden. Vorteil hierbei ist es ist später auch noch nachvollziehbar.


    Ist ganz easy also hier mal ein Bsp.


    PROC MessWobjTisch()
    !
    MoveJ RelTool(pTisch_X1,0,0,-100\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    MoveL RelTool(pTisch_X1,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveL pTisch_X1,v50,fine,R1_tLance;
    Stop;
    MoveL RelTool(pTisch_X1,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveJ RelTool(pTisch_X1,0,0,-200\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    MoveJ RelTool(pTisch_X2,0,0,-200\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    MoveL RelTool(pTisch_X2,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveL pTisch_X2,v50,fine,R1_tLance;
    Stop;
    MoveL RelTool(pTisch_X2,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveL RelTool(pTisch_X2,0,0,-200\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    MoveJ RelTool(pTisch_Y,0,0,-200\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    MoveJ RelTool(pTisch_Y,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveL pTisch_Y,v50,fine,R1_tLance;
    Stop;
    MoveL RelTool(pTisch_Y,0,0,-50\Rx:=0\Ry:=0\Rz:=0),v400,z1,R1_tLance;
    MoveJ RelTool(pTisch_Y,0,0,-300\Rx:=0\Ry:=0\Rz:=0),v500,z1,R1_tLance;
    WobjTisch.uframe:=DefFrame(pTisch_X1,pTisch_X2,pTisch_Y\Origin:=1);
    WobjTisch.oframe:=[[0,0,0],[1,0,0,0]];
    !
    Return;
    ENDPROC


    Dann bräuchtest Du nur noch deine Moves auf das Werkobjekt WobjTisch beziehen.


    Hoffe Du meintest das auch, wenn nicht gib einfach nochmal bescheid.


    Gruß...

  • Hi!


    Naja, nicht ganz ... ;)
    Ich habe ja als Vorgabe die Koordinaten der Punkte des Fahrzeugs (oder Objekts) bekommen (A-C) und muß die Punkte anfahren und dann irgendwie im Roboter eingeben. Irgendwie muß ich das Koordinatensystem des Fahrzeugs bekommen, um verschiedene Messpunkte am Objekt einzumessen. Als Vorlage bekomme ich nur Fzg-Koordinaten aus dem CAD.


    Wenn ich die 3-Pkt Methode anwende, fahre ich ja 3 versch. Punkte an und dann ermittelt der Rob die Koordinaten, oder nicht? Die passen ja dann nicht meinen CAD Daten überein...kann ich die irgendwie ändern oder umschreiben?
    Ist ein bisschen schwer zu erklären, ich habe mal ein Foto gemacht, was die Sache ein wenig vereinfachen könnte:

    Einmal editiert, zuletzt von Alex666 ()


  • Also wenn ich das richtig verstanden habe, dann willst Du anhand von Passpunkten Dein Werkobjekt erstellen - wie die indirekte Basevermessung beim KUKA.
    Das geht meines Wissens beim ABB nicht.


    Ich habe mir jedoch ein Tool programmiert, mit dem man anhand von Ist- und Sollkoordinaten ein Koordinatensystem errechnen kann. Für KUKA funktioniert es schon, für ABB hab ich es noch nicht probiert.
    Wenn Du mir die Passpunkte mitteilst - mindestens 4 an der Zahl - dann schau ich mal, was ich für Dich tun kann.

    Gruß<br />Markus

  • Also wenn Du ein Koordinatensystem aus drei Punkten erstellen willst, gibt es die Funktion DefFrame. Da übergibst Du drei Positionswerte und der ABB berechnet daraus ein Werkobjekt. Schau mal in die Doku, da ist das ganz gut erklärt. Kannst auch bestimmen, wie der Ursprung festgelegt wird. Ich denke das wird Dir weiter helfen.


    Ach so, auf was beziehen sich denn dir drei Punkte überhaupt? Auf den Roboter (wobj0) oder was? Wenn es nicht das wobj0 ist, müsstest Du ein Werkobjekt mit user und objektframe vermessen. Der Userframe stellt dann quasi den bezug zwischen CAD und Welt her und der Objektframe zwischen Koordinaten und den Meßpunkten.
    Hört sich kompliziert an aber lies erst mal die Doku über den DefFrame und auch über das wobj. Wenn Du damit nicht klar kommst dann meld Dich nochmal.


    Gruß
    Stromer

  • Also die Werkobjektberechnung ist die gleiche wie schon vorher beschrieben.


    hier mal für den Userpart.


    WobjCar.uframe:=DefFrame(p_X1,p_X2,p_Y\Origin:=1);


    das gleiche geht dann natürlich auch wie schon von Stromer gesagt für den Objectpart. (OFrame)


    WobjCar.oframe:=DefFrame(p_X1,p_X2,p_Y\Origin:=1);


    Normalerweise hat man dann aber auch immer ein Masterwerkobjekt. Was durch Kameras,Taster etc ermittelt wurde und das andere wird dann nur noch draufgeschoben.


    Gibt noch so eine nette Funktion "PoseMult" für das Multiplizieren von Koordinatenverschiebungen.
    Kannst Du dir ja auch mal in der Doku anschauen.


    Grüße...

  • Ich hätte noch eine frage:
    Wo kann ich eigentlich eine Schulung machen? Auf der ABB Seite bin ich nicht schlau geworden...und bei uns in der Firma wird es wohl nicht mehr angeboten.

  • Hallo zusammen,

    da es das Thema bereits gibt, versuche ich zunächst erst einmal hier zu posten und nichts neues zu erstellen. Ich bin ebenfalls ABB Anfänger und komme aus der heilen KUKA Welt. ;)


    Im Karobau braucht man gelegentlich die indirekte Basis-Vermessung (Werkobjektvermessung) da sich alle Fügepunkte im Fahrzeug auf einen Punkt das Fahrzeug Null beziehen.


    Auf den Vorrichtungen sind zur Vermessung des FZG (welches durchaus 5m in der Luft liegen kann) Bohrungen eingebraucht. Neben jeder Bohrung befinden sich Schilder, welche den Abstand von der Mitte der Bohrung zum Fahrzeug-Null angeben.

    Mit einem Vermessenen Werkzeug (Spitze) fährt man eine Bohrung an und gibt dann die Werte vom Schild an. Der Roboter errechnet dann die Basis.


    Ist es wirklich so, dass ABB von Haus aus nur die primitive Vermessmethode hat?


    Die Beschreibung der Funktion DefFrame bekomme ich irgendwie nicht auf das oben genannte Problem übertragen.


    Wie wurde das Problem final gelöst? Leider hat der Fragende hier nichts mehr gepostet.


    MfG Matthias

  • MaxBlackfield : Zwischen DefFrame, DefDFrame und DefAccFrame ist sicher was dabei... aber...


    ich rate Dir dringend davon ab, beim ABB ein weit entfernt liegendes Koordinatensystem zu verwenden, und mit weit entfernt meine ich auch schon den Fahrzeug-Null beim Automobilbau. Ist zwar nice, wenn sich die Ergebnisse aus dem Meßraum 1:1 ins Roboterprogramm übertragen lassen, aber da darf es auf den Millimeter nicht ankommen.


    Der Grund ist, dass die Datenstruktur wobjdata für Koordinaten und Quartenionen seit jeher "num" verwendet, und die ist m. W. immer noch ein 32-Bit-Float. Bei 'nem 5 Meter entfernten Nullpunkt kriegst Du massive Probleme, mit ausreichender Genauigkeit irgendwas zu berechnen. Geschweige denn, definierte Punkte auf der Vorrichtung in diesem Koordinatensystem genau genug einzumessen.

    Glaub's mir, ich hab's probiert....

  • Ich glaub es dir, die Sache mit der Ungenauigkeit, und dass es nicht funktioniert. Aber das liegt. M. nach nicht an der Zahlendarstellung, da reichen die 32bit float problemlos aus. Das dürfte eher eine Frage der absoluten Genauigkeit der Roboter, und der grossen Abstände, die kleinste Fehler auf der Vermessungsseite zu sehr grossen auf der Bearbeitungsseite wachsen lässt sein.

  • Hallo Max,


    wenn ich Dich richtig verstanden habe, dann möchtest Du anhand eines Referenzpunktes eine Nullpunktverschiebung von Deinem (bereits vermessenen) Koordinatensystems machen.

    Im ersten Schritt teachst Du also Deinen Referenzpunkt und schreibst die xyz Werte in Dein Koordinatensystem. So weit so einfach.

    Jetzt hast Du aber an dem Punkt noch zusätzliche Korrekturwerte, richtig?

    Die musst Du also auch eingeben (z.B. UIMessageBox) und mit den Werten aus dem Referenzpunkt verrechnen bevor Du die XYZ Werte in das Koordinatensystem einträgst.

    Die Ausrichtung änderst Du damit natürlich nicht.


    Gruß

    Stromer

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