Verhalten der Methode FB_EllipticSpline.CalcSplineExtended

Einfache Umsetzbewegung

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.

Unterschiedliche Höhe der Start- und Zielposition

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.

Anwenderdefinierte Verlagerung des Apex

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.

Glättung des Apex der Kurve

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).

Hinweise zu Hindernissen

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.

Forcierung eines vertikalen Mindestabstands

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.

Forcierung eines vertikalen Abstands

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:

Hinweise zur Breite eines Hindernisses bzw. des TCP (Tool Center Point)

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.

Hindernisse für eine Bahn im dreidimensionalen Raum

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.