Ein Koordinatensystem kann definiert werden, wenn eine Gruppe von Zielen an zwei verschiedenen Positionen bekannt ist. Daher werden dieselben physischen Positionen verwendet, aber unterschiedlich ausgedrückt.
Betrachten Sie dies aus zwei verschiedenen Blickwinkeln:
Dieselben physischen Positionen werden in verschiedenen Koordinatensystemen ausgedrückt. Beispielsweise wird eine Anzahl von Positionen aus einer CAD-Zeichnung abgerufen. Diese Positionen werden daher im lokalen CAD-Koordinatensystem ausgedrückt. Dieselben Positionen werden dann im Welt-Koordinatensystem des Roboters ausgedrückt. Aus diesen beiden Positionsgruppen wird das Koordinatensystem zwischen dem CAD-Koordinatensystem und dem Welt-Koordinatensystem des Roboters berechnet.
Eine Anzahl von Positionen bezieht sich auf ein Objekt an einer Originalposition. Nach einer Verschiebung des Objekts werden die Positionen erneut bestimmt (häufig durch Suche). Aus diesen beiden Positionsgruppen (alte Positionen, neue Positionen) wird das Verschiebungs-Koordinatensystem berechnet.
Drei Ziele reichen, um ein Koordinatensystem zu definieren, aber für eine höhere Genauigkeit sollten mehr Punkte verwendet werden.
Grundlegende Beispiele Grundlegende Beispiele für die Funktion DefAccFrame sind unten aufgeführt.
Beispiel 1:
CONST robtarget p1 := [...];
CONST robtarget p2 := [...];
CONST robtarget p3 := [...];
CONST robtarget p4 := [...];
CONST robtarget p5 := [...];
VAR robtarget p6 := [...];
VAR robtarget p7 := [...];
VAR robtarget p8 := [...];
VAR robtarget p9 := [...];
VAR robtarget p10 := [...];
VAR robtarget pWCS{5};
VAR robtarget pCAD{5};
VAR pose frame1;
VAR num max_err;
VAR num mean_err;
! Add positions to robtarget arrays
pCAD{1}:=p1;
...
pCAD{5}:=p5;
pWCS{1}:=p6;
...
pWCS{5}:=p10;
frame1 := DefAccFrame (pCAD, pWCS, 5, max_err, mean_err);
Die fünf Positionen p1- p5. die sich auf ein Objekt beziehen, wurden gespeichert. Die fünf Positionen werden auch in Relation zum Welt-Koordinatensystem als p6-p10 gespeichert. Aus diesen 10 Positionen wird das Koordinatensystem frame1 zwischen dem Objekt und dem Welt-Koordinatensystem berechnet. Das CAD-Koordinatensystem wird im Welt-Koordinatensystem ausgedrückt. Wenn die Eingangsfolge der Targetlists vertauscht wird, also DefAccFrame (pWCS, pCAD....) , wird das Welt-Koordinatensystem im CAD-Koordinatensystem ausgedrückt.
Rückgabewert Datentyp: pose
Das berechnete TargetListOne-Koordinatensystem ausgedrückt im TargetListTwo-Koordinatensystem.
Argumente DefAccFrame (TargetListOne TargetListTwo TargetsInList MaxErr MeanErr)
TargetListOne
Datentyp: robtarget
Datenfeld mit Roboterzielen, das die Positionen enthält, die in Koordinatensystem 1 definiert wurden. Die Mindestanzahl der Roboterziele ist 3, die Höchstanzahl 10.
TargetListTwo
Datentyp: robtarget
Datenfeld mit Roboterzielen, das die Positionen enthält, die in Koordinatensystem 2 definiert wurden. Die Mindestanzahl der Roboterziele ist 3, die Höchstanzahl 10.
TargetsInList
Datentyp: num
Anzahl der Roboterziele in einem Datenfeld.
MaxErr
Datentyp: num
Geschätzter maximaler Fehler in mm.
MeanErr
Datentyp: num
Geschätzter mittlerer Fehler in mm.
Fehlerbehandlung Wenn die Positionen nicht die erforderliche Relation aufweisen oder nicht genau genug angegeben sind, wird die Systemvariable ERRNO auf ERR_FRAME gesetzt. Dieser Fehler kann dann in einer Fehlerbehandlungsroutine behandelt werden.
Syntax:
DefAccFrame’(’
[TargetListOne’:=’] <array {*} (IN) of robtarget>’ ,’
[TargetListTwo’ :=’] <array {*} (IN) of robtarget> ’,’
[TargetsInList’:=’] <expression (IN) of num> ’,’
[MaxErr’:=’] <variable (VAR) of num> ’,’
[MeanErr’:=’] <variable (VAR) of num>’)’
Eine Funktion mit einem Rückgabewert vom Datentyp pose.