Ausrechnen des Mittelpunktes einer Messspitze

  • Hallo Community,
    In meinem derzeitigen Projekt, verlangt mein Kunde von mir das ich für die Messspitze und das Werkstück eine "Fliegende Messung" installiere.


    Umgesetzt wir das mit einer Lichtschranke. Mein Programm sieht derzeit so aus:


    Damit fahre ich mit der Messspitze am oberen Ende in die Lichtschranke und speichere den ersten Ausschlag, sowie die abfallende Flanke der Schranke in 2 Punkten, das gleiche passiert am unteren Ende der Spitze und auch nochmal beide Stellen um 90° verdreht.
    Mit diesen "gesuchten" Punkten soll ich nun den Mittelpunkt ausrechnen ... leider habe ich derzeit keinen Plan wie ich das machen soll.


    Könnt ihr mir da vielleicht nen Tipp oder ein Programmbeispiel für ABB geben? Ich hätte zu dem selben Thema eins von Kuka ... kann es nur nicht in ABB umsetzen :/


    Freundliche Grüße
    Daniel aka Eddiero

  • ANZEIGE
  • Ist eigentlich nur ein bisschen Mathematik. Du fährst ja sicherlich einmal in X-Richtung und einmal in Y-Richtung.
    Also rechnest Du einmal die Mitte in X und einmal in Y aus. Die beiden Werte schreibst Du Dir dann in Deinen Mittelpunkt.


    Warum fährst Du 8 Punkte an, hab ich nicht verstanden?


    Gruß
    Stromer

  • Hey, erstmal danke für die Antworten.


    Ich fahre eine Zylinderfömige Messspitze im Greifer durch eine Gabelförmige Lichtschranke.
    Ich fange oben an, heißt am Ende Richtung Greifer und fahre MB1(Messbewegung 1) an.
    In dieser Fahrt habe ich einmal eine Steigende Flanke (PosFlank) MP_1(Messpunkt 1) und eine Negative Flanke (NegFlank) MP_2, jeweils für die beiden Seiten der Messspitze.


    Als Erklärung, ich fahre 4x in Y, 2x bei Achse 6 in 0° Stellung und 2x mit 90°.
    Sind summa summarum 4 Punkte für Y und 4 Punkte für X.


    Mein Problem ist jetzt, ich weiß nicht wie ich die Punkte in Vektoren, bzw ein robtarget für den Mittelpunkt der Messspitze umrechnen kann.


    Sobald nämlich der Mittelpunkt bekannt ist, soll ich einmal in die Mitte der Lichtschranke fahren und dann die Messspitze um Z verschieben, damit ich die Länge herausbekomme.


    Michael
    Welcher Wert sollte denn vorhanden sein?


    FG
    Daniel aka Eddiero

  • Angenommen MP_1 / MP_2 sind X-Richtung und MP_5 / MP_6 sind Y-Richtung und es wird jeweils genau in diese Koordinatenrichungen gefahren, dürfte es in etwa so klappen:


    Für die Berechnung hast Du da schon viel zu viel Input (die 90 Grad gedrehte Bewegungen sind m.E. nicht notwendig), daher meinte der Programmiersklave wohl dass die Messspitze komplett vermessen werden soll, dazu würde dann der Abstand der Messpunkte in Z fehlen, ist aber hier nicht der Fall, da die Messung ja in einer einzigen Ebene stattfindet.

  • Nee, er braucht ja die X/Y Lage "oben" und die xy-Lage "unten". Und bekannt sein muss an der Stelle schon die Position des Flansches relativ zur Lichtschranke bzw. der Abstand der Meßpunkte relativ zum Flansch oder zu einem anderen Koordinatensystem, sonst geht die Messung ja ins Ungewisse.
    Der Vektor liegt halt "irgendwo" im Raum und hat eine unbestimmte Länge, die aber auf jeden Fall in die Lichtschranke reinragt.


    Grüße,
    Michael

  • Hey nochmals danke für die Antworten,


    Bekannte Werte sind:


    1. Länge des Greifers: 200 mm
    2. Länge der Messspitze(welche aber nicht unbedingt stimmen muss, denn soll nach der Errechnung des Mittelpunktes auch ausgemessen werden): 172,5 mm
    3. Abstand der Messpunkte in Z: 62,5 mm
    4. Durchmesser der Messspitze: 25 mm
    5. Gesamtlänge (Greifer und Messspitze): 370 mm


    Die Lichtschranke ist ein eigenes Wobj wie man im Programm sieht. Kleiner fehler von mir war das ich mit der Messspitze fahre, anstatt mit dem Greifer, das wird noch geändert.


    in Kuka sieht die Rechnung so aus, mit dem gleichen Bewegungsablauf, mal abgesehen das dort keine Negative Flanke verwendet wird, sondern jede Seite der SPitze eizeln angefahren wird:

    Einmal editiert, zuletzt von Eddiero ()

  • In der dollen Rechnung wird der Winkel ja gar nicht berücksichtigt, das ist ja einfach nur 'ne Addition des Durchschnitts auf die entsprechenden Koordinaten des Tools. Kannste in Rapid genauso machen, nur dass Du halt irgendein POS deklarieren und nehmen musst und dann dies POS in die Tooldata.Tframe.Trans reinkopierst. ABC null entspricht Orient [1,0,0,0] beim ABB.
    Oder fehlt da noch was?


    Man könnte das ja deutlich komplizierter machen. ATan von den X/Z und Y/Z-Verhältnissen, dann den Winkel mit in das Tool und so....


    Grüße,
    Michael

  • Hi,


    du kannst Dein Tool in Werkzeugrichtung verschieben, wenn Du die Funktion PoseMult verwendest.


    Im folgenden Beispiel wird das Tool "tMessspitze" um 20 mm in Z-Richtung verschoben und in dem Tool "tMessspitzeNeu" gespeichert.



    Gruß
    Micky

    Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind. (Albert Einstein)

  • Hey auch, vielen dank für eure Vorschläge,


    Ich hab mir dieses WE nochmal gedanken gemacht, wäre es möglich die gespeicherten Punkte in ein Jointtarget umzurechnen um dann damit die ausrichtung der Messspitze, bzw später dann des Werkstücks zu berechnen?


    Dann würde ja der Winkel, der ja den Bezug zum WObj und Tool hat komplett wegfallen ... da man ja dann die Winkel einzeln rausziehen kann.


    Wie seht ihr das?


    FG Daniel aka Eddiero

  • Nee, das sind ja die Achswinkel des Manipulators, die haben mit Deinem Ding dann gar nichts zu tun.
    Die Frage ist am Anfang immer: was will man eigentlich? Sobald Du das definierst, kann man auch Lösungen machen. Die einfache Lösung ohne jede Berücksichtigung irgendwelcher Winkel hattest Du ja vorher. Wenn Du nun die Orientierung mit berechnen willst, dann brauchst Du eben etwas mehr Rechenaufwand.
    Unter "was will man eigentlich?" fällt ja auch die Frage nach dem Verwendungszweck. In manchen Fällen ist es gesünder, anzunehmen, dass die Mechanik tatsächlich rechte Winkel aufweist, und jede Messung mit dem Roboter eigentlich eher eine größere Ungenauigkeit erschafft. Und was misst man dann hinterher mit der "Messspitze" ein? Ist das eine hochgenaue Fräsapplikation oder will man damit irgendeine Stapelgeschichte erschlagen? Wieviel Aufwand darf man treiben, wie lange darf es dauern, wer muss damit umgehen können, warum hat es bisher so funktioniert und waren alle zufrieden damit?


    Grüße,
    Michael

  • Also die Messspitze soll eingemessen werden, um später bei der Einrichtung des Fräsers als abstandhalter zu dienen.
    Heißt ich habe einen stationären Fräser, der wenn ein Fräserwechseln ansteht mit der Messspitze angefahren wird, um dann die Einspannlänge genau zu bestimmen.


    Das Werkstück muss vermessen werden, weil das Einlaufband nicht die geforderte Lagegenauigkeit hat. Heißt es wackelt in den Auflageflächen herum.

  • Heyho zusamme,


    Nach längerem überlegen ist mir nun diese Rechnung eingefallen:


    Denkt ihr für die Zylinderförmige Messspitze wird das ausreichen, wenn man den Winkel nicht weiter beachtet? Ich meine, der Winkel ist eh nicht weiter wichtig in den Tooldaten.




    Danke schonmal :)


    FG Daniel aka Eddiero

    Einmal editiert, zuletzt von Eddiero ()

  • Und wieder ich, nun da die Messspitze ausgemessen ist, fehlt nur noch das Werkstück.
    Das Programm mit bewegungsablauf sieht derzeit so aus:


    Dieses mal bewege ich die Messpunkte nur um die 6. Achse, heißt man müsste ja nur den Mittelpunkt da heraus rechnen.


    Leider weiß ich dann nicht wie ich weiterverfahren kann, damit diese Korrektur auch auf alle Nachfolgenden Punkte übertragen werden kann.


    Im Prinzip müsste ich den Winkel dann in ein Toolobj schreiben, oder?


    FG Daniel aka Eddiero

    Einmal editiert, zuletzt von Eddiero ()

  • Denkt ihr für die Zylinderförmige Messspitze wird das ausreichen, wenn man den Winkel nicht weiter beachtet? Ich meine, der Winkel ist eh nicht weiter wichtig in den Tooldaten.


    Ja, wie gesagt, es kommt darauf an, was man eigentlich will. Wenn es nicht weiter wichtig ist, dann kann man es auch einfach halten. Die Rechnung scheint rein optisch schon mal der der Vorlage zu entsprechen.


    Zu dem Werkstück-Ding: ehrlich gesagt, durchschaue ich den Code nicht auf den ersten Blick. - Es ist recht ungewöhnlich, mit Achswerten zu arbeiten und eigentlich nur in Ausnahmefällen sinnvoll. Ich weiß ja auch nicht genau, wie, wo und was womit gemessen werden soll.


    Normalerweise drehst Du um ein Tool, von dem die Robotersteuerung weiß, wo es sich befindet. Durch das Einmessen hat man dann ein (Differenz-) Koordinatensystem gewonnen / berechnet, welches sich beim KUKA mit ":" und beim ABB mit "PoseMult()" auf ein anderes Koordinatensystem draufschlagen lässt, z. B. eben auf den TFrame eines Tooldata, oder im anderen Falle auf ein WObj, wobei ein WObj. schon so aufgebaut ist, dass man 2 Frames darin speichern kann und der ABB die automatisch aufeinanderrechnet.
    Einen numerischen Achswinkel, den Du irgendwie ermittelt hast kannst Du mit der ABB-Funktion "orientZYX()" in eine Quaternionen-Angabe umrechnen.


    Grüße,
    Michael


  • Zu dem Werkstück-Ding: ehrlich gesagt, durchschaue ich den Code nicht auf den ersten Blick. - Es ist recht ungewöhnlich, mit Achswerten zu arbeiten und eigentlich nur in Ausnahmefällen sinnvoll. Ich weiß ja auch nicht genau, wie, wo und was womit gemessen werden soll.


    Heyho auch,


    Ich fahre die Lichtschranke im Greifer-Toolobj an. Das Werkstück ist im Prinzip das selbe System wie der Greifer nur um 163,5 mm in Z versetzt, also addiert auf das Greifer-Z.


    Ich nehme das Werkstück mit einer Achstellung von -100° in der 6. Achse auf, das ist Quasi mein Mittelpunkt.


    Die Messbewegungen drehen die Achse 6 um jeweils 90° nach links und rechts.
    Danach werden die "gefundenen" Achswerte addiert und durch 2 dividiert, heißt gemittelt.
    Die errechnete Mitte, schreibe ich auf die Achstellung von "WS_Mitte" und rechne diese dann wieder in ein robtarget um.


    Nun habe ich meinen berechneten Mittelpunkt "WS_Mitte_R".


    Das ist jetzt die Grundstruktur meiner Berechnung. Was kann ich jetzt machen um eben die ermittelte Mitte für die Fräsapplikation nutzbar zu machen. Das sich die Fräspunkte eben um die -102° bzw um die -2° verschieben?


    Kann man jetzt die Rotation des "WS_Mitte_R" nehmen und die auf ein Toolobj schreiben, um damit dann das Fräsen abzufahren? Oder gibt es da eine andere Lösung?


    FG
    Daniel aka Eddiero

  • Ja, das wäre schon eine angemessene Vorgehensweise. Rechnest die Winkeldifferenz auf das existierende "Normal"-Tool drauf, oder, falls Du Robhold=TRUE benutzt, auf das mitfahrende Werkobjekt. Sauber geht das, wie schon erwähnt, mit OrientZYX(), die entstandene Orientierung dann in eine POSE gibst und die mit Trans:=[0,0,0] via PoseMult auf die Pose des Referenztools rechnest.
    Bei Deinem Spezialfall kannst Du freilich auch einfach die Orient-Angabe in das Tool kopieren, dürfte das Gleiche ergeben.


    Grüße,
    Michael

  • :danke: erstmal an alle Helfer bei meinem Problem, besonders dem Programmiersklaven.


    Leider will es noch nicht so ganz.
    Ich habe die errechnete Rotation von der WS_Mitte_R nun in mein Werkstück überragen und fahre mit diesem nun die Fräsapplikation durch. Nur direkt im ersten Punkt mit dem Werkstück, will mein Roboter nichts mehr von den geteachten Punkten wissen und fährt sonst wo hin.


    zur Erklärung, meine Werkstück toolobj definiert sich wie folgt:
    TASK PERS tooldata Werkstuck:=[TRUE,[[0,0,373.5],[1,0,0,0]],[6,[0.9,2,170.8],[1,0,0,0],0,0.004,0.01]];


    Und mit diesem Werkstück, habe ich das Fräsprogramm abgefahren und geteacht.

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