Sie sind auf Seite 1von 83
Software Option KUKA Laboratories GmbH KUKA Sunrise.Connectivity 1.3 Für KUKA Sunrise.Workbench 1.3 Für KUKA
Software Option KUKA Laboratories GmbH KUKA Sunrise.Connectivity 1.3 Für KUKA Sunrise.Workbench 1.3 Für KUKA
Software Option KUKA Laboratories GmbH KUKA Sunrise.Connectivity 1.3 Für KUKA Sunrise.Workbench 1.3 Für KUKA
Software Option KUKA Laboratories GmbH KUKA Sunrise.Connectivity 1.3 Für KUKA Sunrise.Workbench 1.3 Für KUKA
Software Option KUKA Laboratories GmbH KUKA Sunrise.Connectivity 1.3 Für KUKA Sunrise.Workbench 1.3 Für KUKA

Software Option

KUKA Laboratories GmbH

KUKA Sunrise.Connectivity 1.3

Für KUKA Sunrise.Workbench 1.3 Für KUKA Sunrise.OS 1.3

Für KUKA Sunrise.Workbench 1.3 Für KUKA Sunrise.OS 1.3 Stand: 19.08.2014 Version: KUKA Sunrise.Connectivity 1.3 V1

Stand: 19.08.2014

Version: KUKA Sunrise.Connectivity 1.3 V1

Für KUKA Sunrise.Workbench 1.3 Für KUKA Sunrise.OS 1.3 Stand: 19.08.2014 Version: KUKA Sunrise.Connectivity 1.3 V1
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

© Copyright 2014

KUKA Laboratories GmbH Zugspitzstraße 140 D-86165 Augsburg Deutschland

Diese Dokumentation darf – auch auszugsweise – nur mit ausdrücklicher Genehmigung der KUKA Laboratories GmbH vervielfältigt oder Dritten zugänglich gemacht werden.

Es können weitere, in dieser Dokumentation nicht beschriebene Funktionen in der Steuerung lauffä- hig sein. Es besteht jedoch kein Anspruch auf diese Funktionen bei Neulieferung bzw. im Servicefall.

Wir haben den Inhalt der Druckschrift auf Übereinstimmung mit der beschriebenen Hard- und Soft- ware geprüft. Dennoch können Abweichungen nicht ausgeschlossen werden, so dass wir für die voll- ständige Übereinstimmung keine Gewähr übernehmen. Die Angaben in dieser Druckschrift werden jedoch regelmäßig überprüft und notwendige Korrekturen sind in der nachfolgenden Auflage enthal- ten.

Technische Änderungen ohne Beeinflussung der Funktion vorbehalten.

Original-Dokumentation

KIM-PS5-DOC

Publikation:

Pub KUKA Sunrise.Connectivity 1.3 de

Buchstruktur:

KUKA Sunrise.Connectivity 1.3 V1.1

Version:

KUKA Sunrise.Connectivity 1.3 V1

Inhaltsverzeichnis

Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis

Inhaltsverzeichnis

1

Einleitung

7

1.1 Dokumentation des Industrieroboters

7

1.2 Darstellung von Hinweisen

7

1.3 Verwendete Begriffe

8

 

1.4 Marken

8

2

Zweckbestimmung

9

2.1 Zielgruppe

9

2.2 Bestimmungsgemäße Verwendung

9

3 Produktbeschreibung

11

3.1

Übersicht KUKA Sunrise.Connectivity

11

3.1.1

Vergleich Bewegungseigenschaften (PTP, SmartServo, DirectServo)

11

3.1.2

DirectServo und SmartServo in der RoboticsAPI

12

3.2

KUKA Sunrise.Connectivity Rendering (Option)

13

4 Sicherheit

15

5 Installation

17

5.1

Systemvoraussetzungen

17

5.2

SmartServo Befehlsbibliothek installieren

17

5.3

SmartServo Katalog mit Beispielapplikationen installieren

17

5.4

DirectServo Befehlsbibliothek installieren

17

5.5

DirectServo Katalog mit Beispielapplikationen installieren

18

5.6

Schnittstelle Rendering installieren

18

5.6.1

V-REP PRO in Schnittstelle Rendering integrieren

19

6 Bedienung Rendering Schnittstelle

21

6.1 Sicht "Rendering VREP"

21

6.2 Schnittstelle Rendering für V-REP PRO konfigurieren

22

6.3 Live-Ansicht starten

23

6.4 Frames synchronisieren

23

7 Programmierung

25

7.1

Servo-Bewegung im Applikationskontext

25

7.2

Einfache Zielvorgabe mit setDestination(…)

26

7.3

Zyklische Zielvorgabe mit setDestination(…)

26

7.4

Sekundenzeigereffekt

27

7.5

Klasse IServoRuntime

28

7.5.1

Umgang mit dem Echtzeitsystem

28

7.5.1.1

Zeitstempel abfragen

28

7.5.1.2

Zustand des Feininterpolators abfragen

29

7.5.1.3

Debug-Informationen auslesen und ausgeben

29

7.5.2

Achsspezifisches Interface

30

7.5.2.1

Achsspezifische Zielposition vorgeben

30

7.5.2.2

Achsspezifische Zielposition mit Zielgeschwindigkeit vorgeben

30

7.5.2.3

Achsspezifische Istposition auslesen

30

7.5.3

Kartesisches Interface

31

7.5.3.1

Kartesisches Ziel im Roboterfuß-Koordinatensystem vorgeben

31

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

7.5.3.2

Kartesisches Ziel im Referenz-Koordinatensystem vorgeben

31

7.5.3.3

Kartesische Istposition im Roboterfuß-Koordinatensystem auslesen

32

7.5.3.4

Kartesische Istposition im Referenz-Koordinatensystem auslesen

33

7.5.4

Servo-Bewegung beenden

33

7.6

Zielerreichung und Timeouts

34

7.7

Empfang des GoalReached Events (nur SmartServo)

34

7.8

Bahnparameter ändern

35

7.9

Zeiterfassung

36

7.9.1

Applikations-Zykluszeit messen

36

7.10

Impedanzregelung

37

7.10.1

Lastmodell für Impedanzregelung validieren

37

7.10.2

Impedanzregelung aktivieren

38

7.10.3

Regler-Parameter zur Laufzeit ändern

38

7.10.4

Übergang zwischen Regelungsarten

40

7.11

Rückkopplungseffekt bei Servo-Bewegungen

40

7.12

Sprungantwort der Systeme

43

7.12.1

SmartServo vs. DirectServo - Vergleich der Achspositionen im Zeitverlauf

43

7.12.1.1

Vergleich Sprungantwort SmartServo vs. DirectServo A1

44

7.12.1.2

Vergleich Sprungantwort SmartServo vs. DirectServo A2

45

7.12.1.3

Vergleich Sprungantwort SmartServo vs. DirectServo A3

46

7.12.1.4

Vergleich Sprungantwort SmartServo vs. DirectServo A4

47

7.12.1.5

Vergleich Sprungantwort SmartServo vs. DirectServo A5

48

7.12.1.6

Vergleich Sprungantwort SmartServo vs. DirectServo A6

49

7.12.1.7

Vergleich Sprungantwort SmartServo vs. DirectServo A7

50

7.12.2

SmartServo vs. DirectServo - Vergleich mit Geschwindigkeit, Beschleunigung, Ruck

50

7.12.2.1

Vergleich Sprungantwort SmartServo vs. DirectServo A1 (erweitert)

52

7.12.2.2

Vergleich Sprungantwort SmartServo vs. DirectServo A2 (erweitert)

53

7.12.2.3

Vergleich Sprungantwort SmartServo vs. DirectServo A3 (erweitert)

54

7.12.2.4

Vergleich Sprungantwort SmartServo vs. DirectServo A4, erweitert

55

7.12.2.5

Vergleich Sprungantwort SmartServo vs. DirectServo A5 (erweitert)

56

7.12.2.6

Vergleich Sprungantwort SmartServo vs. DirectServo A6 (erweitert)

57

7.12.2.7

Vergleich Sprungantwort SmartServo vs. DirectServo A7 (erweitert)

58

8 Beispielapplikationen

59

8.1

Katalog "Simple Tutorials for SmartServo"

59

8.1.1

Applikation SmartServoSampleSimpleJointMotion

59

8.1.2

Applikation SmartServoSampleSimpleCartesian

59

8.1.3

Applikation SmartServoSampleInteractionControl

59

8.2

Katalog "Simple Tutorials for DirectServo"

60

8.2.1

Applikation DirectServoSampleSimpleJointMotion

60

8.2.2

Applikation DirectServoSampleSimpleCartesian

60

8.2.3

Applikation DirectServoSampleInteractionControl

60

9 Befehlsreferenz

61

9.1

Befehlsreferenz SmartServo

61

9.1.1

Bewegungsparameter

61

9.1.2

Laufzeit-Parameter

62

9.1.3

Zielposition setzen

63

9.2

Befehlsreferenz DirectServo

63

9.2.1

Bewegungsparameter

63

Inhaltsverzeichnis

Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis
Inhaltsverzeichnis

9.2.2 Laufzeit-Parameter

64

9.2.3 Zielposition setzen

64

10 Ausnahmebehandlung

65

10.1 Beispiel für Ausnahmebehandlung

65

10.2 Übersicht Exceptions – Laufzeitfehler-Meldungen

65

10.3 Fehlerursachen CommandInvalidException

66

11 Fehlerbehebung

69

11.1 TCP/IP-Verkehr von Windows zu langsam

69

11.2 Roboter fährt ruckartig/pfeift - Sekundenzeigereffekt vermeiden

70

11.3 Impedanzregelung nicht aktivierbar

71

11.4 Rückkopplungseffekt

71

12 KUKA Service

73

12.1 Support-Anfrage

73

12.2 KUKA Customer Support

73

Index

81

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

1 Einleitung

1 Einleitung
1 Einleitung
1 Einleitung
1 Einleitung

1

Einleitung

1.1 Dokumentation des Industrieroboters

Die Dokumentation zum Industrieroboter besteht aus folgenden Teilen:

Dokumentation für die Robotermechanik

Dokumentation für die Robotersteuerung

Bedien- und Programmieranleitung für die System-Software

Anleitungen zu Optionen und Zubehör

Teilekatalog auf Datenträger

Jede Anleitung ist ein eigenes Dokument.

1.2 Darstellung von Hinweisen

Sicherheit

Diese Hinweise dienen der Sicherheit und müssen beachtet werden.

Diese Hinweise bedeuten, dass Tod oder schwere Ver- letzungen sicher oder sehr wahrscheinlich eintreten werden, wenn keine Vorsichtsmaßnahmen getroffen werden.

Ver- letzungen sicher oder sehr wahrscheinlich eintreten werden , wenn keine Vorsichtsmaßnahmen getroffen werden.

Diese Hinweise bedeuten, dass Tod oder schwere Ver- letzungen eintreten können, wenn keine Vorsichtsmaß- nahmen getroffen werden.

bedeuten, dass Tod oder schwere Ver- letzungen eintreten können , wenn keine Vorsichtsmaß- nahmen getroffen werden.
getroffen werden. Diese Hinweise bedeuten, dass leichte Verletzungen eintreten können , wenn keine Vorsichtsmaßnahmen

getroffen werden.

Diese Hinweise bedeuten, dass leichte Verletzungen eintreten können, wenn keine Vorsichtsmaßnahmen

werden. Diese Hinweise bedeuten, dass Sachschäden eintreten können , wenn keine Vorsichtsmaßnahmen getroffen

werden.

Diese Hinweise bedeuten, dass Sachschäden eintreten können, wenn keine Vorsichtsmaßnahmen getroffen

Diese Hinweise enthalten Verweise auf sicherheitsrelevante Informa- tionen oder allgemeine Sicherheitsmaßnahmen. Diese Hinweise beziehen sich nicht auf einzelne Gefahren oder ein- zelne Vorsichtsmaßnahmen.können , wenn keine Vorsichtsmaßnahmen getroffen Dieser Hinweis macht auf Vorgehensweisen aufmerksam, die der

Dieser Hinweis macht auf Vorgehensweisen aufmerksam, die der Vorbeu- gung oder Behebung von Not- oder Störfällen dienen:

Mit diesem Hinweis gekennzeichnete Vorgehensweisen müssen genau eingehalten werden.

Mit diesem Hinweis gekennzeichnete Vorgehensweisen müssen genau eingehalten werden.

Hinweise

Diese Hinweise dienen der Arbeitserleichterung oder enthalten Verweise auf weiterführende Informationen.

Hinweis zur Arbeitserleichterung oder Verweis auf weiterführende In- formationen.oder enthalten Verweise auf weiterführende Informationen. Stand: 19.08.2014 Version: KUKA Sunrise.Connectivity 1.3 V1

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

1.3 Verwendete Begriffe

Begriff

Beschreibung

API

Application Programming Interface

Schnittstelle zur Programmierung von Applikationen

Exception

Ausnahme oder Ausnahmesituation (engl. exception)

Eine Ausnahme bezeichnet ein Verfahren, um Informationen über bestimmte Programmzustände, meist Fehlerzustände, an andere Pro- grammebenen zur Weiterbehandlung weiterzugeben.

KUKA Sunrise

Steuerungshardware zum Betrieb des Industrieroboters LBR iiwa

Cabinet

KUKA Sunrise.OS

KUKA Sunrise.Operating System

System Software für Industrieroboter, die mit der Robotersteuerung KUKA Sunrise Cabinet betrieben werden

KUKA Sunrise.

Entwicklungsumgebung für die Inbetriebnahme einer Roboterzelle (Sta- tion) und für die Entwicklung von Roboter-Applikationen

Workbench

KUKA LBR iiwa

KUKA Leichtbauroboter intelligent industrial work assistent

MRK

Mensch-Roboter Kooperation

Systemreaktions-

Zeit zwischen Kommandovorgabe und effektiver Roboterbewegung

zeit

V-REP PRO

Virtual Robot Experimentation Platform

Simulations-Software, um das Verhalten von Robotern in einer virtuellen Umgebung zu testen

1.4 Marken

V-REP PRO ist eine Marke von COPPELIA ROBOTICS MARC FREESE.

2 Zweckbestimmung

2 Zweckbestimmung
2 Zweckbestimmung
2 Zweckbestimmung
2 Zweckbestimmung

2

Zweckbestimmung

2.1 Zielgruppe

Diese Dokumentation richtet sich an Benutzer mit folgenden Kenntnissen:

Fortgeschrittene Systemkenntnisse in der Robotik

Fortgeschrittene Java-Programmierkenntnisse

Fortgeschrittene Programmierkenntnisse (KUKA RoboticsAPI)

Fortgeschrittene Kenntnisse über Regelungstechnik und Stabilitätseigen- schaften

Für den optimalen Einsatz unserer Produkte empfehlen wir unseren Kunden eine Schulung im KUKA College. Informationen zum Schu- lungsprogramm sind unter www.kuka.com oder direkt bei den Nieder- lassungen zu finden.

College. Informationen zum Schu- lungsprogramm sind unter www.kuka.com oder direkt bei den Nieder- lassungen zu finden.

2.2 Bestimmungsgemäße Verwendung

Verwendung

KUKA Sunrise.Connectivity ist ausschließlich für den Einsatz im Labor be- stimmt und nicht für die direkte Interaktion mit Menschen (MRK) freigegeben.

KUKA Sunrise.Connectivity darf ausschließlich unter den dafür spezifizierten Systemvoraussetzungen verwendet werden, um neue Anwendungsfelder, Applikationen und Algorithmen für den LBR iiwa zu untersuchen.

Zur bestimmungsgemäßen Verwendung gehört auch die ständige Beachtung folgender Dokumente:

Montage- und Betriebsanleitung des Industrieroboters

Montage- und Betriebsanleitung der Robotersteuerung

Bedien- und Programmieranleitung für die System Software

Fehlanwendung

Alle von der bestimmungsgemäßen Verwendung abweichenden Anwendun- gen gelten als Fehlanwendung und sind unzulässig. Für Schäden, die aus ei- ner Fehlanwendung resultieren, haftet die KUKA Laboratories GmbH nicht. Das Risiko trägt allein der Betreiber.

Zu den Fehlanwendungen zählen z. B.:

Verwendung von KUKA Sunrise.Connectivity unter anderen als den spe- zifizierten Systemvoraussetzungen

Einsatz im industriellen Bereich

Einsatz in medizinischen Anwendungen

Menschen in den Arbeitsbereich des Roboters lassen

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

3 Produktbeschreibung

3 Produktbeschreibung
3 Produktbeschreibung
3 Produktbeschreibung
3 Produktbeschreibung

3

Produktbeschreibung

3.1 Übersicht KUKA Sunrise.Connectivity

KUKA Sunrise.Connectivity ist eine Software-Option zur Realisierung von wei- chen Echtzeit-Applikationen und stellt hierfür folgende Schnittstellen zur Ver- fügung:

Schnittstellen

KUKA Sunrise.Connectivity SmartServo

KUKA Sunrise.Connectivity DirectServo

KUKA Sunrise.Connectivity Rendering (Option)

SmartServo,

Die Schnittstellen SmartServo und DirectServo werden durch gleichnamige

DirectServo

Bewegungsklassen realisiert, die jeweils eine eigene PTP-Bewegungsart zur Verfügung stellen.

Die Bewegungsklassen SmartServo und DirectServo werden über den Sunri- se-Katalog nachinstalliert. Dabei wird die RoboticsAPI um die jeweils zugehö- rigen Klassenbibliotheken ergänzt.

Mithilfe der Bewegungsarten SmartServo und DirectServo können neue Ziel- punkte zur Laufzeit einer Bewegung gesetzt werden.

SmartServo und DirectServo, kurz Servo-Bewegungen, werden als asynchro- ne Bewegung ausgeführt. Wird während des Anfahrens eines Zielpunktes ein neuer Zielpunkt gesetzt, wird der vorherige Zielpunkt verworfen und direkt der zuletzt kommandierte angefahren.

Die Bewegungsart SmartServo ermöglicht ruckbegrenzte Bahnen mit schneller Zielvorgabe.

Die Bewegungsart DirectServo ermöglicht geschwindigkeitsbegrenzte Bahnen unter ständiger Aktualisierung der Zielvorgabe. Damit können ei- gene Planungs- und Interpolationsalgorithmen realisiert werden.

Bei Verwendung der Bewegungsart DirectServo dürfen die Zielvorga- ben maximal 5° von der aktuellen Istposition entfernt liegen.Planungs- und Interpolationsalgorithmen realisiert werden. Rendering ( >>> 3.2 "KUKA

Rendering

(>>> 3.2 "KUKA Sunrise.Connectivity Rendering (Option)" Seite 13)

3.1.1 Vergleich Bewegungseigenschaften (PTP, SmartServo, DirectServo)

Aufgrund der Eigenschaften der Bewegungsart Direct- Servo (digitales Filter, keine Ruckbegrenzung) können hochfrequente Zielvorgaben realisiert werden. Daraus können auch hochfre- quente Schwingungen am Roboter resultieren (Pfeifen, Brummen), die zu Schäden am Roboter führen können. KUKA haftet nicht für hieraus resultie- rende Schäden.

(Pfeifen, Brummen), die zu Schäden am Roboter führen können. KUKA haftet nicht für hieraus resultie- rende

Stellt sich in der Verwendung die Frage zwischen der Bewegungsart SmartServo oder DirectServo, wird SmartServo empfohlen.KUKA haftet nicht für hieraus resultie- rende Schäden.   PTP SmartServo DirectServo

 

PTP

SmartServo

DirectServo

Anwendungsgebiete

Bahnverfahren, kolli- sionsfreie Bahnpla- nung

Visual Servoing, kamerabasierte Kolli- sionsvermeidung

Haptik

Zielvorgabe-Intervall

lang (>100 ms)

mittel (>20 ms)

sehr kurz (2 …19 ms)

(empfohlen)

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

 

PTP

SmartServo

DirectServo

Anzahl Stützpunkte

gering

hoch

sehr hoch

Zielvorgabe

beliebiger Punkt im Arbeitsraum

beliebiger Punkt im Arbeitsraum

maximal ±5° von achsspezifischer Ist- position des Robo- ters entfernt

Bahneigenschaften

ruckbegrenzt

ruckbegrenzt

nicht ruckbe-

überschleiffähig

nicht überschleif-

grenzt

fähig

nicht überschleif-

fähig

Bahnverlauf

Immer gleich, unab- hängig von Override, aktueller Geschwin- digkeit oder aktueller Beschleunigung.

Abhängig von Override, aktueller Geschwin- digkeit und aktueller Beschleunigung.

Verhalten bei Zielvor- gabe während des Anfahrens eines Ziel- punktes

Jeder Punkt wird angefahren.

Aktueller Zielpunkt wird bei neuer Zielvorgabe verworfen.

Einstellbare Bahnpa- rameter

Geschwindigkeit

Geschwindigkeit

Geschwindigkeit

Beschleunigung

Beschleunigung

 

Ruck

Planung

Polynom

Polynom 3. Ord- nung

digitales Filter

Planung in Appli- kation

Systemreaktionszeit

 

~22 ms

~12 ms

3.1.2 DirectServo und SmartServo in der RoboticsAPI

SmartServo und DirectServo sind Bewegungsklassen, mit denen die Roboter- Applikation Bewegungen startet. Diese stellen wiederum spezielle Laufzeit- Klassen bereit, mit denen Zielvorgaben während einer Bewegung verändert werden können.

während einer Bewegung verändert werden können. Abb. 3-1: DirectServo und SmartServo in der RoboticsAPI Die

Abb. 3-1: DirectServo und SmartServo in der RoboticsAPI

Die Schnittstelle IServoRuntime stellt die von beiden Bewegungsklassen ge- nutzten Methoden bereit und speichert deren Eigenschaften und Werte wie Zielvorgabe, Positionserfassung, Zeitstempelverwaltung etc.

Die Bewegungsklassen besitzen jeweils eine eigene Schnittstelle:

3 Produktbeschreibung

3 Produktbeschreibung
3 Produktbeschreibung
3 Produktbeschreibung
3 Produktbeschreibung

Schnittstelle ISmartServoRuntime ist Teil der Bewegungsklasse Smart- Servo

Schnittstelle IDirectServoRuntime ist Teil der Bewegungsklasse Direct- Servo

Diese Schnittstellen enthalten die zu den Bewegungsklassen jeweils spezifi- schen Eigenschaften der Feininterpolatoren.

3.2 KUKA Sunrise.Connectivity Rendering (Option)

Übersicht Die Schnittstelle Rendering ermöglicht es, 3D-Visualisierungswerkzeuge mit der Robotersteuerung KUKA Sunrise
Übersicht
Die Schnittstelle Rendering ermöglicht es, 3D-Visualisierungswerkzeuge mit
der Robotersteuerung KUKA Sunrise Cabinet zu verbinden.
Die Schnittstelle wurde mithilfe der Simulations-Software V-REP PRO exem-
plarisch realisiert und wird inklusive Java-Sourcen ausgeliefert.
V-REP PRO kann unter http://www.coppeliarobotics.com/ bezogen
werden. Die Lizenzbedingungen, die die kommerzielle Nutzung der
Simulations-Software regeln, sind zu beachten.
In dieser Dokumentation wird V-REP PRO nur so weit dokumentiert,
wie es zum Verständnis der Schnittstelle notwendig ist. Weitere Infor-
mationen sind in der Bedienanleitung der Simulations-Software zu
finden.
Abb. 3-2: Szene mit LBR iiwa in V-REP PRO (Beispiel)
Funktionalitäten
Die Schnittstelle Rendering stellt folgende Funktionalitäten zur Verfügung:
 Verbindung zwischen V-REP PRO und Sunrise-Projekt auf der Roboter-
steuerung
 Konfigurieren und Starten der Visualisierung in V-REP PRO
 Aktivieren einer Live-Ansicht
 Synchronisieren und Visualisieren des Frame-Baums in V-REP PRO
Live-Ansicht
Die Laufzeitdaten der Robotersteuerung werden über die Rendering-Schnitt-
stelle in Sunrise.Workbench zur Verfügung gestellt und in V-REP PRO darge-
stellt.
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

4 Sicherheit

4 Sicherheit
4 Sicherheit
4 Sicherheit
4 Sicherheit

4

Sicherheit

Diese Dokumentation enthält Sicherheitshinweise, die sich spezifisch auf das hier beschriebene Produkt beziehen. Die grundlegenden Sicherheitsinforma- tionen zum Industrieroboter sind im Kapitel "Sicherheit" folgender Dokumente zu finden:

Betriebs- oder Montageanleitung für den Roboter

Bedien- und Programmieranleitung für die System Software

Das Kapitel "Sicherheit" in der Betriebsanleitung oder Montageanlei- tung und in der Bedien- und Programmieranleitung muss beachtet werden. Tod von Personen, schwere Verletzungen oder erhebliche Sachschäden können sonst die Folge sein.

muss beachtet werden. Tod von Personen, schwere Verletzungen oder erhebliche Sachschäden können sonst die Folge sein.

Der Betreiber hat zum Einsatz des Roboters unter Laborbedingungen eine eigene Gefahren- und Risikoanalyse zu erstellen. Dies gilt ins- besondere dann, wenn Menschen in den Arbeitsraum des Roboters eindringen müssen. Es wird eine gesonderte Aufsichtsperson mit geeigneter NOT-HALT-Einrichtung empfohlen. Im Rahmen der Risikoanalyse ist beson- ders auf Verletzungen durch Quetschung, Kollision und scharfe Gegenstän- de zu achten. hung, Kollision und scharfe Gegenstän- de zu achten.

Die Schnittstellen SmartServo und DirectServo ermöglichen die Im- plementierung von geschlossenen Regelkreisen im Applikationskon- text. Für deren Stabilität hat der Anwender Sorge zu tragen. Instabile Regelkreise können dazu führen, dass sich das Gesamtsystem aufschwingt und der Roboter sich nicht wie erwartet bewegt, obwohl der Roboter seiner Zielvorgabe korrekt folgt.

aufschwingt und der Roboter sich nicht wie erwartet bewegt, obwohl der Roboter seiner Zielvorgabe korrekt folgt.

Die Bewegungsarten SmartServo und DirectServo ermöglichen On- line-Zielvorgaben aus der Applikation heraus. Durch das Ändern der Bahnparameter, des Overrides oder das Schalten in den T1-Modus ändert sich die Roboterbahn, der tatsächliche Bahnverlauf ist nicht vorher- sehbar. Applikationen mit Online-Zielvorgaben sind immer zuerst in der Betriebsart Manuell Reduzierte Geschwindigkeit (T1) sorgfältig zu testen.

Online-Zielvorgaben sind immer zuerst in der Betriebsart Manuell Reduzierte Geschwindigkeit (T1) sorgfältig zu testen.
Wenn Servo-Bewegungen in der Betriebsart T1 ausgeführt werden, wird ausschließlich die Geschwindigkeit des

Wenn Servo-Bewegungen in der Betriebsart T1 ausgeführt werden, wird ausschließlich die Geschwindigkeit des Roboterflansches auf 250 mm/s überwacht.

In den Bewegungsarten SmartServo und DirectServo wird die Bahnplanung von der Applikation übernommen. Aufgrund deren schnellen Zielvorgabe-Änderungen unterscheidet sich das tatsächliche Systemverhalten von dem, durch den Hersteller spezifizierten Verhalten. Die in der Betriebs- und Montageanleitung des LBR iiwa spezifi- zierten Anhaltewege und -zeiten sind nicht gültig. Der Anwender hat die ap- plikationsspezifischen Anhaltewege und -zeiten selbst zu bestimmen.

-zeiten sind nicht gültig. Der Anwender hat die ap- plikationsspezifischen Anhaltewege und -zeiten selbst zu bestimmen.
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

5 Installation

5 Installation
5 Installation
5 Installation
5 Installation

5

Installation

5.1 Systemvoraussetzungen

Hardware

KUKA LBR iiwa

KUKA Sunrise Cabinet

Software

KUKA Sunrise.Workbench 1.3

KUKA Sunrise.OS 1.3

5.2 SmartServo Befehlsbibliothek installieren

Vorgehensweise

1.

Die Stationskonfiguration des Sunrise-Projekts öffnen.

2.

Die Registerkarte Software wählen.

3.

Das Software-Paket Smart Servo Motion Extension für die Installation auswählen.

 

In der Checkbox Installieren das Häkchen setzen.

 

4.

Stationskonfiguration speichern. Es wird eine Sicherheitsabfrage ange- zeigt.

5.

Auf Speichern und übernehmen klicken. Das Katalogprojekt wird ge- speichert.

 

Die Befehlsbibliothek der Bewegungsklasse SmartServo wird in das Sun- rise-Projekt eingefügt und steht für die Roboterprogrammierung zur Verfü- gung.

 

6.

System Software auf der Robotersteuerung installieren (immer erforder- lich, wenn die Stationskonfiguration geändert wurde).

5.3 SmartServo Katalog mit Beispielapplikationen installieren

Vorgehensweise

1.

Die Stationskonfiguration des Sunrise-Projekts öffnen.

2.

Die Registerkarte Software wählen.

3.

Den Katalog Simple Tutorials for SmartServo für die Installation aus- wählen.

 

In der Checkbox Installieren das Häkchen setzen.

 

4.

Stationskonfiguration speichern. Es wird eine Sicherheitsabfrage ange- zeigt.

5.

Auf Speichern und übernehmen klicken. Das Katalogprojekt wird ge- speichert.

Das Paket com.kuka.roboticsAPI.smartServo.samples wird erzeugt und im Ordner Samples des Sunrise-Projekts eingefügt.

5.4 DirectServo Befehlsbibliothek installieren

Vorgehensweise

1.

Die Stationskonfiguration des Sunrise-Projekts öffnen.

2.

Die Registerkarte Software wählen.

3.

Das Software-Paket Direct Servo Motion Extension für die Installation auswählen.

 

In der Checkbox Installieren das Häkchen setzen.

 

4.

Stationskonfiguration speichern. Es wird eine Sicherheitsabfrage ange- zeigt.

5.

Auf Speichern und übernehmen klicken. Das Katalogprojekt wird ge- speichert.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

Die Befehlsbibliothek der Bewegungsklasse DirectServo wird in das Sun- rise-Projekt eingefügt und steht für die Roboterprogrammierung zur Verfü- gung.

6. System Software auf der Robotersteuerung installieren (immer erforder- lich, wenn die Stationskonfiguration geändert wurde).

5.5 DirectServo Katalog mit Beispielapplikationen installieren

Vorgehensweise

1.

Die Stationskonfiguration des Sunrise-Projekts öffnen.

2.

Die Registerkarte Software wählen.

3.

Den Katalog Simple Tutorials for DirectServo für die Installation aus- wählen.

 

In der Checkbox Installieren das Häkchen setzen.

 

4.

Stationskonfiguration speichern. Es wird eine Sicherheitsabfrage ange- zeigt.

5.

Auf Speichern und übernehmen klicken. Das Katalogprojekt wird ge- speichert.

Das Paket com.kuka.roboticsAPI.directServo.samples wird erzeugt und im Ordner Samples des Sunrise-Projekts eingefügt.

5.6 Schnittstelle Rendering installieren

Voraussetzung

Das ZIP-Archiv com.kuka.rendring.repository-release ist verfügbar.

Vorgehensweise

1.

Menüfolge Hilfe > Neue Software installieren stallieren öffnet sich.

wählen. Das Fenster In-

2.

Auf den Button Hinzufügen … klicken. Das Fenster Add Repository öff- net sich.

3.

Auf den Button Archiv sich.

klicken. Das Fenster Repository archive öffnet

4.

Zum Verzeichnis navigieren in dem das ZIP-Archiv com.kuka.ren- dring.repository-release abgelegt ist.

5.

ZIP-Archiv markieren und auf Öffnen klicken. Der Pfad zum Archiv wird in das Fenster Add Repository übernommen.

6.

Den Pfad mit OK bestätigen. Im Fenster Installieren wird der Eintrag KUKA Rendering Features angezeigt.

 
 
 

7.

Den Eintrag KUKA Rendering Features auswählen (Häkchen in Check- box setzen) und auf Weiter > klicken.

8.

Die für die Installation ausgewählte Komponente wird angezeigt. Mit Wei- ter > bestätigen.

9.

Die Bedingungen der Lizenzvereinbarung akzeptieren und auf Fertigstel- len klicken. Die Installation wird gestartet.

10.

Wenn eine Sicherheitswarnung angezeigt wird, diese mit OK bestätigen.

11.

Um die Installation abzuschließen, muss Sunrise.Workbench neu gestar- tet werden. Dies wird in einer Hinweismeldung angezeigt. Auf den Button Jetzt neu starten klicken.

5 Installation

5 Installation
5 Installation
5 Installation
5 Installation

12. Sunrise.Workbench wird neu gestartet und das Fenster Startprogramm für Arbeitsbereich öffnet sich. Arbeitsbereich mit OK bestätigen.

13. Bei erfolgreicher Installation steht in Sunrise.Workbench die Sicht Rende- ring VREP neu zur Verfügung.

Menüfolge Fenster > Sicht anzeigen > Andere… wählen und den Ordner Sunrise öffnen. Wird der Eintrag Rendering VREP angezeigt, war die In- stallation erfolgreich.

5.6.1 V-REP PRO in Schnittstelle Rendering integrieren

Beschreibung

Um die Simulations-Software V-REP PRO in die Schnittstelle Rendering zu in- tegrieren, müssen folgende Dateien manuell in das Installationsverzeichnis von V-REP PRO kopiert werden.

(Standard-Installationsverzeichnis der Version V-REP PRO V3.x unter Win- dows 7 64 Bit: C:\Program Files (x86)\V-REP3\V-REP_PRO)

Datei KUKA LBR iiwa 7 R800.ttm oder KUKA LBR iiwa 14 R800.ttm (LBR iiwa Modelle) in das Unterverzeichnis …\V-REP_PRO\models\ro- bots\non-mobile

Datei KUKALBRiiwaDemo.ttt (Szene) in das Unterverzeichnis …\V- REP_PRO\scenes

Datei remoteApiConnections.txt (Kommunikationskonfiguration) in das Hauptverzeichnis …\V-REP_PRO

Datei vrepAddOnScript_RenderingConnectorScript.lua (Add-On Skript) in das Hauptverzeichnis …\V-REP_PRO

KUKA stellt die erforderlichen Dateien in einem Katalog zur Verfügung, der in Sunrise.Workbench installiert werden kann. Die von KUKA vorbereitete Szene KUKALBRiiwaDemo kann zu Testzwecken genutzt werden.

Vorgehensweise

1.

Die Stationskonfiguration des Sunrise-Projekts öffnen.

2.

Die Registerkarte Software wählen.

3.

Den Katalog Tools and Models for Rendering.VREP für die Installation auswählen.

 

In der Checkbox Installieren das Häkchen setzen.

 

4.

Stationskonfiguration speichern. Es wird eine Sicherheitsabfrage ange- zeigt.

5.

Auf Speichern und übernehmen klicken. Das Katalogprojekt wird ge- speichert.

Der Ordner Rendering.VREP wird im Sunrise-Projekt erstellt. Der Ordner enthält die für die Verwendung von V-REP PRO benötigten Dateien.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

6 Bedienung Rendering Schnittstelle

6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle

6 Bedienung Rendering Schnittstelle

6.1 Sicht "Rendering VREP"

Vorgehensweise

Übersicht

Sicht Rendering VREP in Sunrise.Workbench öffnen:

1. Menüfolge Fenster > Sicht anzeigen > Andere… wählen und den Ordner Sunrise öffnen.

2. Den Eintrag Rendering VREP auswählen und mit OK bestätigen.

Rendering VREP auswählen und mit OK bestätigen. Abb. 6-1: Sicht Rendering VREP (ohne Verbindung und

Abb. 6-1: Sicht Rendering VREP (ohne Verbindung und Projekt-Bezug)

Folgende Buttons stehen zur Verfügung:

Symbol

Name / Beschreibung

Synchronisation der Konfiguration

Synchronisation der Konfiguration

Aktualisiert die Konfiguration der Schnittstelle und aktiviert die Konfiguration.

Erforderlich nach folgenden Ereignissen:

In Sunrise.Workbench wurde die Stationskonfiguration ge- ändert.

In V-REP PRO wurden Roboter neu konfiguriert oder die Roboter-Konfiguration geändert.

Verbindung zum realen Roboter wurde unterbrochen.

Stop LiveView

Stop LiveView

Beendet die Live-Ansicht in V-REP PRO.

Szene Auswahl

Szene Auswahl

Öffnet das Fenster Szene Auswahl. Eine in V-REP PRO pro- jektierte Szene kann ausgewählt werden.

Projektauswahl

Projektauswahl

Öffnet das Fenster Projektauswahl. Ein Sunrise-Projekt kann ausgewählt werden.

Folgende Schaltflächen stehen zur Verfügung:

Schaltfläche

Beschreibung

Szene laden

Lädt die ausgewählte Szene in V-REP PRO.

Die Schaltfläche ist nur aktiv, wenn ein Sunrise- Projekt ausgewählt wurde.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

Schaltfläche

Beschreibung

LiveView starten

Startet die Live-Ansicht in V-REP PRO.

(>>> 6.3 "Live-Ansicht starten" Seite 23)

Framegraph syn- chronisieren

Sendet die in den Applikationsdaten angelegten Frames an V-REP PRO und zeigt sie dort an.

(>>> 6.4 "Frames synchronisieren" Seite 23)

6.2 Schnittstelle Rendering für V-REP PRO konfigurieren

Voraussetzung

V-REP PRO ist gestartet.

In V-REP PRO ist mindestens eine Szene projektiert.

Netzwerk-Verbindung zur Robotersteuerung

Vorgehensweise

1.

Sunrise-Projekt auswählen.

 

a. Auf den Button Projektauswahl klicken. Das Fenster Projektaus- wahl mit den zur Auswahl stehenden Sunrise-Projekten öffnet sich.

b. Das gewünschte Sunrise-Projekt markieren und mit OK bestätigen. Der Name des ausgewählten Sunrise-Projekts wird in der Sicht Ren- dering VREP angezeigt.

 

2.

Szene auswählen.

 

a. Auf den Button Szene Auswahl klicken. Das Fenster Szene Auswahl öffnet sich.

b. Den Button Öffnen wählen und zu dem Verzeichnis navigieren, in dem die gewünschte Szene abgelegt ist.

Beispiel: C:\Program Files (x86)\V-REP3\V-REP_PRO\scenes\KU- KALBRiiwaDemo.ttt

c. Die gewünschte Szene auswählen und mit Öffnen laden. Der Pfad zur Szene wird in das Fenster Szene Auswahl übernommen.

d. Fenster mit OK schließen. Der Name der ausgewählten Szene wird in der Sicht Rendering VREP angezeigt.

 

3.

Auf die Schaltfläche Szene laden klicken. Die ausgewählte Szene wird in V-REP PRO geladen.

4.

In der Spalte Visualisiertes Gerät werden die, für die ausgewählte Szene konfigurierten Roboter zur Auswahl aufgeführt.

 

Hier den Roboter auswählen, der später in der Live-Ansicht angezeigt werden soll.

 

Die Einstellungen werden automatisch im Sunrise-Projekt gespeichert.

Beschreibung

Beschreibung

Abb. 6-2: Sicht Rendering VREP (mit Verbindung und voll konfiguriert)

Wenn keine Verbindung mehr zum realen Roboter besteht, wird die Zeile mit diesem Gerät in

Wenn keine Verbindung mehr zum realen Roboter besteht, wird die Zeile mit diesem Gerät in roter Schrift angezeigt.

6 Bedienung Rendering Schnittstelle

6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle
6 Bedienung Rendering Schnittstelle

6.3 Live-Ansicht starten

Voraussetzung

Schnittstelle Rendering ist konfiguriert.

V-REP PRO ist gestartet.

Netzwerk-Verbindung zur Robotersteuerung

Vorgehensweise

Auf die Schaltfläche LiveView starten klicken, um die Live-Ansicht in V- REP PRO zu starten.

6.4 Frames synchronisieren

Voraussetzung

Schnittstelle Rendering ist konfiguriert.

V-REP PRO ist gestartet.

Vorgehensweise

Auf die Schaltfläche Framegraph synchronisieren klicken, um die in den Applikationsdaten angelegten Frames an V-REP PRO zu senden.

In V-REP PRO können die neu erstellten Frames zur weiteren Modellierung verwendet werden.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

7

Programmierung

7.1 Servo-Bewegung im Applikationskontext

Übersicht

Die Abbildung zeigt den grundsätzlichen Programmablauf beim Ausführen ei- ner Servo-Bewegung.

Programmablauf beim Ausführen ei- ner Servo-Bewegung. Abb. 7-1: Servo-Bewegung im Applikationskontext Pos.

Abb. 7-1: Servo-Bewegung im Applikationskontext

Pos.

Beschreibung

1

Eine Instanz der Servo-Bewegung anlegen, hier eine Instanz der Bewegungsklasse SmartServo.

2

Servo-Bewegung mit moveAsync(…) aktivieren.

Das Echtzeitsystem auf der Robotersteuerung führt die Servo-Be- wegung aus. Die Roboter-Applikation läuft weiter.

3

Die Laufzeitumgebung mit getRuntime() abrufen. Die Laufzeitum- gebung wird bereitgestellt, sobald der Roboter verfügbar ist.

Die Applikationsdaten werden mit den von der Laufzeit-Instanz der IServoRuntime bereitgestellten Echtzeitsystem-Daten aktuali- siert. Diese Daten, z. B. aktuelle Roboterposition, Geschwindig- keit oder Beschleunigung, stehen zum weiteren Abruf bereit.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

Pos.

Beschreibung

4

Neue Zielpunkte mit setDestination(…) setzen (zyklisch zur Lauf- zeit der Roboterbewegung).

Nachdem eine Zielposition eingenommen wurde, wird diese eine definierte Zeit lang beibehalten. Nach Ablauf dieser Zeit wird die Servo-Bewegung automatisch beendet (Timeout nach der in der Variable timeoutAfterGoalReach definierten Zeit), sofern kein neu- er Zielpunkt gesetzt wird oder die Servo-Bewegung mit stopMoti- on() beendet wird.

(>>> 7.6 "Zielerreichung und Timeouts" Seite 34)

5

Servo-Bewegung mit stopMotion() beenden.

Die Roboter-Applikation läuft weiter.

7.2 Einfache Zielvorgabe mit setDestination(…)

Die Abbildung zeigt den prinzipiellen Zeitverlauf der Roboter-Feininterpolati- on:

prinzipiellen Zeitverlauf der Roboter-Feininterpolati- on: Abb. 7-2: Zeitverlauf im Applikationskontext, Grundverhalten

Abb. 7-2: Zeitverlauf im Applikationskontext, Grundverhalten

Zum Initialzeitpunkt t0 werden aktuelle Geschwindigkeit und Position in die Applikations-Planung übernommen. Dadurch wird eine ruckbegrenzte Bahn auf die Zielposition geplant. Dabei wird die vorgegebene maximale Geschwin- digkeit und bei der Bewegungsart SmartServo zusätzlich die maximale Be- schleunigung und der maximale Ruck berücksichtigt.

Zum Zeitpunkt t1, der sich aus den Randbedingungen ergibt, erreicht der Feininterpolator den vorgegebenen Zielzustand. In der Bewegungsart Smart- Servo wird hier das Event IServoOnGoalReachedEvent(…) ausgelöst.

Danach verharrt der Feininterpolator für die in der Variable timeoutAfterGoal- Reach vorgegebenen Zeitspanne im Zielzustand. Nach Ablauf dieser Zeit- spanne wird die Servo-Bewegung deaktiviert.

7.3 Zyklische Zielvorgabe mit setDestination(…)

Die Schnittstelle IServoRuntime stellt die Funktionalität bereit, die Zielvorgabe zur Laufzeit des Bewegungsbefehls moveAsync(…) zu verändern:

IServoRuntime theRuntime = ServoMotion.getRuntime();

theRuntime.setDestination(destination);

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

Durch Aufruf der Methode setDestination(…) wird intern die Methode updateWithRealtimeSystem() ausgeführt. Diese aktualisiert die Ap- plikationsdaten mit den Echtzeitsystem-Daten. Eine manuelle Aktua- lisierung ist daher nicht nötig. Durch Aufruf der Methode stopMotion() kann die Bewegung zu jedem Zeit- punkt beendet werden.

ist daher nicht nötig. Durch Aufruf der Methode stopMotion() kann die Bewegung zu jedem Zeit- punkt
kann die Bewegung zu jedem Zeit- punkt beendet werden. Abb. 7-3: Zeitverlauf im Applikationskontext, Zielvorgabe

Abb. 7-3: Zeitverlauf im Applikationskontext, Zielvorgabe vorzeitig er- setzen

Zum Zeitpunkt t0 wird ein Ziel vorgegeben. Durch erneuten Aufruf der Metho- de setDestination(…) zum Zeitpunkt t1, während das Ziel aus Vorgabe t0 an- gefahren wird, übernimmt der Feininterpolator die Zielvorgabe t1 in seine Planung und verwirft die Zielvorgabe aus t0. Bei der Berechnung des neuen Zielpunktes aus der Zielvorgabe zu t1 rechnet der Feininterpolator die aktuelle Geschwindigkeit mit ein.

Dies bewirkt eine stossfreie Bahnbewegung auf das neue Ziel.

Das Event GoalReached() wird nur ausgelöst, wenn der Interpolator den Zielzustand eingenommen hat. Die Abbildung (>>> Abb. 7-3 ) zeigt, dass das zum Zeitpunkt t0 vorgegebene Ziel nicht erreicht wird, >>> Abb. 7-3 ) zeigt, dass das zum Zeitpunkt t0 vorgegebene Ziel nicht erreicht wird, da die neue Zielvorgabe zum Zeitpunkt t1 die ursprüngliche Zielvorgabe überschrieben hat. Somit bezieht sich das Event IServoOnGoalReachedE- vent(…) auf das Erreichen der Zielposition aus dem Aufruf der Methode set- Destination(…) zum Zeitpunkt t1.

7.4

Sekundenzeigereffekt

Durch seriell abgegebene Zielvorgaben durch die Methode setDestination(…) kann eine sehr flüssige Bewegung erzielt werden. Wird jedoch der vorgege- bene Zielpunkt früher erreicht als die nächste Zielvorgabe gesetzt wird, führt dies trotz ruckbegrenzter Bahnbewegung zu einem Sekundenzeigereffekt.

Durch Auftreten des Sekundenzeigereffekts kann der Roboter beschädigt werden. KUKA haftet nicht für Schäden, die auf dauerhaften Betrieb des Roboters im Sekundenzeigeref- fekt zurückzuführen sind.

KUKA haftet nicht für Schäden, die auf dauerhaften Betrieb des Roboters im Sekundenzeigeref- fekt zurückzuführen sind.

Tritt der Sekundenzeigereffekt auf, ist dies daran zu erkennen, dass der Ro- boter summt/pfeift und ruckartig fährt. Im Allgemeinen lässt sich dieser Effekt auf eine falsche zeitliche Abstimmung zwischen der Roboter-Applikation und der Robotersteuerung zurückführen.

Bei schnellen Zielvorgaben sind Textausgaben auf der smartHMI zu vermeiden, da diese Rechenzeit benötigen.

Bei schnellen Zielvorgaben sind Textausgaben auf der smartHMI zu vermeiden, da diese Rechenzeit benötigen.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3 Abb. 7-4: Servo-Bewegung mit Sekundenzeigereffekt Maßnahmen zur Vermeidung des

Abb. 7-4: Servo-Bewegung mit Sekundenzeigereffekt

Maßnahmen zur Vermeidung des Sekundenzeigereffektes sind hier zu finden:

(>>> 11.2 "Roboter fährt ruckartig/pfeift - Sekundenzeigereffekt vermeiden" Seite 70)

7.5 Klasse IServoRuntime

Die Laufzeitumgebung IServoRuntime steht zur Verfügung, sobald die Bewe- gung selbst durch die Methode moveAsync(…) aktiviert wurde.

Die in der Laufzeitumgebung zur Verfügung stehenden Methoden unterteilen sich in folgende Gruppen:

Umgang mit dem Echtzeitsystem

Zeitstempel

Zustand des Feininterpolators

Achsspezifisches Interface

Auslesen von Achspositionen

Setzen von achsspezifischen Sollpositionen

Kartesisches Interface

Auslesen von kartesischen Positionen

Setzen von kartesischen Sollpositionen

7.5.1

Umgang mit dem Echtzeitsystem

Beim Umgang mit Zeitstempeln ist zu berücksichtigen, dass Java-Systemzeit und Echtzeit-Systemzeit nicht synchronisiert sind. Die Laufzeitumgebung stellt Prozessdaten bereit, die entweder bei Sollvorgabe mit der Methode set- Destination(…) oder durch expliziten Aufruf der Methode updateWithRealti- meSystem() aktualisiert werden.

7.5.1.1

Zeitstempel abfragen

Beschreibung

Jede Interaktion mit dem Echtzeitsystem liefert einen Zeitstempel zurück. Fol- gende Zeitstempel stehen zur Verfügung und können abgefragt werden:

Zeitstempel des letzten Sollkommandos:

long IServoRuntime.getTimeStampOfSetRealtimeDestina- tion()

Dieser Zeitstempel bezieht sich auf die Ankunft des zuletzt gesetzten Kommandos an die Robotersteuerung durch Aufruf der Methode setDes- tination(…).

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

Zeitstempel der letzten Aktualisierung:

long IServoRuntime.getTimeStampOfUpdate()

Dieser Zeitstempel bezieht sich auf den letzten Aktualisierungs-Zeitpunkt durch Aufruf der Methode updateWithRealtimeSystem().

Übersicht

Die Übersicht zeigt den Zusammenhang zwischen Laufzeitdaten und dem zu- gehörigen Zeitstempel.

Laufzeitdaten

Methode

Zeitstempel

Achsspezifische Zielvorgabe durch setDestination(…)

getCurrentJointDestination()

getTimeStampOfSetRealtime-

Destination()

Kartesische Zielvorgabe durch setDestination(…)

getCurrentCartesianDestina-

tion()

Interpolatorzustand

getFineIpoState()

getTimeStampOfUpdate()

isDestinationReached()

Voraussichtliche Zeitdauer bis zum Erreichen des Ziels

getRemainingTime()

Instantane Sollposition im Grundsystem

getCommandResultOfInterpo-

lation()

Istposition

getAxisQMsrOnController()

Varianz der Kraftschätzung

getVariance()

Interaktionskraft am Flansch

getExtForceMsr()

getExtForceVector()

Achspezifisches Interaktions- Drehmoment

getExtTorqueVector()

getAxisTauExtMsr()

7.5.1.2 Zustand des Feininterpolators abfragen

Beschreibung

Um eine aktuelle Information mit der Abfrage des Feininterpolators zu erhal- ten, ist zuvor eine Aktualisierung durchzuführen.

(>>> 7.5.1 "Umgang mit dem Echtzeitsystem" Seite 28)

Die Bewegungsart SmartServo stellt einen Event-Mechanismus zur Verfü- gung, mit dem das Erreichen des Zieles signalisiert wird.

(>>> 7.7 "Empfang des GoalReached Events (nur SmartServo)" Seite 34)

Syntax

Abfrage, ob der Roboter die Zielvorgabe erreicht hat:

 

boolean IServoRuntime.hasFineIpoGoalReached()

 

Abfrage, wie lange (in Sekunden) der Roboter noch benötigt, um die aktu- elle Zielvorgabe zu erreichen:

 

double IServoRuntime.getRemainingTime()

7.5.1.3

Debug-Informationen auslesen und ausgeben

Beschreibung

Alle ausgelesenen Werte, z. B. die Soll- und Istpositionen, die Timing-Statistik der Zugriffe oder der aktuelle Interpolatorzustand, können als Debug-Informa- tionen auf der smartHMI ausgegeben werden.

Die Textausgabe erfolgt mit der Methode IServoRuntime.toString():

getLogger().info("aTextForGood " + RuntimeInstance.toString());

Der Detailgrad, mit dem diese Debug-Informationen ausgegeben werden, kann über die Methode setDetailedOutput(…) festgelegt werden.

Syntax

void IServoRuntime.setDetailedOutput(int levelOfVerbosity)

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

Erläuterung der

Syntax

Element

Beschreibung

levelOfVerbo-

Detailgrad bei der Ausgabe der Debug-Informationen

sity

1: Standard-Informationen

2: über den Standard hinaus erweiterte Informationen

3: alle zur Verfügung stehenden Informationen

7.5.2 Achsspezifisches Interface

7.5.2.1 Achsspezifische Zielposition vorgeben

Beschreibung

Mit setDestination(…) kann eine achsspezifische Zielposition vorgegeben werden.

Bei Verwendung der Bewegungsart DirectServo dürfen die Zielvorga- ben maximal 5° von der aktuellen Istposition

Bei Verwendung der Bewegungsart DirectServo dürfen die Zielvorga- ben maximal 5° von der aktuellen Istposition entfernt liegen.

Syntax

Erläuterung der

Syntax

Rückgabewert

long IServoRuntime.setDestination(JointPosition newDestina-

tion )

Element

Beschreibung

newDestina-

Achsspezifische Zielposition, die angefahren werden soll

tion

Die Achswinkel der Achsen A1 … A7 sind anzugeben (Typ:

double; Einheit: rad).

Zeitstempel der Kommandoübernahme durch die Robotersteuerung.

7.5.2.2 Achsspezifische Zielposition mit Zielgeschwindigkeit vorgeben

Beschreibung

Syntax

Erläuterung der

Syntax

Rückgabewert

Bei der Bewegungsart SmartServo kann mit setDestination(…) zusätzlich die achsspezifische Geschwindigkeit vorgegeben werden, mit der die Zielposition angefahren werden soll.

long ISmartServoRuntime.setDestination(JointPosition

newDestination, JointSpeed newSpeed)

Element

Beschreibung

newDestina-

Achsspezifische Zielposition, die angefahren werden soll

tion

Die Achswinkel der Achsen A1 … A7 sind anzugeben (Typ:

double; Einheit: rad).

newSpeed

Achsspezifische Geschwindigkeit, mit der die Zielposition angefahren werden soll (Einheit: rad/s)

Hinweis: Dieser Parameter steht nur bei der Bewegungs- art SmartServo zur Verfügung.

Zeitstempel der Kommandoübernahme durch die Robotersteuerung.

7.5.2.3 Achsspezifische Istposition auslesen

Beschreibung

Die aktuelle achsspezifische Istposition kann mit getCurrentJointDestination() ausgelesen werden.

Syntax

JointPosition IServoRuntime.getCurrentJointDestination()

Rückgabewert

Aktuelle achsspezifische Istposition.

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

7.5.3

Kartesisches Interface

7.5.3.1

Kartesisches Ziel im Roboterfuß-Koordinatensystem vorgeben

Beschreibung

Syntax

Erläuterung der

Syntax

Rückgabewert

Beispiel

Mit setDestination(…) kann ein neues kartesisches Ziel im Roboterfuß-Koor- dinatensystem vorgegeben werden.

long IServoRuntime.setDestination(AbstractFrame destina-

tion);

Element

Beschreibung

destination

Kartesisches Ziel im Roboterfuß-Koordinatensystem.

Der Roboterflansch oder ein dem Flansch hierarchisch untergeordneter Frame wird im Roboterfuß-Koordinaten- system bewegt, z. B. der TCP eines Werkzeugs.

Zeitstempel der Kommandoübernahme durch die Robotersteuerung.

theRuntime.setDestination(XYZ_Frame);

die Robotersteuerung. theRuntime .setDestination(XYZ_Frame); Abb. 7-5: Ziel im Roboterfuß 7.5.3.2 Kartesisches Ziel im

Abb. 7-5: Ziel im Roboterfuß

7.5.3.2 Kartesisches Ziel im Referenz-Koordinatensystem vorgeben

Beschreibung

Syntax

Erläuterung der

Syntax

Rückgabewert

Beispiel

Mit setDestination(…) kann ein neues kartesisches Ziel optional in einem zu- sätzlichen Referenz-Koordinatensystem vorgegeben werden.

long IServoRuntime.setDestination(AbstractFrame destination , AbstractFrame reference );

Element

Beschreibung

destination

Kartesisches Ziel im Referenz-Koordinatensystem.

Der Roboterflansch oder ein dem Flansch hierarchisch untergeordneter Frame wird im Referenz-Koordinatensys- tem bewegt, z. B. der TCP eines Werkzeugs.

reference

Referenz-Koordinatensystem mit statischer Verbindung zum Roboterfuß.

Zeitstempel der Kommandoübernahme durch die Robotersteuerung.

theRuntime.setDestination(XYZ_Frame, refFrame);

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3 Abb. 7-6: Ziel im Referenz-Koordinatensystem 7.5.3.3 Kartesische Istposition im

Abb. 7-6: Ziel im Referenz-Koordinatensystem

7.5.3.3 Kartesische Istposition im Roboterfuß-Koordinatensystem auslesen

Beschreibung

Syntax

Erläuterung der

Syntax

Rückgabewert

Mit getCurrentCartesianPosition(…) kann die aktuelle kartesische Istposition des Roboters bezogen auf das Roboterfuß-Koordinatensystem ausgelesen werden.

Frame IServoRuntime.getCurrentCartesianPosition(Abs-

tractFrame frameOnFlange);

Element

Beschreibung

frameOnFlan

Roboterflansch oder ein dem Flansch hierarchisch unter- geordneter Frame, dessen kartesische Position abgefragt wird, z. B. der TCP eines Werkzeugs.

ge

Kartesische Istposition des Frames frameOnFlange, bezogen auf das Roboter- fuß-Koordinatensystem. Der Wert wird mithilfe von updateWithRealtimeSys- tem() aktualisiert.

(>>> 7.5.1 "Umgang mit dem Echtzeitsystem" Seite 28)

(>>> 7.5.1.1 "Zeitstempel abfragen" Seite 28)

Beispiel

Frame currentPose = theRuntime.getCurrentCartesianPosition(XYZ_Frame);

= theRuntime .getCurrentCartesianPosition(XYZ_Frame); Abb. 7-7: Istposition im Roboterfuß 32 / 83 Stand:

Abb. 7-7: Istposition im Roboterfuß

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

7.5.3.4 Kartesische Istposition im Referenz-Koordinatensystem auslesen

Beschreibung

Syntax

Erläuterung der

Syntax

Rückgabewert

Mit getCurrentCartesianPosition(…) kann die aktuelle kartesische Istposition des Roboters bezogen auf ein bestimmtes Referenz-Koordinatensystem aus- gelesen werden.

Frame IServoRuntime.getCurrentCartesianPosition(Abs- tractFrame frameOnFlange , AbstractFrame reference );

Element

Beschreibung

frameOnFlan

Roboterflansch oder ein dem Flansch hierarchisch unter- geordneter Frame, dessen kartesische Position abgefragt wird, z. B. der TCP eines Werkzeugs.

ge

reference

Referenz-Koordinatensystem, relativ zu dem die kartesi- sche Position abgefragt wird. Wird kein Referenz-Koordi- natensystem angegeben, bezieht sich die kartesische Position auf das Welt-Koordinatensystem.

Kartesische Istposition des Frames frameOnFlange , bezogen auf das Refe- renz-Koordinatensystem. Der Wert wird mithilfe von updateWithRealtimeSys- tem() aktualisiert.

(>>> 7.5.1 "Umgang mit dem Echtzeitsystem" Seite 28)

(>>> 7.5.1.1 "Zeitstempel abfragen" Seite 28)

Beispiel

Frame currentPose = theRuntime.getCurrentCartesianPosition(XYZ_FrameTool, XYZ_FrameRef);

.getCurrentCartesianPosition(XYZ_FrameTool, XYZ_FrameRef); Abb. 7-8: Istposition im Referenz-Koordinatensystem 7.5.4

Abb. 7-8: Istposition im Referenz-Koordinatensystem

7.5.4 Servo-Bewegung beenden

Beschreibung

Eine Servo-Bewegung kann unabhängig vom Zustand der Applikation oder des Roboters jederzeit über die Methode stopMotion() beendet werden.

Die aktuelle Bewegung des Roboters wird abgebremst und keine weitere mit setDestination(…) gesetzte Zielvorgabe übernommen. Ist in der Roboter-Ap- plikation eine nachfolgende Bewegung mit move(…)/moveAsync(…) pro- grammiert, so setzt diese die Roboterbewegung fort.

Syntax

boolean IServoRuntime.stopMotion()

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

7.6 Zielerreichung und Timeouts

Der Zusammenhang zwischen dem Erreichen des Ziels und des Timeouts wird mithilfe eines Zustandsgraphen veranschaulicht. Der Zustandsgraph stellt die innere Zustandsmaschine des Feininterpolators dar. Die in der Klas- se IServoRuntime enthaltene Methode isDestinationReached() gibt bei der Abfrage einen Zustandswert des Datentyps boolean zurück. Weitere Zu- standsinformationen sind für die Applikation ohne Bedeutung, da diese zu kurzlebig sind.

die Applikation ohne Bedeutung, da diese zu kurzlebig sind. Abb. 7-9: Zielerreichung und Timeouts (Zustandsgraph) 

Abb. 7-9: Zielerreichung und Timeouts (Zustandsgraph)

Wird mit der Methode setDestination(…) eine neue Zielvorgabe gesendet, springt der Feininterpolator auf den Zustand "moving".

Solange noch eine Bewegung zu verfahren ist, befindet sich der Feininter- polator der Echtzeitsteuerung im Zustand "moving".

Nachdem die Zielvorgabe erreicht wurde, wird die Geschwindigkeit des Zielzustands für eine definierbare Zeit im Zustand "velocityAfterGoal- Reach" beibehalten.

Dieser Zustand wird nur erreicht, wenn die Geschwindigkeitsplanung aktiviert, d. h. die Variable activateVelocityPlanning auf true gesetzt wurde.

Bei Verwendung der Bewegungsart SmartServo und Vorgabe einer neuen achsspezifischen Zielposition, kann mit der Methode setDesti- nation(…) die Zielgeschwindigkeit bestimmt werden.

Die Dauer der einzuhaltenden Geschwindigkeit im Zustand "velocity- AfterGoalReach" wird über die Methode setSpeedTimeoutAfterGoal- Reach(…) definiert.

Nach dem Zustand "VelocityAfterGoalReached" oder "moving" geht der Feininterpolator in den Zustand "resting".

Der Zustand "resting" wird nach der in der Variablen timeoutAfterGoal- Reach definierten Zeit beendet. Der Default-Wert ist 120 Sekunden.

Jeder Zustand kann jederzeit durch das Kommando stopMotion() beendet werden.

7.7 Empfang des GoalReached Events (nur SmartServo)

Um bei Erreichen der Zielvorgabe mit dem Event onGoalReachedEvent(…) benachrichtigt zu werden, muss der Listener SampleGoalReachedEventListe- ner mit dem Aufruf der Methode setGoalReachedEventHandler(…) an der Schnittstelle IServoRuntime registriert werden. Der Listener SampleGoal- ReachedEventListener muss von der Klasse IServoOnGoalReachedEvent abgeleitet werden.

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung Abb. 7-10: Empfang des GoalReached Events (nur SmartServo) /** * Simple Implementation of an

Abb. 7-10: Empfang des GoalReached Events (nur SmartServo)

/**

* Simple Implementation of an

* GoalReachedEventHandler.Increase a local counter

* and print an error message if a goal was reached.

*/ private class SampleGoalReachedEventListener

implements IServoOnGoalReachedEvent

{

 

@Override public void onGoalReachedEvent(String state, double [] currentAxisPos, int [] osTimestamp)

{

_count++;

if (theSmartServoRuntime.isDestinationReached())

{

getLogger().info("ok");

}

}

}

Der Listener muss die Methode onGoalReachedEvent(…) implementieren.

7.8 Bahnparameter ändern

Die Bahnparameter Geschwindigkeit, Beschleunigung und Ruck können vor dem Aktivieren einer Servo-Bewegung eingestellt werden. Die voreingestell- ten Leistungsparameter beziehen sich auf Volllast in ausgestreckter Lage.

Um die Leistungsreserven des Roboters auszuschöpfen, können bei Smart- Servo optional die Beschleunigung und der Ruck erhöht werden. Dazu dienen die Methoden overrideJointAcceleration(…) und setJointJerk(…). Die Leis- tungsreserven hängen direkt von applikationsspezifischen Parametern ab, z. B. von der Last und der Roboterkonfiguration.

Abhängig von der Last und der Roboterkonfiguration kann der Robo- ter unter Umständen der gewünschten

Abhängig von der Last und der Roboterkonfiguration kann der Robo- ter unter Umständen der gewünschten Bahn nicht mehr folgen und bleibt mit einer Fehlermeldung stehen.

Übersicht

Folgende einstellbaren Bahnparameter stehen für SmartServo und DirectSer- vo zur Verfügung:

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

Methode

Beschreibung

SmartServo

DirectServo

ServoMotion.setJointVelo-

Maximale Achsgeschwin- digkeit (Typ: double; Ein- heit: %)

ServoMotion.setJointVelo- Maximale Achsgeschwin- digkeit (Typ: double; Ein- heit: %)
ServoMotion.setJointVelo- Maximale Achsgeschwin- digkeit (Typ: double; Ein- heit: %)

cityRel(…)

0 … 1

ServoMotion.setJointAcce-

Beschleunigung (Typ: dou- ble; Einheit: %)

ServoMotion.setJointAcce- Beschleunigung (Typ: dou- ble; Einheit: %)
ServoMotion.setJointAcce- Beschleunigung (Typ: dou- ble; Einheit: %)

lerationRel(…)

0 … 1

   

SmartServo.override-

Beschleunigungsüberhö-

SmartServo.override- Beschleunigungsüberhö-
SmartServo.override- Beschleunigungsüberhö-

JointAcceleration(…)

hung (Typ: double; Ein- heit: Faktor)

0 … 20

SmartServo.setJoint-

Ruck (Typ: double; Einheit:

SmartServo.setJoint- Ruck (Typ: double; Einheit:
SmartServo.setJoint- Ruck (Typ: double; Einheit:

Jerk(…)

%)

0 … 1500

7.9

Zeiterfassung

7.9.1 Applikations-Zykluszeit messen

Zur Zeitmessung stehen 2 von KUKA fest eingebundene sowie ein vom Be- nutzer frei verwendbarer Timer zur Verfügung. Die Timer können zur Protokol- lierung sich wiederholender Ereignisse verwendet werden.

lierung sich wiederholender Ereignisse verwendet werden. Abb. 7-11: Zeitmessung 1 Timer UpdateWithRealtimeSystem()

Abb. 7-11: Zeitmessung

1 Timer UpdateWithRealtimeSystem() (vordefiniert)

2 Timer SetDestination() (vordefiniert)

3 Benutzerdefinierter Timer (Klasse StatisticTimer)

KUKA-Timer

Die beiden vordefinierten Timer werden durch Aufruf der Methoden updateWi- thRealtimeSystem() und indirekt durch setDestination(…) ausgeführt.

Die Statistik der internen Timer kann über die Methode toString() der Klasse IServoRuntime ausgegeben werden.

Benutzer-Timer

Der vom Benutzer frei verwendbare Timer wird durch die Klasse StatisticTi- mer bereitgestellt. Diese speichert die Anzahl der Messungen und die kleins- te, die durchschnittliche und die längste gemessene Zykluszeit.

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

Damit die Klasse StatisticTimer zur Verfügung steht, muss diese selbst instan- ziiert werden:

import com.kuka.common.StatisticTimer; import com.kuka.common.StatisticTimer.OneTimeStep;

StatisticTimer timing = new StatisticTimer();

Eine einzelne Messung starten:

OneTimeStep aStep = timing.newTimeStep();

Die Messung stoppen:

aStep.end();

Speicherinhalt der Klasse StatisticTimer auf der smartHMI ausgeben:

getLogger().info("Statistic Timing of Overall Loop " + timing.toString());

Die Ausgabe enthält die Anzahl n der Messungen und die Statistik T der Zyk- luszeiten. Die Statistik T enhält die kürzeste, durchschnittliche und längste Zy- kluszeit.

Statistic Timing of Overall Loop n(20687) T(0.91, 1.92, 6.36 msec) (stdDev 0.36)

Weitere Informationen zur Klasse Stat isticTimer sind in Javadoc zu finden.

Weitere Informationen zur Klasse StatisticTimer sind in Javadoc zu finden.

7.10

Impedanzregelung

In Impedanzregelung können falsch gewählte Parame- ter (z. B. fehlerhafte Lastdaten, falsches Werkzeug) oder fehlerhafte Informationen (z. B. von defekten Momentensensoren) als äußere Kräfte interpretiert werden und zu unvorhersehbaren Bewegungen des Roboters führen.

Momentensensoren) als äußere Kräfte interpretiert werden und zu unvorhersehbaren Bewegungen des Roboters führen.

Um die Gefahr durch unvorhersehbare Bewegungen zu vermeiden, müssen der maximal zulässige Bewegungs- bereich und die maximal zulässige Geschwindigkeit eines Roboters in Impe- danzregelung eingeschränkt werden. Die Grenzwerte für die maximale Abweichung und Geschwindigkeit sind applikationsspezifisch sinnvoll und hinreichend klein zu wählen.

für die maximale Abweichung und Geschwindigkeit sind applikationsspezifisch sinnvoll und hinreichend klein zu wählen.

7.10.1 Lastmodell für Impedanzregelung validieren

Beschreibung

Um Servo-Bewegungen bei einem impedanzgeregelten Roboter verwenden zu können, muss einmalig zur Laufzeit der Applikation eine Validierung durch- geführt werden.

Voraussetzung für die Validierung ist, dass der Roboter gut konditioniert steht, d. h. er darf sich nicht in einer singulären Stellung befinden.

Beispiel

Mit SmartServo.validateForImpedanceMode(…) wird die Impedanzregelung validiert. Bei ungültiger Validierung wird eine Meldung auf der smartHMI aus- gegeben.

if (SmartServo. validateForImpedanceMode (_toolAttachedToLBR) != true )

{

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

getLogger().info("Validation of Torque Model failed");

}

7.10.2 Impedanzregelung aktivieren

Beim Aktivieren einer Servo-Bewegung mit moveAsync(…) muss die verwen- dete Regelungsart der Bewegung als Parameter übergeben werden. Hierfür wird die Methode setMode(…) verwendet.

_toolAttachedToLBR.getDefaultMotionFrame().moveAsync(

aSmartServoMotion.setMode(controlMode));

7.10.3 Regler-Parameter zur Laufzeit ändern

Beschreibung Mithilfe der Methode changeControlModeSettings(…) können die Parameter des Reglers geändert werden, mit dem die Servo-Bewegung gestartet wurde. Die Regelungsart selbst kann während der Servo-Bewegung nicht gewechselt werden.

Voraussetzung

Das Lastmodell für die Impedanzregelung ist validiert.

Die Regelungsart wurde beim Aktivieren der Servo-Bewegung gesetzt.

Syntax

void IServoRuntime.changeControlModeSettings(IMotion- ControlMode controlMode)

Element

Beschreibung

controlMode

Regler-Objekt, das die Regler-Parameter enthält, die zur Laufzeit der Servo-Bewegung geändert werden sollen.

Übersicht

Folgende Parameter der jeweiligen Regelungsart können mithilfe der Metho- de changeControlModeSettings(…) zur Laufzeit geändert werden:

Regler

Änderbare Parameter

Methode

Kartesischer Impedanzregler

Datentyp: CartesianImpedanceControlMode

Federsteifigkeit

setStiffness(…)

Federdämpfung

setDamping(…)

Federsteifigkeit des Redun- danz-Freiheitsgrades

setNullSpaceStiffness(…)

Federdämpfung des Redun- danz-Freiheitsgrades

setNullSpaceDamping(…)

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

Regler

Änderbare Parameter

Methode

Kartesischer Impedanzregler mit aufgeschalteter Kraft- schwingung

Datentyp: CartesianSineImpedanceControlMode

Amplitude der Kraftschwin- gung

setAmplitude(…)

 

Frequenz der Kraftschwin- gung

setFrequency(…)

Phasenverschiebung der Kraftschwingung

setPhaseDeg(…)

Zusätzlich zur Kraftschwin- gung aufgeschaltete kons- tante Kraft

setBias(…)

Kraftbegrenzung der Kraft- schwingung

setForceLimit(…)

Maximale Auslenkung durch die Kraftschwingung

setPositionLimit(…)

Anstiegszeit der Kraftschwin- gung

setRiseTime(…)

Haltezeit der Kraftschwingung

setHoldTime(…)

Abfallzeit der Kraftschwingung

setFallTime(…)

Beispiel

Für einen kartesischen Impedanzregler werden neue Federsteifigkeiten defi- niert:

if (controlMode instanceof CartesianImpedanceControlMode)

{

final CartesianImpedanceControlMode cartImp = (CartesianImpedanceControlMode) controlMode; final double aTransStiffVal = Math. max (100. * (i / (double ) _numRuns + 1), 1000.); final double aRotStiffVal = Math. max (10. * (i / (double ) _numRuns + 1), 150.); cartImp.parametrize(CartDOF.TRANSL).setStiffness(aTransStiffVal); cartImp.parametrize(CartDOF.ROT).setStiffness(aRotStiffVal);

Wird die Federsteifigkeit zu gering gewählt, kann der Roboter aufgrund seiner Eigenreibung der Zielvorgabe nicht korrekt folgen. Es kann zu spontanen Bewegungen kommen, wenn durch weitere Zielvorgaben die Eigenreibung überwunden wird.

korrekt folgen. Es kann zu spontanen Bewegungen kommen, wenn durch weitere Zielvorgaben die Eigenreibung überwunden wird.

Die neuen Steifigkeitswerte werden mit der Methode changeControlModeSet- tings(…) in der Laufzeitumgebung gesetzt:

theSmartServoRuntime.changeControlModeSettings(cartImp);

}

In Impedanzregelung kann sich der Roboter unerwartet bewegen. Die maximal zulässige kartesische Abwei- chung von der Bahn und die maximal zulässige kartesische Kraft am TCP müssen so weit eingeschränkt werden, dass es zu keinen Verletzungen oder Sachschaden kommen kann.

Kraft am TCP müssen so weit eingeschränkt werden, dass es zu keinen Verletzungen oder Sachschaden kommen

Für die kartesische Begrenzung stehen folgende Methoden zur Verfügung:

setMaxPathDeviation(…):

Begrenzung der maximalen kartesischen Abweichung von der Bahn

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

setMaxControlForce(…):

Begrenzung der maximalen Kraft am TCP

final CartesianImpedanceControlMode cartImp = new CartesianImpedanceControlMode();

cartImp.parametrize(CartDOF.TRANSL).setStiffness(1000.0);

cartImp.parametrize(CartDOF.ROT).setStiffness(100.0);

cartImp.setNullSpaceStiffness(100.0);

cartImp.parametrize(CartDOF.TRANSL).setMaxPathDeviation(50.0);

cartImp.parametrize(CartDOF.ROT).setMaxPathDeviation(1.0);

7.10.4 Übergang zwischen Regelungsarten

Beschreibung

Es ist bei Servo-Bewegungen nicht möglich, innerhalb einer Bewegungs-Ins- tanz die Regelungsart zu wechseln. Daher muss die Bewegung durch eine neue Bewegungs-Instanz abgelöst werden. Es kann erst in die neue Rege- lungsart gewechselt werden, wenn die laufende Bewegungs-Instanz beendet ist.

Eine neue Servo-Bewegung wird über moveAsync(…) instanziiert. Wird die erste noch laufende Bewegung beispielsweise durch eine definierte Bedin- gung oder durch den Befehl stopMotion() beendet, gehen die Bewegungsab- schnitte durch die internen Funktionalitäten im Echtzeitbereich nahtlos ineinander über.

Dieselbe Technik muss für alle bewegungsspezifischen Parameter genutzt werden, die nicht zur Laufzeit änderbar sind. Dies gilt z. B. für Lastwechsel (Masseparameter ändern sich durch Greifen) oder ähnliches.

Beim Überblenden sind korrekte Lastparameter zu beachten! Diese sind bewegungsspezifisch.

Beim Überblenden sind korrekte Lastparameter zu beachten! Diese sind bewegungsspezifisch.

Beispiel

Eine erste SmartServo-Bewegung ist aktiv. Eine zweite SmartServo-Bewe- gung wird über moveAsync(…) an das Echtzeitsystem gesendet. (>>> 8.1.3 "Applikation SmartServoSampleInteractionControl" Seite 59)

final SmartServo secondSmartServoMotion = newSmartServo(initialPosition);

_toolAttachedToLBR.getDefaultMotionFrame().

moveAsync(secondSmartServoMotion);

final ISmartServoRuntime theSecondRuntime = secondSmartServoMotion.getRuntime();

Die eigentliche Übergabe findet in der folgenden Anweisung statt, in der die abzulösende SmartServo-Bewegung (theFirstRuntime) gestoppt wird.

theFirstRuntime.stopMotion();

Ab diesem Zeitpunkt ist die zweite Laufzeitumgebung (theSecondRuntime) aktiviert und führt Bewegungsbefehle auf dem System aus.

7.11 Rückkopplungseffekt bei Servo-Bewegungen

Beschreibung

Bei der Verwendung der Bewegungsart SmartServo und DirectServo kann der regelungstechnische Nebeneffekt einer Rückkopplung auftreten. Dieser Ef- fekt ist mit dem der Rückkopplung eines übersteuerten Mikrofons durch des- sen gekoppelten Lautsprecher vergleichbar.

7 Programmierung

7 Programmierung
7 Programmierung
7 Programmierung
7 Programmierung

Roboter-Applikationen, die Standard-Bewegungen verwenden, senden Soll- vorgaben an die Robotersteuerung, ohne Positionsrückmeldungen in ihre Sollvorgabe-Berechnung einfließen zu lassen.

in ihre Sollvorgabe-Berechnung einfließen zu lassen. Abb. 7-12: Sollvorgabe bei Standard-Bewegungen Im

Abb. 7-12: Sollvorgabe bei Standard-Bewegungen

Im Unterschied dazu werden bei Servo-Bewegungen Positionsrückmeldun- gen mit in die Sollvorgabe-Berechnung eingerechnet. Abhängig von diversen Parametern kann es zu übersteuernden Sollvorgaben an die Robotersteue- rung kommen, die sich progressiv aufschwingen können. Dies ist vergleichbar mit einer zu geringen Eingangsdämpfung eines Mikrofons, das sich zu nahe an einem gekoppelten Lautsprecher befindet.

Beispiel 1, Visual Servoing

Lautsprecher befindet. Beispiel 1, Visual Servoing Abb. 7-13: Sollvorgabe bei Servo-Bewegungen, Beispiel Visual

Abb. 7-13: Sollvorgabe bei Servo-Bewegungen, Beispiel Visual Servoing

Bei einer Visual Servoing-Anwendung soll der Roboter den roten Kreis in der Bildmitte der Kamera halten. Dazu wird das Kamerabild erfasst und ausge- wertet. In der Tracking-Applikation wird ein Stellsignal errechnet, um den Ro- boter anzusteuern. Dieses Stellsignal ändert den Aufnahmepunkt der Kamera.

Abbildung (>>> Abb. 7-14 ) stellt den Signalfluss des Regelkreises dar.

Abb. 7-14 ) stellt den Signalfluss des Regelkreises dar. Abb. 7-14: Regelkreis Signalfluss, Beispiel Visual Servoing

Abb. 7-14: Regelkreis Signalfluss, Beispiel Visual Servoing

Dabei wird die Aktivität des Roboters und der Robotersteuerung als Kamera- Pose abstrahiert.

In Abbildung (>>> Abb. 7-15 ) wird die Tätigkeit der Kamera-Pose und der Bildverarbeitung jeweils als ideales Totzeitelement Z -1 modelliert. Der Tra- cking Controller wird als Totzeitelement mit p-Verstärkung modelliert.

KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3
KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3

KUKA Sunrise.Connectivity 1.3 Abb. 7-15: p-Verstärkung, Beispiel Visual Servoing Somit ergibt sich eine

Abb. 7-15: p-Verstärkung, Beispiel Visual Servoing

Somit ergibt sich eine Übertragungsfunktion von: G(z) = 1 / (1 + kz 3 )

Die Wurzeln des charakteristischen Polynoms hängen damit vom Verstär- kungsfaktor k des eigentlichen Reglers Tracking Controller ab.

Für k = 1 gilt, dass der Regelkreis grenzstabil ist.

Daraus ergeben sich folgende Schlüsse:

In der Praxis ist genau dieser Regelkreis (k = 1) instabil.

Bereits das Pixelrauschen der Kamera führt zu einer Dauerschwingung des Gesamtsystems.

Jedes Teilsystem ist für sich alleine genommen voll funktionsfähig.

Zur Stabilisierung muss die Verstärkung k < 1 (Tracking Controller) ge- wählt werden.

Reduktion der Roboter-Performance (maximale Geschwindigkeit) Ka- mera-Pose.

Anpassung des Reglers Tracking Controller.

Unterdrückung des Pixelrauschens in der Bildverarbeitung.

Beispiel 2,