Habs endlich mal umsetzen können - eine automatische Vermessung von Lichttastern am Greifer
Wir haben 3 Lichtaster (Leutze) die in einem Schaltabstand von 100 mm sehr gute Ergebnisse liefern.
Equipment:
1. Eine Kalibrierplatform
2. Eine Messspitze zum Einmessen der Base für die Kalibrierplatte
So geht's:
Die Maße der Kalibrierplatform ist bei uns 100 x 100 mm gewesen
Baseursprung an der Rechten Roboternahen Ecke, X vom Robi weg und Y nach links
Der Sensor wird mittig zur Platte gefahren und die Position abgeteacht (XP_Sensor1)
Dann werden 4 Punkte Nord Sued Ost und West aus dem geteachten Punkt generiert,
diese liegen ca 100 mm vom Plattenmittelpunkt entfernt.
Ein zwei Interrupts schreiben die Fallende und Steigende Flanke bei den Bewegungen mit.
Bewegungen:
N - S getriggert wird bei Bewegungsstart ein Integerwert nActSearchDir (1)
S - N (2)
E - W (3)
W - E (4)
ACHTUNG: Die Declarationszeilen
DECL INTERRUPT 1 WHEN $MEASPULSE[1]==TRUE DO iMeasPoint(1) ... funzt
DECL INTERRUPT 1 WHEN $MEASPULSE[1]==FALSE DO iMeasPoint(2) ... funzt nicht
Warum? Vielleicht wegen ==FALSE
.... mit vorheriger Zuweisung
$Cycflag[1]= NOT $MEASPULS.... gings dann doch.
Dem Interruptprogramm werden die Parameter 1 oder 2 übergeben (Fallende/Steigende Flanke)
8 Positionen können gespeichert werden. (mPosMeasPoint[nActCalibPoint,nActSearchDir]
DIE RECHNUNG:
Aus gegenüberliegenden gleichflankigen mPosMeasPoints wird der Coronaradius (Bewegung
von der Platte) und der Coreradius (Bewegung zur Platte) berechnet und in Globalen Variablen gespeichert, damit man je nach späterer Suchrichtung einem Offset ergänzen kann
mPosMeasPoint[Sued] wird der Coronaradius bzw Coreradius in X addiert
mPosMeasPoint[Ost] wird der Coronaradius bzw Coreradius in X addiert
Ich hab alles in fCenterSpot geschrieben.
Dann kommt die schon im Forum erwähnte Funktion INV_POS () zum Einsatz:
TOOL_DATA[x] = INV_POS (fCenterSpot)
Rückgabewert ist in diesem Fall ein FRAME.
FERTIG
PS: geht auch mit weniger Bewegung und Punkten, aber wegen der Fehlerkorrektur...
weniger als 1 mm Toleranz - cool