Um eine einfache Kurve zu erzeugen, genügt es, die Startposition, die Zielposition und die absolute Höhe anzugeben. Auf der Grundlage dieser Vorgaben wird eine Kurve mit 21 Punkten erzeugt.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
Standardwerte |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
0,0 |
Da beide Koordinaten dieselbe Höhe Z aufweisen, ergibt sich als Ergebnis eine Bahn, die aus zwei identischen Halbäste besteht. Der Apex ist grün gekennzeichnet.
Wenn beide Koordinaten nicht dieselbe Höhe aufweisen, werden zwei verschiedene Halbäste erzeugt.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
Standardwerte |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Der Apex wird automatisch entlang der projizierten Geraden verlagert, sodass die zwei Halbäste dort dieselbe Krümmung aufweisen.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
xUserApex := TRUE lrApexScalingFactor := 0,0 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Der Apex liegt in der Mitte auf der projizierten Geraden zwischen Start- und Zielposition.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
xUserApex := TRUE lrApexScalingFactor := -0,2 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Der Wert -0,2 bedeutet, dass der Apex auf der projizierten Geraden um 20 % des ersten Halbastes in Richtung Startposition verlagert wird. Dadurch befindet sich der Apex an der Position X = -100.
Wenn der Apex nicht verlagert werden kann, sodass eine konstante Krümmung möglich wird, kann er über lrApexSmoothZone geglättet werden.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
xUserApex := TRUE lrApexScalingFactor := -0,2 lrApexSmoothZone := 140 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Punkte, die sich innerhalb der lrApexSmoothZone befinden, werden gelöscht (grau).
Um den Roboter zur Überwindung eines Hindernisses zu zwingen, kann ein Grenzwert sowohl am Start als auch am Ziel angegeben werden. Im folgenden Beispiel bewegt sich der Roboter über einen Grenzwert, der sich in einem horizontalen Abstand von 50 mm von der Startposition und 250 mm über dieser befindet.
Zur Umgehung von Hindernissen ist eine ausreichende Anzahl an Kurvenpunkten erforderlich, um sicherzustellen, dass ein Kurvenpunkt in der Nähe des Grenzwerts liegt.
Der Abstand lrStartObstacleDistance bezieht sich stets auf die projizierte Gerade zwischen Start- und Zielposition.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Die Funktion verlagert den zweiten Kurvenpunkt nach oben an die angegebene Höhe im konfigurierten Abstand von 50 mm.
Da die Funktion unabhängig voneinander berechnet, ob eine vertikale Bewegung erforderlich ist und welche Höhe diese aufweisen muss, um das Hindernis zu überwinden, kann eine vertikale Mindestbewegung parametriert werden. Diese Bewegung wird nur berücksichtigt, wenn ein Hindernis parametriert ist und die Bewegung auf die Höhe des Hindernisses begrenzt ist.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 lrStartMinVerticalDistance := 150,0 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Die folgende Aufzeichnung der tatsächlichen TCP-Bewegung (Tool Center Point) (rot) zeigt, dass die Kurve von der Geraden nach außen abweicht.
Um eine vertikale Bewegung zu erzwingen, können Kurvenpunkte auf einer Geraden oberhalb der Start- oder Zielposition positioniert werden.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 lrStartMinVerticalDistance := 150,0 udiStartNumberOfVerticalPoints := 5 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Mit diesen Kurvenpunkten wird eine Bahn mit einer seitlichen Mindestabweichung forciert:
Am Übergangspunkt zwischen Gerade und Kurve ergibt sich eine erhebliche Änderung der Krümmung. Um diesen Übergang zu glätten, können Punkte aus der Kurve entfernt werden.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 diStartNumberOfVerticalPoints := 5 diStartSmoothPoints := 1 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Bei diStartSmoothPoints = 1 wird jeweils ein Punkt von der Geraden (blau) und der Spline-Kurve (grün) entfernt:
Ergebnis:
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 diStartNumberOfVerticalPoints := 5 diStartSmoothPoints := 2 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Ergebnis:
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 diStartNumberOfVerticalPoints := 5 diStartSmoothPoints := 3 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
In diesem Fall wird jedoch nur der Punkt von der Geraden entfernt. Der Kurvenpunkt (grün) bleibt bestehen, da die Kurve andernfalls durch das Hindernis verlaufen würde.
Ergebnis:
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 250,0 diStartNumberOfVerticalPoints := 5 diStartSmoothPoints := 4 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
Nur der Punkt von der Geraden wird entfernt.
Ergebnis:
Die Kurvenbahn weicht jedoch erneut bedeutend von der Geraden ab. Eine zusätzliche Erhöhung der Anzahl an Glättungspunkten bringt keine weitere Änderung, da keine weiteren Punkte entfernt werden können.
Wenn eine vertikale Mindestbewegung parametriert wurde, dann wird diese beim Entfernen von Punkten von der Kurve berücksichtigt. Das bedeutet, dass keine Punkte von der Geraden entfernt werden, die für die vertikale Mindestbewegung erforderlich sind.
diStartSmoothPoints und diTargetSmoothPoints werden nur berücksichtigt, wenn eine Gerade sowohl an der Start- als auch an der Zielposition vorhanden ist, um den Übergang von einer Kurvenbahn zu einer Bahn mit einer Krümmung nahe Null (Gerade) zu glätten.
Wenn Kurvenpunkte ohne Gerade von der Start- oder der Zielposition entfernt werden, müssen sie mit einem negativen Vorzeichen versehen werden (Beispiel: diStartSmoothPoints := -3). Das bietet die Möglichkeit einer Bewegung zu einer Start- oder Zielposition von oben, und zwar nicht vertikal, sondern mit Neigung.
lrStartObstacleDistance oder lrTargetObstacleDistance muss auf einer Wert größer als Null gesetzt werden, um den maximalen Abstand von der Start- oder der Zielposition für die geneigte Bahn festzulegen. Die entsprechende lrStartObstacleHeight bzw. lrTargetObstacleHeight ist ebenfalls auf einen Wert größer als Null einzustellen.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-500,0 |
IrX |
500,0 |
300,0 |
udiNumberOfSplinePoints := 31 lrStartObstacleDistance := 50,0 lrStartObstacleHeight := 50,0 diStartSmoothPoints := -3 |
IrY |
0,0 |
IrY |
0,0 |
||
IrZ |
0,0 |
IrZ |
-200,0 |
In diesem Beispiel werden nur zwei Punkte gelöscht, obwohl drei konfiguriert sind. Der dritte Punkt wird nicht gelöscht, da er sich bereits über dem Hindernis befindet.
Ergebnis:
Wenn die Breite eines Hindernisses oder eines Werkzeugs oder Produkts auf dem TCP bei der Erstellung einer Kurve berücksichtigt werden muss, kann das mithilfe der Parameter lrStartObstacleWidth und lrTargetObstacleWidth erfolgen. Da die Breite des Hindernisses und die Breite des TCP gleichermaßen den Bahnverlauf beeinflussen, wird die Summe beider Werte in den Parameter eingegeben.
i_stStart |
i_stTarget |
i_lrAbsHeight |
Konfiguration |
||
---|---|---|---|---|---|
IrX |
-200,0 |
IrX |
200,0 |
300,0 |
Standardwerte |
IrY |
100,0 |
IrY |
200,0 |
||
IrZ |
0,0 |
IrZ |
0,0 |
Seitenansicht
Oberansicht
Dreidimensionale Ansicht
Die Hindernisse beziehen sich auf eine Gerade zwischen Start- und Zielposition.
In diesem Fall befindet sich ein Hindernis in einem Abstand von 100 mm von der Zielposition an der Position X = 120, Y = -140.
Die für den zweidimensionalen Fall beschriebene Funktion arbeitet analog im dreidimensionalen Raum. Hier verläuft die Bewegungsebene immer parallel zur Z-Achse des Koordinatensystems.