Plötzlicher Versatz nach Umorientierung

  • Guten Morgen,


    seit ein paar Tagen verfolgt mich ein Problem für das mir die Lösungsansätze ausgehen...


    Folgendes Szenatio. (Roboter ist ein IRB14000)


    Auf einem Objekttäger, welcher mittels Kamera eine Positionsvermessung durchläuft (Lage und Rotation) sollen Objekte Platziert werden.
    Die Plätze stammen aus dem CAD und wurden auch verifiziert. (Plätze 1-7)


    Im Zuge der Fehlersuche habe ich mit einem Tool welches an dem Saugeranschluss des Smartgrippers ("Daumen") angebracht ist (Spitze), die Positionen abgefahren. (name "tCalib")
    Diese Spitze fährt die Kalibrierte (fixe) Aufnahmeposition an, und dann jede Setzposition für sich ohne zur Aufnahmeposition zurückzukehren.


    Fahre ich diesen Test, wird jede Position so angefahren wie gewünscht. Hier findet keine Umorientierung statt.


    Mache ich einen ähnlichen Test mit dem Greifwerkzeug (angebracht am Servo - Name "tGripper") bekomme ich Probleme.
    Diese Routine nimmt ein "ideales" Objekt mit tGripper aus der selben definierten Position und fährt ebenfalls über die Setzpositionen.
    Positionen 1 und 2 werden normal angefahren, 3 bis 7 um Z 180° gedreht.


    Soweit hoffentlich verständlich.
    Das Problem ist nun, dass Positionen 1 und 2 wie gewünscht "getroffen" werden, Positionen 3 bis 7 allerdings in X und Y um jeweils >1mm verschoben sind.


    Die Positionsbestimmung wird folgendermaßen durchgeführt:
    Kamera und UFrame haben den selben Ursprung.
    Der OFrame wird mit PoseMult an die jeweilige Setzposition verschoben und dann der Punkt 0,0,0 angefahren (also der OFrame selbst). Hierbei sind der Versatz und die Rotation welche die Kamera mitteilt bereits eingerechnet (das würde nun zu weit führen denke ich)


    Meine bisherigen Ansätze waren:
    - Würde das Tool nicht passen, hätte ich den selben Versatz an allen Positionen
    - Würde die "Kalibrieraufnahme" nicht passen, hätte ich den selben Versatz ebenfalls an allen Positionen
    - Würde die Kamera und damit das PoseMult falsch arbeiten, hätte ich variierenden Versatz an allen Positionen


    Die Tools habe ich Rotatorisch geprüft (Spitze - Spitze und dann rotieren lassen => blieben aufeinander)


    Vielleicht gibt es hier eine Muse die den entscheidenden Hinweis geben kann...

    Einmal editiert, zuletzt von yuminist ()

  • ANZEIGE
  • Hallo Yuminist,


    Ich mache eine Transformtion immer mit dem Befehl trans.
    X,Y und Z auf den Oframe und die Rotation auf den Uframe.
    Vielleicht löst das dein Problem.

    Nichts ist für die Ewigkeit .

  • Der OFrame dreht um sich um den UFrame, das Tool um sich selbst. Wenn das Tool beim Um-Sich-Selbst-Drehen ordentlich bleibt, dann liegt es am OFrame.
    In der Argumentationskette ist ein Loch bei der Erstellung der Kameraposition bzw. bei der Einbindung der 180°. Kamerasysteme arbeiten wohl gewöhnlich so, dass sie einen seitlichen Versatz in der Bildebene rausgeben und dann noch einen Lagewinkel. Wenn Du rein rechnerisch den Versatz dann einfach an der ermittelten Stelle um 180 Grad drehst, bleibst Du doppelt auf Parallaxenfehlern und Ausrichtungsunstimmigkeiten sitzen.
    Im Grunde sind vermutlich auch die Positionen 1 und 2 "falsch", wobei "falsch" die Hälfte des an 3 - 7 ausgemachten Fehlers in die entgegengesetzte Richtung bedeutet, dies wurde aber rauskalibriert, wodurch 3 - 7 überkompensiert wird. Die Umorientierung des Teils an sich hingegen ist weitgehend real, weil sie dem Kamerabild entspricht.


    Grüße,
    Michael

  • Zunächst einmal vielen Dank für die Mühe


    Sebastian78
    Ich habe es auf einen Versuch ankommen lassen - ohne Erfolg. Für mich möchte ich eine Re-Orientierung nicht auf UFrame und OFrame aufteilen.
    Der UFrame ist der Träger und der OFrame die "Zielposition"


    Programmiersklave
    Ganz durchblickt habe ich noch nicht wie du deinen Ansatz meinst.
    Allerdings habe ich den Eindruck, was nicht richtig beschrieben zu haben.


    Das Kamerasystem an sich gibt nur eine Translatorische und Rotatorische Abweichung des Objektträgers heraus inwieweit er vom "ideal" abweicht.


    Die Verrechnung des OFrame beinhaltet die Setzpositionen aus einem Array (CAD-Daten)
    Die X/Y Koordinaten sowie die Orientierung (Teile 3-7 werden 180° gedreht gesetzt) kommen also aus diesem Array und nicht aus dem Kamerasystem.
    Das Kamerasystem erfasst lediglich die fixen Punkte von denen aus bemaßt wurde.


    Wenn ich deinen Ansatz korrekt verstanden habe, müsste der Fehler bei Positionen 1 und 2 jedoch auch sichtbar sein. Denn die Positionen 3-7 weichen ja >1mm vom soll ab.
    Wir bewegen uns hier im Zehntelbereich was die Positionierung angeht.


    Was genau du mit "rauskalibriert" meinst, ist mir nicht gänzlich klar.


    //EDIT
    Kurzer Nachtrag:
    ich habe die Tools soweit nochmal eingemessen und mir kamen die Werte etwas eigenartig vor => also nochmal eine Feinkalibrierung durchgeführt.
    Das Ergebnis der Einmessung danach lautet für tGripper 0.23 mittlere Abweichung.


    Der Fehler an sich hat sich verändert. Nun passen Punkte 1 und 2 zwar nach wie vor, allerdings nicht mehr ganz so "perfekt" wie vorher. Punkte 3-7 hingegen sind in y gewandert (zum soll hin)


    sobald alle Punkte die gleiche Abweichung haben, ist es einfach - dann muss der UFrame nur noch deckungsgleich mit dem Rest gebracht werden und es sollte passen.


    Leider haben wir keine Hardware zum Einmessen der Tools => also versuche ich das Einmessen "Spitze-Spitze" mit 4 Punkten.
    Hat jemand eine bessere Strategie?

    Einmal editiert, zuletzt von yuminist ()

  • Ah, jetzt wird es klarer, hatte Dich da falsch verstanden.


    Okay, bei solchen "Winzigkeiten" bin ich raus, das sind Laborbedingungen, die man m. E. einer Industrieanlage eher nicht aufbürden kann, jedenfalls nicht ohne pragmatisch funktionierender Kalibrierlösung.


    Grüße,
    Michael


  • Ah, jetzt wird es klarer, hatte Dich da falsch verstanden.


    Okay, bei solchen "Winzigkeiten" bin ich raus, das sind Laborbedingungen, die man m. E. einer Industrieanlage eher nicht aufbürden kann, jedenfalls nicht ohne pragmatisch funktionierender Kalibrierlösung.


    Grüße,
    Michael


    Ja leider geht es genau darum. Das ganze hat noch lange keinen Stand den man in einer industriellen Umgebung einsetzen könnte. Aktuell geht es nur um "klappt das generell" und das erheben von Daten um diese auswerten zu können.


    Solange ich da aber solche "Krankheiten" drin habe, ist dan reproduzierbare Daten leider nicht zu denken.

  • Sebastian78


    Die Stoßrichtung des Werkzeugs ist korrekt (ich weiß gar nicht wie oft ich das mittlerweile geprüft habe XD) und ich habe es sogar soweit dass es "rotationstreu" ist. Sprich drehe ich das Tool um Z um eine Spitze, bleibt diese wo sie ist (ist bei händischer Kalibrierung nicht selbstverständlich)


    Warum ich die Translation im oFrame und die Rotation im uFrame machen sollte, erschließt sich mir noch nicht.
    Im Grunde gibt es doch genau für solche Zwecke "PoseMult", oder nicht?


    Mit der Rotation an sich habe ich weniger Probleme (die Rotatorische Ausrichtung passt ja) - nur der Versatz in XY irritiert mich.


    Ich denke das Hauptproblem ist - wie Programmiersklave schon anmerkte - dass dies ein Grenzbereich ist. Ich versuche mich hier so weit es geht unter einem Zehntel genauigkeit zu bewegen.


    Nachdem ich mich die letzten Tage wesentlich mit den Tools, dem Referenzobjekt und den Objektträgern beschäftigt habe, komme ich langsam zum Schluss, dass man über eine rein elektronische Kalibrierung nicht drum herum zu kommen scheint wenn man sich in diesem Bereich zuverlässig bewegen will.

  • Hi yuminist,


    versuchs mal mit meinem beispiel, das muss funktionieren.Nochmal zum Verständnis. Du bekommst x und Y und zwei Winkel von der Kamera ? Der Pose Mult Befehl sieht mir so aus macht nur eine Verschiebung auf das Koordinatensystem und nimmt die Orientierung des Ursprung Koordinatensystems mit. Ich denke daher kommt der Versatz.ich habe den Befehl noch nicht verwendet, müsste ich selber ausprobieren und mir dann die Werte angucken.


    Gruß Sebastian

    Nichts ist für die Ewigkeit .

    Einmal editiert, zuletzt von Sebastian78 ()

  • so - sorry für die verzögerung


    Sebastian78
    du hast mich da etwas falsch verstanden - ich bekomme von zwei kameras je einmal translations- und rotationsdaten
    diese werden dann getrennt voneinander verarbeitet.
    pro kamera bekomme ich also x und y sowie ein rotationsoffset


    im grunde also genau das, was posemult braucht (eine pose)


    mittlerweile habe ich das problem des versatzes gefunden und behoben


    es lag wie programmiersklave schon richtig anmerkte, an kleinigkeiten. das koordinatensystem von kamera und roboter war nicht exakt synchron (da muss ich mal schauen wie man das besser einrichten kann) und der TCP war nicht zu 100% rotationssicher (wird dann wohl in naher zukunft elektronisch vermessen)


    alles in allem also die summe kleinerer abweichungen

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