142
Automatische Konfiguration der Bewegungssteuerung von Industrierobotern zur Erlangung des akademischen Grades eines Doktors der Ingenieurwissenschaften von der Fakultät für Informatik der Universität Fridericiana zu Karlsruhe (TH) genehmigte Dissertation von Dipl.–Inform. Michael Wenz aus Karlsruhe Tag der mündlichen Prüfung: 17. Juni 2008 Erster Gutachter: Prof. Dr.–Ing. Heinz Wörn Zweiter Gutachter: Prof. Dr.rer.nat. Uwe Brinkschulte

Automatische Konfiguration der Bewegungssteuerung von

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Automatische Konfiguration der Bewegungssteuerung von

Automatische Konfiguration derBewegungssteuerung von

Industrierobotern

zur Erlangung des akademischen Grades eines

Doktors der Ingenieurwissenschaften

von der Fakultät für Informatikder Universität Fridericiana zu Karlsruhe (TH)

genehmigte

D i s s e r t a t i o n

von

Dipl.–Inform. Michael Wenz

aus Karlsruhe

Tag der mündlichen Prüfung: 17. Juni 2008

Erster Gutachter: Prof. Dr.–Ing. Heinz Wörn

Zweiter Gutachter: Prof. Dr.rer.nat. Uwe Brinkschulte

Page 2: Automatische Konfiguration der Bewegungssteuerung von

ii

Page 3: Automatische Konfiguration der Bewegungssteuerung von

Vorwort

Die vorliegende Arbeit entstand während meiner Tätigkeit als wissenschaftlicher Mitar-beiter am Institut für Prozessrechentechnik, Automation und Robotik der UniversitätKarlsruhe (TH). Ein großer Teil der Arbeit wurde innerhalb des von der Deutschen For-schungsgemeinschaft (DFG) geförderten Teilprojekts „Organic Robot Control“ im Rahmendes Schwerpunktprogramms 1183 „Organic Computing“ durchgeführt. Die Entwicklungvon selbstkonfigurierenden Systemen ist ein aktuelles Forschungsthema. Ein relevantesAnwendungsgebiet ist die automatische, schnelle und zuverlässige Konfiguration der Be-wegungssteuerung von Industrierobotern.

Mein besonderer Dank gilt Herrn Prof. Dr.–Ing. Heinz Wörn für die Betreuung der vor-liegenden Dissertation. Er hat mich stets unterstützt und mir die nötigen Freiräume fürForschung und selbstständiges wissenschaftliches Arbeiten gegeben. Mein Interesse fürBewegungssteuerungen wurde von ihm geweckt und viele seiner Kenntnisse auf diesemhochinteressanten Gebiet gab er an mich weiter. Für die Übernahme des Korreferatesund für die Durchsicht der Arbeit möchte ich Herrn Prof. Dr.rer.nat. Uwe Brinkschultedanken. Ebenfalls danke ich Frau Prof. Dr.–Ing. Tanja Schultz und Herrn Prof. Dr.–Ing.Jürgen Beyerer, die beide als mündliche Prüfer in meiner Disputation fungierten. DenVorsitz der Prüfungskommission hatte Herr Prof. Dr.–Ing. Roland Vollmar übernommen.

An dieser Stelle danke ich auch den Kolleginnen und Kollegen am Institut für die fachlichenGespräche und Diskussionen, die wertvolle Denkanstöße lieferten und mir sehr geholfenhaben. Des Weiteren gilt mein Dank allen von mir betreuten Studenten, die im Rahmenvon Praktika und Studienarbeiten sehr zum Gelingen dieser Arbeit beigetragen haben.Für die vielseitige Unterstützung und das gute Arbeitsklima an diesem Institut möchteich mich bedanken.

Michael Wenz Karlsruhe, September 2008

Page 4: Automatische Konfiguration der Bewegungssteuerung von

iv

Page 5: Automatische Konfiguration der Bewegungssteuerung von

Inhaltsverzeichnis

Symbolverzeichnis x

1 Einführung 11.1 Motivation und Problembeschreibung . . . . . . . . . . . . . . . . . . . . . 11.2 Zielsetzung und Beitrag der Arbeit . . . . . . . . . . . . . . . . . . . . . . 21.3 Aufbau und Kapitelübersicht . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2 Bauarten von Industrierobotern 72.1 Klassische Kinematiken und Grundbauarten . . . . . . . . . . . . . . . . . 7

2.1.1 Kartesischer Roboter / Portalroboter . . . . . . . . . . . . . . . . . 82.1.2 SCARA–Roboter / horizontaler Knickarmroboter . . . . . . . . . . 82.1.3 Zylindrischer Roboter / Zylinderkoordinatenroboter . . . . . . . . . 92.1.4 Sphärischer Roboter / Kugelkoordinatenroboter . . . . . . . . . . . 92.1.5 Gelenkarmroboter / vertikaler Knickarmroboter . . . . . . . . . . . 92.1.6 Hexapod / Stewart–Gough–Plattform . . . . . . . . . . . . . . . . . 102.1.7 Gegenüberstellung der verschiedenen Kinematiken . . . . . . . . . . 10

2.2 Handkinematiken und Sonderbauformen . . . . . . . . . . . . . . . . . . . 112.2.1 Anordnungen der Nebenachsen . . . . . . . . . . . . . . . . . . . . 112.2.2 Roboter mit externen Gelenkachsen . . . . . . . . . . . . . . . . . . 112.2.3 Parallelogramm–Roboter . . . . . . . . . . . . . . . . . . . . . . . . 122.2.4 Modulare rekonfigurierbare Roboterstrukturen . . . . . . . . . . . . 122.2.5 Kooperierende Mehrrobotersysteme . . . . . . . . . . . . . . . . . . 12

3 Aktueller Stand der Forschung 133.1 Projekte im Bereich des numerischen Rechnens . . . . . . . . . . . . . . . . 14

3.1.1 Orocos: Open Robot Control Software . . . . . . . . . . . . . . . . 143.1.2 Oscar: Operational Software Components for Advanced Robotics . . 153.1.3 Roboop: A Robotics Object Oriented Package in C++ . . . . . . . 153.1.4 Matlab Robotics Toolbox . . . . . . . . . . . . . . . . . . . . . . . 163.1.5 RTSS: Robotics Toolbox for Scilab/Scicos . . . . . . . . . . . . . . 163.1.6 PMT: Planar Manipulators Toolbox . . . . . . . . . . . . . . . . . . 163.1.7 ManDy: Manipulator Dynamics . . . . . . . . . . . . . . . . . . . . 173.1.8 Microb: Modules Intégrés pour le Contrôle de Robots . . . . . . . . 173.1.9 Synthetica: Kinematic Synthesis of Robots . . . . . . . . . . . . . . 183.1.10 Robotect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183.1.11 RobotDraw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

3.2 Projekte im Bereich des symbolischen Rechnens . . . . . . . . . . . . . . . 193.2.1 IKAN: Inverse Kinematics using Analytical Solutions . . . . . . . . 203.2.2 SRAST: Symbolic Robot Arm Solution Tool . . . . . . . . . . . . . 20

Page 6: Automatische Konfiguration der Bewegungssteuerung von

vi

3.2.3 Robotran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203.2.4 Robotica for Mathematica . . . . . . . . . . . . . . . . . . . . . . . 213.2.5 JFKengine: Jacobian and Forward Kinematics Generator . . . . . . 213.2.6 Linkage Designer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.2.7 SpaceLib in Maple . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

3.3 Mehrkörpersimulationssysteme . . . . . . . . . . . . . . . . . . . . . . . . . 223.3.1 Dymola: Dynamic Modelling Laboratory . . . . . . . . . . . . . . . 223.3.2 DynaFlexPro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.3 NewEul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233.3.4 MBSymba: Symbolic Modelling of Multibody Systems . . . . . . . 243.3.5 Adams: Automatic Dynamic Analysis of Mechanical Systems . . . . 24

3.4 Physik–Engines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243.4.1 DynaMo: Dynamic Motion Library . . . . . . . . . . . . . . . . . . 253.4.2 MBDyn: MultiBody Dynamics Software . . . . . . . . . . . . . . . 253.4.3 ODE: Open Dynamics Engine . . . . . . . . . . . . . . . . . . . . . 253.4.4 DynaMechs: Dynamics of Mechanisms . . . . . . . . . . . . . . . . 263.4.5 EasyDyn: Easy Simulation of Dynamic Problems . . . . . . . . . . 26

3.5 3D–Robotersimulationssysteme . . . . . . . . . . . . . . . . . . . . . . . . 273.5.1 EASY–ROB 3D Robot Simulation Tool . . . . . . . . . . . . . . . . 273.5.2 eM–Workplace / Robcad . . . . . . . . . . . . . . . . . . . . . . . . 273.5.3 Robomosp: Robotics Modelling and Simulation Platform . . . . . . 283.5.4 Cosimir: Cell Oriented Simulation of Industrial Robots . . . . . . . 283.5.5 Igrip: Interactive Graphics Robot Instruction Program . . . . . . . 293.5.6 Microsoft Robotics Studio . . . . . . . . . . . . . . . . . . . . . . . 29

3.6 Bewertung und Vergleich der Systeme . . . . . . . . . . . . . . . . . . . . . 30

4 Bestimmung des kinematischen Robotermodells 334.1 Modellierung offener, kinematischer Ketten . . . . . . . . . . . . . . . . . . 364.2 Bestimmung der direkten Kinematik . . . . . . . . . . . . . . . . . . . . . 384.3 Regelbasierte Lösung der inversen Kinematik . . . . . . . . . . . . . . . . . 39

4.3.1 Entwicklung einer Wissensbasis für trigonometrische Gleichungen . 424.3.2 Pattern Matching mit dem RETE–Algorithmus . . . . . . . . . . . 464.3.3 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 48

4.4 Algebraische Lösung der inversen Kinematik . . . . . . . . . . . . . . . . . 504.4.1 Konvertierung in Polynomialgleichungen . . . . . . . . . . . . . . . 524.4.2 Bestimmung der Gröbnerbasis . . . . . . . . . . . . . . . . . . . . . 524.4.3 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 54

4.5 Geometrische Lösung der inversen Kinematik . . . . . . . . . . . . . . . . . 564.5.1 Bestimmung der Twist–Koordinaten eines Manipulators . . . . . . . 574.5.2 Bestimmung der Adjungierten von Twist–Koordinaten . . . . . . . 584.5.3 Entwicklung einer Wissensbasis für Exponentialgleichungen . . . . . 584.5.4 Dekomposition der direkten Kinematik . . . . . . . . . . . . . . . . 684.5.5 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 69

4.6 Jacobi–Matrix / Geschwindigkeitstransformation . . . . . . . . . . . . . . . 694.6.1 Bestimmung der Jacobi–Matrix . . . . . . . . . . . . . . . . . . . . 704.6.2 Durchführung einer Singularitätsanalyse . . . . . . . . . . . . . . . 714.6.3 Näherungsweise Rückwärtstransformation . . . . . . . . . . . . . . 714.6.4 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 72

Page 7: Automatische Konfiguration der Bewegungssteuerung von

vii

5 Bestimmung des dynamischen Robotermodells 735.1 Lagrange Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

5.1.1 Automatische Erzeugung der Bewegungsgleichungen . . . . . . . . . 745.1.2 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 77

5.2 Rekursive Newton–Euler Verfahren . . . . . . . . . . . . . . . . . . . . . . 785.2.1 Vorwärtsrechnung von der Basis zum Endeffektor . . . . . . . . . . 795.2.2 Rückwärtsrechnung vom Endeffektor zur Basis . . . . . . . . . . . . 805.2.3 Modifikation der Vorwärtsrechnung . . . . . . . . . . . . . . . . . . 805.2.4 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 81

5.3 Kane’s dynamische Gleichungen . . . . . . . . . . . . . . . . . . . . . . . . 815.4 Vergleich der Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6 Softwarearchitektur und Konfigurationswerkzeug für die Bewegungs-steuerung von Robotern 836.1 Referenzmodell einer Bewegungssteuerung . . . . . . . . . . . . . . . . . . 836.2 Beschreibung des Aufbaus des zu konfigurierenden Roboters . . . . . . . . 856.3 Betriebsarten einer Bewegungssteuerung . . . . . . . . . . . . . . . . . . . 86

6.3.1 Trajektoriengenerierung im Gelenkwinkelraum . . . . . . . . . . . . 876.3.2 Trajektoriengenerierung im kartesischen Raum . . . . . . . . . . . . 92

6.4 Entwicklung eines Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . 956.4.1 Herstellerspezifische Roboterprogrammiersprachen . . . . . . . . . . 956.4.2 DIN 66313: Industrial Robot Data (IRDATA) . . . . . . . . . . . . 966.4.3 DIN 66312: Industrial Robot Language (IRL) . . . . . . . . . . . . 976.4.4 Experimentelle Ergebnisse . . . . . . . . . . . . . . . . . . . . . . . 100

6.5 Anwendungsprogrammierschnittstelle . . . . . . . . . . . . . . . . . . . . . 101

Zusammenfassung und Ausblick 103

A Mathematischer Hintergrund 107A.1 Darstellungen von Orientierungen . . . . . . . . . . . . . . . . . . . . . . . 107

A.1.1 Euler Winkel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107A.1.2 Quaternionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

A.2 Lie Gruppen und Lie Algebren . . . . . . . . . . . . . . . . . . . . . . . . . 109A.2.1 Rotationsformel von Rodrigues . . . . . . . . . . . . . . . . . . . . 110

B Exemplarische Konfiguration 111

C XML–Beschreibung von Robotern 117

Literaturverzeichnis 119

Page 8: Automatische Konfiguration der Bewegungssteuerung von

viii

Page 9: Automatische Konfiguration der Bewegungssteuerung von

Symbolverzeichnis

Selten benutzte Symbole und abweichende Bedeutungen werden im Text erläutert. Physi-kalische Größen werden entsprechend des Internationalen Einheitensystems (SI) angege-ben (N = kg ·m/s2, J = kg ·m2/s2). Die Einheit von manchen Variablen hängt von demGelenktyp ab. In der folgenden Tabelle wird zu jedem Symbol das Kapitel beziehungsweiseder Abschnitt angegeben, in dem das Symbol zum ersten Mal verwendet wird.

Physikalische Größen

Symbol Bedeutung SI–Einheit Abschnittn Anzahl der Gelenkachsen – 4qi allgemeine Gelenkvariable [rad] [m] 4α Eulersche Orientierungswinkel [rad] 4β Eulersche Orientierungswinkel [rad] 4γ Eulersche Orientierungswinkel [rad] 4θi Gelenkwinkel [rad] 4.1di Hebelverschiebung [m] 4.1ai Hebellänge [m] 4.1αi Hebelverschiebung [rad] 4.1t Zeit [s] 5qi Geschwindigkeit des i–ten Gelenks [ rad

s] [m

s] 5.1

qi Beschleunigung des i–ten Gelenks [ rads2 ] [m

s2 ] 5.1L Lagrange Funktion [J ] 5.1K Kinetische Energie [J ] 5.1P Potentielle Energie [J ] 5.1Ixx Massenträgheitsmoment bezüglich x–Achse [kg · m2] 5.1Iyy Massenträgheitsmoment bezüglich y–Achse [kg · m2] 5.1Izz Massenträgheitsmoment bezüglich z–Achse [kg · m2] 5.1Ixy Deviationsmoment bezüglich xy–Ebene [kg · m2] 5.1Ixz Deviationsmoment bezüglich xz–Ebene [kg · m2] 5.1Iyz Deviationsmoment bezüglich yz–Ebene [kg · m2] 5.1g Erdbeschleunigung [m

s2 ] 5.1mi konzentrierte Masse des i–ten Manipulatorglieds [kg] 5.1τi Moment / Kraft, die im i–ten Gelenk wirkt [J ] [N ] 5.1σi gelenkspezifischer Kennungsparameter – 5.2

qmin untere Gelenkkoordinatenbegrenzung [rad] [m] 6.3qmax obere Gelenkkoordinatenbegrenzung [rad] [m] 6.3vmax maximale Gelenkgeschwindigkeit [ rad

s] [m

s] 6.3

amax maximale Gelenkbeschleunigung [ rads2 ] [m

s2 ] 6.3jmax maximaler Gelenkruck [ rad

s3 ] [ms3 ] 6.3

Page 10: Automatische Konfiguration der Bewegungssteuerung von

x

Vektoren und Matrizen

Symbol Bedeutung Dimension Abschnitt�q Gelenkvariablenvektor n × 1 4

Ti,j homogene Transformationsmatrix 4 × 4 4.1Ri,j Rotationsmatrix 3 × 3 4.1ξi Twist–Koordinate 6 × 1 4.5ξi Twist 4 × 4 4.5

so(3) Menge der antisymmetrischen 3 × 3–Matrizen 3 × 3 4.5SO(3) spezielle orthogonale Gruppe 3 × 3 4.5se(3) Menge der Twists 4 × 4 4.5SE(3) spezielle euklidische Gruppe 4 × 4 4.5J Jacobi–Matrix 6 × n 4.6J + Pseudoinverse der Jacobi–Matrix n × 6 4.6In,n Einheitsmatrix n × n 5.1AI Trägheitstensormatrix 3 × 3 5.1Mi verallgemeinerte Massenmatrix für das i–te Glied 6 × 6 5.1Ji partielle Jacobi–Matrix bis zum i–ten Glied 6 × n 5.1�ri relative Schwerpunktkoordinaten des i–ten Glieds 3 × 1 5.1�τ Kraft– / Momentenvektor n × 1 5.1M Massenmatrix n × n 5.1C Matrix der Zentrifugal– und Corioliskräfte n × n 5.1G Gravitationsvektor n × 1 5.1CF Zentrifugalmatrix n × n 5.1CO Coriolismatrix n × n·(n−1)

25.1

Fi Kraftvektor im Schwerpunkt des i–ten Glieds 3 × 1 5.2Ni Momentvektor im Schwerpunkt des i–ten Glieds 3 × 1 5.2�ωi Winkelgeschwindigkeitsvektor 3 × 1 5.2�ωi Winkelbeschleunigungsvektor 3 × 1 5.2�vi Linearbeschleunigungsvektor 3 × 1 5.2�pi Positionsvektor 3 × 1 5.2�vci Beschleunigungsvektor des i–ten Schwerpunkts 3 × 1 5.2Ici Trägheitstensor im Basiskoordinatensystem 3 × 3 5.2�fi Kraftvektor, den Glied i auf Glied i − 1 ausübt 3 × 1 5.2�ni Momentvektor, den Glied i auf Glied i − 1 ausübt 3 × 1 5.2q Quaternion 4 × 1 6.3

Page 11: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 1

Einführung

1.1 Motivation und Problembeschreibung

Die Steuerung eines Industrieroboters kapselt verschiedene Softwaresysteme für einzelneKomponentengruppen (Antriebe, Sensoren, Technologiesteuerung, Peripheriekomponen-ten) auf die über Bussysteme zugegriffen wird. Solche Softwaresysteme sind beispielsweisedie Bewegungssteuerung für einen oder mehrere Roboter, Sensordatenverarbeitungssys-teme, applikations– und technologieabhängige Bedienoberflächen sowie variantenreicheTechnologiesteuerungen für Schweißen, Kleben, Handhaben, Montieren oder Bearbeiten.Die Bewegungssteuerung eines Roboters setzt sich aus den Komponenten für den Interpre-ter, Interpolationsvorbereitung, Interpolation, inverse Kinematik, inverse Dynamik, Kas-kadenregelung und anderes mehr zusammen. Die Hauptaufgabe der Bewegungssteuerungist die Entgegennahme und Abarbeitung von Roboterprogrammen und Bewegungsbefeh-len. Anhand der vorgegebenen Zielstellungen des Endeffektors erzeugen die Interpolati-onskomponenten entsprechende zeitliche Zwischenstellungen. Die Aufgabe der inversenKinematik ist es, Endeffektorlagen im kartesischen Raum in den Gelenkwinkelraum zutransformieren und dadurch die Sollwerte für die Antriebsregelkreise zu bestimmen. Umdas Bewegungsverhalten zu verbessern, erfolgt eine Vorsteuerung des Sollstroms mit derinversen Dynamik, die parallel zu den Lage– und Geschwindigkeitsreglern geschalten wird.

Eine wichtige Herausforderung bei der Entwicklung von Steuerungssoftware für Roboterist die Sicherstellung einer hohen Qualität der Software. Dazu gehört auch die garantierteEinhaltung vorgegebener Zeitbedingungen. Durch fehlerhafte Steuerungssoftware könnenerhebliche Schäden entstehen oder sogar Menschen gefährdet werden. Aufgrund der stetigansteigenden Anzahl von Robotertypen ist die Beherrschung der zunehmenden Varianten-vielfalt eine weitere wesentliche Herausforderung. Der Entwickler und Projektierer stehtvor einer nahezu unüberschaubaren Vielfalt an Komponenten sowie an Kombinations–und Konfigurationsmöglichkeiten. Mit dem Umfang an Steuerungsfunktionen und derAnzahl möglicher Konfigurationen steigen auch die Anforderungen an die einzusetzendenSoftwaretechnologien. Die Software zur Bewegungssteuerung von Industrierobotern weistbei verschiedenen Robotertypen erhebliche Unterschiede auf. Bisher war die Entwicklungvon Steuerungssoftware an einen bestimmten Robotertyp gekoppelt. Jeder Roboter hatdamit seine eigene spezielle Software, die genau die Fähigkeiten dieser Baureihe abdeckt.Die Erweiterbarkeit, Portierbarkeit und Wartbarkeit von Steuerungssoftware ist damit ei-ne langwierige und schwierige Aufgabe. Insbesondere die Wiederverwendbarkeit von Ro-botermodellen ist kaum möglich. Deswegen soll dieser Softwareentwicklungsvorgang imRahmen dieser Arbeit in wesentlichen Teilen automatisiert und sehr vereinfacht werden.

Page 12: Automatische Konfiguration der Bewegungssteuerung von

2 Kapitel 1. Einführung

1.2 Zielsetzung und Beitrag der Arbeit

Ziel dieser Arbeit ist es, den Vorgang der Entwicklung der Bewegungssteuerung von Ro-botern zu automatisieren, welcher bisher nur von menschlichen Experten und von Handerledigt werden konnte. Hierfür wurde ein neues Werkzeug mit graphischer Benutzerober-fläche zur automatisierten Konfiguration komponentenbasierter Software auf Basis einerBeschreibung der mechanischen Struktur und Eigenschaften von Industrierobotern entwi-ckelt. Damit stehen dem Benutzer vielfältige Auswahl– und Kombinationsmöglichkeitenzur Verfügung, zum Beispiel Anzahl und Typen der Gelenkachsen, Bewegungsmöglichkei-ten der Haupt– und Nebenachsen, Anordnung der Achsen, geometrische Abmessungen,zu unterstützende Interpolationsarten, Beschleunigungsprofilart, Interpolationstakt, ma-ximale Geschwindigkeit bei der Interpolation und vieles mehr. Das System unterstütztden Benutzer bei der Auswahl zulässiger Konfigurationen. Diese Arbeit zielt insbesonderedarauf ab, die Bewegungssteuerungen einer Vielzahl unterschiedlicher Robotertypen undkinematischer Aufbauarten durch eine gemeinsame Referenzarchitektur zu integrieren.Die automatische Konfiguration der Bewegungssteuerung stellt ein Softwaregenerierungs–und Kompositionsproblem dar, das anhand von Zielvorgaben und Randbedingungen, zumBeispiel Echtzeitanforderungen, gelöst werden muss. Aufgrund von starken Nichtlineari-täten sowie von räumlich–geometrischen Mehrdeutigkeiten und Singularitäten handelt essich bei der Bestimmung von Robotermodellen für die Bewegungssteuerung um eine sehrkomplexe und wissenschaftlich anspruchsvolle Problemstellung.

Die in dieser Arbeit betrachtete Bewegungssteuerung wird durch das flexible Konfigu-rieren von Softwarekomponenten für die jeweilige Robotergeometrie erzeugt. Für einenmodularen Aufbau wurden zwischen den einzelnen Komponenten einheitliche und robo-terunabhängige Schnittstellen definiert. Der erste Teil dieser Arbeit konzentriert sich aufdie vollautomatische Bestimmung der für die Bewegungssteuerung notwendigen kinema-tischen und dynamischen Robotermodelle. Hierzu gehört auch die analytische Herleitungder Jacobi–Matrix von Manipulatoren. Im zweiten Teil der Arbeit werden wichtige Algo-rithmen zur Trajektoriengenerierung und ein herstellerunabhängiger Interpreter für Ro-boterprogramme entwickelt sowie die einzelnen Softwarekomponenten in einer Referenz-architektur integriert. Es wurde ein spezielles System entwickelt, mit dem sehr effizienteund schnell berechenbare Robotermodelle generiert werden können. Die Modelle könnenentweder als LATEX–Dokumentation oder als optimierter C/C++ Code mit hoher Re-cheneffizienz ausgegeben werden. Beispielsweise liegt der Zeitbedarf für die numerischeAusführung des kinematischen Modells eines sechsachsigen Gelenkarmroboters im Mikro-sekundenbereich. Außer für den Realzeiteinsatz sind die Modelle auch für die Simulationund den Neuentwurf von Manipulatoren verwendbar. Darüber hinaus können die Modellesehr gut in Hardware parallelisiert werden, zum Beispiel auf einem FPGA.

Um Manipulatoren mit einer beliebigen Anzahl von Gelenkachsen und Kombinationensteuern zu können, wird zunächst der Manipulator anhand der Benutzereingabe nachder Denavit–Hartenberg Konvention dargestellt. Anschließend wird das direkte und in-verse kinematische Problem gelöst. Die direkte Kinematik berechnet die Position undOrientierung des Endeffektors in Abhängigkeit der Gelenkvariablenwerte. Für die Bewe-gungssteuerung ist die inverse Kinematik von größerer Bedeutung. Für die Ableitungexakter algebraischer Kinematikmodelle wurde ein regelbasiertes System entwickelt, mitdem sehr große, trigonometrische Gleichungssysteme, bestehend aus mehreren hundertGleichungen, effektiv gelöst werden können. Die kinematischen Gleichungen werden als ge-

Page 13: Automatische Konfiguration der Bewegungssteuerung von

1.2. Zielsetzung und Beitrag der Arbeit 3

schachtelte Symbolstrukturen beziehungsweise als Fakten im Arbeitsspeicher dargestellt.Die Lösung der Gleichungen erfolgt mit einer neu entwickelten Wissensbasis, die auseiner Sammlung von komplexen Produktionsregeln besteht. Die linke Seite jeder Regelrepräsentiert eine oder mehrere trigonometrische Gleichungen und die rechte Seite diedazugehörende analytische Lösung. Die Auswertung von Regeln und Fakten erfolgt mitdem Rete–Algorithmus. Für die meisten seriellen Kinematiken dauert das Aufstellenund Lösen der Gleichungen nur wenige Sekunden. Ferner wurde untersucht, wie beson-ders komplizierte Robotergeometrien, zum Beispiel Lackierroboter, bei welchen sich dieHandachsen nicht in einem Punkt schneiden, mit Hilfe algebraischer Eliminationsmetho-den analytisch gelöst werden können. Hierfür werden die trigonometrischen Gleichungendurch eine rationale Parametrisierung in polynomiale Gleichungen umgewandelt und an-schließend die Gröbnerbasis bestimmt.

Um die generierten Robotermodelle zu vergleichen und zu bewerten, werden Manipula-toren neben den homogenen 4× 4 Transformationsmatrizen auch mit Twist–Koordinatenmodelliert. Für das direkte kinematische Modell und für die Jacobi–Matrix einer seriellenKinematik werden bei beiden Verfahren exakt dieselben analytischen Ausdrücke automa-tisch generiert. Durch dieses diversitäre Vorgehen wird eine sehr hohe Softwarequalitäterzielt und damit eine wesentliche Anforderung bei der Entwicklung von Echtzeitsyste-men erfüllt. Zur Bestimmung der inversen Kinematik mit Twist–Koordinaten werden dieAusdrücke der direkten Kinematik auf eine Menge von kanonischen Teilproblemen zurück-geführt. Die analytischen Lösungen dieser Teilprobleme wurden erstmals in dieser Arbeitdurch algebraische Umformungen bestimmt. Mit diesen Teilproblemen wird auch erkannt,ob es sich um einen kinematisch redundanten Manipulator handelt, für den es keine ge-schlossene Lösung gibt. In diesem Fall wird eine iterative Näherungslösung angewendet.

Darüber hinaus wurde ein System entwickelt, um Modelle der Roboterdynamik automa-tisch zu erstellen und dabei die inverse und direkte Dynamik zu lösen. Für die Bewegungs-steuerung relevant ist die inverse Dynamik, die die Kräfte und Momente berechnet, dienotwendig sind, um eine bestimmte Bewegung durchzuführen. Das Dynamikmodell in Ma-trixdarstellung beinhaltet die Massenmatrix, Coriolismatrix und Zentrifugalmatrix sowieden Gravitationsvektor und gegebenenfalls Reibungskräfte. Ausgehend von der Beschrei-bung des Manipulators werden die Bewegungsgleichungen automatisch erzeugt. Hierbeiwurden mehrere Möglichkeiten verfolgt, und zwar Lagrange Verfahren, Newton’sche Axio-me und Kane Formalismus. Beim Lagrange Verfahren wird die potentielle und die kineti-sche Energie für jedes Gelenk bestimmt, aufsummiert und gemäß den Lagrange Gleichun-gen differenziert und umgeformt. Beim Newton–Euler Verfahren wird in einer Vorwärts-iteration, die an der Roboterbasis beginnt und am Endeffektor endet, die Kräfte undMomente in den Schwerpunkten der Manipulatorglieder berechnet. Anschließend wirdin einer Rückwärtsiteration, die am Endeffektor beginnt und an der Roboterbasis en-det, die Kräfte und Momente, die ein Glied auf sein Vorgängerglied ausübt, berechnet.Die Komplexität der symbolisch generierten Differentialgleichungen nimmt mit steigen-der Gelenkanzahl des Roboters sehr zu. Deshalb wurde das Newton–Euler Verfahren indieser Arbeit dahingehend modifiziert, dass die Gleichungen in insgesamt vier Iterationenbestimmt werden, um sie leichter umformen und vereinfachen zu können. In der ersten Ite-ration werden die Terme bezüglich des Gravitationsvektors, in der zweiten bezüglich derMassenmatrix, in der dritten bezüglich der Zentrifugalmatrix und in der vierten bezüglichder Coriolismatrix bestimmt. Durch dieses Vorgehen werden übersichtlichere Gleichungengeneriert, als wenn alle Gleichungen in einer einzigen Iteration berechnet würden.

Page 14: Automatische Konfiguration der Bewegungssteuerung von

4 Kapitel 1. Einführung

Damit beliebige Roboterprogramme von der Bewegungssteuerung ausgeführt werden kön-nen, wurde ein Roboterinterpreter nach der Industrial Robot Language (IRL), diein DIN 66312 spezifiziert ist, entwickelt. Insbesondere wurde keine herstellerspezifischeRoboterprogrammiersprache verwendet, die nicht für Roboter anderer Hersteller verwen-det werden kann. Bei IRL handelt es sich um eine Pascal–ähnliche Programmiersprachemit Konstrukten für Bewegungsanweisungen und robotikspezifischen Datentypen. DerIRL–Interpreter arbeitet Roboter– und Bewegungsbefehle kontinuierlich ab und kommu-niziert mit den Komponenten für die Trajektoriengenerierung. Ergänzt wurde das Systemmit einer Vielzahl von Algorithmen sowohl für Punkt–zu–Punkt Bewegungen als auch fürkartesische Bahnsteuerung. Um zeitabhängige Zwischenstellungen zu berechnen werdenzum Beispiel unterstützt: asynchrone, synchrone und vollsynchrone Bewegungen ohne undmit Überschleifen, trapez– und sinusförmige Beschleunigungsprofile, lineare und zirkulareBahnen ohne und mit Nachführung der Orientierung sowie raumbezogene und bahnbe-zogene Orientierungsinterpolation. Die Interpolation von Orientierungen im kartesischenRaum erfolgt mit Quaternionen, da der Rechenaufwand niedriger ist als bei Rotations-matrizen und im Gegensatz zu Euler Winkeln keine Mehrdeutigkeiten auftreten können.

Schließlich erfolgte eine Integration der einzelnen Softwarekomponenten in ein Open–Source–System für die Bewegungssteuerung von Robotern. Insgesamt betrachtet wurdeder Entwicklungszyklus von Steuerungssoftware für Roboter durch diese Arbeit stark ver-einfacht und beschleunigt. Kinematische und dynamische Robotermodelle müssen nunnicht mehr von Hand hergeleitet werden, sondern können automatisch und auf unter-schiedlichen Wegen generiert werden. Die Ergebnisse dieser Forschungsarbeit wurden aufmehreren Internationalen Konferenzen und Workshops sowie auf der 36. Jahrestagungder Gesellschaft für Informatik präsentiert [183, 184, 185, 186, 187, 188]. Die eingereich-ten Beiträge wurden allesamt von Fachleuten auf diesem Gebiet positiv begutachtet.

1.3 Aufbau und Kapitelübersicht

Die Ausarbeitung ist entsprechend der Aufgabenstellung strukturiert und gliedert sichin insgesamt sechs Kapitel und einen Anhang. Im größten Teil der vorliegenden Arbeitwerden serielle Kinematiken betrachtet. Der Schwerpunkt liegt hierbei auf der automa-tischen Erzeugung und Konfiguration der Steuerungssoftware und insbesondere auf dersymbolischen Herleitung der Robotermodelle. Während im einleitenden ersten Kapitel dasPromotionsthema und die verfolgten Ziele dargestellt werden, wird in den Kapiteln zweiund drei auf den Stand der Technik näher eingegangen. In den Kapiteln vier bis sechswird die eigentliche Arbeit behandelt und es werden die eigenen Leistungen vorgestellt.

Das zweite Kapitel gibt eine ausführliche Übersicht über die wichtigsten kinematischenAufbaumöglichkeiten von Industrierobotern. Es erfolgt eine Klassifizierung von Roboter-typen nach der Anzahl, Art und Anordnung ihrer Haupt– und Nebenachsen sowie eventu-eller externer Achsen. Verschiedene Grundbauarten von Robotern, wie zum Beispiel kar-tesische, zylindrische und sphärische Roboter sowie horizontale und vertikale Knickarmki-nematiken, werden genauer betrachtet und es werden ihre Merkmale und Einsatzgebietevorgestellt. Diese Betrachtungen bilden die Grundlage für die Entwicklung eines allgemei-nen Konfigurationswerkzeuges für die Bewegungssteuerung von Robotern.

Im dritten Kapitel folgt ein detaillierter Überblick über den gegenwärtigen Stand derForschung und es werden offene Probleme aufgezeigt. Projekte, die verwandte Zielset-

Page 15: Automatische Konfiguration der Bewegungssteuerung von

1.3. Aufbau und Kapitelübersicht 5

zungen wie diese Arbeit verfolgen, werden genauer betrachtet und abgegrenzt. Manchedieser Projekte rechnen ausschließlich numerisch, während andere sowohl symbolisch alsauch numerisch rechnen. Beispielsweise löst Roboop das kinematische Problem durchnumerische Approximation und das dynamische Problem durch numerische Integration.Es werden die Vor– und Nachteile von numerischen und symbolischen Rechnen disku-tiert. Insbesondere wird aufgezeigt, weshalb es günstiger ist, die Modelle für die Bewe-gungssteuerung analytisch und nicht näherungsweise zu bestimmen. Mehrkörpersimula-tionssysteme, Physik–Engines und Robotersimulationssysteme grenzen ebenfalls an dieseArbeit an. Mehrkörpersimulationssysteme dienen der Modellierung und der Aufstellungder Bewegungsgleichungen dynamischer Systeme. Physik–Engines werden zur Simulati-on dynamischer Vorgänge und zur Berechnung von Bewegungsabläufen in einer virtuellenUmgebung eingesetzt. Robotersimulationssysteme werden zur automatischen Generierungkollisionsfreier Bahnen und zur Bewegungssimulation von Kinematiken verwendet.

In Kapitel vier wird die Modellierung von kinematischen Ketten sowohl mit Denavit–Hartenberg Parametern als auch mit Twist–Koordinaten sowie die Bestimmung der direk-ten und inversen Kinematik beschrieben. Während die direkte Kinematik durch symboli-sche Matrizenmultiplikation vergleichsweise leicht ermittelt wird, müssen zur Ermittlungder inversen Kinematik nichtlineare Gleichungen in mehreren Unbekannten gelöst werden.Zuerst wird gezeigt, wie das inverse kinematische Problem für viele Robotertypen mit re-gelbasierten Methoden automatisch gelöst wird. Falls keine analytische Lösung mit den ineiner Wissensbasis abgelegten mathematischen Lösungsregeln gefunden werden kann, sowerden zusätzlich algebraische Eliminationsverfahren eingesetzt. Anhand einiger Beispiel-roboter wird gezeigt, wie sehr komplexe Gleichungssysteme durch die Bestimmung vonGröbnerbasen geschlossen gelöst werden können. Als Alternative zur Denavit–HartenbergKonvention wird die direkte und inverse Kinematik auch auf Basis von Twist–Koordinatenbestimmt. Während die erste Methode eine weite Verbreitung in der Robotik gefundenhat, wird die zweite Methode noch selten verwendet. Das Kapitel endet mit der Bestim-mung der Jacobi–Matrix für allgemeine Roboter nach diesen beiden Methoden.

In Kapitel fünf wird die automatische Bestimmung des dynamischen Robotermodellsausführlich beschrieben. Dynamik ist ebenso wie Kinematik ein Teilgebiet der techni-schen Mechanik. Der Unterschied ist, dass in der Dynamik im Gegensatz zur Kinematikbei der Betrachtung der Bewegungen von Körpern auch die verursachenden Kräfte undMomente berücksichtigt werden. Es wird gezeigt, wie das direkte und inverse dynami-sche Problem nach Lagrange und nach Newton–Euler gelöst wird. Beim ersten Verfahrenwerden Differentialgleichungen 2. Ordnung mittels Energiebetrachtungen und unter Ver-wendung der Jacobi–Matrix hergeleitet. Beim zweiten Verfahren wird der Impuls– undDrehimpulssatz auf die einzelnen Gelenkachsen angewendet, um die in den Schwerpunk-ten der Manipulatorglieder wirkenden Kräfte und Momente zu berechnen.

Kapitel sechs beschreibt in einem Referenzmodell, wie die Bewegungssteuerung aus denverschiedenen Einzelkomponenten zusammengesetzt wird. Dabei gelangen die in beidenvorherigen Kapiteln hergeleiteten Manipulatormodelle zur Anwendung und es werdenexperimentelle Implementierungsergebnisse präsentiert. Außerdem wird das Konfigurati-onswerkzeug beschrieben, mit dem der Benutzer die kinematische Struktur eines Robotersbesonders einfach festlegen kann. Das Kapitel beinhaltet ebenfalls den im Rahmen dieserArbeit entwickelten Interpreter für Roboterprogramme und die Trajektoriengenerierungs-komponenten, um die verschiedenen Betriebsarten eines Roboters zu realisieren.

Page 16: Automatische Konfiguration der Bewegungssteuerung von

6 Kapitel 1. Einführung

Die Ausarbeitung schließt mit einer Zusammenfassung der Ergebnisse sowie einer qua-litativen und quantitativen Bewertung dieser Arbeit. Ein Ausblick auf mögliche Erwei-terungen des Systems und auf zukünftige Forschungsaufgaben auf dem Gebiet der Ro-botersteuerungen wird gegeben. In Anhang A werden die wichtigsten mathematischenSachverhalte, die für diese Arbeit relevant sind, aufgeführt. Es werden die verschiedenenMöglichkeiten, die Orientierung des Endeffektors zu beschreiben, erläutert sowie auf LieGruppen, Lie Algebren und die Formel von Rodrigues eingegangen. In Anhang B wirddie Bewegungssteuerung eines vierachsigen Roboters beispielhaft konfiguriert. Das kine-matische Modell und die Jacobi–Matrix werden rein analytisch mit Denavit–HartenbergParametern und Twist–Koordinaten hergeleitet. Die Bewegungsgleichungen des Roboterswerden sowohl nach dem Lagrange als auch nach dem Newton–Euler Verfahren aufge-stellt. In Anhang C wird gezeigt, wie die mechanische Struktur von Robotern in XMLbeschrieben wird. Dieses XML–Dokument enthält alle notwendigen Informationen um dieBewegungssteuerung automatisch zu konfigurieren. Es wird das XML Schema vorgestellt,das das Format dieser XML–Dokumente wiederum in XML festlegt.

Page 17: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 2

Bauarten von Industrierobotern

Die Entwicklung eines Konfigurationswerkzeugs für die Bewegungssteuerung von Robo-tern ist auch mit der Fragestellung verbunden, welche Anordungen von Gelenkachsenindustrietauglich und sinnvoll sind. Im ersten Schritt werden deswegen die zulässigenund nicht zulässigen mechanischen Konfigurationsmöglichkeiten und Randbedingungenbestimmt. Dabei liegt das Hauptaugenmerk auf ortsfest verankerten Industrierobotern.

Derzeit gibt es keine einheitliche Definition des Begriffs „Industrieroboter“. In der VDI–Richtlinie 2860 [173] sind folgende Kriterien festgelegt: „Industrieroboter sind universelleinsetzbare Bewegungsautomaten mit mehreren Achsen, deren Bewegung hinsichtlich Be-wegungsfolgen und Wegen beziehungsweise Winkel frei programmierbar und gegebenenfallssensorgeführt sind.“ Eine weitere Definition ist in der europäischen Norm EN 775 [39]zu finden: „Ein Roboter ist ein automatisch gesteuertes, wiederprogrammierbares, vielfacheinsetzbares Handhabungsgerät mit mehreren Freiheitsgraden, das entweder ortsfest oderbeweglich in automatisierten Fertigungssystemen eingesetzt wird.“ Das Robotics Instituteof America (RIA) verwendet wiederum eine etwas andere Begriffsdefinition.

Aufgrund unterschiedlicher Anforderungen und Aufgaben in der Fabrikautomation gibtes viele verschiedene Bauformen von Industrierobotern. Die einzelnen Robotertypen un-terscheiden sich unter anderem hinsichtlich des Arbeitsraums, der Genauigkeit, der Trag-fähigkeit, der Geschwindigkeiten und Beschleunigungen sowie der Zahl der Freiheitsgrade.Deswegen ist jeder Robotertyp nur für bestimmte Arbeiten geeignet. Ein SCARA kannzum Beispiel nicht sinnvoll für Lackier– oder Schweißaufgaben umprogrammmiert werden.

2.1 Klassische Kinematiken und Grundbauarten

Bei Roboterkinematiken unterscheidet man, je nachdem ob die Antriebe seriell oder par-allel auf den Endeffektor einwirken, zwischen Seriell– und Parallelkinematiken. Eine Par-allelkinematik besteht aus einer raumfesten und einer beweglichen Plattform, die mitein-ander über mehrere parallel angeordnete kinematische Ketten verbunden sind. Bei denmeisten Industrierobotern handelt es sich um serielle Kinematiken, die aus einer einzel-nen kinematischen Kette bestehen. Die Gelenkachsen einer seriellen Kinematik werden inHaupt– und Nebenachsen unterteilt. Die Hauptachsen (Grundachsen) dienen dazu, denEndeffektor zu positionieren. Typischerweise werden die Hauptachsen durch Nebenachsen(Handachsen) ergänzt, die überwiegend die Orientierung des Endeffektors bestimmen.

Gelenkachsen können translatorisch oder rotatorisch ausgelegt sein. Translationsgelenke(abgekürzt mit T) werden auch als Linear– oder Schubgelenke beziehungsweise prismati-

Page 18: Automatische Konfiguration der Bewegungssteuerung von

8 Kapitel 2. Bauarten von Industrierobotern

sche Gelenke bezeichnet und ermöglichen geradlinige Bewegungen. Rotationsgelenke (ab-gekürzt mit R) gestatten schnelle Dreh– und Schwenkbewegungen. Robotertypen werdenhäufig entsprechend den Typen ihrer Hauptachsen klassifiziert, zum Beispiel hat ein Ge-lenkarmroboter eine RRR–Kinematik, das heißt seine Hauptachsen sind Rotationsachsen.Hierbei handelt es sich um eine sehr grobe Klassifikation, da es für die Kombination vonTranslations– und Rotationsgelenken sowie deren Anordnung viele Möglichkeiten gibt.Entsprechend der Kombinationen der drei Hauptachsen eines Roboters unterscheidet mankartesische, zylindrische, sphärische sowie horizontale und vertikale Knickarmroboter.

2.1.1 Kartesischer Roboter / Portalroboter

Ein kartesischer Roboter hat drei rechtwinklig zueinander angeordnete Translationsgelen-ke. Deswegen wird diese Kinematik auch als TTT–Kinematik bezeichnet. Diese Achsan-ordnung ergibt eine sehr stabile und steife mechanische Konstruktion und der Arbeits-raum hat grundsätzlich eine quaderförmige Form. Die Orientierung des Endeffektors wirddurch die Hauptachsen nicht verändert. Bei kartesischen Robotern kann deshalb die Ko-ordinatentransformation sehr einfach bestimmt werden und es gibt keine Probleme mitSingularitäten. Andererseits ergibt sich bei dieser Bauart der Nachteil, dass die Bewe-gungsmöglichkeiten eingeschränkt sind und deswegen dieser Robotertyp nicht universelleinsetzbar ist. Mit der Portalbauweise können sehr große Arbeitsräume realisiert undObjekte mit großem Gewicht transportiert werden. Die Wiederholgenauigkeit dieses Ro-botertyps liegt je nach Bauart und Traglast typischerweise im Bereich von ±0, 1 mm bis±0, 5 mm. Der Verfahrweg in horizontaler Richtung kann 20 m und mehr betragen.

Kartesische Roboter sind zum Be– und Entladen von Werkzeugmaschinen sehr gut geeig-net. Häufig werden Portalroboter zum Palettierern und Kommissionieren, zum Bohren,Fräsen und Schrauben, zum Transport von Gütern über lange Reichweiten sowie zumPlasma– und Wasserstrahlschneiden und für einfache Montageaufgaben eingesetzt.

2.1.2 SCARA–Roboter / horizontaler Knickarmroboter

Der SCARA beziehungsweise Schwenkarmroboter wurde bereits in den siebziger Jahrenentwickelt, als Professor Makino in Japan feststellte, dass die meisten Füge– und Monta-geaufgaben durch Bewegungsabläufe senkrecht von oben nach unten durchgeführt werdenkönnen. Der Begriff SCARA steht für „Selective Compliance Assembly Robot Arm“ (engl.:Montageroboter mit gezielter Nachgiebigkeit). Ein Industrieroboter dieses Typs bestehtaus zwei rotatorischen und einer translatorischen Hauptachse und hat demzufolge eineRRT, RTR oder TRR–Kinematik. Die drei Hauptachsen sind immer parallel angeord-net. Somit verfügt der Roboter über einen waagrechten Arm und eine vertikale Trans-lationsachse zur Höhenverstellung des Endeffektors. Üblicherweise hat der SCARA auchein viertes Gelenk, das als senkrechtes Rotationsgelenk ausgelegt ist. Die Grundform desArbeitsraums ist annäherend zylinderförmig. Dieser Robotertyp zeichnet sich durch einehohe Steifigkeit in der vertikalen Richtung und durch eine hohe Horizontalgeschwindigkeitund Beweglichkeit aus. Insbesondere Punkt–zu–Punkt Bewegungen werden sehr schnellausgeführt. Der SCARA arbeitet mit einer hohen Wiederholgenauigkeit, die je nach Typim Bereich von ±0, 005 mm bis ±0, 05 mm liegt. Dadurch ist der SCARA für sehr präziseArbeiten mit hohen Genauigkeitsanforderungen geeignet. Die Größe des Arbeitsraums isthingegen eher gering und die Orientierungsmöglichkeiten sind eingeschränkt. Die Traglas-ten sind auch eher gering und liegen typischerweise im Bereich von 1 kg bis zu 20 kg.

Page 19: Automatische Konfiguration der Bewegungssteuerung von

2.1. Klassische Kinematiken und Grundbauarten 9

Der horizontale Knickarmroboter wird aufgrund seiner kleinen Standfläche in engen Ar-beitsräumen an Produktionsmaschinen eingesetzt. Er ist insbesondere für senkrechte Mon-tageaufgaben mit hohen Anforderungen an die Positionier– und Wiederholgenauigkeit ge-eignet. Dieser Robotertyp eignet sich außerdem zum Fügen, Löten, Kleben und Schraubensowie für Handhabungs–, Palettier–, Bestückungs– und Kommissionieraufgaben.

2.1.3 Zylindrischer Roboter / Zylinderkoordinatenroboter

Bei zylindrischen Robotern bestehen die Hauptachsen aus zwei translatorischen und einerrotatorischen Gelenkachse. Die drei Hauptachsen sind so angeordnet, dass durch sie einzylindrisches Koordinatensystem aufgespannt wird. Dieser Robotertyp zeichnet sich durcheine steife und robuste Bauweise bei großer Reichweite und großem Platzbedarf aus. Erkann sehr schnelle kreisförmige Bewegungen in der Horizontalen durchführen. Das Um-greifen von Hindernissen ist nicht möglich. Der Arbeitsraum ist verhältnismäßig groß undhat die Form eines Hohlzylinders beziehungsweise des Segments eines Hohlzylinders.

Der zylindrische Robotertyp kann beispielsweise zum Kommissionieren, zum Palettieren,zur Materialhandhabung und zur Maschinenbeschickung verwendet werden.

2.1.4 Sphärischer Roboter / Kugelkoordinatenroboter

Die Hauptachsen eines sphärischen Roboters bestehen aus zwei rotatorischen und einertranslatorischen Gelenkachse. Sie sind so angeordnet, dass durch sie ein sphärisches bezie-hungsweise polares Koordinatensystem aufgespannt wird. Der große Arbeitsraum hat an-nähernd die Form einer Hohlkugel. Bereits 1969 entwickelte V. Scheinman im Stanford Ar-tificial Intelligence Lab einen sphärischen Roboter, den berühmten Stanford–Manipulator.Dieser Manipulator hat eine RRT–Kinematik und besitzt insgesamt fünf rotatorische undein translatorisches Gelenk. Der Stanford–Arm ist einer der ältesten Roboter. Er gilt alsVorbild für viele spätere Robotertypen hauptsächlich in der Automobilindustrie.

Der sphärische Robotertyp kann für Handhabungsaufgaben an Druckgußmaschinen, zumLackieren von Bauteilen und zum Punktschweißen an Karosserien verwendet werden.

2.1.5 Gelenkarmroboter / vertikaler Knickarmroboter

Zylindrische und sphärische Roboter werden heutzutage nur noch selten eingesetzt. Diemeisten seriellen Kinematiken in der Fabrikautomation sind heutzutage Gelenkarmrobo-ter, da sie von allen Roboterbauarten am universellsten einsetzbar sind. Gelenkarmroboterwerden daher auch als Universalroboter bezeichnet. Sie haben grundsätzlich eine RRR–Kinematik und der Arbeitsraum ist hohlkugelförmig. Die Rotationsgelenke der Hauptach-sen eines Gelenkarmroboters knicken in der vertikalen Ebene. Die Wiederholgenauigkeitliegt je nach Bauart im Bereich von ±0, 05 mm bis ±0, 2 mm. Dieser Robotertyp zeichnetsich durch einen großen Arbeitsraum bei geringem Platzbedarf, durch hohe Beweglichkeit,schnelle Rotationsbewegungen und geringes Störvolumen aus. Der Gelenkarmroboter kannauch für Arbeiten an schwer zugänglichen Stellen eingesetzt werden. Er kann Hindernisseumgehen, in Hohlkörper greifen und bei manchen Bauarten ist auch Überkopfarbeit mög-lich. Die Traglast von Gelenkarmrobotern reicht heutzutage von 2, 5 bis zu 1000 kg.

Für den Gelenkarmroboter gibt es wegen seiner Universalität zahlreiche Einsatzmöglich-keiten. Er kann für Bahn– und Punktschweißprozesse sowie für Montage–, Palettier– und

Page 20: Automatische Konfiguration der Bewegungssteuerung von

10 Kapitel 2. Bauarten von Industrierobotern

Handhabungsaufgaben genutzt werden. Darüber hinaus kann er als Schneidroboter zumFräsen, Sägen und Wasserstrahlschneiden, als Beschichtungsroboter zum Kleben und La-ckieren, oder als Bearbeitungsroboter zum Schleifen und Entgraten eingesetzt werden.

2.1.6 Hexapod / Stewart–Gough–Plattform

Beim Hexapod–Roboter (griech.: Sechsfüßler) handelt es sich um eine geschlossene kine-matische Kette, bei der sechs Translationsachsen eine gemeinsame Plattform bewegen.Das Konzept des Hexapods wurde 1965 erstmals von D. Stewart [163] vorgestellt. Dieerste Maschine zum Testen von Fahrzeugreifen auf Basis des Hexapod–Prinzips wurdevon V. Gough [64] entworfen. Deswegen wird der Hexapod oftmals auch als Stewart–Plattform beziehungsweise als Stewart–Gough–Plattform bezeichnet. Der Hexapod zeich-net sich durch seine extreme Steifigkeit und außerordentlich hohe Wiederholgenauigkeitaus. Außerdem sind große Geschwindigkeiten und Beschleunigungen erreichbar. Beim He-xapod ist die Vorwärtstransformation mehrdeutig und aufwendig zu bestimmen, währenddie Rückwärtstransformation eindeutig und sehr viel einfacher zu ermitteln ist.

In der Fabrikautomation wird der Hexapod zum Schweißen, zur Laserbearbeitung, zurKleinteilmontage sowie für Schleif–, Fräs–, Bohr– und Drehaufgaben eingesetzt. WeitereEinsatzgebiete sind Präzisionsanwendungen in der Medizin– und der Feinmeßtechnik. DerHexapod wird oft auch als Bewegungssystem für Flug– und Fahrsimulatoren verwendet.

2.1.7 Gegenüberstellung der verschiedenen Kinematiken

Der Gelenkarmroboter bietet von allen hier vorgestellten Robotertypen die höchste Flexi-bilität und Beweglichkeit. Der Portalroboter kann im Gegensatz zu anderen kinematischenKetten auch extrem hohe Traglasten von mehreren Tonnen bewegen und Objekte übersehr große Distanzen hinweg transportieren. Der SCARA erreicht von allen seriellen Kine-matiken die höchste Genauigkeit. Die Genauigkeit und Steifigkeit von Parallelkinematikenist höher als die von seriellen Kinematiken, da sich Positionierfehler und Elastizitäten dereinzelnen Gelenkachsen nicht aufsummieren. Das Last–Masse–Verhältnis und damit dieDynamik bei Parallelkinematiken ist ebenfalls besser als bei seriellen Kinematiken, dadie Antriebe nicht die Last der nachfolgenden Gelenkachsen tragen müssen, sondern di-rekt auf den Endeffektor wirken. Als Nachteil von Parallelkinematiken ergeben sich dereingeschränkte Arbeitsraum, insbesondere hinsichtlich der Orientierung, und der höhereBerechnungsaufwand für das kinematische und dynamische Robotermodell. In Tabelle 2.1wird die Dualität von seriellen Kinematiken und von Parallelkinematiken erkennbar.

Tabelle 2.1 Vergleich der Eigenschaften von Seriell– und Parallelkinematiken

Merkmal seriell parallelGenauigkeit +– ++

Steuerungsaufwand +– –Last/Masse–Verhältnis – +Größe des Arbeitsraums ++ –

Beschleunigungen am Endeffektor +– ++Anpassbarkeit an Aufgabenstellung ++ +–

Page 21: Automatische Konfiguration der Bewegungssteuerung von

2.2. Handkinematiken und Sonderbauformen 11

2.2 Handkinematiken und Sonderbauformen

Industrieroboter können unterschiedlich viele Gelenkachsen haben. Roboter mit vier oderfünf Gelenkachsen verfügen über drei Hauptachsen und einer beziehungsweise zwei Ne-benachsen. Die Orientierbarkeit des Endeffektors ist hierdurch eingeschränkt. Allerdingsist diese Achsanzahl akzeptabel bei Arbeiten mit rotationssymmetrischen Werkzeugenoder bei Arbeiten bei denen nur eine eingeschränkte Orientierung erforderlich ist. Einfa-che Montageaufgaben können mit vierachsigen und einfache Handhabungsaufgaben mitfünfachsigen Robotern bewerkstelligt werden. Portalroboter haben meistens eine bis dreirotatorische Nebenachsen zur Drehung des Endeffektors. Die meisten Gelenkarmroboterhaben sechs Achsen und verfügen damit über sechs Freiheitsgrade im kartesischen Raum,um anspruchsvolle Bewegungsabläufe wie zum Beispiel beim Schweißen auszuführen.

Für besondere Aufgabenstellungen gibt es Sonderbauformen von Robotern [181, 189]. Die-se Sonderbauformen bieten für spezielle Anwendungsbereiche eine bessere Zugänglichkeit,Bewegungsfreiheit oder Steifigkeit. So können Roboter mit mehr als sechs Achsen in einemRaum mit Hindernissen von Vorteil sein beziehungsweise den Arbeitsraum erweitern. Au-ßerdem können singuläre Konfigurationen leichter vermieden werden. Diese zusätzlichenAchsen werden auch als redundante Gelenkachsen bezeichnet. Kinematisch redundanteManipulatoren sind zudem robuster gegenüber dem Ausfall einzelner Gelenke.

2.2.1 Anordnungen der Nebenachsen

Die Nebenachsen bei Robotern dienen hauptsächlich dazu, den Effektor zu orientieren. Eshandelt sich bei ihnen deswegen immer um Rotationsachsen. Gewöhnlicherweise besitztein Roboter eine bis drei Nebenachsen, die unterschiedlich angeordnet werden können.

Die Zentralhand ist die am weitesten verbreitete Konstruktionsform der Nebenachsen ei-nes Roboters. Bei dieser Anordnung schneiden sich die drei Rotationsachsen in einemPunkt, dem sogenannten Handwurzelpunkt beziehungsweise Handgelenkspunkt. Dadurchhat die Zentralhand den Vorteil, dass die Handachsen nur die Orientierung, nicht aberdie Position des Effektors verändern. Durch diese Entkopplung der Achsen ergeben sichErleichterungen bei der Berechnung der inversen Kinematik [135]. Außerdem besitzt dieZentralhand eine lediglich kleine Störkontur. Der Nachteil der Zentralhand ist, dass eineSingularität entsteht, wenn die erste und dritte Rotationsachse parallel zueinander liegen.

Lackierroboter werden in der Regel mit speziell für Spritzapplikation entwickelten Hand-gelenken ausgestattet, die präzise Bewegungen und das Auslackieren von kompliziertenGeometrien ermöglichen. Die Hohlkegelhand (engl.: hollow wrist) verfügt über einen sehrgroßen Arbeitsbereich. Sie ist so konstruiert, dass die Lackier– und Luftzufuhrschläuche,die in der Hand integriert sind, nicht beschädigt werden oder durch Abnutzung brechen.

2.2.2 Roboter mit externen Gelenkachsen

Zur Vergrößerung des Arbeitsraums sowie zur Fortbewegung und Vorpositionierung desRoboters werden zusätzliche Achsen eingesetzt. Roboter erhalten durch Schienen am Bo-den, an den Wänden oder durch Laufkräne unter der Decke ein bis zwei weitere Freiheits-grade. Dadurch ist zum Beispiel die gleichmäßige Lackierung einer ganzen Fahrzeugseite,das Schweißen von mehreren Meter langen Nähten, der Transport von Werkstücken sowiedie Verkettung von Werkzeugmaschinen möglich. Bei der Portalbauweise ist der Boden-

Page 22: Automatische Konfiguration der Bewegungssteuerung von

12 Kapitel 2. Bauarten von Industrierobotern

bereich frei und kann so für weitere Fertigungseinrichtungen genutzt werden. Die Verfahr-schienen, auf denen Roboter befestigt sind, werden als externe Gelenkachsen bezeichnet.

Außer dem Roboter kann die Robotersteuerung auch die Peripherie und externe Positio-niersysteme steuern. Bei einem sechsachsigen Roboter mit einem Drehkipptisch werdeninsgesamt acht Achsen synchron gesteuert. Das Werkzeug am Roboterflansch wird gleich-zeitig mit dem Werkstück auf dem Drehkipptisch bewegt. Dadurch kann das Werkstückvon mehreren Seiten bearbeitet und schwer zugängliche Stellen besser erreicht werden.Drehkipptische werden heutzutage beim Schweißen, Entgraten und Montieren eingesetzt.

2.2.3 Parallelogramm–Roboter

Der Parallelogramm–Roboter ist eine Sonderbauform, bei der Rotationsachsen über einParallelogramm fest miteinander verbunden sind. Der Ursprung dieser Konstruktions-form ist das Wattsche Parallelogramm, das erstmals in der von James Watt (1736–1819)entwickelten Dampfmaschine eingesetzt wurde, um eine rotatorische in eine geradlinigeBewegung umzuwandeln. Parallelogramm–Roboter sind in der Regel mit vier Achsen aus-gestattet und der Endeffektor kann automatisch parallel zum Boden geführt werden. DerArbeitsraum hat die Form einer Halbkugel. Zu den Einsatzgebieten dieses Robotertypsgehören die Handhabung schwerer Werkstücke, das Palettieren und Punktschweißen.

2.2.4 Modulare rekonfigurierbare Roboterstrukturen

Klassische Industrieroboter bestehen aus einer zusammenhängenden mechanischen Struk-tur. Modulare Roboter werden hingegen aus vorgefertigten und standardisierten Antriebs-modulen für die jeweilige Applikation zusammengesetzt. Diese Standardmodule selbstsind relativ einfach aufgebaut und besitzen nur wenige Freiheitsgrade. Es gibt Modulemit unterschiedlicher Größe und Geometrie, beispielsweise können sie würfel– oder zy-linderförmig sein. Mit diesen Modulen als Gelenkachsen und verschiedenen mechanischenVerbindungselementen können sehr flexibel individuelle Leichtbauroboter baukastenartigzusammengesetzt werden. Bei einer Umstellung der Produktion können diese Kinemati-ken sehr leicht adaptiert und anders aufgebaut werden. Für den ortsunabhängigen Einsatzwerden modulare Roboter auf mobilen Plattformen fest montiert. Außer in der Fabrikau-tomation werden modulare Roboter heutzutage auch in der Servicerobotik eingesetzt.

2.2.5 Kooperierende Mehrrobotersysteme

Zur Verringerung der Taktzeit beziehungsweise Erhöhung der Fertigungsgeschwindigkeitsowie zur Verminderung teurer Spann– und Fixiereinrichtungen kooperieren mehrere Ro-boter miteinander. Die Steuerung erfolgt über das Master–Slave–Verfahren, das heißt eswird ein Hauptroboter bestimmt und die anderen beteiligten Roboter passen ihre Be-wegungen an die des Hauptroboters an. Für die Kooperation von Robotern gibt es ver-schiedene Anwendungsszenarien. Beispielsweise hält und dreht ein Positionierroboter dasBauteil stets so, dass andere Bearbeitungsroboter in optimaler Position am Bauteil ar-beiten können (Entgraten, Laserbeschnitte, Schutzgasschweißen). Durch die Bearbeitungeines Bauteils während dessen Transports können unproduktive Transportzeiten gesenktwerden. Neben der koordinierten Handhabung von Bauteilen, erhöht das Aufteilen derTraglast auf mehrere Roboter außerdem die maximale Traglast. Ein Beispiel sind zwei In-dustrieroboter, die gemeinsam eine Windschutzscheibe in eine Autokarosserie einsetzen.

Page 23: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 3

Aktueller Stand der Forschung

Die Automatisierungstechnik zeichnet sich bislang vor allem durch proprietäre Hard–und Softwaresysteme aus. Jeder Roboterhersteller verwendet seine eigene Steuerung undseine eigene Roboterprogrammiersprache. Nur im Bereich der Feldbusse haben sich di-verse Standards etabliert, zum Beispiel Profibus. Darüber hinaus gibt es den Trend fürSteuerungen zunehmend PC–Technik einzusetzen. Aufgrund der wachsenden Leistung vonPC–Hardware können in Steuerungen immer mehr Funktionalitäten integriert werden.

Grundlegende Anforderungen an Steuerungssoftware beinhalten neben Echtzeitfähigkeitauch Anpassbarkeit, Zuverlässigkeit und Wartbarkeit. Bezüglich Softwarequalität werdensehr hohe Anforderungen gestellt, da Fehler enorme Schäden anrichten können. Heutzu-tage erfordern Steuerungen sehr hohe Entwicklungskosten und lange Entwicklungszeiten.Steuerungssoftware wird überwiegend von Hand entwickelt und implementiert. Es fehlenvor allem robotikspezifische Komponentenbibliotheken sowie Entwicklungsumgebungenund Konfigurationswerkzeuge. Steuerungen können deswegen immer schwerer weiterent-wickelt und nur schlecht an neue Anforderungen angepasst werden. Da die einzelnenFunktionen sehr eng miteinander verzahnt sind und es sich überwiegend um proprietäreSoftware handelt, ist die Integration neuer Komponenten auf Basis von „Plug and Work“nicht möglich. Die Verwendung einer proprietären Steuerung führt zu Abhängigkeiten ge-genüber einem Hersteller. Bei Open–Source–Software ist es im Gegensatz zu proprietärerSoftware möglich und lizenzrechtlich zulässig, die Software zu erweitern und zu ändern.

Da Steuerungssoftware für Roboter stark an die mechanische Struktur eines Robotersgebunden ist, ist es erforderlich, diese Software für neue Robotertypen anzupassen oderganz neu zu entwickeln. Oftmals wird Steuerungssoftware speziell auf einen einzelnen Ro-boter zugeschnitten und kann nicht wiederverwendet werden. In der Fabrikautomationgibt es eine hohe Anzahl an unterschiedlichen Robotertypen. Aufgrund der zunehmendenVariantenvielfalt erfordert die Beherrschung der damit verbundenenen Softwarevarianteneinen hohen Aufwand. Die Entwicklung einer allgemeinen und modular erweiterbarenSoftwarearchitektur für Steuerungen, die weitestgehend auf alle Klassen von Roboternangewandt werden kann, ist daher von großem Nutzen. Bislang gibt es nur wenige In-itiativen, die das Ziel der Vereinheitlichung sowie der flexiblen und schnellen Erstellungvon Steuerungssoftware für Roboter verfolgen. Die folgenden Beschreibungen geben einenÜberblick über diese Projekte. Es werden auf Projekte im Bereich des numerischen Rech-nens (Abschnitt 3.1), im Bereich des symbolischen Rechnens (Abschnitt 3.2), auf Mehr-körpersimulationssysteme (Abschnitt 3.3) und auf Physik–Engines (Abschnitt 3.4) sowieauf 3D–Robotersimulationssysteme (Abschnitt 3.5) eingegangen. Danach werden die Pro-jekte bezüglich ihrer Funktionalitäten miteinander verglichen (Abschnitt 3.6).

Page 24: Automatische Konfiguration der Bewegungssteuerung von

14 Kapitel 3. Aktueller Stand der Forschung

3.1 Projekte im Bereich des numerischen Rechnens

Eine Reihe von Projekten auf dem Gebiet universeller Steuerungssoftware für Roboterrechnen rein numerisch und nicht symbolisch. Die Parameter eines Roboters müssen vomBenutzer mit konkreten Werten belegt werden. Komplexe Problemstellungen wie beispiels-weise das kinematische Robotermodell, das kartesische Koordinaten in Gelenkkoordinatenumrechnet, werden durch näherungsweise Iterationsverfahren mit hohem Rechenbedarfgelöst [192]. Numerische Lösungen haben oft einen sehr viel geringeren Entwicklungsauf-wand als symbolische Lösungen. Manche Probleme können auch nur numerisch und nichtsymbolisch gelöst werden, zum Beispiel die Bestimmung der Nullstellen von Polynom-funktionen fünften Grades. Nur in manchen Fällen ist hier auch eine symbolische Lösungmöglich. Allerdings haben numerische Verfahren auch Nachteile gegenüber symbolischenVerfahren. Es besteht die Gefahr, dass Startwerte ungünstig gewählt werden und Iterati-onsverfahren dann zu langsam oder überhaupt nicht konvergieren. Numerische Verfahrenliefern in der Regel keine exakten, sondern nur näherungsweise Lösungen und ungenaueZwischenergebnisse können zu Folgefehlern führen. Bereits die Gleitkommadarstellung vonreellen Zahlen in Rechnern ist nur eine Näherung. Die endliche Zahlendarstellung führtdazu, dass Rundungsfehler auftreten können. Numerische Verfahren können vor allembei rekursiver Ausführung nur schwierig parallelisiert und auf mehrere Prozessorknotenverteilt werden. Bei sehr großer Rekursionstiefe können rekursive Programme einen Spei-cherüberlauf verursachen. Die relevanten Projekte, die ausschließlich numerisch rechnenund allgemeine Steuerungssoftware entwickeln, die nicht nur hinsichtlich einer bestimm-ten Manipulatorgeometrie verwendet werden kann, werden nachfolgend beschrieben. Zudiesen Projekten gehören Orocos, Oscar, Roboop, Matlab Robotics Toolbox,RTSS, PMT, ManDy, Microb, Synthetica, Robotect und RobotDraw.

3.1.1 Orocos: Open Robot Control Software

Auf europäischer Ebene ist das Projekt Orocos [13, 14, 15] zu nennen, welches von derUniversität Leuven in Belgien koordiniert wird. Zu den weiteren Projektpartner gehörendas französische Laboratorium für Analyse und Systemarchitektur (LAAS) aus Toulou-se und die schwedische Hochschule KTH aus Stockholm. Orocos besteht aus vier enggekoppelten Teilsystemen, um alle Aspekte einer Robotersteuerung abzudecken. Das ers-te Teilsystem namens Real–Time Toolkit (RTT) ist eine echtzeitfähige Middleware, derenKommunikationssystem auf einer Corba Implementierung basiert. Komponenten könnenauch in heterogenen und verteilten Umgebungen ablaufen und sind zwischen verschiedenenPlattformen austauschbar. Das zweite Teilsystem, das sich in der Entwurfsphase befindet,ist die Kinematics and Dynamics Library (KDL). Mit dieser Bibliothek soll zukünftig dieKinematik und Dynamik von Mehrkörpersystemen berechnet werden können. Das dritteTeilsystem ist eine Softwarebibliothek zum Probabilistischen Schließen in Bayes Netz-werken, die sogenannte Bayesian Filtering Library (BFL). Das vierte Teilsystem ist dieOrocos Component Library (OCL), eine roboterspezifische Klassenbibliothek, die unteranderem Algorithmen für Steuer– und Regelungsaufgaben enthält. Der C/C++ Codeläuft unter Linux ohne beziehungsweise unter RTAI (Real–Time Application Interface)mit harten Echtzeiteigenschaften ab. Der Quellcode ist frei erhältlich und wurde unter dieGNU LGPL (Lesser General Public License) gestellt. Dadurch kann die Software auch inkommerziellen Projekten eingesetzt werden, ohne den Quellcode offenlegen zu müssen.

Page 25: Automatische Konfiguration der Bewegungssteuerung von

3.1. Projekte im Bereich des numerischen Rechnens 15

3.1.2 Oscar: Operational Software Components for Advanced Ro-botics

Oscar [82, 85, 103, 145, 165] ist ein Projekt der Universität von Texas in Austin, dasauch von der amerikanischen Raumfahrtbehörde NASA und dem Energieministerium derVereinigten Staaten (Department of Energy) verwendet wird. Das Projekt ist primär aufdie Steuerung von kinematisch redundanten Robotern mit vielen Gelenkachsen und vielenFreiheitsgraden ausgerichtet. Zur Beherrschung der Variantenvielfalt bezüglich Roboterunterstützt Oscar den Anwender bei der Entwicklung einer Bewegungssteuerung durchProduktlinienmethoden und durch eine allgemeine Klassenbibliothek, die in der Program-miersprache C++ implementiert ist. Die Bibliothek enthält beispielsweise Klassen zurVektor– und Matrizenrechnung. Zur kinematischen Beschreibung eines Roboters werdenDenavit–Hartenberg Transformationsmatrizen verwendet. Gelenke können nur aktiv, dasheißt rotatorisch oder translatorisch, aber nicht passiv sein. Die direkte und inverse Ki-nematik wird für allgemeine Robotertypen numerisch gelöst. In der Bibliothek ist aucheine analytische Lösung des inversen kinematischen Problems von einem Unimate Pu-ma 760 (Programmable Universal Manipulator for Assembly) und von einem MitsubishiPA 10 (Portable Arm) enthalten. Der Benutzer kann für diese beiden Roboter durchentsprechendes Setzen von booleschen Variablen eine bestimmte Gelenkkonfiguration beigegebener Endeffektorlage auswählen. Das dynamische Modell wird sowohl mit dem rekur-siven Newton–Euler Verfahren [92] als auch mit dem Lagrange Verfahren [72] numerischbestimmt. Die Bibliothek enthält auch diverse Algorithmen zur Trajektoriengenerierung.Beispielsweise erfolgt die Berechnung einer Trajektorie im Gelenkwinkelraum mit einer Po-lynomfunktion 5. Grades, bei der allerdings der Benutzer die Bewegungsdauer angegebenmuß. Oscar ist keine Open–Source–Software und es erfolgt keine Weitergabe an Dritte.Nur die Vorgänger–Software RRG Kinematix 4.0, die allerdings keine Dynamikalgorith-men enthält, ist als DLL–Datei (Dynamic Link Library) für Windows verfügbar.

3.1.3 Roboop: A Robotics Object Oriented Package in C++

Roboop [65] wurde von R. Gourdeau an der École Polytechnique Montréal in Kanadaentwickelt. Roboop stellt verschiedene Klassen zur Verfügung, um die direkte und inver-se Kinematik beziehungsweise Dynamik zu berechnen. Außerdem gibt es Klassen, um dieJacobi–Matrix und die Ableitung der Jacobi–Matrix nach der Zeit zu berechnen. Hier-für werden die Koordinatensysteme nach der Denavit–Hartenberg Konvention festgelegt.Die inverse Kinematik wird durch Reihenentwicklung und Anwendung der TaylorschenFormel approximiert [171]. Die Roboterdynamik wird mit dem rekursiven Newton–EulerVerfahren bestimmt. Für die Matrizen– und Vektorrechnungen verwendet Roboop die freierhältliche Mathematikbibliothek NewMat von R. Davies [32]. Zur Simulation des Bewe-gungsverhaltens von Robotern werden nichtlineare Differentialgleichungen integriert. DieIntegration der Differentialgleichungen erfolgt numerisch nach dem nach zwei deutschenMathematikern benannten Runge–Kutta–Verfahren (4. Ordnung) [143]. Die Ordnung die-ses Verfahrens gibt die Anzahl der Funktionsauswertungen pro Integrationsschritt an. DieSoftware von Roboop ist frei erhältlich und steht unter GNU LGPL. Sie läuft unterWindows und Linux Betriebssystemen und es wird keine kommerzielle Zusatzsoftwarebenötigt. Darüber hinaus wurde Roboop von C. Lia an der Universität von Neapel nachJava portiert. Diese ebenfalls frei erhältliche Bibliothek (GNU GPL), die für die Matri-zenrechnungen das Paket JAMA (Java Matrix Package) verwendet, heißt JRoboop.

Page 26: Automatische Konfiguration der Bewegungssteuerung von

16 Kapitel 3. Aktueller Stand der Forschung

3.1.4 Matlab Robotics Toolbox

Die Matlab Robotics Toolbox [26, 27] wurde am CSIRO ICT Centre in Australienvon P. Corke entwickelt und ist eine Sammlung von elementaren Funktionen in der Ro-botik. Sie beinhaltet Funktionen für geometrische Transformationen, Berechnungen derdirekten und inversen Kinematik und Dynamik sowie der Generierung von Bewegungs-bahnen. Manipulatoren werden mit Hilfe der Denavit–Hartenberg Konvention modelliert.Hinsichtlich der Gelenkarten werden Rotations– und Translationsgelenke unterschieden.Die Lösung der Rückwärtskinematik wird durch ein iteratives, numerisches Verfahren be-stimmt. Zur Bestimmung des dynamischen Robotermodells implementiert die Toolbox denrekursiven Newton–Euler Algorithmus. Die Toolbox enthält außerdem geschlossene Lö-sungen für die kinematischen und dynamischen Modelle von ausgewählten Robotertypen,wie zum Beispiel für den Unimate Puma 560 und den Stanford Manipulator. Außerdementhält die Toolbox Funktionen zur rudimentären Visualisierung von Roboterpositionen.Zur Trajektoriengenerierung im Gelenkwinkelraum wird eine Polynomfunktion 7. Gradesverwendet. Hierbei ist vom Benutzer das zeitliche Intervall vom Beginn bis zum Ende derBewegung zu spezifizieren. Die Toolbox selbst ist frei erhältlich. Es wird allerdings daskommerzielle Programmpaket Matlab (Matrix Laboratory) benötigt. Die Toolboxvon P. Corke kann als etwas veraltet betrachtet werden, da sie Matlab Release 7 ver-wendet, während Release 19 (R2008a) die aktuelle Matlab Version ist. Heutzutage wirdsie teilweise für Lehr– und Ausbildungszwecke eingesetzt. Später wurde die Matlab Ro-

botics Toolbox am Centro de Investigación en Matemáticas (CIMAT) in Mexiko vonD. N. Vila–Rosado und J. A. Dominguez–Lopez [177, 178] etwas verbessert. Der Benut-zer kann nun zwischen mehr Optionen bei der Trajektoriengenerierung auswählen. DieseVersion wurde allerdings bislang nicht verbreitet oder Dritten zugänglich gemacht.

3.1.5 RTSS: Robotics Toolbox for Scilab/Scicos

Inspiriert von der Matlab Robotics Toolbox (Abschnitt 3.1.4) hat M. Morelli ander Universität von Pisa in Italien die Robotics Toolbox for Scilab/Scicos entwi-ckelt. Hierbei handelt es sich um eine Erweiterung von Scilab/Scicos zur Modellierungund Simulation von Robotern. Scilab [22] ist ein ähnliches Software–Paket wie Mat-

lab, das seit 1990 am Institut National de Recherche en Informatique et en Automatique(INRIA) in Frankreich entwickelt wird. In RTSS werden Manipulatoren mit der Denavit–Hartenberg Konvention beschrieben. Die Funktionen zur Berechung des kinematischenund dynamischen Robotermodells sowie zur Trajektoriengenerierung wurden im Wesent-lichen von der Matlab Robotics Toolbox übernommen und nach Scilab portiert.Die Software ist für Linux und Windows Betriebssysteme bei SourceForge erhältlich.Sie ist quelloffen und lizenzkostenfrei entsprechend GNU GPL.

3.1.6 PMT: Planar Manipulators Toolbox

Planar Manipulators Toolbox [194] ist eine Umgebung zur Simulation von plana-ren n–Gelenk–Manipulatoren in dem Numeriksystem Matlab und wurde von L. Zlajpaham slowenischen Jozef Stefan Institut entwickelt. Als Gelenkarten werden ausschließlichRotationsgelenke unterstützt. Die direkte Kinematik wird durch eine rekursive Funktion,die jedoch nur bei Gelenkanordnungen in einer Ebene anwendbar ist, berechnet. Deswegenwerden keine Denavit–Hartenberg Parameter verwendet. Die Jacobi–Matrix und die zeitli-che Ableitung der Jacobi–Matrix werden anhand der direkten Kinematik berechnet. Diese

Page 27: Automatische Konfiguration der Bewegungssteuerung von

3.1. Projekte im Bereich des numerischen Rechnens 17

beiden Matrizen haben bei planaren Manipulatoren die Dimension 2×n. Das dynamischeModell wird nach dem Lagrange Verfahren bestimmt. Der Quellcode ist frei verfügbarund benötigt Matlab Release 6.5. Das System wurde für Lehrzwecke entwickelt.

3.1.7 ManDy: Manipulator Dynamics

ManDy [182] ist ein in dem Computermathematiksystem Matlab Release 13 und derProgrammiersprache C geschriebenes Softwarepaket zur Programmierung, Simulation undVisualisierung von Roboterarmen und anderen offenen kinematischen Ketten. Der Be-nutzer kann serielle Roboter modellieren, Erreichbarkeitsstudien durchführen, program-mierte Roboterbewegungen visualisieren sowie die Regelungsgüte testen. ManDy wurdevon W. Weber im Zentrum für Robotik an der Fachhochschule Darmstadt entwickelt.Der Benutzer kann die Denavit–Hartenberg Parameter, die eine kinematische Kette mitbis zu zehn Rotations– oder Translationsgelenken beschreiben, in eine graphische Be-nutzeroberfläche eingeben. Die Rückwärtstransformation wird näherungsweise mit derinversen Jacobi–Matrix bestimmt. Das dynamische Modell wird numerisch mit dem re-kursiven Newton–Euler Algorithmus berechnet. Differentialgleichungen können mit demRunge–Kutta Verfahren der Ordnung zwei oder vier integriert werden. Es gibt auch ei-ne Offline–Programmierumgebung in der Programme in einer selbstdefinierten Roboter-programmiersprache erstellt und von einem Interpreter ausgeführt werden können. Dadie Animationen von Robotern in der 3D–Beschreibungssprache VRML (Virtual RealityModeling Language) geschrieben sind, benötigt ManDy einen gewöhnlichen Browser mitVRML Plug–In für die Visualisierung. Diese Software ist frei erhältlich und als Quellcodeverfügbar. Bislang wurde sie als Ergänzung in Lehrveranstaltungen eingesetzt.

3.1.8 Microb: Modules Intégrés pour le Contrôle de Robots

Microb [76, 142] ist eine Sammlung von C++ Klassen zur vereinfachten Entwicklung vonSteuerungen für elektromechanische Systeme. Es wurde am Forschungsinstitut Hydro–Québec (IREQ) in Kanada entwickelt und ist unter die GNU LGPL gestellt. Außer fürserielle Kinematiken ist es auch für mobile Roboter geeignet. Microb ist in mehrereModule gegliedert, die unabhängig voneinander verwendet werden können. Eine der größ-ten Vorteile von Microb ist, dass extrem viele verschiedene Betriebssysteme unterstütztwerden, beispielsweise QNX, VxWorks, Windows NT/2000, Solaris, Linux, Irix

und SunOs. In dem Modul Operating System Dependant Library (OSDL) wird der platt-formspezifische Code gekapselt auf den über eine einheitliche Schnittstelle zugegriffenwird. Bei der Portierung von Microb auf andere Plattformen braucht nur dieses Modulangepasst werden. Alle anderen Module sind plattformunabhängig. Eine Anwendung kannauf einem Arbeitsplatzrechner entwickelt und dann auf einem Echtzeitbetriebssystem re-kompiliert und ausgeführt werden. Das Modul Robot enthält Klassen, um kinematischeKetten durch Denavit–Hartenberg Parameter zu beschreiben und das direkte kinemati-sche Problem numerisch zu lösen. Außerdem enthält das Modul die Lösung der inversenKinematik für bestimmte sechsachsige Robotertypen. Für Robotertypen, deren Lösungnicht bekannt ist, muß der Benutzer eine neue Roboterklasse von der Klasse Serial_robot,Mobile_robot beziehungsweise Wheeled_robot ableiten und die entsprechenden Metho-den überladen. Die gegenwärtige Version von Microb enthält keine Algorithmen, umdas dynamische Robotermodell zu berechnen. Um die Dynamik zu berücksichtigen, mussder Benutzer die entsprechenden Methoden, wie zum Beispiel compute_static_forces()

Page 28: Automatische Konfiguration der Bewegungssteuerung von

18 Kapitel 3. Aktueller Stand der Forschung

und compute_inertia(), selbst implementieren. Das Modul Vectmath enthält Klassen fürVektoren– und Matrizenrechnung, beispielsweise Euler–Winkel, Quaternionen und Trans-formationsmatrizen. Das Modul Signal_processing stellt verschiedene Algorithmen zurSensordatenverarbeitung, wie Mittelwert–, Median–, Butterworth–, Ableitungs– und In-tegrationsfilter, zur Verfügung. Das Modul Control enthält Klassen zur Trajektoriengene-rierung, wobei allerdings ein trapezförmiges Geschwindigkeitsprofil verwendet wird.

3.1.9 Synthetica: Kinematic Synthesis of Robots

Synthetica [25, 137, 160] ist ein System zur Darstellung, Analyse und Simulation vonoffenen und geschlossenen Kinematiken und wurde am Department of Mechanical and Ae-rospace Engineering an der Universität von Kalifornien entwickelt. Es ist in insgesamt vierPakete gegliedert. Das Paket mechanism beinhaltet Klassen und spezifiziert Schnittstel-len, um mechanische Strukturen zu definieren. Es werden Kugel–, Schrauben–, Scharnier–,Translations– und Rotationsgelenke unterstützt. Die Schnittstelle ForwardKinematics istfür allgemeine serielle Kinematiken bereits implementiert, während die Schnittstelle Inver-seKinematics für selbstdefinierte Kinematiken vom Benutzer implementiert werden kannbeziehungsweise für bestimmte Kinematiken bereits implementiert ist. Im allgemeinen Fallwird zur Lösung der inversen Kinematik der Levenberg–Marquardt Algorithmus [90, 105]verwendet, der eine Modifikation des Newton–Raphson Algorithmus ist. Das Paket GUI-Modules enthält diejenigen Klassen, die zum Aufbau der graphischen Benutzerschnitteverwendet werden. Hierzu gehört unter anderem ein Eingabefeld für Denavit–HartenbergParameter. Intern werden jedoch keine homogenen Transformationsmatrizen verwendet,um die kinematischen Gleichungen zu bestimmen und zu lösen, sondern Dualquaternionenmit denen sowohl eine Rotation um als auch eine Translation entlang eines Richtungs-vektors dargestellt werden kann. Das Paket glprimitives ermöglicht die dreidimensionaleDarstellung von kinematischen Strukturen sowie deren Animation anhand von Bezier–Kurven. Das Paket kinemath wird von den anderen Paketen zum Rechnen mit komplexenZahlen, Polynomen, Vektoren, Matrizen und Quaternionen verwendet. Synthetica istin Java implementiert und weitestgehend plattformunabhängig. Die aktuelle Version 2.1verwendet die OpenGL Anbindung GL4Java für die 3D–Darstellung und wurde unterWindows und MacOS getestet. Sie ist quelloffen und als Java Archivdatei frei erhält-lich. Das dynamische Robotermodell kann mit Synthetica nicht berechnet werden.

3.1.10 Robotect

Das Softwarepaket Robotect [120, 159] wurde von H. D. Nayar in Altadena, Kalifor-nien entwickelt. Es enthält Funktionen, um serielle Kinematiken zu modellieren, zu vi-sualisieren, zu animieren und zu analysieren. Dieses proprietäre Softwaresystem läuft un-ter Windows Betriebssystemen. Robotect verwendet Denavit–Hartenberg Parameterund homogene Transformationsmatrizen, um einen Manipulator zu modellieren. Es wer-den neben Rotations– und Translationsgelenken auch passive Gelenkachsen unterstützt.Die Bestimmung der inversen Kinematik wird als numerisches Optimierungsproblem be-trachtet und über eine Annäherungsformel, die die inverse beziehungsweise PseudoinverseJacobi–Matrix verwendet, gelöst. Außerdem werden Algorithmen zur Trajektoriengene-rierung basierend auf Polynomfunktionen 5. Grades angeboten. Darüber hinaus kann derBenutzer auch eigene Algorithmen zur Rückwärtstransformation beziehungsweise Trajek-toriengenerierung einbinden. Diese Algorithmen können entweder als externe Matlab

Page 29: Automatische Konfiguration der Bewegungssteuerung von

3.2. Projekte im Bereich des symbolischen Rechnens 19

Funktionen oder als externe Excel Tabellenblätter eingebunden werden. Als Datenquel-le zur Trajektoriengenerierung kann auch eine Ascii–Textdatei verwendet werden. Dasinverse dynamische Modell wird mit Hilfe des Newton–Euler Algorithmus bestimmt. Hin-gegen kann das direkte dynamische Modell nicht bestimmt werden. Deswegen könnenkeine dynamischen Simulationen durchgeführt werden. Robotect war ein kommerziellesSoftwareprodukt, das inzwischen allerdings nicht länger vertrieben wird.

3.1.11 RobotDraw

RobotDraw wurde von R. Manseur [98, 99, 149, 154] am Department of Electricaland Computer Engineering an der Universität von West Florida zur Visualisierung vonkinematischen Ketten entwickelt. Der Benutzer kann damit ein dreidimensionales geo-metrisches Modell eines Manipulators in einer VRML–Repräsentation erzeugen. Dabeiwird der Roboter durch Denavit–Hartenberg Parameter beschrieben, die der Benutzerüber einen Webbrowser eingibt. Allerdings kann hierbei kein Gelenkwinkeloffset eingege-ben werden. Die Denavit–Hartenberg Parameter werden an ein Perl–Skript übergeben,das auf einem Webserver läuft. Das Skript generiert daraus eine VRML–Datei, die danninnerhalb des Browsers angezeigt wird. In der Visualisierung werden Rotationsgelenke inForm von roten Zylindern und Translationsgelenke in Form von roten Boxen dargestellt.Eine dünne blaue Umrandung am Ende des Gelenks zeigt die positive Dreh– beziehungs-weise Translationsrichtung an. Die Hebelverschiebung wird als purpurner Zylinder unddie Hebellänge als grüner Zylinder dargestellt. Die aktuelle Version unterstützt Mani-pulatoren mit drei bis sechs Freiheitsgraden. In Zukunft sollen auch Bewegungsbahnenvon Robotern visualisiert werden können. Dieses System ist hauptsächlich für Lehr– undAusbildungszwecke gedacht und kann ausschließlich zur Visualisierung verwendet werden.

3.2 Projekte im Bereich des symbolischen RechnensEine Reihe von Projekten rechnen zuerst symbolisch und greifen erst bei der Ausführungder hergeleiteten Manipulatormodelle auf numerische Methoden zurück. Auf diese Weisekönnen Formeln vor deren numerischen Auswertung algebraisch vereinfacht und dadurchwertvolle Rechenzeit eingespart werden. Redundante Berechnungen in Algebraausdrückenkönnen ferner durch das Einführen von Hilfsvariablen vermieden werden. Daneben kannauch die benötigte Anzahl an Rechenoperationen von symbolischen Lösungen angegebenwerden. Die abgeleiteten, mathematischen Lösungen sind zudem exakt und haben einenhöheren Informationsgehalt als rein numerische Ausdrücke. Insbesondere kann auch ohneZahlen gerechnet werden, um dann in der gefundenen Lösung die symbolischen Varia-blen durch Zahlenwerte, beispielsweise die Abmessungen eines konkreten Roboters, zuersetzen. Geschlossene Lösungen lassen sich darüber hinaus deutlich besser parallelisie-ren als iterative Näherungslösungen. Außerdem können viele Probleme, wie beispielsweiseInstabilitäts– und Konvergenzprobleme, vermieden werden, die bei einer rein numeri-schen Berechnung auftreten können. Die Herleitung symbolischer Lösungen lässt sich oftmit entsprechenden Transformationsregeln automatisieren und braucht nicht von Handdurchgeführt zu werden. Der Nachteil des symbolischen Rechnens ist, dass bei Roboternmit vielen Gelenkachsen teilweise lange und unübersichtliche Gleichungen generiert wer-den. Bei manchen Robotertypen kann auch keine geschlossene Lösung berechnet werden.Es folgt eine Beschreibung der Projekte in diesem Bereich. Diese Projekte sind IKAN,SRAST, Robotran, Robotica, JFKengine, Linkage Designer und SpaceLib.

Page 30: Automatische Konfiguration der Bewegungssteuerung von

20 Kapitel 3. Aktueller Stand der Forschung

3.2.1 IKAN: Inverse Kinematics using Analytical Solutions

Die IKAN Bibliothek [166, 167] verwendet eine Kombination von analytischen und nume-rischen Lösungsverfahren, um die Rückwärtstransformation von anthropomorphen Glie-dern wie zum Beispiel dem menschlichen Arm oder Bein zu bestimmen. Durch diese Kom-bination werden effizientere Lösungen berechnet, als bei einer ausschließlich numerischenRechnung. IKAN wurde an der Universität von Pennsylvania entwickelt, um kinemati-sche Ketten mit sieben Rotationsgelenken, die in Schulter, Ellbogen und Arm unterteiltsind, zu lösen. Das Schulter– und das Armgelenk haben jeweils drei Freiheitsgrade undwerden über das Ellbogengelenk, das einen Freiheitsgrad besitzt, verbunden. Für beliebi-ge Kinematiken kann IKAN nicht eingesetzt werden. Die Roboterdynamik kann ebenfallsnicht simuliert werden. Die Software ist für nichtkommerzielle Zwecke frei erhältlich. Sieist in C++ geschrieben und wurde unter Irix, SunOS und Windows getestet.

3.2.2 SRAST: Symbolic Robot Arm Solution Tool

SRAST [70] ist ein System zum analytischen Lösen von kinematischen Gleichungen undwurde am Department of Electrical Engineering an der Universität von Pittsburgh ent-wickelt. Es ist in der funktionalen Programmiersprache Common Lisp [80] geschrieben.Das System erwartet als Eingaben die Denavit–Hartenberg Parameter von seriellen Robo-tern und berechnet das direkte und gegebenfalls inverse kinematische Modell symbolisch.Hierbei kann der Benutzer allerdings weder einen Gelenkwinkeloffset noch passive Trans-formationen spezifizieren. Außerdem kann nicht für jeden kinematisch nicht–redundantenRoboter eine Lösung gefunden werden. Es können nur Gleichungstypen gelöst werden,deren Lösung in Form von prozeduralen Wissen bekannt ist. SRAST benötigt zur Be-stimmung des kinematischen Modells eines Unimate Puma 600 sehr viel Rechenzeit. Fürdie symbolische Multiplikation von sechs homogenen 4 × 4 Transformationsmatrizen, umdie direkte Kinematik dieses Roboters zu lösen, werden mehr als fünf Minuten benö-tigt. Andere Komponenten einer Bewegungssteuerung, wie zum Beispiel Komponentenzur Dynamikberechnung oder Trajektoriengenerierung, werden in diesem Projekt nichtberücksichtigt. Inzwischen wurde das Projekt eingestellt und ist nicht mehr erhältlich.

3.2.3 Robotran

Robotran [50, 51, 152, 164] ist ein symbolischer Modellgenerator für Mehrkörpersyste-me. Es wurde am Forschungszentrum Mechatronik (CEREM) an der Katholischen Uni-versität von Louvain–la–Neuve (UCL) in Belgien entwickelt und in der Programmier-sprache C implementiert. Um Terme symbolisch umzuformen, wird ein selbst entwickel-tes Computeralgebrasystem verwendet, das speziell auf Dynamikberechnungen ausgelegtist. Als Gelenkarten sind Rotations– und Translationsgelenke sowie unbewegliche Gelen-ke (engl.: locked joint) verfügbar. Robotran erwartet als Eingabe eine Textdatei, dienach einer ganz bestimmten Struktur aufgebaut sein muß und in der die Topologie einesmechanischen Mehrkörpersystems beschrieben wird. Ausgehend von dieser Beschreibungkann die direkte und inverse Dynamik von offenen und geschlossenen Kinematiken sowievon Baumstrukturen mit dem rekursiven Newton–Euler Verfahren bestimmt werden. Umdie Gleichungen effizienter zu machen und Mehrfachberechnungen zu vermeiden, werdenbei der Generierung Hilfsvariablen eingeführt. Robotran verwendet nicht die Denavit–Hartenberg Konvention und löst die inverse Kinematik durch eine Matlab–Routine nurnumerisch. Es kann ausschließlich über einen Webbrowser bedient werden.

Page 31: Automatische Konfiguration der Bewegungssteuerung von

3.2. Projekte im Bereich des symbolischen Rechnens 21

3.2.4 Robotica for Mathematica

Ein weiteres Projekt in diesem Kontext ist Robotica [121, 122, 123, 153], das das kom-merzielle Computeralgebrasystem Mathematica 2.1 für symbolische Berechnungen ver-wendet. Robotica wurde am Coordinated Science Laboratory an der Universität vonIllinois in Urbana–Champaign entwickelt. Man kann mit diesem Paket die Vorwärtstrans-formation, die Jacobi–Matrix und die dynamischen Gleichungen nach Lagrange anhandder Denavit–Hartenberg Parameter [34] eines seriellen Manipulators und weiterer Einga-bedaten symbolisch berechnen. Die Eingabe und Bedienung erfolgt über eine graphischeOberfläche, dem Robotica Front End. Es kann bei den DH–Parametern jedoch keinGelenkwinkeloffset angegeben werden. Die Rückwärtstransformation kann nicht berechnetwerden und es werden auch keine Funktionalitäten zur automatischen Trajektoriengene-rierung angeboten. Ferner können keine physikalischen Simulationen bezüglich des dyna-mischen Verhaltens von Robotern durchgeführt werden. In der Zwischenzeit wird diesesProjekt nicht mehr länger verfolgt oder unterstützt. Da die derzeitige Mathematica

Version 5.2 ist, kann dieses Projekt als etwas veraltet angesehen werden.

3.2.5 JFKengine: Jacobian and Forward Kinematics Generator

JFKengine [81, 141] ist ein System, um die Jacobi–Matrix und die direkte Kinematikvon seriellen Manipulatoren analytisch zu bestimmen und wurde am Oak Ridge Natio-nal Laboratorium in Knoxville, Tennessee entwickelt. Als Implementierungssprache wurdeC++ gewählt und diese Sprache um Funktionen zum symbolischen Rechnen erweitert.Als Gelenkarten sind Rotations– und Translationsgelenke möglich. Die Funktionalitätenvon JFKengine werden in einer Programmierschnittstelle zur Verfügung gestellt. DieMethode getForwardKinematics berechnet auf Basis der Denavit–Hartenberg Parametereines Manipulators eine homogene Transformationsmatrix, die die Position und Orien-tierung des Endeffektors im Basiskoordinatensystem angibt. Die Methode getJacobianberechnet die Jacobi–Matrix eines Manipulators durch Differentiation und Simplifikationder Ausdrücke der direkten Kinematik. Durch die Option includeOrientation kann ange-geben werden, ob auch die Orientierungsanteile berechnet werden sollen. Falls ja, wirdals Ergebnis eine 6 × n Matrix und andernfalls eine 3 × n Matrix zurückgegeben. Mitder Methode getJointLocations wird die direkte Kinematik anhand konkreter Zahlen fürdie Gelenkvariablen ausgewertet. Die inverse Kinematik kann mit JFKengine nicht be-stimmt werden. Das System wurde unter der Linux–Distribution Redhat 8.0 entwickelt.

3.2.6 Linkage Designer

Linkage Designer [45, 46] ist ein Mathematica Zusatzpaket, um mechanische Ver-bindungen, die entweder seriell oder baumförmig aufgebaut sind, zu analysieren und zusimulieren. Es wurde von G. Erdõs an der Ungarischen Akademie der Wissenschaften inBudapest entwickelt. Mit dem Mathematica Paket Dynamic Visualizer oder einemVRML–Browser können Gelenkverbindungen visualisiert und animiert werden. Als Gelen-karten sind Rotations–, Translations–, Universal–, Planar–, Scharnier– und Kugelgelenkesowie passive Gelenke verfügbar. Für beliebige Gelenke können Geschwindigkeiten, Be-schleunigungen und Ableitungen höherer Ordnung in geschlossener Darstellung bestimmtwerden. Linkage Designer ist ein kommerzielles Produkt, das Mathematica 5.0 oderhöher benötigt. Es läuft unter den Plattformen Windows, MacOS und Linux. Zur Be-rechnung des dynamischen Robotermodells kann dieses Paket nicht verwendet werden.

Page 32: Automatische Konfiguration der Bewegungssteuerung von

22 Kapitel 3. Aktueller Stand der Forschung

3.2.7 SpaceLib in Maple

SpaceLib [88, 89] ist eine Softwarebibliothek für die kinematische und dynamische Ana-lyse von Festkörpersystemen und wurde von G. Legnani an der Universität von Bresciain Italien entwickelt. SpaceLib basiert auf der Denavit–Hartenberg Konvention. Aller-dings wurden in SpaceLib zusätzliche 4 × 4 Matrizen eingeführt. Die Linear– und Win-kelgeschwindigkeit eines Körpers hinsichtlich eines Referenzkoordinatensystems wird inder Geschwindigkeitsmatrix angegeben. Hierzu entsprechend wird die Beschleunigungs-matrix definiert, die die Linear– und Winkelbeschleunigung eines Körpers bezüglich einesKoordinatensystems enthält. Die Kräfte, die auf einen Körper wirken, wird durch dieschiefsymmetrische Aktionsmatrix beschrieben. Entsprechend werden die auf einen Kör-per wirkenden Impulse in der schiefsymmetrischen Impulsmatrix zusammengefasst. DieMassenverteilung eines Körpers wird in der Trägheitsmatrix dargestellt. Mit diesen Ma-trizen wird die Dynamik nach dem Lagrange–Verfahren bestimmt. Beispielsweise wird diekinetische Enerige eines Körpers als Funktion der Geschwindigkeits– und Trägheitsmatrixberechnet. Von SpaceLib gibt es in der Zwischenzeit insgesamt drei Versionen. Eine Ver-sion rechnet symbolisch und benötigt Maple 9.5 oder höher. Darüber hinaus gibt es zweiVersionen, die in der Programmiersprache C beziehungsweise in Matlab rein numerischrechnen. Der Quellcode ist frei verfügbar und darf nicht–kommerziell genutzt werden.

3.3 Mehrkörpersimulationssysteme

Mehrkörpersimulationssysteme werden eingesetzt, um die dynamischen Eigenschaften vonmechanischen Systemen, die in starre Körper, Gelenke und Kraftelemente aufgeteilt wer-den, zu untersuchen. Zu den Mehrkörpersimulationssystemen, die sich in ihrer Funktiona-lität und der Art wie Bewegungsgleichungen aufgestellt und gelöst werden, unterscheiden,gehören zum Beispiel Dymola, DynaFlexPro, NewEul, MBSymba und Adams.

3.3.1 Dymola: Dynamic Modelling Laboratory

Dymola [42, 43, 44, 128] ist eine Modellierungs– und Simulationssystem, das auf der ob-jektorientierten Modellierungssprache Modelica basiert. Es besteht aus einer Reihe vonBibliotheken um beispielsweise Fahrzeuge oder elektrische Schaltungen zu modellieren.Die Mehrkörpersystembibliothek enthält grundlegende Modellklassen, wie zum BeispielFestkörper, rotatorische und translatorische Gelenke inklusive vieler Reibelemente sowieAnimationselemente, um Roboter und andere mechatronische Systeme zu modellieren. Diegeometrische Modellierung erfolgt nicht nach der Denavit–Hartenberg Konvention. Statt-dessen werden in einem graphischen Editor Grundobjekte aus Bibliotheken ausgewählt,parametriert und über physikalische Konnektoren zu Modellen miteinander verbunden.Jedes Grundobjekt wird durch einen Satz von mathematischen Gleichungen beschrieben.Durch die Verbindung von Grundobjekten werden zusätzliche Gleichungen erstellt undentsprechend der Verschaltungsstruktur miteinander kombiniert. Es gibt Algorithmen,um diese Modellgleichungen symbolisch in Zustandsform zu transformieren und C–Codezu generieren. Außerdem stehen viele numerische Integrationsverfahren für die Lösung vonDifferentialgleichungen zur Verfügung, beispielsweise Euler–, Runge–Kutta– und DASSL–Verfahren (Differential Algebraic System Solver) [138]. Das kinematische Robotermodellwird von Dymola nicht berechnet. Seit 1992 wird es von der schwedischen Firma Dy-

nasim AB in Lund für Windows und Linux Betriebssysteme kommerziell vertrieben.

Page 33: Automatische Konfiguration der Bewegungssteuerung von

3.3. Mehrkörpersimulationssysteme 23

3.3.2 DynaFlexPro

DynaFlexPro [10, 113] ist ein Maple Zusatzpaket für die Modellierung und Simulationder Dynamik von mechanischen Mehrkörpersystemen, die an der Universität von Water-loo in Kanada entwickelt wurde. Die Erstellung von Systemmodellen erfolgt mit demDynaFlexPro Model–Builder, einer graphischen Benutzeroberfläche zur Verschal-tung von elementaren Blöcken zu Blockdiagrammen. Die Geometrie eines Roboters wirdmit der Denavit–Hartenberg Konvention beschrieben. Allerdings können diese Parameternicht direkt in den DynaFlexPro Model–Builder eingegeben werden. Stattdessenwird ein Manipulator durch mit Linien verbundenen Blöcke dargestellt, wobei jeder Blockein Gelenk darstellt. Die Denavit–Hartenberg Paramter werden in eine interne Parameter-darstellung konvertiert, um diese Werte dann jedem Block zuzuweisen. Aus dem System-modell werden automatisch die symbolischen Bewegungsgleichungen generiert. Hierfürwerden intern Projektionsmethoden verwendet, das heißt das Newton–Euler Verfahrenund Methoden aus der linearen Graphentheorie. Die Differentialgleichungen können mitzwölf verschiedenen Verfahren integriert werden. Darunter ist auch das Runge–Kutta–Fehlberg Verfahren. Reibungskräfte sind bislang nicht implementiert, sollen aber in einerzukünftigen Version mit einbezogen werden. Während die direkte Kinematik automatischgelöst werden kann, kann eine geschlossene Lösung der inversen Kinematik nicht bestimmtwerden. Das Newton–Raphson Verfahren wird ebenfalls nicht unterstützt. DynaFlex-

Pro ist ein kommerzielles Produkt und kostet mehrere Tausend Euro. Die aktuelle Version3.0 benötigt Maple 10 oder höher und läuft unter Windows, Linux und MacOS.

3.3.3 NewEul

NewEul [71] ist ein System, um die Dynamik von Mehrkörpersystemen mit dem Newton–Euler Verfahren und den Prinzipien von d’Alembert and Jourdain zu bestimmen. Es wurdeam Institut für Technische und Numerische Mechanik an der Universität Stuttgart ent-wickelt und in der Programmiersprache Fortran77 implementiert. Anhand einer Einga-bedatei, die aus den Abschnitten Allgemeine Angaben, Koordinatensysteme, Massengeo-metrische Größen und Eingeprägte Kräfte und Momente besteht, werden die Bewegungs-gleichungen symbolisch erzeugt. Das dynamische Verhalten kann durch Integration derBewegungsgleichungen mit dem Modul NewSim simuliert werden. In NewEul wird dieDenavit–Hartenberg Konvention nicht verwendet und es werden keine Gelenktypen unter-schieden. Allerdings erlaubt das System sowohl eine relative als auch eine absolute Defini-tion von Koordinatensystemen. Jedes Koordinatensystem kann bis zu sechs Freiheitsgra-de haben. Das Modell wird aus einer Verknüpfung von Koordinatensystemen aufgebaut.Mehrkörpersysteme können ketten– oder baumförmig aufgebaut sein und es werden auchgeschlossene Strukturen unterstützt. Ferner besteht die Möglichkeit, lange Gleichungenzu komprimieren, die bei sehr komplizierten Mehrkörpersystemen generiert werden. DerBenutzer kann zwischen sieben verschiedenen Komprimierungsstufen auswählen, um Glei-chungen unterschiedlich stark komprimieren zu lassen. Während in der nullten Stufe keineKomprimierung vorgenommen wird, wird in der sechsten Stufe eine maximale Kompri-mierung durchgeführt, wodurch allerdings trigonometrische Vereinfachungen nicht mehrmöglich sind. Diese Stufe kommt deswegen einer ausschießlich numerischen Berechnungsehr nahe. Reibungskräfte werden in NewEul nicht berücksichtigt. Eine eingeschränkteDemoversion für Mehrkörpersysteme mit bis zu vier Freiheitsgraden ist für Windows

und Linux erhältlich. Eine kommerzielle Lizenz kostet mehrere Hundert Euro.

Page 34: Automatische Konfiguration der Bewegungssteuerung von

24 Kapitel 3. Aktueller Stand der Forschung

3.3.4 MBSymba: Symbolic Modelling of Multibody Systems

MBSymba [91] ist eine Maple Erweiterung zur symbolischen Modellierung von Mehr-körpersystemen und wurde von R. Lot an der Universität Padua in Italien entwickelt.Es besteht aus einer Reihe von Methoden für die Beschreibung eines Systems, für dieHerleitung der Bewegungsgleichungen und für die Analyse der Systemgleichungen. Ma-nipulatoren können nicht nach der Denavit–Hartenberg Konvention beschrieben werden.Stattdessen erfolgt die Beschreibung eines Systems mit einer Reihe von Prozeduren, umObjekte (Punkte, Vektoren, Körper, Kräfte und Momente) und Objektbeziehungen zudefinieren. Als Berechnungsverfahren für die Dynamik werden sowohl die Lagrange’schenGleichungen als auch der Newton–Euler–Formalismus verwendet. Weiterhin gibt es Pro-zeduren für die Linearisierung der Gleichungen, ihre Konversion in den Zustandsraum unddie Berechnung der Systemantwort. Die Software unterliegt den GNU GPL–Bedingungen.

3.3.5 Adams: Automatic Dynamic Analysis of Mechanical Sys-tems

Das Simulationspaket Adams [151] besteht aus einer Vielzahl von Modulen, um Mo-delle von Mehrkörpersystemen zu erstellen, deren physikalisches Verhalten zu simulierenund die Ergebnisse zu interpretieren. Die Denavit–Hartenberg Konvention wird nicht ver-wendet, um Roboter zu modellieren. Das Modul Adams View dient zur Erstellung vonMehrkörpermodellen und zur Visualisierung von Bewegungsabläufen. Neben der Neuent-wicklung von Modellen können Geometriedaten auch aus den meisten CAD–Systemenimportiert werden. Die Bewegungsgleichungen werden dann nach dem Lagrange Verfah-ren aufgestellt, wobei es auch eine Option gibt, um Reibungskräfte definieren zu lassen.Mit dem Modul Adams Solver werden die erzeugten Gleichungen numerisch gelöst.Das Modul Adams Postprozessor ist für die Nachbearbeitung von Daten. Außerdemgibt es spezielle Module, die auf bestimmte Anwendungsbereiche zugeschnitten sind, wieAdams Car für Kraftfahrzeuge oder Adams Rail für Schienenfahrzeuge. Das kinemati-sche Modell kann von Adams nicht hergeleitet werden, sondern muß vom Benutzer selbstimplementiert werden. Im Gegensatz zu anderen Mehrkörpersimulationssystemen kannAdams nur numerisch und nicht symbolisch rechnen. Die Software wird von der FirmaMSC.Software vertrieben und ist für Unix und Windows Betriebssysteme erhältlich.

3.4 Physik–EnginesZu den bisher beschriebenen Projekten sind physikalische Simulatoren verwandt, mit de-nen das dynamische Verhalten von Robotern unter Verwendung von Differentialgleichun-gen in einer Simulation untersucht wird. In der Simulation werden meistens auch Kollisio-nen und Reibungskräfte berücksichtigt. Es kommen verschiedene Algorithmen zur Integra-tion von Differentialgleichungen zum Einsatz, die sich in der Rechengeschwindigkeit undRechengenauigkeit sowie im Konvergenzverhalten unterscheiden. Bei Einschrittverfahrenwerden keine zeitlich weiter zurückliegende Werte benutzt, während bei Mehrschrittver-fahren auch Vergangenheitswerte in die Integration miteinbezogen werden. Außer in derRobotik werden physikalische Simulatoren und Physik–Engines auch in der Automobil–und Luftfahrttechnik sowie in der Computeranimation eingesetzt. Die meisten dieser phy-sikalischen Simulatoren, wie DynaMo, MBDyn, ODE und DynaMechs, rechnen aus-schließlich numerisch. EasyDyn rechnet hingegen teilweise auch symbolisch.

Page 35: Automatische Konfiguration der Bewegungssteuerung von

3.4. Physik–Engines 25

3.4.1 DynaMo: Dynamic Motion Library

DynaMo [7] ist eine Bibliothek zur Simulation physikalischer Systeme, die in einer Dis-sertation an der Technischen Universiteit Eindhoven entwickelt wurde. Körper werden alspunktförmige Massen und dazugehörige Trägheitstensoren dargestellt. Für die Dynamiksi-mulation müssen die angreifenden Kräfte und Drehmomente angegeben werden. DynaMo

bietet für die Integration von Differentialgleichungen vier verschiedene numerische Integra-toren an, und zwar zwei verschiedene Euler–Verfahren sowie das Runge–Kutta–Verfahrender Ordnung zwei und vier. Für die Kollisionserkennung wird die ebenfalls an der Tech-nischen Universiteit Eindhoven entwickelte und frei erhältliche Bibliothek FreeSolid

(Software Library for Interference Detection) [172] verwendet. Nachdem eine Kollision er-kannt wurde, berechnet DynaMo die resultierenden Reaktionskräfte. Die Bibliothek istvollständig in der Programmiersprache C/C++ geschrieben und als GNU LGPL–basierteSoftware veröffentlicht. Reibungskräfte werden von dieser Bibliothek nicht abgedeckt.

3.4.2 MBDyn: MultiBody Dynamics Software

MBDyn [58, 59, 117] wurde an der Polytechnischen Universität Mailand entwickelt. Eskönnen sowohl offene und geschlossene Kinematiken als auch baumförmige kinematischeStrukturen nach dem Newton–Euler Verfahren modelliert werden. Viele verschiedene Ge-lenkarten sind verfügbar. Reibungskräfte können auf Basis des Coulomb–Modells oderdes LuGre–Modells berechnet werden. Die Integration der Differentialgleichungen erfolgtdurch das BDF–Verfahren (Backward Difference Formula) [67]. Der Quellcode ist alsGNU GPL erhältlich und kann unter Unix–Betriebssystemen ausgeführt werden. Mit derErweiterung RT–MBDyn [5], die unter dem Betriebssystem RTAI läuft, können harteEchtzeitanforderungen erfüllt werden. Im Gegensatz zu anderen Physik–Engines handeltes sich nicht um eine Bibliothek, sondern um ein kommandozeilenbasiertes Programm.

3.4.3 ODE: Open Dynamics Engine

ODE [33] ist eine von dem Physiker R. Smith in der Programmiersprache C/C++ entwi-ckelte Softwarebibliothek für die Bewegungssimulation von mechanischen Körpern. Sie istals BSD–Lizenz (Berkeley Software Distribution) und optional als GNU LGPL erhältlich.Die Bibliothek unterstützt verschiedene Gelenktypen, zum Beispiel Kugel–, Scharnier–und Translationsgelenke sowie fixierte Verbindungen, Kollisionserkennung zwischen Ob-jekten sowie ein Berührungs– und Reibungsmodell. Die Orientierung von Körpern wirdentweder als Rotationsmatrix oder als Quaternion dargestellt. Jedem Gelenk werden dreiGleichungen zugeordnet, die die zulässigen Positionen und Orientierungen der beidenKörper, die das Gelenk miteinander verbindet, definieren. Zur Integration der Differenti-algleichungen wird das einstufige Euler–Verfahren verwendet. Für die Kollisionserkennungist es erforderlich, dass jeder Körper eine geometrische Form hat. Kollisionsobjekte könnenbeispielsweise Kugeln, Quader, Zylinder oder Strahlen sein. In jedem Simulationsschrittwerden Kollisionserkennungsfunktionen aufgerufen, die bei Berührungen von Körpern ei-ne Liste von Kontaktpunkten zurückliefern. Kontaktpunkte werden durch Position, Rich-tungsvektor und Eindringtiefe angegeben. Die Visualisierung des zu simulierenden Sys-tems erfolgt mit OpenGL (Open Graphics Library). Durch die Bibliothek ODEJava

können die Funktionen auch in Java–Programmen verwendet werden. Die inverse Kine-matik kann von ODE nicht gelöst werden. ODE kann unter Windows, MacOS undUnix genutzt werden. Echtzeitfähige Betriebssysteme werden nicht unterstützt.

Page 36: Automatische Konfiguration der Bewegungssteuerung von

26 Kapitel 3. Aktueller Stand der Forschung

3.4.4 DynaMechs: Dynamics of Mechanisms

An der Universität von Ohio entwickelte S. McMillan die Softwarebibliothek DynaMechs

[109, 110, 111, 112] für die Dynamiksimulation von mechanischen Systemen. Es können so-wohl offene kinematische Ketten als auch komplizierte Baumstrukturen simuliert werden.D. Marhefka [104] erweiterte das System, so dass nun auch bestimmte geschlossene Ki-nematiken simuliert werden können. Gelenke mit einem Freiheitsgrad (Translations– undRotationsgelenke) werden nach der Denavit–Hartenberg Konvention beschrieben. Dar-über hinaus werden auch Kugelgelenke (engl.: ball–and–socket joints) unterstützt, diedurch drei Eulerwinkel und einen Positionsvektor beschrieben werden. Die Bibliothek bie-tet auch eine laufzeitoptimierte Kollisionserkennung an. Um die Laufzeit der Kollisions-erkennung bei der Dynamiksimulation zu reduzieren, wird vor jedem Integrationsschrittnicht die gesamte Oberfläche von mechanischen Systemen auf Kollisionen überprüft, son-dern nur ausgewählte Kontaktpunkte. Die numerische Integration der Bewegungsgleichun-gen erfolgt wahlweise mit dem Euler–Verfahren oder dem Runge–Kutta–Verfahren vierterOrdnung mit fester oder adaptiver Schrittweite. Bei adaptiver Schrittweite wird dieserWert automatisch an das Verhalten der Lösung angepasst und dabei vorgegebene Ge-nauigkeitsanforderungen berücksichtigt. Da im Gegensatz zu anderen Bibliotheken mitDynaMechs auch mechanische Systeme unter Wasser simuliert werden können, wird dieBibliothek hauptsächlich für den Entwurf von Unterwasserrobotern eingesetzt. Die Biblio-thek ist in C/C++ implementiert und der Quellcode ist unter der GNU GPL erhältlich.Es werden die Plattformen Linux, Solaris, Irix und Windows NT unterstützt.

3.4.5 EasyDyn: Easy Simulation of Dynamic Problems

EasyDyn [174, 175, 176] ist eine C/C++ Bibliothek zur Simulation von Mehrkörpersys-temen, die mathematisch mit Differentialgleichungen 2. Ordnung beschrieben werden. DieBibliothek wurde von O. Verlinden an der Polytechnischen Fakultät von Mons in Belgienentwickelt und ist als kostenlos nutzbare Open–Source–Software entsprechend den Bedin-gungen der GPL erhältlich. Für numerische Berechnungen wird die MathematikbibliothekGNU Scientific Library (GSL) verwendet. EasyDyn ist in vier Module gegliedert.Das Modul vec enthält Operationen für das Rechnen mit dreidimensionalen Vektoren undhomogenen Transformationsmatrizen. Das Modul sim enthält Routinen for die numeri-sche Integration von Differentialgleichungen 2. Ordnung, die auf dem Newmark–Verfahren[124] basieren. Das Modul mbs berechnet numerisch die Bewegungsgleichungen aus einemC/C++ Programm, in dem die Positionen, Geschwindigkeiten und Beschleunigungen derMassenschwerpunkte der Teilkörper eines mechanischen Systems und die extern wirken-den Kräfte angegeben sind. Die Bewegungsgleichungen werden durch die Anwendung desd’Alembert–Prinzips [2] konstruiert. Dieses Modul liefert also die Eingaben für das Mo-dul sim. Das Modul visu dient zur Generierung von Dateien mit denen dreidimensionaleObjekte visualisiert und animiert werden können. Die eigentliche Visualisierung erfolgtmit dem System EasyAnim, das auch von O. Verlinden entwickelt wurde. Das Projektrechnet mit einer Ausnahme ausschließlich numerisch. Ausdrücke für Geschwindigkeitenund Beschleunigungen können anhand homogener Transformationsmatrizen mit Hilfe desPaderborner Computeralgebrasystems MuPad (Multi Processing Algebra Data

Tool) [119] symbolisch hergeleitet werden. Die Herleitung erfolgt mit dem Skript CA-GeM (Computer Aided Generation of Motion). EasyDyn läuft unter Windows undLinux Betriebssystemen und wurde zum Einsatz in Lehre und Ausbildung entwickelt.

Page 37: Automatische Konfiguration der Bewegungssteuerung von

3.5. 3D–Robotersimulationssysteme 27

3.5 3D–Robotersimulationssysteme

Die Zielsetzung von Robotersimulationssystemen ist im Vergleich zu den bisher beschrie-benen Projekten etwas anders gelagert. Das Haupteinsatzgebiet von diesen Systemen istdie Offline–Programmierung von Industrierobotern und die Layoutplanung von Roboter-zellen. Hierzu gehören unter anderem Untersuchungen bezüglich Zykluszeit, Erreichbarkeitsowie Kollisions– und Singularitätsfreiheit. Eine wichtige Anforderung an diese Systemeist, dass der virtuelle Roboter in der Simulation sich mit denselben Gelenkkonfigurationenbewegt, wie später der reale Roboter in der Anlage. Ansonsten können Kollisionen auftre-ten. Die Dynamik wird in diesen Systemen größtenteils nicht berücksichtigt. Es gibt zweiArten von Robotersimulationssystemen und zwar herstellerspezifische und herstellerüber-greifende Systeme. Mit der Kuka Sim Familie und ABB RobotStudio können nurdie Roboter des jeweiligen Herstellers programmiert werden. Für Roboter anderer Her-steller oder für selbst definierte Kinematiken muss die Steuerungssoftware vom Benut-zer implementiert werden. In EASY–ROB, eM–Workplace, Robomosp, Cosimir,Igrip und Microsoft Robotics Studio sind hingegen auch Roboter von verschiede-nen Herstellern verfügbar. Im folgenden werden ausschließlich die herstellerübergreifendenRobotersimulationssysteme betrachtet, weil diese Systeme allgemeiner ausgerichtet sind.

3.5.1 EASY–ROB 3D Robot Simulation Tool

In dem System EASY–ROB [3] der gleichnamigen Firma aus Frankfurt am Main sind ma-thematische Lösungen bezüglich Kinematik, Bewegungsplanung und Ausführung für dieindustrielle Robotik implementiert. Zu den Anwendungsbereichen gehören die Simulationund Offline–Programmierung von Robotern sowie die Layoutplanung von Roboterzellen.Es können auch eigene Kinematiken erstellt und simuliert werden. Kinematische Kettenwerden nach der Denavit–Hartenberg Konvention beschrieben. Der Benutzer kann dieLösung der inversen Kinematik aus einer Bibliothek von vorhandenen Robotern laden be-ziehungsweise selbst in der Programmiersprache C/C++ implementieren und über eineAnwendungsprogrammierschnittstelle einbinden. Außerdem kann die inverse Kinematiknäherungsweise mit der Jacobi–Matrix berechnet werden. Bei mehr als sechs Gelenkach-sen wird die Pseudoinverse verwendet und diese Matrix mittels Singulärwert–Zerlegungberechnet. In EASY–ROB werden die gängigen Programmiersprachen für Industrierobo-ter unterstützt. Als Interpolationsarten stehen synchrone Punkt–zu–Punkt Bewegungensowie lineare und zirkulare Bahninterpolation zur Verfügung. EASY–ROB benutzt dieGrafikbibliothek OpenGL zur Visualisierung von Robotern und läuft unter Microsoft

Windows und unter Betriebssystemen, die es erlauben, Windows Programme auszu-führen. Es ist keine Open–Source–Software und für die Nutzung muß eine Lizenz erworbenwerden. Darüber hinaus kann eine Demoversion kostenfrei heruntergeladen werden.

3.5.2 eM–Workplace / Robcad

eM–Workplace [41, 79], das früher Robcad hieß, ist eine Robotersimulationssoftwareder Firma Tecnomatix. Für die Modellierung von Fertigungszellen stehen umfangreicheRoboter–, Maschinen–, Werkzeug– und Bestückungsbibliotheken zur Verfügung. Darüberhinaus kann der Benutzer weitere Roboter und Fertigungseinrichtungen modellieren. Un-terschiedliche Bewegungen können simuliert und Kollisionsuntersuchungen durchgeführtwerden. Als Betriebssysteme werden Windows 2000 und XP sowie Unix unterstützt.

Page 38: Automatische Konfiguration der Bewegungssteuerung von

28 Kapitel 3. Aktueller Stand der Forschung

3.5.3 Robomosp: Robotics Modelling and Simulation Platform

Robomosp [78] ist ein System für die Modellierung und Simulation von Manipulatorenund wurde von der Forschungsgruppe Robotik und Automation an der Universität Jave-riana in Kolumbien entwickelt. Aus Performanzgründen wurden die meisten Komponentenin Ansi C implementiert. Die graphische Benutzeroberfläche wurde in der SkriptspracheTcl/Tk (Tool Command Language/Tool Kit) geschrieben und für die Visualisie-rung von Robotern wurde die Graphikbibliothek OpenGL verwendet. Die mathematischeBeschreibung serieller Kinematiken erfolgt nach der Denavit–Hartenberg Konvention. DerBenutzer kann zwischen rotatorischen und translatorischen Gelenktypen auswählen. Dieinverse Kinematik wird im allgemeinen näherungsweise mit Hilfe der Jacobi–Matrix be-rechnet. Darüber hinaus kann der Benutzer eigene numerische oder analytische Lösungenüber eine Anwendungsprogrammierschnittstelle in das System integrieren, um die vorhan-dene Lösung zu ersetzen. Die Dynamik wird mit dem rekursiven Newton–Euler Verfahrenberechnet und die Differentialgleichungen mit dem Runge–Kutta–Verfahren integriert. DieOffline–Programmierung von Robotern erfolgt in der standardisierten Sprache Industri-

al Robot Language (IRL) und wird durch die graphische Simulationsumgebung unddreidimensionale CAD–Modelle unterstützt. Gegenwärtige Arbeiten beinhalten die Erwei-terung des Systems um verschiedene Roboterprogrammiersprachen und um Kollisionser-kennungsverfahren sowie die Erstellung einer Bibliothek mit Robotern von verschiedenenHerstellern. Robomosp läuft unter Linux, MacOS und Windows Betriebssystemen.

3.5.4 Cosimir: Cell Oriented Simulation of Industrial Robots

Cosimir [54, 55, 56] ist ein Robotersimulationssystem, das am Institut für Roboter-forschung an der Universität Dortmund entwickelt wurde und gegenwärtig von Festo

Corporation vertrieben wird. Dieses System ist primär für die Simulation von Arbeits-abläufen mit Robotern entworfen worden. Es unterstützt mehrere Roboterprogrammier-sprachen und enthält eine Bibliothek mit vielen verschiedenen Robotertypen von namhaf-ten Herstellern. Die Rückwärtstransformation wird für alle Roboter in dieser Bibliothekberechnet. Darüber hinaus können Roboter aus Rotations– und Translationsgelenken zu-sammengesetzt und mit Hilfe von Denavit–Hartenberg Matrizen kinematisch beschriebenwerden. Es werden dann sehr viele Aufbaumöglichkeiten von der Kinematikerkennungautomatisch detektiert. Die erkannten Kinematiken können von der enthaltenen analy-tischen Universalsteuerung bewegt werden. Für nicht erkannte Kinematiken besteht dieMöglichkeit, sie von der Universalsteuerung auf Einzelachsebene zu bewegen. In diesemFall sind nur PTP–Bewegungen ohne Achssynchronisation möglich. Wenn eine externeSteuerung für eine nicht erkannte Kinematik in Software oder in Hardware existiert, kanndiese Steuerung über die OPC–Schnittstelle (Object Linking and Embedding for ProcessControl) verwendet werden. Die Bewegungsgleichungen, die von der internen Steuerungverwendet werden, sind für den Benutzer nicht zugreifbar. Außerdem kann Cosimir nichtum selbst entwickelte Kinematikmodelle ergänzt werden, das heißt es gibt keine Anwen-dungsschnittstelle, die Zugriff auf die Universalsteuerung und deren Bahnplanungsmo-dul ermöglicht. Das dynamische Robotermodell wird von Cosimir nicht berechnet. Beider Trajektoriengenerierung wird Überschleifen unterstützt, allerdings keine Spline– oderNurbs–Bahnen. Cosimir läuft auf Windows–Systemen ab Version 2000. Es ist ist keineOpen–Source–Software, sondern ein kommerzielles Produkt für den industriellen Einsatz.Der Preis richtet sich nach den für die jeweilige Aufgabenstellung benötigten Modulen.

Page 39: Automatische Konfiguration der Bewegungssteuerung von

3.5. 3D–Robotersimulationssysteme 29

3.5.5 Igrip: Interactive Graphics Robot Instruction Program

Igrip [24] ist eine Simulationsumgebung mit dreidimensionaler Darstellung für den Ent-wurf und die Offline–Programmierung von Roboterzellen, die von der Firma Delmia ent-wickelt und vertrieben wird. In diesem System sind auch Funktionen zur automatischenKollisionserkennung und zur Überwachung von Mindestabständen integriert. Eine Biblio-thek enthält über 500 Industrierobotermodelle sowie zusätzliche Geräte, wie zum BeispielLaufschienen, Portalkräne und Spannvorrichtungen für Werkstücke. Der Benutzer kannBauteile aus gängigen CAD–Systemen nach Igrip importieren und daraus eigene Gerä-te erstellen sowie aus mehreren Geräten eine Werkzelle aufbauen. Die Programmierungvon Simulationen erfolgt mit der Graphic Simulation Language, die eine Pascal–ähnliche Sprache mit zusätzlichen Datentypen wie Positionen und Pfaden ist. TechnischeProzesse wie Punktschweißen, Lackieren und Materialabtrag können simuliert werden.

3.5.6 Microsoft Robotics Studio

Microsoft Robotics Studio [118] ist eine Windows–basierte Entwicklungsumge-bung zur Simulation und Ansteuerung von Robotern, die Microsoft als Standard in derRobotik durchsetzen möchte. Es umfasst eine graphische, datenflußbasierte Programmier-umgebung (Visual Programming Language, VPL) mit der Dienste (Services) und Kon-trollflußelemente (Basic Activities) zu einem Programm verschaltet werden können. DieseUmgebung wurde von Microsoft eingeführt, um Software für Roboter zu entwickeln,ohne Programmcode schreiben zu müssen. Darüber hinaus kann die Robotersoftware auchin einigen Programmiersprachen wie zum Beispiel C# oder VB.NET geschrieben werden.Ein Konfigurationseditor (Decentralized Software Services Manifest Editor, DSSME) solldie Konfiguration der Dienste für verschiedene Roboterplattformen erleichtern. Die Kom-munikation zwischen Diensten erfolgt ausschließlich durch Nachrichtenaustausch. Hierfürwird ein Kommunikationsprotokoll (Decentralized Software Services Protocol, DSSP) ver-wendet, bei dem Nachrichten und Daten zuerst in XML serialisiert und dann mit demSOAP–Protokoll an einen anderen Dienst gesendet werden. Jeder Dienst befindet sichin einem Zustand und schickt, sobald sein Zustand sich ändert, eine Nachricht darüberan alle Dienste, die sich bei ihm angemeldet haben. Dienste können auf demselben oderauf verschiedenen Rechnern ablaufen, beispielsweise um mehrere Roboter anzusteueren.Inzwischen werden auch Dienste für die Spracherkennung und das maschinelle Sehen an-geboten. Ferner gehört zu Microsoft Robotics Studio eine serviceorientierte Lauf-zeitumgebung (Microsoft Robotics Studio Runtime) mit der Anwendungen parallel undverteilt ausgeführt werden können. Insbesondere können Sensordaten verarbeitet und dieMotorik von Robotern angesteuert werden. Die Laufzeitumgebung unterstützt inzwischenauch Windows Mobile 6 und Windows Embedded CE 6.0. Dadurch können aucheingebettete Anwendungen erstellt werden. Bevor die Software auf realen Robotern einge-setzt wird, kann sie zunächst auch nur simuliert werden. Microsoft Robotics Studio

enthält hierfür eine Simulationsumgebung (Visual Simulation Environment, VSE) in derdie entwickelten Steuerungsprogramme und selbst entworfene Roboter virtuell getestetwerden können. Für die 3D–Simulation von Robotern und die Nachbildung physikalischerEffekte wie Gravitation, Reibung und Schattierungen wird die AGEIA PhysX Technology–Engine verwendet. Im Dezember 2006 ist die Version 1.0 und im Juli 2007 ist die aktuelleVersion 1.5 von Microsoft Robotics Studio erschienen. Für nicht–kommerzielle Zwe-cke ist das Herunterladen von Microsoft Robotics Studio bislang kostenlos.

Page 40: Automatische Konfiguration der Bewegungssteuerung von

30 Kapitel 3. Aktueller Stand der Forschung

3.6 Bewertung und Vergleich der Systeme

In diesem Abschnitt werden die Eigenschaften der in den vorherigen Abschnitten vorge-stellten Systeme miteinander verglichen und einander gegenüber gestellt. In Tabelle 3.1sind die wichtigsten Merkmale der Systeme in einer Übersicht dargestellt. Die vorliegendeArbeit unterscheidet sich in einer Reihe von Kriterien von diesen Systemen.

Nutz– / Verfügbarkeit: Die Projekte Robotect, SRAST und Robotica wurden inder Zwischenzeit eingestellt und die Software ist deswegen auch nicht mehr erhältlich. ImUnterschied zu den anderen hier vorgestellten Systemen können RobotDraw und Ro-

botran nur per Webbrowser benutzt werden. Da eine lokale Installation nicht möglichist, sind diese Systeme für den Benutzer sehr restriktiv. Von Oscar und JFKengine sindebenfalls keine Download–Versionen erhältlich, da die Software nur intern verwendet undnicht an Dritte weitergegeben wird. Manche Projekte werden nicht gepflegt. Beispielswei-se verwendet Matlab Robotics Toolbox eine inzwischen veraltete Matlab Versionund wurde nicht nach neueren Matlab Versionen portiert. Für eine Reihe von Projektenwerden Lizenzgebühren erhoben, die teilweise sehr hoch sind, und der Quellcode ist nichtverfügbar, zum Beispiel Linkage Designer, DynaFlexPro und Igrip.

Echtzeitanforderungen: Obwohl die Steuerung von Robotern die genaue Einhaltungzeitlicher Vorgaben erfordert und die Berechnungen in wenigen Millisekunden durchge-führt werden müssen, können von diesen Systemen nur Orocos, MBDyn und Microb

auf einem Echtzeitbetriebssystem eingesetzt werden. Für zeitkritische Steuerungsaufga-ben sind Physik–Engines wie zum Beispiel ODE nicht geeignet. Deswegen können realeRoboter mit den meisten dieser Systeme nicht gesteuert werden.

Denavit–Hartenberg Konvention: Viele Projekte verwenden die Denavit–HartenbergKonvention, um die Geometrie eines Roboters zu beschreiben. Eine Einschränkung bei denmeisten Projekten ist dabei, dass kein Gelenkwinkeloffset angegeben werden kann. Bei-spielsweise kann bei Oscar, Matlab Robotics Toolbox, RTSS, ManDy, Microb,Synthetica, Robotect, RobotDraw, SRAST, Robotica, JFKengine, Linkage

Designer, SpaceLib, DynaFlexPro, DynaMechs, EASY–ROB und Robomosp

kein Offsetwert spezifiziert werden, der stets zu einem Gelenkwinkel addiert werden soll.Hingegen kann bei Roboop der Benutzer einen Gelenkwinkeloffset angeben. Bei vielenProjekten fehlen ebenso passive Gelenkachsen und Transformationen (kein Freiheitsgrad).Ein passive Transformation tritt beispielsweise auf, wenn ein Roboter an der Wand oderan der Decke montiert ist, und deswegen zunächst das Referenzkoordinatensystem, des-sen z–Achse üblicherweise anti–parallel zum Gravitätsvektor definiert ist, entsprechendgedreht werden muß. Ein weiteres Beispiel für eine passive Transformation ist die Um-rechnung zwischen Flansch– und Werkzeugkoordinatensystem. Bei Austausch des Werk-zeugs am Roboterflansch ändert sich üblicherweise die Lage der Werkzeugspitze und damitauch diese Transformation. Aus diesen Gründen können eine Reihe von Industrieroboternnicht mit diesen Projekten modelliert werden und eine allgemeine Anwendbarkeit ist nichtgegeben. In dieser Arbeit wird auch die Denavit–Hartenberg Konvention verwendet. Eswerden sowohl passive Transformationen als auch Gelenkwinkeloffsets unterstützt.

Kinematisches Robotermodell: Viele dieser Projekte können anhand von Denavit–Hartenberg Parametern die direkte Kinematik berechnen. Beispielsweise können Oscar,Roboop und Matlab Robotics Toolbox die direkte Kinematik numerisch berech-nen, während Robotica die direkte Kinematik sowohl numerisch als auch symbolisch

Page 41: Automatische Konfiguration der Bewegungssteuerung von

3.6. Bewertung und Vergleich der Systeme 31

berechnen kann. Jedoch kann keines dieser Projekte eine geschlossene Lösung der inversenKinematik für beliebige, nicht kinematisch redundante Manipulatoren bestimmen. Einenäherungsweise Lösung mit Hilfe der Newton–Raphson Technik [63] ist bei Oscar, Ro-

boop, Matlab Robotics Toolbox, RTSS und Mandy implementiert. Nachteil diesesVerfahrens ist, dass es nur konvergiert, wenn keine Singularität auftritt und die Start–und Zielkonfiguration genügend dicht beeinander liegen. Deswegen müssen bei Punkt–zu–Punkt Bewegungen Anfangs– und Endpunkt entsprechend dicht gelegt werden. Synthe-

tica verwendet den Levenberg–Marquardt Algorithmus, der allerdings nicht so schnell wiedas Newton–Raphson Verfahren konvergiert. Bei manchen Projekten kann der Benutzerdas kinematische Robotermodell von Hand bestimmen und über eine Anwendungspro-grammierschnittstelle in das System einbinden, zum Beispiel bei den Projekten Microb,Robotect, EASY–ROB und Robomosp. Bei der manuellen Herleitung besteht aller-dings die Gefahr, dass Lösungen fehlerhaft sind oder übersehen werden. Außerdem istdiese Herleitung sehr aufwändig und kompliziert.

Dynamisches Robotermodell: Eine Reihe von Projekten verwenden Blockschaltbilde-ditoren, um das dynamische Modell aufzustellen, zum Beispiel Dymola und DynaFlex-

Pro. Bei diesen Projekten ist in einer Bibliothek eine große Bandbreite an Funktions-blöcken und Automatisierungskomponenten integriert. Durch das Plazieren und Verschal-ten von Blöcken kann der Benutzer das System konfigurieren. Blockschaltbilder sind eingutes Mittel, um Signalflüsse und Zusammenhänge zwischen Aus– und Eingangsgrößengraphisch zu beschreiben. Bei größeren Systemen werden Blockschaltbilder allerdings sehrunübersichtlich. Außerdem lässt sich die mechanische Struktur von Robotern mit Block-schaltbildern nur schwer beschreiben. Für die Erstellung dieser Beschreibung sind Tabel-len und Formulare besser geeignet. In mehreren Projekten, die die Dynamik berechnen,sind keine Reibungskräfte vorgesehen, zum Beispiel in Oscar, DynaFlexPro und Ne-

wEul.

Trajektoriengenerierung: In manchen Projekten, zum Beispiel in Robotica oderDynaFlexPro, sind keine Trajektoriengenerierungsalgorithmen verfügbar, sondern müs-sen vom Benutzer manuell hinzugefügt werden. Oscar, Matlab Robotics Toolbox

und RTSS implementieren Algorithmen zur Trajektoriengenerierung im Gelenkwinkel-raum auf Basis von Polynomfunktionen, wie sie beispielsweise von Craig [31] beschriebenwerden. Nachteilig ist hierbei, dass Interpolationspolynome mit hohem Grad bei vielenStützpunkten zum Überschwingen neigen. Außerdem muss der Benutzer die Zeitdauer derBewegung vorgeben. Wird die Zeitdauer als zu hoch gewählt, so werden die Maximalge-schwindigkeiten und –beschleunigungen der Antriebe nicht ausgenutzt. Wird die Zeitdauerals zu klein gewählt, kann die Trajektorie nicht durchgeführt werden. Algorithmen, diezeitoptimale und ruckbegrenzte Trajektorien generieren, sind deswegen vorzuziehen. Inmanchen Projekten ist das Geschwindigkeitsprofil trapezförmig, zum Beispiel in ManDy

und Microb. Der Nachteil ist hierbei, dass die zeitliche Ableitung der Beschleunigungunendlich groß wird und deswegen der Manipulator sprunghaft beschleunigt und abge-bremst wird. Um ruckfreie Bewegungen zu generieren, sollte nicht das Geschwindigkeits–,sondern das Beschleunigungsprofil trapezförmig sein.

Bewegungssteuerung: Viele dieser Projekte konzentrieren sich nur auf Teilaspekte ei-ner Bewegungssteuerung und berücksichtigen die notwendigen Funktionalitäten nicht inihrer Gesamtheit. Beispielsweise beschränken sich DynaMechs und NewEul auf dieBestimmung des dynamischen Modells von Mehrkörpersystemen. Ebenfalls fehlt bei denmeisten Projekten ein Interpreter für Roboterprogramme.

Page 42: Automatische Konfiguration der Bewegungssteuerung von

32 Kapitel 3. Aktueller Stand der Forschung

Tabelle 3.1 Gegenüberstellung der Systeme

Ope

n–So

urce

–So

ftw

are

Nut

z–/

Ver

fügb

arke

it

Ech

tzei

tanf

or-

deru

ngen

Den

avit

–H

arte

nber

g

New

ton–

Rap

hson

Lag

rang

eV

erfa

hren

New

ton–

Eul

erV

erfa

hren

Rob

oter

Inte

rpre

ter

1. Orocos X X X2. Oscar X X X X3. Roboop X X X X X4. Robotics Toolbox X X X X X5. RTSS X X X X X6. PMT X X X7. ManDy X X X X X X8. Microb X X X X9. Synthetica X X X X

10. Robotect X X11. RobotDraw X X12. IKAN X X13. SRAST X14. Robotran X X15. Robotica X X16. JFKengine X17. Linkage Designer X X18. SpaceLib X X X X19. Dymola X X20. DynaFlexPro X X X21. NewEul X X22. MBSymba X X X X23. Adams X X24. DynaMo X X25. MBDyn X X X X26. ODE X X27. DynaMechs X X X28. EasyDyn X X29. EASY–ROB X X X X30. eM–Workplace X X31. Robomosp X X X X32. Cosimir X X X33. Igrip X X34. MS Robotics Studio X

Page 43: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 4

Bestimmung des kinematischenRobotermodells

In diesem Kapitel wird beschrieben, wie die Herleitung des kinematischen Modells für einebeliebige serielle Kinematik automatisch durchgeführt wird. Zunächst wird der Manipu-lator mit Denavit–Hartenberg Parametern beschrieben (Abschnitt 4.1) und das direktekinematische Problem gelöst (Abschnitt 4.2). Anschließend werden wissensbasierte Metho-den (Abschnitt 4.3) und algebraische Eliminationsmethoden (Abschnitt 4.4) angewendet,um das inverse kinematische Problem systematisch zu lösen. Darüber hinaus wird daskinematische Modell auch geometrisch bestimmt (Abschnitt 4.5). Dadurch können dieerzeugten mathematischen Modelle sehr gut miteinander verglichen und validiert werden.Außerdem werden durch die Reduktion des Problems auf geometrische Teilprobleme an-schaulichere Lösungen generiert als bei der Lösung eines nichtlinearen Gleichungssystems.Schließlich wird in Abschnitt 4.6 die Jacobi–Matrix für allgemeine Kinematiken bestimmt.

Kinematik (griech.: kinema = Bewegung) ist die mathematische Beschreibung von Bewe-gungsabläufen ohne Berücksichtigung der Kräfte, die die Bewegung verursachen. Dabeigibt es zwei kinematische Teilprobleme. Mit der direkten Kinematik beziehungsweise mitder Vorwärtstransformation wird anhand eines n–dimensionalen Gelenkvariablenvektorsdie Position und Orientierung des Endeffektors im Basiskoordinatensystem des Robotersbestimmt. Für das direkte Problem einer seriellen Kinematik gibt es immer eine eindeutigeLösung, die sich in der Regel relativ einfach durch Matrizenmultiplikation bestimmen läßt.Das hierzu inverse Problem ist für serielle Kinematiken im Allgemeinen sehr kompliziertzu bestimmen, da es sich um ein nichtlineares Inversionsproblem handelt (Abbildung 4.1).Für die inverse Kinematik beziehungsweise für die Rückwärtstransformation kann es keineLösung geben, zum Beispiel liegt die Zielpose außerhalb des Arbeitsraums, eine Lösung,zum Beispiel liegt die Zielpose am Rande des Arbeitsraums, endlich viele Lösungen oderunendlich viele Lösungen. Die genaue Anzahl von Lösungen hängt sowohl von Hindernis-sen, der Manipulatorgeometrie als auch von der gegebenen Pose des Endeffektors ab.

Abbildung 4.1 Direkte und inverse Kinematik

Inverse Kinematik

Direkte Kinematik

Kartesischer Raum6 Variablenx, y, z, α, β, γ

Gelenkwinkelraumn Variablenq1, . . . , qn

relativ zum Benutzer relativ zum Roboter

Page 44: Automatische Konfiguration der Bewegungssteuerung von

34 Kapitel 4. Bestimmung des kinematischen Robotermodells

Tsai und Morgan [169, 180] waren die ersten Autoren, die annahmen, dass die inverse Ki-nematik eines allgemeinen, seriellen Roboters mit sechs Freiheitsgraden im kartesischenRaum bis zu 16 Lösungen haben kann. Sie konvertieren zunächst die kinematischen Glei-chungen in Polynomialgleichungen und transformierten dann diese Gleichungen in achtquadratische Gleichungen mit acht Unbekannten. Die Nullstellen dieser Gleichungen be-stimmten sie mit der sogenannten Fortsetzungsmethode [1] numerisch. Motiviert durchdieses Ergebnis hat Primrose [144] wissenschaftlich bewiesen, dass die obere Anzahl vongeschlossenen Lösungen tatsächlich 16 ist. Außerdem zeigte er, dass es neben 16 realenauch 16 imaginäre Lösungen geben kann. Lee und Liang [87] zeigten, dass das Problem derinversen Kinematik eines sechsachsigen Roboters in ein univariates Polynom vom Grade16 transformiert werden kann. Die Nullstellen dieses Polynoms können nur numerisch be-stimmt werden. Raghaven und Roth [147] haben das Problem ebenfalls in eine Menge vonPolynomgleichungen umgewandelt. Eine weitere Lösung stammt von Manocha and Canny[94, 95, 96]. Sie transformierten das Problem in ein Problem zur Bestimmung der Eigen-werte und Eigenvektoren einer Matrix. Manseur und Doty [100] präsentierten den erstenManipulator der tatsächlich die maximale Anzahl von Lösungen erreicht. Dadurch habensie den Beweis, dass 16 die maximale Anzahl von Lösungen für Roboterarme mit sechsFreiheitsgraden ist, abgeschlossen. Im Bereich der Parallelkinematiken zeigte Raghavan[146] durch Anwendung der Fortsetzungsmethode, dass es 40 Lösungen für die direkte Ki-nematik einer allgemeinen Stewart–Gough–Plattform gibt. Husty [77] kam zu demselbenErgebnis, indem er eine univariate Polynomgleichung vom Grade 40 ermittelte.

Die inverse Kinematik kann numerisch oder analytisch bestimmt werden. Bei numerischenVerfahren treten Probleme auf. Sie sind sehr rechenintensiv und ermitteln immer nur eineKonfiguration gegebenenfalls unter Einhaltung von Nebenbedingungen. Die Anzahl dererforderlichen Iterationen und damit die Anzahl der nötigen arithmetischen Operatio-nen kann stark variieren und nicht im Voraus bestimmt werden. Numerische Verfahrenbestimmen häufig nur die zum gewählten Startpunkt nächstliegende Lösung und das Auf-finden einer Lösung ist oft nicht garantiert. Numerische Verfahren sind sehr anfällig fürSingularitäten, das heißt dass sie in bestimmten Fällen numerisch instabil sind und os-zillieren, obwohl es unendlich viele Lösungen geben kann. Bei einer numerischen Lösungist es möglich, dass bei der Ausführung eines Roboterprogramms in einer Simulationsum-gebung es zu keiner Kollision kommt, und bei der Ausführung desselben Programms aufeiner Robotersteuerung es eine Kollision gibt. Die Ursache hierfür ist, dass jeweils andereGelenkkonfigurationen auftreten. Numerische Methoden wurden von Kelmar und Khosla[86], Höpler und Otter [74, 75] sowie in einigen Projekten (Abschnitt 3.1) implementiert.

Analytische Verfahren zur Bestimmung der Rückwärtstransformation werden angestrebt,da sie exakte Ergebnisse liefern und ihr Berechnungsaufwand niederer als der von nume-rischen Lösungen ist. Da im Voraus die erforderliche Anzahl arithmetischer Operationenbestimmt werden kann und diese Anzahl sich nicht ändert, sind die Rechenzeiten fürgeschlossene Lösungen konstant. Geschlossene Lösungen sind daher für Echtzeitsystemebesser geeignet. Zudem liefern sie alle Konfigurationen, das heißt alle möglichen Gelenk-stellungen bei gleicher Pose des Endeffektors. Es können detaillierte Aussagen über dasGelenkverhalten getroffen und die Bahnplanung optimiert werden. Dabei ist zu beachten,dass eine ausgewählte Konfiguration nur an geeigneten Stellen gewechselt werden kann.Zur Erkennung von Kollisionen sind analytische Lösungen ebenfalls günstiger. Bei analy-tischen Lösungen kann es im Gegensatz zu numerischen Lösungen keine Approximierungs-fehler geben. Rundungsfehler können nur bei einer numerischen Ausführung auftreten.

Page 45: Automatische Konfiguration der Bewegungssteuerung von

35

Analytische Verfahren werden in geometrische und algebraische Verfahren eingeteilt. Geo-metrische Verfahren basieren auf geometrischen Überlegungen und trigonometrischen Be-ziehungen, beispielsweise der Anwendung von Kosinussatz und Sinussatz. Sie erfordernallerdings eine hohe Intuition und Erfahrung von Seiten des Entwicklers und bei der Her-leitung sind viele geometrische Fallunterscheidungen nötig. Diese graphischen Verfahrenwerden aufwändig von Hand durchgeführt und sind nur für spezielle Robotertypen geeig-net. Bei algebraischen Verfahren muss ein hochgradig nichtlineares Gleichungssystem mitbis zu sechs unbekannten Gelenkvariablen gelöst werden. Dadurch erhält man wie beimgeometrischen Verfahren eine geschlossene Lösung und auch etwaige Mehrfachlösungen.Die Schwierigkeit beim algebraischen Verfahren besteht in der Auflösung der Gleichungennach einer oder zwei der unbekannten Gelenkvariablen. Allerdings müssen diese transzen-denten Gleichungen nur einmal und offline für einen gegebenen Robotertyp gelöst werden.

Bei einer seriellen Kinematik mit sechs Bewegungsachsen gibt es in der Regel unterschied-lich viele Gelenkstellungen bei gleicher Lage des Endeffektors (Tabelle 4.1). Bei einemGelenkarmroboter mit Zentralhand kann es bis zu acht unterschiedliche Gelenkkonfigu-rationen für eine bestimmte Endeffektorlage geben. Bei einem kinematisch redundantenRoboter gibt es keine geschlossene Lösung für die inverse Kinematik, da das Positions–und Orientierungsproblem auf unendlich verschiedene Weisen lösbar ist. Kinematisch red-undant sind zum Beispiel Roboter mit zwei parallelen Translationsachsen oder mit dreiTranslationsachsen, die in einer Ebene liegen oder Roboter mit vier Translationsachsen.

Tabelle 4.1 Analytische Lösbarkeit der inversen Kinematik eines seriellen Manipulators

Robotertyp obere Anzahl an Lösungenkinematisch redundant ∞

6R, 5R1T 164R2T, 6R mit Zentralhand 8

3R3T 2

Um die Entwicklung von Steuerungssoftware zu vereinfachen, werden die Gelenkachsenheutiger Industrieroboter meistens parallel oder rechtwinklig und nicht windschief zu-einander angeordnet. Manseur and Doty [101, 102] zeigten, dass Roboter mit fünf Ro-tationsachsen geschlossen gelöst werden können, sofern mindestens zwei aufeinanderfol-gende Achsen sich schneiden oder parallel zueinander sind. Ein allgemeiner sechsachsigerRoboter kann nicht geschlossen gelöst werden, allerdings können bestimmte Geometrienanalytisch gelöst werden. Pieper [140] bestimmte in seiner Dissertation solche günstige Ro-botergeometrien bei denen die Gelenkachsen voneinander entkoppelt sind. Mathematischbetrachtet lassen sich dadurch unbekannte Gelenkvariablen gut isolieren. Hierzu gehörenbeispielsweise Roboter bei denen drei aufeinander folgende Achsen sich in einem Punktschneiden, wie zum Beispiel bei Robotern mit Zentralhand oder Roboter bei denen dreiaufeinander folgende Achsen parallel sind, wie zum Beispiel bei SCARA–Robotern. Diemeisten Industrieroboter werden heute so entworfen, dass sie mindestens eines der beidenKriterien erfüllen. Tourassis und Ang [168] bestimmten weitere Robotergeometrien, beidenen die Gelenkachsen entkoppelt sind und somit eine geschlossene Lösung der inver-sen Kinematik ermittelt werden kann. Hollerbach [73] zeigte, wie die Gelenkachsen vonredundanten Robotern mit sieben Gelenkachsen optimal angeordnet werden können.

Page 46: Automatische Konfiguration der Bewegungssteuerung von

36 Kapitel 4. Bestimmung des kinematischen Robotermodells

4.1 Modellierung offener, kinematischer Ketten

Um einen Roboter kinematisch zu beschreiben, wird die Denavit–Hartenberg Konvention(DH) [34, 35], die erstmals 1955 vorgeschlagen wurde, verwendet. Die DH–Konvention istdie kompakteste Darstellung der Geometrie eines Manipulators, da lediglich vier Parame-ter pro Gelenkachse notwendig sind. Hierbei wird nur die räumliche Lage der Gelenkachsenzueinander betrachtet. Von der konkreten Form der Gelenkglieder wird abstrahiert.

Zunächst beschreibt der Benutzer mit dem graphischen Konfigurationswerkzeug (Ab-schnitt 6.2), das im Rahmen dieser Arbeit entwickelt wurde, die mechanische Struktureines Roboters. Durch das Ausfüllen der dafür vorgesehenen Felder kann er beispielsweisedie Anzahl und Typen der Gelenkachsen sowie deren Anordnung festlegen. In jede Ge-lenkachse wird anhand dieser Beschreibung automatisch ein körperfestes, orthonormalesKoordinatensystem nach bestimmten Regeln gelegt. Der Manipulator wird hierzu in derNullstellung aller Gelenke betrachtet. Eine gewisse Wahlfreiheit bleibt bei der Zuordnungder Koordinatensysteme zu den Gelenkachsen dennoch erhalten. In die Basis des Mani-pulators wird ein ortsfestes Ausgangskoordinatensystem gelegt. Die Gelenkachsen werdenvon 1 bis n durchnummeriert. In einem iterativen Prozess wird das KoordinatensystemKSi mit Hilfe von KSi−1 bestimmt. Dabei wird unterschieden, ob die Gelenkachsen par-allel oder rechtwinklig zueinander angeordnet sind und sich schneiden beziehungsweisenicht schneiden. Die zi–Achse wird in die Gelenkachse i + 1, welches Glied i und i + 1verbindet, gelegt. Für ein Translationsgelenk ist die Richtung der zi–Achse in Richtungder Bewegung weg vom Gelenk definiert. Für ein Rotationsgelenk ist die Richtung derzi–Achse durch die positive Drehrichtung um die Drehachse definiert.

• Festlegung der xi–Achse bei sich schneidenden Gelenkachsen:Wenn sich die Achsen schneiden, existiert keine eindeutige gemeinsame Normale,und die xi–Achse wird parallel oder anti–parallel zum Kreuzprodukt der z–Achsendes letzten und des aktuellen Gliedes gelegt. In vielen Fällen zeigt dann die xi–Achse in die gleiche Richtung wie die xi−1–Achse des vorhergehenden Gliedes. DerUrsprung von KSi wird in den Schnittpunkt der Achsen zi und zi−1 gelegt.

• Festlegung der xi–Achse bei sich nicht schneidenden, orthogonalen Gelenkachsen:Wenn sich die Gelenkachsen zi und zi−1 nicht schneiden und auch nicht parallelverlaufen, wird die gemeinsame Normale (kürzeste Verbindungsstrecke) zwischendiesen beiden Gelenkachsen gesucht. Die xi–Achse wird in Richtung der gemeinsa-men Normalen und von KSi−1 wegweisend gelegt. Der Ursprung von KSi wird inden Schnittpunkt der Normalen mit der Achse zi gelegt.

• Festlegung der xi–Achse bei echt parallelen Gelenkachsen:Für diesen Fall ist die Richtung der xi–Achse eindeutig definiert. Die xi–Achse wirdentlang der gemeinsamen Normalen von zi und zi−1, und von zi−1 wegweisend gelegt.Oft ist dies die Richtung der mechanischen Verbindung des Armteiles zwischen denGelenkachsen i und i + 1. Das Gemeinlot ist nicht eindeutig bestimmt und derUrsprung von KSi auf der zi–Achse ist frei wählbar.

Durch diese Festlegungen steht die xi–Achse senkrecht zur zi−1–Achse und schneidet diezi−1–Achse. Unter Umständen wird auch eine Transformation vom Flansch– zum Endef-fektorkoordinatensystem benötigt. Der Ursprung von KSn wird in den Tool Center Point(TCP) gelegt. Die yi–Achse wird so definiert, dass sich ein rechtshändiges kartesisches

Page 47: Automatische Konfiguration der Bewegungssteuerung von

4.1. Modellierung offener, kinematischer Ketten 37

Koordinatensystem ergibt. Sie wird durch das Kreuzprodukt ermittelt. Für den Fall, dassdie Achsen zi und zi−1 „zusammen fallen“, das heißt die beiden Achsen haben unendlichviele Punkte gemeinsam, ist der Manipulator kinematisch redundant. Da diese Achsan-ordnung nicht sinnvoll ist, wird dieser Fall von dem Konfigurationswerkzeug abgefangen.Für den Spezialfall, dass die Achsen zi und zi−1 windschief zueinander liegen, sind die Ko-ordinatensysteme von Hand zu bestimmen. Allerdings kommt dieser Fall eher selten vor.Im nächsten Schritt werden anhand dieser Zuordnung Relativ–Transformationen zwischenbenachbarten Koordinatensystemen bestimmt. Hierfür wird jedes Gelenk mit einem Satzvon vier Parametern beschrieben (θi, di, ai, αi), der eindeutig die Lage des i–ten Koordina-tensystems bezüglich des (i−1)–ten angibt. Zwei Parameter beziehen sich auf Rotationenund zwei auf Translationen.

• Der Gelenkwinkel θi (engl.: joint angle) ist der Winkel, um den man die erste Achsexi−1 um die zi−1–Achse drehen muss, damit sie parallel zur zweiten Achse xi wird.Manchmal wird ein konstruktionsbedingter konstanter Wert (Gelenkwinkeloffset)hinzuaddiert, um in der Nullstellung die Achse xi−1 in die Achse xi zu überführen.

• Die Hebelverschiebung di (engl.: link offset) ist der kürzeste Abstand der Achsenxi−1 und xi entlang der zi−1–Achse.

• Die Hebellänge ai (engl.: link length) ist die gemeinsame Normale der beiden Achsenzi−1 und zi, also der kürzeste Abstand der Achsen zi−1 und zi entlang der xi–Achse.

• Die Hebeldrehung beziehungsweise Armelementverwindung αi (engl.: link twist) istder Winkel, um den man die erste Achse zi−1 um die xi–Achse drehen muss, damitsie parallel zur zweiten Achse zi wird. Dies ergibt also den Neigungswinkel der beidenAchsen am Glied i.

Eine Translation entlang beziehungsweise Rotation um die yi−1– oder yi–Achse wird nichtausgeführt. Um die DH–Parameter automatisch zu bestimmen, wurde folgendes Exper-tenwissen in Regelform gebracht.

• Bei einem aktiven Gelenk ist ein DH–Parameter variabel, während die anderenkonstant sind.

• Bei einem passiven Gelenk sind alle DH–Parameter konstant.

• Ist das Gelenk i ein Rotationsgelenk, so ist der Drehwinkel θi die veränderlicheGelenkvariable.

• Ist das Gelenk i ein Translationsgelenk, so ist der Translationsweg di die veränder-liche Gelenkvariable.

• Die DH–Parameter ai und αi sind immer konstante Konstruktionsparameter.

• Ist das Gelenk i nicht rotatorisch und die Achsen xi−1 und xi parallel zueinander,so ist θi = 0◦ (beziehungsweise θi = 180◦, wenn die beiden Achsen anti–parallelzueinander sind).

• Ist das Gelenk i nicht translatorisch und die Achsen xi−1 und xi schneiden sich, soist di = 0.

• Schneiden sich die Achsen zi−1 und zi, so ist ai = 0.

Page 48: Automatische Konfiguration der Bewegungssteuerung von

38 Kapitel 4. Bestimmung des kinematischen Robotermodells

• Sind die Achsen zi−1 und zi parallel zueinander, so ist αi = 0◦ (beziehungsweiseαi = 180◦, wenn die beiden Achsen anti–parallel zueinander sind).

Nachdem die DH–Parameter anhand der Lage der lokalen Koordinatensysteme und mitHilfe dieser Regeln bestimmt wurden, werden sie in eine Tabelle eingetragen. Als nächsteswird eine Menge von Transformationsmatrizen bestimmt. Die Transformation von Koor-dinatensystem KSi−1 zu KSi wird als homogene 4×4 Transformationsmatrix dargestellt,bestehend aus einer 3×3 Rotationsmatrix und einem 3×1 Verschiebungsvektor [106]. Diei–te Transformationsmatrix überführt mit vier nacheinander ausgeführten elementarenTransformationen das Koordinatensystem KSi−1 in das nachfolgende KoordinatensystemKSi. Zuerst wird dabei mit dem Winkel θi um die zi−1–Achse gedreht und danach entlangder zi−1–Achse um den Wert di verschoben. Anschließend wird entlang der xi–Achse umden Wert ai verschoben und schließlich mit dem Winkel αi um die xi–Achse gedreht.

Ti−1,i = Rot(zi−1, θi) ∗ Trans(zi−1, di) ∗ Trans(xi, ai) ∗ Rot(xi, αi) (4.1a)

=

⎛⎜⎜⎝

cos θi − sin θi 0 0sin θi cos θi 0 0

0 0 1 di

0 0 0 1

⎞⎟⎟⎠ ∗

⎛⎜⎜⎝

1 0 0 ai

0 cos αi − sin αi 00 sin αi cos αi 00 0 0 1

⎞⎟⎟⎠ (4.1b)

=

⎛⎜⎜⎝

cos θi − cos αi · sin θi sin αi · sin θi ai · cos θi

sin θi cos αi · cos θi − sin αi · cos θi ai · sin θi

0 sin αi cos αi di

0 0 0 1

⎞⎟⎟⎠ (4.1c)

Diese Transformationsmatrix ist vergleichsweise einfach aufgebaut und ist immer inver-tierbar. Die entsprechende inverse Transformation wird durch folgende Matrix bestimmt.

Ti,i−1 =

⎛⎜⎜⎝

cos θi sin θi 0 −ai

− cos αi · sin θi cos αi · cos θi sin αi −di · sin αi

sin αi · sin θi − sin αi · cos θi cos αi −di · cos αi

0 0 0 1

⎞⎟⎟⎠ (4.2)

4.2 Bestimmung der direkten KinematikMit der Vorwärtstransformation wird die Position und Orientierung des Endeffektors imBasiskoordinatensystem des Roboters in Abhängigkeit der Gelenkvariablen bestimmt. Fürdas direkte kinematische Problem gibt es bei seriellen Kinematiken immer eine geschlos-sene und eindeutige Lösung. Die Gesamttransformation wird durch Multiplikation derhomogenen 4×4–Transformationsmatrizen berechnet [155]. Diese Matrixmultiplikationenkönnen sowohl symbolisch als auch numerisch durchgeführt werden. In dieser Arbeit wirddie resultierende Matrix symbolisch berechnet und die Terme weitestgehend vereinfacht,um eine geschlossene und kompakte Darstellung zu erhalten. Die Lage des Endeffektorswird bei gegebenem Gelenkvariablenvektor �q durch Gleichung (4.3) bestimmt.

T0,n(�q) =n∏

i=1

Ti−1,i(qi) =

(�n �o �a �p0 0 0 1

)=

⎛⎜⎜⎝

nx ox ax px

ny oy ay py

nz oz az pz

0 0 0 1

⎞⎟⎟⎠ (4.3)

Dabei wird die Position des Endeffektors durch den Vektor �p und die Orientierung desEndeffektors durch die drei orthogonalen Einheitsvektoren �n,�o und �a angegeben.

Page 49: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 39

4.3 Regelbasierte Lösung der inversen Kinematik

Die Rückwärtstransformation berechnet anhand einer vorgegebenen kartesischen Positionund Orientierung des Endeffektors die entsprechenden Gelenkkoordinaten zur Ansteue-rung der Antriebe eines Roboters. Diese Funktion nimmt eine zentrale Stellung in derRealisierung der Bewegungssteuerung ein. Die Lösung dieses Problems ist bei seriellenKinematiken sehr viel schwieriger als die Lösung des direkten kinematischen Problems.Bei kinematisch redundanten Robotern gibt es keine geschlossene Lösung.

Zur Bestimmung der inversen Kinematik müssen die Gleichungen der direkten Kine-matik nach den unbekannten Gelenkkoordinaten aufgelöst werden. Diese transzenden-ten Gleichungen sind jedoch untereinander gekoppelt und können aufgrund ihrer star-ken Nichtlinearität nicht direkt gelöst werden. Deswegen besteht das weitere Vorgehendarin, die Gleichungen der Vorwärtstransformation in vielen verschiedenen Möglichkei-ten anzuordnen, um einfacher zu lösende Gleichungen zu erhalten und unbekannte Ge-lenkvariablen zu isolieren. Obwohl es sich um zwölf Gleichungen mit bis zu sechs unbe-kannten Gelenkvariablen handelt, können diese Gleichungen auf sehr viele unterschied-liche Arten dargestellt werden. Dieses Vorgehen wurde erstmals von Paul, Renaud undStevenson vorgeschlagen [134]. Die einzelnen Transformationsmatrizen werden invertiert(T−1

i−1,i = Ti,i−1) und von rechts und links an die Gleichungen der Vorwärtstransformationmultipliziert. Für einen Manipulator mit sechs Freiheitsgraden und den Transformations-matrizen T01, T12, T23, T34, T45 und T56 sowie der homogenen Matrix R, die die Endeffek-torlage in kartesischen Koordinaten angibt, wird automatisch das Gleichungssystem inAbbildung 4.2 aufgestellt und dann regelbasiert gelöst. Hierbei handelt es sich natürlichum redundante Transformationen der Gleichungen der direkten Kinematik.

Die linke Seite jeder dieser Matrixgleichungen hängt von den unbekannten Gelenkvariablenqi, . . . , qj ab. Die rechte Seite hängt von den verbleibenden Gelenkvariablen q1, . . . , qi−1

und qj+1, . . . , qn sowie von der Position und Orientierung des Endeffektors ab. Jede dieserMatrixgleichungen liefert zwölf nichtlineare transzendente Gleichungen, die von den obe-ren drei Zeilen der 4×4 Matrizen stammen. Die vierte Matrizenzeile ist immer trivial undsomit vernachlässigbar. Während drei dieser Gleichungen von den Positionstermen stam-men, stammen die restlichen neun von den Orientierungstermen. Insgesamt werden bei nTransformationsmatrizen 12 ·n · (n+1)/2 Gleichungen generiert. Bei einem sechsachsigenRoboter entsteht auf diese Weise ein Gleichungssystem mit insgesamt 252 Gleichungen.

Dieses Vorgehen reduziert die Anzahl unbekannter Variablen in mehreren Gleichungenund damit auch die symbolische Komplexität der resultierenden Gleichungen. In einigenGleichungen taucht bei den meisten Industrierobotern nur noch eine unbekannte Variableauf. Dennoch sind diese Gleichungen in der Regel kompliziert zu lösen, da unbekannteGelenkwinkel in trigonometrischen Funktionen vorkommen. Das Hauptproblem ist nungünstige Gleichungen auszuwählen, die eine Lösung nach einer unbekannten Gelenkva-riablen zulassen. Das hierfür notwendige Expertenwissen über analytische Lösungen vontranszendenten Gleichungen wird in Form von deklarativen Regeln ausgedrückt und ineiner Wissensbasis in Form von Wenn/Dann–Regeln gespeichert. Jede Produktionsregelist einheitlich aufgebaut. Der Bedingungsteil ist ein Muster (engl.: Pattern), bestehendaus einer oder mehreren transzendenten Gleichungen. Der Aktionsteil ist eine Operati-on, die ausgeführt wird, wenn die Regel feuert. Die Operation besteht darin, eine Lö-sung mit einer unbekannten Gelenkvariablen zu assoziieren und auf Basis dieser Lösungdie kinematischen Gleichungen zu vereinfachen. Anders als die If/Then–Anweisungen in

Page 50: Automatische Konfiguration der Bewegungssteuerung von

40 Kapitel 4. Bestimmung des kinematischen Robotermodells

Abbildung 4.2 Automatische Generierung des kinematischen Gleichungssystems (n = 6)

T01 ∗ T12 ∗ T23 ∗ T34 ∗ T45 ∗T56 = RT01 ∗ T12 ∗ T23 ∗ T34 ∗ T45 ∗ = R ∗ T65 ∗T01 ∗ T12 ∗ T23 ∗ T34 ∗ = R ∗ T65 ∗ T54 ∗T01 ∗ T12 ∗ T23 ∗ = R ∗ T65 ∗ T54 ∗ T43 ∗T01 ∗ T12 ∗ = R ∗ T65 ∗ T54 ∗ T43 ∗ T32 ∗T01 ∗ = R ∗ T65 ∗ T54 ∗ T43 ∗ T32 ∗ T21 ∗

T12 ∗ T23 ∗ T34 ∗ T45 ∗T56 = T10 ∗ RT12 ∗ T23 ∗ T34 ∗ T45 ∗ = T10 ∗ R ∗ T65 ∗T12 ∗ T23 ∗ T34 ∗ = T10 ∗ R ∗ T65 ∗ T54 ∗T12 ∗ T23 ∗ = T10 ∗ R ∗ T65 ∗ T54 ∗ T43 ∗T12 ∗ = T10 ∗ R ∗ T65 ∗ T54 ∗ T43 ∗ T32 ∗

T23 ∗ T34 ∗ T45 ∗T56 = T21 ∗ T10 ∗ RT23 ∗ T34 ∗ T45 ∗ = T21 ∗ T10 ∗ R ∗ T65 ∗T23 ∗ T34 ∗ = T21 ∗ T10 ∗ R ∗ T65 ∗ T54 ∗T23 ∗ = T21 ∗ T10 ∗ R ∗ T65 ∗ T54 ∗ T43 ∗

T34 ∗ T45 ∗T56 = T32 ∗ T21 ∗ T10 ∗ RT34 ∗ T45 ∗ = T32 ∗ T21 ∗ T10 ∗ R ∗ T65 ∗T34 ∗ = T32 ∗ T21 ∗ T10 ∗ R ∗ T65 ∗ T54 ∗

T45 ∗T56 = T43 ∗ T32 ∗ T21 ∗ T10 ∗ RT45 ∗ = T43 ∗ T32 ∗ T21 ∗ T10 ∗ R ∗ T65 ∗

T56 = T54 ∗ T43 ∗ T32 ∗ T21 ∗ T10 ∗ R

konventionellen Programmiersprachen haben Regeln keinen Else–Zweig und dürfen nichtineinander geschachtelt werden. Außerdem handelt es sich bei der Bedingung um ein Pat-tern und nicht um einen booleschen Ausdruck. Dieses regelbasierte System zur Lösungder kinematischen Gleichungen ist modular aufgebaut. Die einzelnen Komponenten sind:

Wissensbasis: Spezielles Wissen über die Lösung transzendenter Gleichungen in Formeiner Sammlung von Produktionsregeln. Jede Regel hat einen Bedingungsteil (engl.:left hand side) und einen Aktionsteil (engl.: right hand side) und ist unabhängig vomaktuell betrachteten Robotertyp gültig. Die Wissensbasis kann leicht um zusätzlicheRegeln erweitert werden, um mehr Gleichungstypen lösen zu können.

Arbeitsspeicher: Globale Datenbasis, die die Fakten enthält. Die Fakten repräsentierenin symbolischer Form die kinematischen Gleichungen des momentan betrachtetenRoboters. Fakten und Regeln sind daher voneinander getrennt. Durch Anwendungdes Aktionsteils von Regeln wird der Inhalt des Arbeitsspeichers geändert.

Regelinterpreter / Inferenzmaschine: Komponente, die die in der Wissensbasis ge-speicherten Regeln identifiziert, deren Bedingungsteil hinsichtlich der Gleichungenim Arbeitsspeicher erfüllt ist. Ist der Bedingungsteil einer Regel vollständig erfüllt,so wird eine sogenannte Instantiierung in die Konfliktmenge aufgenommen. Eine In-stantiierung ist die Kombination einer Regel mit den Fakten, die sie erfüllt. Diese In-ferenzmethode, die ausgehend von Fakten durch Symbolverarbeitung entsprechendeSchlußfolgerungen zieht, wird auch als Vorwärtsverketttung (engl.: forward chaining)beziehungsweise datengetriebene Inferenz (engl.: data driven inference) bezeichnet.

Page 51: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 41

Konfliktmenge / Agenda: Ungeordnete Menge von Regelinstantiierungen, die vomRegelinterpreter erzeugt wird. Insbesondere enthält die Konfliktmenge alle die Re-geln, die potentiell angewendet werden können. Die Agenda kann auch leer sein.

Konfliktlösungsstrategie: Komponente, die eine Instantiierung aus der Konfliktmengeauswählt. Für diesen Zweck sind unterschiedliche Strategien denkbar und ergebensich aus der Anwendung. Beispielsweise werden Instantiierungen in der Reihenfolgeihrer Aufnahme in die Agenda, nach der Spezifität der Bedingungsteile der instanti-ierten Regeln, nach dem Zufallsprinzip oder durch übergeordnetes Metawissen aus-gewählt. In diesem System wird die nächste anzuwendende Regel auf der Grundlagevon Prioritäten (engl.: salience) bestimmt. Der Aktionsteil der anwendbaren Re-gel mit der höchsten Priorität wird vor den Aktionsteilen von Regeln mit niedererPriorität ausgeführt. Das Anwenden einer Regel wird auch als Feuern bezeichnet.

Erklärungskomponente: Komponente über die der Anwender bei Bedarf Erklärungenüber das Zustandekommen der Lösungen erhält. Indem die angewendeten Regelnund die Reihenfolge ihrer Anwendung angezeigt und als LATEX–Dokumentation aus-gegeben werden, kann der Benutzer nachverfolgen, wie eine Lösung bestimmt wurde.Die Arbeitsweise des Systems wird hierdurch dem Benutzer transparent gemacht.

Benutzerschnittstelle: Steuerung des Dialogs mit dem Benutzer. Der Benutzer liefertals Eingabe eine Beschreibung der mechanischen Struktur eines Roboters. Die Dia-logkomponente ist zweckmäßigerweise mit der Erklärungskomponente gekoppelt.

Damit ergibt sich der folgende Ausführungszyklus zur Lösung der kinematischen Glei-chungen (Abbildung 4.3). Zunächst werden die Gleichungen im Arbeitsspeicher in einekanonische Darstellung transformiert. Es werden diejenigen Regeln gesammelt, deren Prä-misse durch Gleichungen im Arbeitsspeicher vollständig erfüllt ist. Als nächstes werdenRegelinstantiierungen durch die Kombination einer Regel mit den Gleichungen, die sieerfüllt, gebildet und in die Konfliktmenge getan. Dieser Vorgang wird auch als PatternMatching bezeichnet. Sofern sich mehr als eine Instantiierung in der Konfliktmenge be-findet, so wird mit Hilfe von Konfliktlösungsstrategien die nächste anzuwendende Regelausgewählt. In jedem Durchlauf wird dabei genau eine aktivierte Regel zur Ausführunggebracht. Nach der Ausführung einer Regel wird die entsprechende Regelinstantiierungaus der Konfliktmenge gelöscht, um eine erneute Ausführung zu verhindern. Mit Hilfeder gefundenen Lösung werden die Gleichungen im Arbeitsspeicher vereinfacht. In demvereinfachten Gleichungssystem wird wiederum nach Gleichungen gesucht, die nach einerunbekannten Gelenkvariablen auflösbar sind. Diese Schritte werden solange wiederholtbis für alle Gelenkvariablen eine Lösung ermittelt werden konnte oder keine Regel mehranwendbar ist. Dieser Algorithmus terminiert immer für alle seriellen Robotertypen.

Jeder Regel ist eine Priorität zugewisen, um Konflikte zwischen Regeln aufzulösen. Re-geln, die eine eindeutige Lösung liefern, ist eine höhere Priorität assoziiert, als Regeln diezwei Lösungen liefern. Ein weiterer Grund für die Verwendung von Prioritäten ist, dass ge-wisse Regeln Lösungen produzieren, die in Echtzeit effizienter ausgewertet werden könnenals die von anderen Regeln. Können zwei Regeln mit gleicher Priorität feuern, so erfolgtdie Konfliktauflösung nach größter Aktualität, das heißt dass die zuletzt instantiierte Re-gel höher eingestuft wird als alle vorherig instantiierten Regeln derselben Priorität. DieseKonfliktlösungsstrategie wird auch als Depth bezeichnet. Bei der Strategie Breadth werdendie als erstes instantiierten Regeln höher eingestuft als die später instantiierten Regelnmit der gleichen Priorität. Der Ablauf der Regelauswertung ist somit deterministisch.

Page 52: Automatische Konfiguration der Bewegungssteuerung von

42 Kapitel 4. Bestimmung des kinematischen Robotermodells

Abbildung 4.3 Regelbasierte Architektur zur Lösung der kinematischen Gleichungen

Wissensbasis(Produktionsregeln)

Arbeitsspeicher(Gleichungen)

Pattern Matching

Konfliktauflösung

Regelaktivierung

Anwendungs–programm

Konfliktmenge

Regelauswahl

Hinzufügen /Entfernenvon Regeln

Modifikationder Gleichungen

4.3.1 Entwicklung einer Wissensbasis für trigonometrische Glei-chungen

In dieser Arbeit wurde eine Wissensbasis entwickelt, die die geschlossenen Lösungen vonhäufig vorkommenden kinematischen Gleichungen enthält. Mit Hilfe dieser Wissensbasiswerden die mathematischen Lösungen von den einzelnen Gelenkvariablen automatischgewonnen. Paul [133] und Wolovich [191] haben die Lösungen einer Reihe von trigonome-trischen Gleichungen theoretisch bestimmt. Diese und weitere Lösungen wurden in Formvon Lösungsregeln in die Wissensbasis aufgenommen. Insgesamt enthält die Wissensbasiszwölf Lösungsgleichungen, von denen elf sich auf trigonometrische Gleichungen beziehen.Bei der zwölften Regel handelt es sich um die Lösung von Polynomen ersten Grades.

Unbekannte Gelenkwinkel dürfen in den Produktionsregeln nicht über den Arcussinus oderArcuscosinus berechnet werden, da der Arcussinus nur Werte im Intervall [−π/2, π/2] undder Arcuscosinus nur Werte im Intervall [0, π] liefert. Außerdem ist der Definitionsbereichdieser beiden Arcusfunktionen auf das Intervall [−1, 1] beschränkt. Der Arcustangens lie-fert nur Werte im Intervall (−π/2, π/2), da die Tangensfunktion für Funktionswerte von±π/2 nicht umkehrbar ist. Um Lösungen nicht zu verlieren und beliebige Orientierungendes Endeffektors ausdrücken zu können, werden unbekannte Gelenkwinkel in den Lösungs-regeln über den erweiterten Arcustangens berechnet. Diese Funktion hat zwei Argumente,wobei das zweite Argument eigentlich der Nenner ist, welcher aber Null sein darf. DurchAuswertung der Vorzeichen der beiden Argumente dieser Funktion wird der Quadrant desErgebnisses bestimmt. Der erweiterte Arcustangens liefert so Werte im Intervall (−π, π].Falls beide Argumente der Arcustangens Funktion Null sind, so ist die Funktion mathe-matisch nicht definiert und diese Konfiguration für den Manipulator nicht zulässig.

Bei der Rückwärtstransformation kann es auch zwei Lösungen für einen unbekannten Ge-lenkwinkel geben. Diese Mehrfachlösungen liegen oft symmetrisch, das heißt ein Gelenkkann spiegelbildlich nach links oder nach rechts einknicken, um dieselbe Pose zu erreichen.Der ±–Operator in einigen Lösungen spiegelt diese Mehrdeutigkeit wieder. Falls bei der

Page 53: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 43

Berechnung der inversen Kinematik ein Radikand, das heißt der Wert unter einer Qua-dratwurzel, negativ wird oder eine Division durch Null stattfindet, reduziert sich die An-zahl der möglichen Gelenkkonfigurationen für diese kartesische Pose. Falls alle Lösungenverworfen werden müssen, liegt eine unerreichbare Zielpose vor. Die in der Wissensbasisgespeicherten transzendenten Gleichungen zusammen mit ihren symbolischen Lösungenwerden nun nach wachsender Komplexität aufgelistet und bewiesen.

Satz 4.1. Gegeben sind die beiden folgenden transzendenten Gleichungen mit den bekann-ten Termen a, b, c, d, wobei b �= 0 oder d �= 0 gilt. Unter der Randbedingung a �= 0 undc �= 0 existiert eine eindeutige Lösung für die unbekannte Gelenkvariable θi.

a · sin θi = b

c · cos θi = d=⇒ θi = arctan2

(b

a,d

c

)Beweis:. θi = arctan2(sin θi, cos θi) �

Satz 4.2. Gegeben sind die beiden folgenden transzendenten Gleichungen mit den bekann-ten Termen a, b, c, d, wobei c �= 0 oder d �= 0 gilt. Unter der Randbedingung a �= 0 undb �= 0 existiert eine eindeutige Lösung für die unbekannte Gelenkvariable θi.

a · cos θi − b · sin θi = c

a · sin θi + b · cos θi = d=⇒ θi = arctan2(a · d − b · c, a · c + b · d)

Beweis:. Da a2 + b2 = c2 + d2 �= 0 gilt, können diese Gleichungen folgendermaßen umge-schrieben werden:(

a −bb a

)(cos θi

sin θi

)=

(cd

)⇐⇒

(cos θi

sin θi

)=

(a −bb a

)−1(cd

)=

1

a2 + b2

(a · c + b · da · d − b · c

)�

Satz 4.3. Gegeben ist die folgende transzendente Gleichung mit den bekannten Termena, b. Unter der Voraussetzung a �= 0 gibt es zwei Lösungen für die unbekannte Gelenkva-riable θi.

a · sin θi = b =⇒ θ(1,2)i = arctan2

⎛⎝ b

a,±

√1 −

(b

a

)2⎞⎠

Beweis:. cos θi = ±√

1 − sin2 θi �

Satz 4.4. Gegeben ist die folgende transzendente Gleichung mit den bekannten Termena, b. Unter der Voraussetzung a �= 0 gibt es zwei Lösungen für die unbekannte Gelenkva-riable θi.

a · cos θi = b =⇒ θ(1,2)i = arctan2

⎛⎝±

√1 −

(b

a

)2

,b

a

⎞⎠

Beweis:. sin θi = ±√1 − cos2 θi �

Satz 4.5. Gegeben ist die folgende transzendente Gleichung mit den bekannten Termena, b, c, wobei c �= 0 gilt. Unter der Randbedingung a �= 0 und b �= 0 gibt es zwei Lösungenfür die unbekannte Gelenkvariable θi.

a · cos θi + b · sin θi = c =⇒ θ(1,2)i = arctan2(c,±

√a2 + b2 − c2) − arctan2(a, b)

Page 54: Automatische Konfiguration der Bewegungssteuerung von

44 Kapitel 4. Bestimmung des kinematischen Robotermodells

Beweis:. Es wird eine neue Variable φ = arctan2(a, b) eingeführt und dann die Termerset-zungen r =

√a2 + b2, a = r · sin φ und b = r · cos φ angewendet.

a · cos θi + b · sin θi = c

⇔ sin φ · cos θi + cos φ · sin θi = c/r

⇔ sin(φ + θi) = c/r

⇔ φ + θi = arctan2(c/r,±√

1 − (c/r)2)

⇔ θ(1,2)i = arctan2(c,±

√a2 + b2 − c2) − arctan2(a, b)

Satz 4.6. Gegeben ist die folgende transzendente Gleichung mit den bekannten Termena, b. Unter der Randbedingung a �= 0 und b �= 0 gibt es zwei um 180◦ versetzte Lösungenfür die unbekannte Gelenkvariable θi.

a · cos θi + b · sin θi = 0 =⇒ θ(1,2)i = arctan2(b, a) ± π/2

Beweis:. Analog zur vorherigen Beweisführung. �

Satz 4.7. Gegeben sind die zwei folgenden transzendenten Gleichungen mit den bekanntenTermen a, b, c, d, wobei c �= 0 oder d �= 0 gilt und den unbekannten Gelenkvariablen θi undθj. Unter der Randbedingung a �= 0 existieren zwei Lösungen für die Gelenkvariable θi,wobei in der Lösungsgleichung die Hilfsvariable h = (a2 − b2 + c2 + d2)/(2 · a) verwendetwird.

a · cos θi + b · cos θj = c

a · sin θi + b · sin θj = d=⇒ θ

(1,2)i = arctan2(h,±

√c2 + d2 − h2) − arctan2(c, d)

Beweis:. Der Term a · cos θi wird in der ersten Gleichung und der Term a · sin θi wird inder zweiten Gleichung auf die rechte Seite gebracht. Die umgeformten Gleichungen werdenzuerst quadriert und danach addiert. Auf diese Weise entsteht eine neue Gleichung in dernur noch θi, aber nicht mehr θj vorkommt.

b2 = a2 + c2 + d2 − 2 · a · c · cos θi − 2 · a · d · sin θi

⇔ c · cos θi + d · sin θi = (a2 − b2 + c2 + d2)/(2 · a)

Die zwei Lösungen dieser Gleichung werden mit Hilfe von Satz 4.5 bestimmt. �

Satz 4.8. Gegeben sind die zwei folgenden transzendenten Gleichungen mit den bekanntenTermen a, b, c, d und den unbekannten Gelenkvariablen θi und θj, wobei c �= 0 oder d �= 0gilt. Unter der Randbedingung a �= 0 und b �= 0 existieren zwei Lösungen für die Gelenk-variable θj, wobei in der Lösungsgleichung die Hilfsvariable h = (c2 +d2−a2−b2)/(2 ·a ·b)verwendet wird. Für die Gelenkvariable θi existiert eine Lösung, wobei in der Lösungsglei-chung die Hilfsvariablen h1 = a · cos θj + b und h2 = a · sin θj verwendet werden.

a · cos(θi + θj) + b · cos θi = c

a · sin(θi + θj) + b · sin θi = d=⇒ θ

(1,2)j = arctan2(±

√1 − h2, h)

θi = arctan2(d · h1 − c · h2, c · h1 + d · h2)

Page 55: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 45

Beweis:. Um θj zu bestimmen, werden beide Seiten der transzendenten Gleichungen qua-driert und anschließend addiert. Dadurch ergibt sich eine neue Gleichung, die nur nochθj , aber nicht mehr θi enthält.

a2 + 2 · a · b · cos θj + b2 = c2 + d2

⇔ cos θj = (c2 + d2 − a2 − b2)/(2 · a · b)⇔ θ

(1,2)j = arctan2(±

√1 − h2, h)

Nachdem θj bekannt ist, wird θi bestimmt. Die beiden transzendenten Gleichungen werdendurch Anwendung der Additionstheoreme und Substitution der Hilfsvariablen h1 undh2 umgeformt. Dadurch werden die Gleichungen in die zwei äquivalenten Gleichungenh1 · cos θi − h2 · sin θi = c und h1 · sin θi + h2 · cos θi = d umgeformt. Durch Anwendungdes Satzes 4.2 auf diese Gleichungen wird die Lösung für θi umittelbar abgelesen. �Satz 4.9. Gegeben sind die zwei folgenden transzendenten Gleichungen mit den bekanntenTermen a, b, c, d, e und den unbekannten Gelenkvariablen θi und θj, wobei d �= 0 oder e �= 0gilt. Unter der Randbedingung a �= 0 oder b �= 0 und c �= 0 existieren zwei Lösungen für dieGelenkvariable θj, wobei in der Lösungsgleichung die Hilfsvariable h = (d2 +e2−a2− b2 −c2)/(2 · c) verwendet wird. Für die Gelenkvariable θi existiert eine Lösung, wobei in derLösungsgleichung die Hilfsvariablen h1 = a ·sin θj +b ·cos θj +c und h2 = b ·sin θj−a ·cos θj

verwendet werden.

a · sin(θi + θj) + b · cos(θi + θj) + c · cos θi = d

b · sin(θi + θj) − a · cos(θi + θj) + c · sin θi = e

=⇒ θ(1,2)j = arctan2(h,±

√a2 + b2 − h2) − arctan2(b, a)

θi = arctan2(e · h1 − d · h2, d · h1 + e · h2)

Beweis:. Die beiden transzendenten Gleichungen werden quadriert und dann addiert. Da-durch kann aus diesen Gleichungen eine neue Gleichung, in der nur noch eine unbekannteVariable auftaucht, ermittelt werden.

a2 + 2 · a · c · sin θj + b2 + 2 · b · c · cos θj + c2 = d2 + e2

⇔ b · cos θj + a · sin θj = (d2 + e2 − a2 − b2 − c2)/(2 · c)Die zwei Lösungen von θj werden mit Hilfe von Satz 4.5 bestimmt. Anschließend wird dieLösung von θi in Abhängigkeit von θj bestimmt. Durch Anwendung der Additionstheoremeund Substitution der Hilfsvariablen h1 und h2 werden die zwei transzendenten Gleichungenin die Gleichungen h1 · cos θi − h2 · sin θi = d und h1 · sin θi + h2 · cos θi = e überführt.Auf diese beiden Gleichungen wird der Satz 4.2 angewendet, wodurch man eine eindeutigeLösung für θi erhält. �Satz 4.10. Gegeben sind die zwei folgenden transzendenten Gleichungen mit den bekann-ten Termen a, b, c, d, e und den unbekannten Gelenkvariablen θi, θj und θk, wobei d �= 0oder e �= 0 gilt. Unter der Randbedingung d2 + e2 >= c2 existieren zwei Lösungen für dieGelenkvariable θi, wobei in der Lösungsgleichung die Hilfsvariable h = ±√

d2 + e2 − c2

verwendet wird.

a · cos θi · cos(θj + θk) + b · cos θi · cos θj − c · sin θi = d

a · sin θi · cos(θj + θk) + b · sin θi · cos θj + c · cos θi = e

=⇒ θ(1,2)i = arctan2 (h · e − c · d, h · d + c · e)

Page 56: Automatische Konfiguration der Bewegungssteuerung von

46 Kapitel 4. Bestimmung des kinematischen Robotermodells

Beweis:. Durch Quadrieren und Addieren der beiden transzendenten Gleichungen entstehtdie Gleichung (a·cos(θj+θk)+b·cos θj)

2 = d2+e2−c2. Die Gleichungen h·cos θi−c·sin θi = dund h·sin θi+c·cos θi = e sind deshalb zu den ursprünglichen transzendenten Gleichungenäquivalent. Die Lösung für θi wird aus diesen Gleichungen mit Satz 4.2 bestimmt. �

Satz 4.11. Gegeben sind die drei folgenden transzendenten Gleichungen mit den bekann-ten Termen a, b, c, d, e und den unbekannten Gelenkvariablen θi, θj und θk. Unter derRandbedingung a �= 0 und b �= 0 existieren zwei Lösungen für die Gelenkvariable θk, wobeiin der Lösungsgleichung die Hilfsvariable h = (c2 + d2 + e2 − a2 − b2)/(2 · a · b) verwendetwird.

a · cos θi · cos θj · sin θk − a · sin θi · cos θk − b · sin θi = c

a · sin θi · cos θj · sin θk + a · cos θi · cos θk + b · cos θi = d

a · sin θj · sin θk = e

=⇒ θ(1,2)k = arctan2(±

√1 − h2, h)

Beweis:. Die drei transzendenten Gleichungen werden quadriert und dann miteinanderaddiert. Dadurch ergibt sich eine neue Gleichung, in der nur noch θk vorkommt.

a2 + 2 · a · b · cos θk + b2 = c2 + d2 + e2

⇔ cos θk = (c2 + d2 + e2 − a2 − b2)/(2 · a · b)Die zwei Lösungen von θk werden mit Hilfe von Satz 4.4 bestimmt. �

4.3.2 Pattern Matching mit dem RETE–Algorithmus

Den größten Teil der Laufzeit bei der Abarbeitung von regelbasierten Anwendungen (Ab-bildung 4.3) macht das Pattern Matching aus. Es wurde geschätzt, daß hierfür über 90%der Laufzeit benötigt wird. Ein sehr einfacher Pattern Matching Algorithmus ist, in jederIteration die Liste der Regeln zu durchlaufen und die linke Seite jeder Regel auf Erfüllbar-keit hinsichtlich des gesamten Arbeitsspeichers zu überprüfen. Dieser naive Algorithmushat exponentielle Komplexität und führt deswegen im allgemeinen zu unakzeptablen lan-gen Laufzeiten. Um zu überprüfen, ob für eine Gleichung oder eine Kombination vonGleichungen eine Lösung in der Wissensbasis vorkommt, können verschiedene Algorith-men verwendet werden. Miranker [114, 115] hat beispielsweise die sogenanten Treat–Strukturen und Batory [8, 9] den Leaps–Algorithmus (Lazy Evaluation Algorithm forProduction Systems) entwickelt. Ein weiterer Algorithmus mit einem besseren Laufzeit-verhalten als bei Treat und Leaps ist der Rete–Algorithmus (lat.: Netz), der deswegenin dieser Arbeit verwendet wird. Der Rete–Algorithmus wurde in den achtziger Jahrenvon C. Forgy [52, 53] an der Carnegie Mellon Universität entwickelt und ist die Basis fürviele regelbasierte Expertensysteme. Mit dem Rete–Algorithmus werden zur Lösung desVergleichsproblems, das bei der Regelauswertung entsteht, relativ kurze Laufzeiten aufKosten des Speicherbedarfs erzielt. Der Algorithmus verbessert die Zeitkomplexität desnaiven Algorithmus von O(R ·F P ) nach O(R ·F ·P ), wobei R die Anzahl der Regeln in derWissensbasis, F die Anzahl der Fakten im Arbeitsspeicher und P die mittlere Anzahl vonBedingungen pro Regel sind. Diese Effizienzsteigerung wird durch die beiden folgendenEinschränkungen erreicht.

1. Einschränkung der zu überprüfenden Fakten. Durch Anwendung einer Regel ändertsich meistens nur ein Teil des Arbeitsspeichers. Die Ergebnisse des vorangegangenen

Page 57: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 47

Vergleichs des Inhalts des Arbeitsspeichers und der Bedingungen von Regeln werdengespeichert. Ein Vergleich der Bedingungsteile mit den unveränderten Fakten desArbeitsspeichers lässt die Konfliktmenge gleich. Deswegen werden nur geänderteFakten im Arbeitsspeicher daraufhin geprüft, ob Regeln, die bisher nicht angewendetwerden konnten, jetzt angewendet werden können beziehungsweise Regeln, die bisherangewendet werden konnten, jetzt nicht mehr angewendet werden können.

2. Einschränkung der zu überprüfenden Bedingungen. Haben mehrere Regeln Prä-missen gemeinsam, so werden diese Bedingungen nur einmal ausgewertet. Da dieBedingungsteile der Regeln im allgemeinen nicht disjunkt sind, werden gleichartigeBedingungen zusammengefasst und dadurch der Auswerteaufwand reduziert.

Die Bedingungen der in Abschnitt 4.3.1 definierten Regeln werden automatisch in dasRete–Netzwerk übersetzt. Die Aktionen der Regeln werden nicht in das Rete–Netzwerkaufgenommen. Als Eingabe erhält das Rete–Netzwerk die Änderungen des Arbeitsspei-chers und als Ergebnis wird die aktuelle Konfliktmenge ausgegeben (Abbildung 4.4).

Abbildung 4.4 Generiertes Rete–Netzwerk für die Wissensbasis

Netz des Rete–Algorithmus:Eingabe: Datenänderungen im ArbeitsspeicherAusgabe: aktuelle Konfliktmenge

R

R

R

R

α

O

T

B

T

T

α

Y

G

G

B

α

α

Y

B

T

α

α

T

T

T

α

Y

T

T

α

Y

T

T

α

Y

G

G

α

Y

G

α

Y

G

α

Y

G

α

Y

G

α

Y

α α α α α α αα

O

β

β

B

α

α

O

B

T

α

α

T

T

T

α

O

T

T

α

O

T

T

α

O

β

β

α

O

β

α

O

β

α

O

β

α

O

β

α

O

α α α α α α α

Das Rete–Netzwerk repräsentiert die Bedingungen der Regeln in der Wissensbasis inForm eines gerichteten, azyklischen Graphen aus Kanten und verschiedenen Typen vonKnoten. Jede Änderung des Arbeitsspeichers wird an den Wurzelknoten des Rete–Netzwerks übergeben, wo sie entlang der Kanten weitergeleitet und Operationen durchge-führt werden. Zur Vermeidung redundanter Operationen werden bereits berechnete Ver-gleichsergebnisse und insbesondere feuerbereite Prämissen und Fakten zwischengespei-chert. Das Rete–Netzwerk besteht aus mehreren Typen von Knoten, die die eigentlichenOperationen repräsentieren.

R–Knoten: Wurzelknoten des Netzwerkes. Vorverarbeitung der Eingaben.

ααα–Knoten: Selektionsbedingung, die sich auf einzelne Fakten des Arbeitsspeichers be-zieht. Jede Teilbedingung einer Regel wird durch einen solchen Knoten dargestellt,wobei identische Teilbedinungen in verschiedenen Regeln durch denselben Knotenrepräsentiert werden (engl.: node sharing). Die Ausgabe des Knotens wird in einemα–Speicher abgelegt. Hier werden diejenigen Fakten gespeichert, die die Bedingungdes Knotens erfüllen. Dieser Knotentyp wird auch als Prämissenknoten (engl.: one–input node) bezeichnet.

Page 58: Automatische Konfiguration der Bewegungssteuerung von

48 Kapitel 4. Bestimmung des kinematischen Robotermodells

O–Knoten: Verbindung der ersten Teilbedingung einer Regel mit dem Netzwerk.

βββ–Knoten: Verbund– beziehungsweise Verschmelzungsbedingung, die α– und β–Knotenüber Junktoren und Variablenbindungen miteinander verknüpfen. Durch β–Knotenwerden Einzelbedingungen einer Regel miteinander verbunden, so dass eine kon-sistente Variablenbelegung entsteht. Jeder β–Knoten hat zwei Eingänge in die dieAusgaben der Vorgängerknoten eingelesen werden. Die Ausgabe des Knotens wirdin einem β–Speicher abgelegt. Dieser Knotentyp wird auch als Verbindungsknoten(engl.: two–input node) bezeichnet.

B–Knoten: Seperater Knoten, der einen booleschen Ausdruck testet.

T–Knoten: Terminalknoten, der angibt, dass alle Bedingungen einer Regel erfüllt sind.

Beim ersten Durchlauf werden sämtliche Prämissenknoten evaluiert und die Ergebnissegespeichert. Ab dem zweiten Durchlauf werden nur diejenigen Prämissenknoten ausge-wertet, die sich auf geänderte Fakten beziehen. Der Inhalt in den α– und β–Speichernwird dann gegebenenfalls überschrieben.

4.3.3 Experimentelle Ergebnisse

Die automatisierte Lösung des kinematischen Problems wurde in dem ProduktionssystemJess (Java Expert System Shell) [57] in der aktuellen Version 7.1 implementiert. Jess

wurde gewählt, da es den Rete–Algorithmus in die Programmiersprache Java einbettetund für Lehr– und Forschungszwecke frei erhältlich ist. Außerdem steht eine umfangrei-che Dokumentation mit verschiedenen Beispielprogrammen zur Verfügung. Jess wird seit1995 von E. Friedman–Hill an den Sandia National Laboratories in Kalifornien entwickelt.Anfangs orientierte sich Jess an der Expertensystemschale Clips (C Language Integra-ted Production System) [62], die von G. Riley in der Programmiersprache C entwickeltwurde. Jess ist daher weitestgehend kompatibel zu dieser Regelsprache, übertrifft inzwi-schen allerdings die Performanz dieser Sprache in einer Reihe von Experimenten. Da essich bei Jess nicht um ein Computeralgebrasystem handelt, wurde es in dieser Arbeit umFunktionalitäten für das symbolische Rechnen, beispielsweise das Vereinfachen algebrai-scher Ausdrücke und das analytische Lösen nichtlinearer Gleichungen erweitert.

Der zeitliche Aufwand zum Aufstellen und Lösen des kinematischen Gleichungssystemsist für einige ausgewählte Robotertypen in Tabelle 4.2 wiedergegeben. Rotationsgelenkewerden mit R und Translationsgelenke mit T abgekürzt. Es wurde ein Pentium Prozes-sor mit 2.0 GHz Taktrate und das Betriebssystem Linux verwendet. Der Zeitbedarf zumAufstellen der kinematischen Gleichungen hängt von der Anzahl der Gelenkachsen ab.Mit steigender Zahl an kinematischen Lösungen steigt auch der Zeitbedarf zum Lösen derGleichungen. Obwohl es sich bei Jess um interpretierten und nicht um kompilierten Codehandelt, können die symbolischen Lösungen in wenigen Sekunden hergeleitet werden. Ausdiesen Lösungen wird ausführbarer C/C++ Code automatisch generiert.

Zu einer Endeffektorlage werden auch eventuelle Mehrfachlösungen bestimmt. Für einenüblichen sechsachsigen Gelenkarmroboter mit Zentralhand werden acht Gelenkkonfigura-tionen für eine vorgegebene Lage des Endeffektors ermittelt. Diese Konfigurationen werdenals „Arm links“ oder „Arm rechts“ beziehungsweise „Ellbogen oben“ oder „Ellbogen unten“bezeichnet. Falls es mehrere Lösungen gibt, so werden bei der Auswahl einer geeignetenLösung Gelenkanschläge und mögliche Hindernisse beachtet. Die ermittelten Lösungen

Page 59: Automatische Konfiguration der Bewegungssteuerung von

4.3. Regelbasierte Lösung der inversen Kinematik 49

Tabelle 4.2 Zeitbedarf zum Aufstellen und Lösen der kinematischen Gleichungen

: Zeitbedarf (min:sec) Anzahl derRoboter Konfiguration Aufstellen Lösen LösungenKartesischer Roboter TTT:RR 00:03 00:02 1Scara I RRT:R 00:01 00:03 2Scara II TRR:R 00:01 00:03 2Zylindrischer Roboter RTT:RRR 00:03 00:04 4Stanford Arm RRT:RRR 00:04 00:07 8Gelenkarmroboter RRR:RRR 00:04 00:10 8

werden überprüft, ob sie zwischen dem minimalen und maximalen Gelenkvariablenwertliegen und sofern dies nicht der Fall ist, verworfen. Um Stetigkeit zu erzielen wird vonden verbleibenden Lösungen üblicherweise die naheste Lösung ausgewählt, das heißt dieLösung bei der die Gelenke minimal bewegt werden. Gegebenenfalls werden hierbei dieÄnderungen bei den verschiedenen Gelenkachsen unterschiedlich gewichtet.

Die kinematischen Gleichungen wurden außerdem nach der Anzahl unbekannter Gelenk-variablen eingestuft (Tabelle 4.3). Gleichungen in denen keine unbekannten Variablenvorkommen, tragen nicht zu einer Lösung bei und werden verworfen. Die Anzahl Glei-chungen mit einer oder zwei Unbekannten nimmt ab und die Anzahl Gleichungen mitfünf oder sechs Unbekannten nimmt zu, wenn Roboter mit zunehmend komplexeren Geo-metrien betrachtet werden. Handelt es sich bei einer unbekannten Gelenkvariable um einRotationsgelenk, so kommt die Variable als Argument von Sinus– und Cosinusfunktionenvor. Dadurch taucht diese Unbekannte in sehr viel mehr Gleichungen auf und ist schwie-riger zu ermitteln, als wenn es sich um die Variable eines Translationsgelenks handelt.

Tabelle 4.3 Komplexität der zu lösenden kinematischen Gleichungssysteme

Anzahl Gleichungen mit x = 0, . . . , 6 UnbekanntenRoboter 0 1 2 3 4 5 6

∑Kartesischer Roboter 11 129 92 5 10 5 – 252Scara I 26 25 23 46 0 – – 120Scara II 32 17 28 43 0 – – 120Zylindrischer Roboter 0 19 59 119 50 5 0 252Stanford Arm 0 8 11 75 116 42 0 252Gelenkarmroboter 0 6 4 47 64 89 42 252

Bei der Auswertung in Echtzeit müssen die kinematischen Modellgleichungen in genaufestgelegten Zeitintervallen berechnet werden. Die primären Kriterien bei der Evaluationder generierten kinematischen Modelle sind die Anzahl der erforderlichen arithmetischenOperationen und der hierfür erforderliche Rechenaufwand. Die Anzahl Operationen derdirekten Kinematik kann leicht anhand der Transformationsmatrix T0,n bestimmt werden.Bei der inversen Kinematik ist zu berücksichtigen, dass, falls es mehrere Lösungen gibt,ein Baum zur Berechnung aller Konfigurationen durchlaufen werden muß. Anhand eines

Page 60: Automatische Konfiguration der Bewegungssteuerung von

50 Kapitel 4. Bestimmung des kinematischen Robotermodells

Beispielroboters wird dieses Vorgehen im Anhang dargestellt (Abbildung B.1).

Die erforderlichen Operationen der generierten kinematischen Modelle sind in Tabelle 4.4dargestellt. Zur Minimierung der Rechenzeit werden redundante Berechnungen bei derGenerierung automatisch eliminiert. Im Falle von zwei aufeinanderfolgenden, parallelenRotationsachsen werden die Gleichungen durch Anwendung der Additionstheoreme ver-einfacht. Dadurch entstehen Terme, in denen die Summe beziehungsweise Differenz zweierGelenkwinkel auftauchen. Für die Berechnung aller Lösungen des inversen kinematischenModells eines sechsachsigen Gelenkarmroboters wurde in einer Simulationsumgebung eineRechenzeit von weniger als fünf Mikrosekunden gemessen. Deswegen genügen die gene-rierten Modelle den strengen Echtzeitanforderungen einer Bewegungssteuerung. Der Re-chenaufwand kann zudem weiter reduziert werden. Bei der Ausführung in Echtzeit müssennicht in jedem Interpolationstakt alle Lösungen berechnet werden, da normalerweise nichtzwischen verschiedenen Konfigurationen gesprungen werden darf. Andernfalls würde derRoboter sich ruckartig bewegen und die Mechanik zu sehr beansprucht.

Tabelle 4.4 Evaluation des kinematischen Robotermodells für verschiedene Roboter

Anzahl arithmetische Operatoren der direkten KinematikRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 0 0 4 0 2 2 0 0 0Scara I 8 5 4 0 4 4 0 0 0Scara II 12 1 4 0 4 4 0 0 0Zylindrischer Roboter 8 10 55 0 4 4 0 0 0Stanford Arm 19 16 123 0 5 5 0 0 0Gelenkarmroboter 54 18 128 0 21 22 0 0 0

Anzahl arithmetische Operatoren der inversen KinematikRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 0 0 0 0 0 0 2 0 0Scara I 6 6 7 1 1 1 4 1 7Scara II 6 6 7 1 1 1 4 1 7Zylindrischer Roboter 5 12 28 0 2 2 4 0 0Stanford Arm 17 15 70 0 3 3 6 1 3Gelenkarmroboter 36 18 67 1 11 13 7 1 7

4.4 Algebraische Lösung der inversen KinematikManipulatoren bei denen sich die Handachsen in einem Punkt schneiden, haben den Vor-teil, dass die Orientierung von der Position des Endeffektors entkoppelt ist. ParalleleRotationsachsen führen dazu, dass sich Terme in den kinematischen Gleichungen zusam-menfassen lassen. Falls eines dieser beiden Kriterien nicht erfüllt ist, so erhöht sich dieKomplexität der zu lösenden Gleichungen. In Tabelle 4.5 sind die Denavit–Hartenberg Pa-rameter eines Manipulators (Typ I) aufgeführt, bei dem es keinen gemeinsamen Schnitt-punkt der drei Handachsen gibt. In der Tabelle sind außerdem die Denavit–HartenbergParameter eines Manipulators (Typ II) ohne parallele Gelenkachsen aufgeführt. Beide

Page 61: Automatische Konfiguration der Bewegungssteuerung von

4.4. Algebraische Lösung der inversen Kinematik 51

Manipulatoren haben jeweils insgesamt sechs Rotationsgelenke.

Tabelle 4.5 Denavit–Hartenberg Parameter zweier Manipulatoren (Typ I und Typ II)

Gelenk i θi Offset di ai αi

1 θ1 0◦ 0 0 90◦

2 θ2 0◦ 0 a2 0◦

3 θ3 0◦ 0 a3 0◦

4 θ4 0◦ 0 a4 −90◦

5 θ5 0◦ 0 a5 90◦

6 θ6 0◦ 0 a6 0◦

Gelenk i θi Offset di ai αi

1 θ1 0◦ 0 0 −90◦

2 θ2 0◦ d2 0 90◦

3 θ3 −90◦ 0 −a3 90◦

4 θ4 0◦ d4 0 −90◦

5 θ5 0◦ 0 0 90◦

6 θ6 0◦ d6 0 0◦

Zur Bestimmung einer geschlossenen Lösung des kinematischen Robotermodells werdendie folgenden Schritte durchgeführt. Zuerst werden die homogenen Transformationsma-trizen und das direkte kinematische Modell bestimmt und dann das kinematische Glei-chungssystem aufgestellt (Abbildung 4.2), um die unbekannten Gelenkvariablen zu isolie-ren. Um eine möglichst allgemeine Lösung zu erhalten, werden keine konkreten Zahlen fürdie Roboterabmessungen und das Endeffektorkoordinatensystem verwendet, sondern mitsymbolischen Variablen gerechnet. Die generierten Gleichungen werden entsprechend derAnzahl unbekannter Variablen gruppiert (Tabelle 4.6). Für diese beiden Manipulatorenentstehen jedoch keine Gleichungen, die nur noch eine Unbekannte enthalten. Insbesonderewerden keine geeigneten Gleichungen generiert, die ausschließlich mit den wissensbasiertenMethoden aus Abschnitt 4.3 gelöst werden können.

Tabelle 4.6 Komplexität der zu lösenden kinematischen Gleichungssysteme

Anzahl Gleichungen mit x = 0, . . . , 6 UnbekanntenRoboter 0 1 2 3 4 5 6

∑Typ I 0 0 29 38 32 93 60 252Typ II 0 0 12 15 79 112 34 252

Deswegen wird im folgenden versucht, diese Gleichungen in einfacher zu lösende Glei-chungen zu überführen und insbesondere eine Gleichung mit nur einer Unbekannten zubestimmen. Hierfür wird das trigonometrische Gleichungssystem auf eine Menge von Po-lynomgleichungen zurückgeführt und anschließend die Gröbnerbasis berechnet.

Page 62: Automatische Konfiguration der Bewegungssteuerung von

52 Kapitel 4. Bestimmung des kinematischen Robotermodells

4.4.1 Konvertierung in Polynomialgleichungen

Um ein trigonometrisches Gleichungssystem in ein polynomiales Gleichungssystem um-zuwandeln, sind zwei verschiedene Transformationen möglich. Die erste Transformationist die sogenannte Halbwinkelsubstitution (Abbildung 4.5) bei der für jede unbekannteGelenkwinkelvariable θi eine neue Variable ui eingeführt wird und die folgenden Substi-tutionen durchgeführt werden.

cos θi :=1 − u2

i

1 + u2i

sin θi :=2 · ui

1 + u2i

=⇒ θi := 2 · arctan(ui) (4.4)

Abbildung 4.5 Geometrische Veranschaulichung der Halbwinkelsubstitution

θi/2

1

ui

√ 1+u2i

cos(

θi

2

)=

1√1 + u2

i

cos θi = cos2(

θi

2

)− sin2

(θi

2

)=

1 − u2i

1 + u2i

sin(

θi

2

)=

ui√1 + u2

i

sin θi = 2 · cos(

θi

2

)· sin

(θi

2

)=

2 · ui

1 + u2i

Die resultierenden Bruchgleichungen werden mit dem jeweiligen Hauptnenner erweitert,um so eine Polynomialdarstellung zu erhalten. Aufgrund des Faktors zwei in der Lösungs-gleichung für θi, ist es nicht notwendig den erweiterten Arcustangens zu verwenden, umeine eindeutige Lösung für die unbekannte Gelenkvariable zu erhalten.

Eine weitere Transformation ist es, für jede unbekannte Gelenkwinkelvariable θi zwei Va-riablen ci und si sowie eine zusätzliche Gleichung einzuführen. Die Kosinus– und Sinuster-me werden durch die neuen Variablen substituiert. Die Polynomialgleichung, die für jedeunbekannte Gelenkwinkelvariable eingeführt wird, stellt die trigonometrische Beziehungzwischen den neuen Unbekannten ci und si her.

cos θi := ci sin θi := si c2i + s2

i = 1 =⇒ θi := arctan2(si, ci) (4.5)

Während bei der ersten Transformation die Anzahl der Gleichungen gleich bleibt, erhöhtsich bei der zweiten Transformation die Anzahl der Gleichungen. Andererseits ist bei derersten Transformation der Grad der Gleichungen höher als bei der zweiten Transformation.

4.4.2 Bestimmung der Gröbnerbasis

Das mit diesen Transformationen (Abschnitt 4.4.1) erhaltene multivariate Gleichungsys-tem soll nun symbolisch gelöst werden. In dem Gleichungssystem F = {f1, . . . , fm} steht nfür die Anzahl der unbekannten Variablen und m für die Anzahl der Polynomgleichungen.

f1(x1, x2, . . . , xn) = 0

f2(x1, x2, . . . , xn) = 0

...fm(x1, x2, . . . , xn) = 0

=⇒

g1(x1) = 0

g2(x1, x2) = 0

...gt(x1, x2, . . . , xn) = 0

Die Gröbnerbasis ist eine Menge von Polynomialgleichungen GB = {g1, . . . , gt}, die zuden ursprünglichen Gleichungen äquivalent sind, allerdings von der Form ist, dass die

Page 63: Automatische Konfiguration der Bewegungssteuerung von

4.4. Algebraische Lösung der inversen Kinematik 53

Lösungen der Unbekannten nacheinander bestimmt werden kann. Insbesondere erhältman, sofern eine solche Gleichung existiert, eine Gleichung mit nur einer Unbekannten.Dieses univariate Polynom wird benutzt, um alle möglichen Werte eines unbekanntenGelenkwinkels zu ermitteln. Die Nullstellen von Polynomen bis zum vierten Grad kön-nen analytisch bestimmt werden, während sie bei höhergradigen Polynomen nur nochnumerisch bestimmbar sind. Die restlichen unbekannten Gelenkvariablen können dannwiederum mit den wissensbasierten Methoden aus Abschnitt 4.3 gelöst werden. Ist dasGleichungssystem nicht geschlossen lösbar, so ergibt sich die Gröbnerbasis zu GB = {1}.Zur Bestimmung der Gröbnerbasis ist die Vorgabe einer Variablenreihenfolge erforder-lich. Eine Variable mit einer höheren Ordnung taucht früher in der Gröbnerbasis auf.Die benötigte Rechenzeit zur Bestimmung einer Gröbnerbasis hängt entscheidend vonder Variablenreihenfolge ab. Außerdem wird bei einer günstigen Variablenreihenfolge dieGröbnerbasis sehr viel kleiner als bei einer ungünstigen. Cox [30] zeigte durch polynomialeReduktion des NP–vollständigen 3–Färbbarkeitsproblem (engl.: graph coloring) auf dieBerechnung von Gröbnerbasen, dass dieses Problem NP–hart ist. Es wurde mehrere Al-gorithmen entwickelt, um Gröbnerbasen zu bestimmen, die im folgenden kurz vorgestelltwerden.

Buchberger Algorithmus

Der erste Algorithmus wurde von Buchberger in seiner Dissertation entwickelt [16, 17, 18,19, 20, 21]. Die Idee des Algorithmus besteht darin, jeweils zwei Polynome derart zu kom-binieren, so dass sich die führenden Monome bezüglich einer Termordnung gegenseitigwegheben. Hierbei sind verschiedene Termordnungen möglich, zum Beispiel lexikogra-phische, graduiert–lexikographische oder graduiert–invers–lexikographische Ordnung. Dielexikographische Ordnung bezüglich zweier Monome ist wie folgt definiert:

xα11 xα2

2 . . . xαnn lex xβ1

1 xβ2

2 . . . xβnn :⇐⇒ ∃j ∈ {1, . . . , n} : (αi = βi ∀i < j)∧αj > βj (4.6)

Bei dieser Ordnung werden die beiden Monome von links nach rechts durchlaufen und mit-einander verglichen. Diese Ordnung ist der alphabetischen Sortierung von Zeichenkettensehr ähnlich. Bei der graduiert–lexikographischen Ordnung werden Monome zunächst nachihrem Gesamtgrad sortiert und bei Gleichheit die lexikographische Ordnung angewendet.Termordnungen können auch mit Hilfe von Matrizen definiert werden. Das bezüglich einerOrdnung als das höchste einzuordnende Monom einer Polynomfunktion f wird als Leit-monom lm(f) und der Koeffizient des Leitmonoms als Leitkoeffizient lk(f) bezeichnet.Das Produkt von Leitkoeffizient und Leitmonom wird als Leitterm lt(f) = lk(f) · lm(f)bezeichnet. Das S–Polynom zweier Polynomfunktionen f1 und f2, ist so definiert ist, dasssich die Leitterme der beiden Funktionen herausheben.

Spoly(f1, f2) =lcm(lm(f1), lm(f2))

lt(f1)· f1 − lcm(lm(f1), lm(f2))

lt(f2)· f2 (4.7)

Der Operator lcm ist definiert als lcm(xα, xβ) = xmax{α1,β1}1 . . . x

max{αn,βn}n und berechnet

das kleinste gemeinsame Vielfache (engl.: least common multiple) der beiden Operanden.Nachfolgend ist der Buchberger Algorithmus in seiner Grundform aufgeführt (Algorith-mus 4.1). Mit der Funktion NormalForm werden die S–Polynome durch alle Elementeder bisher berechneten Gröbnerbasis dividiert. Falls der Rest ungleich Null ist, wird er indie Gröbnerbasis aufgenommen. Das Abbruchkriterium des Algorithmus ist erfüllt, wennder Rest der Division aller möglichen S–Polynome durch die Gröbnerbasis Null ist.

Page 64: Automatische Konfiguration der Bewegungssteuerung von

54 Kapitel 4. Bestimmung des kinematischen Robotermodells

Algorithmus 4.1 Buchberger Algorithmus zur Berechnung von GröbnerbasenInput: Menge von Polynomgleichungen F = {f1, f2, . . . , fm}Output: Gröbnerbasis GB = {g1, g2, . . . , gt}

GB := F ;M := {(fi, fj) | fi, fj ∈ GB und 1 ≤ i < j ≤ m};while M �= {} do

choose {(p, q)} ∈ M ;M := M\{(p, q)};h := NormalForm(Spoly(p, q), GB);if h �= {} then

M := M ∪ {(g, h) | g ∈ GB};GB := GB ∪ {h};

return GB;

Die Nachteile dieses Algorithmus liegen in der Laufzeit und in dem Speicherbedarf. Fürkompliziertere Gleichungen und bei ungünstiger Variablenreihenfolge kann die Gröbner-basis nicht in annehmbarer Zeit berechnen. Die Elimination einer Unbekannten kann imschlechtesten Fall die Anzahl der Polynomgleichungen quadrieren. Bei n Ungleichungenund m Unbekannten ergibt sich doppelt exponentielle Komplexität O(n2m

) [107, 108].

XL Algorithmus

Im Jahr 2000 entwickelten Shamir, Patarin, Courtois und Klimov [28, 29] einen effiziente-ren Algorithmus als der von Buchberger, den XL–Algorithmus (Extended Linearization).Neue nichtlineare Gleichungen werden nicht durch Kombination von Polynomgleichungenhergeleitet, wie es beim Buchberger Algorithmus der Fall ist, sondern durch Multiplikationvon Gleichungen mit allen möglichen unbekannten Monomen eines bestimmten Grades.In den hinzugekommenen Gleichungen werden die vorkommenden Terme als neue unbe-kannte Variablen betrachtet und diese Gleichungen mittels Gauß–Elimination gelöst.

Algorithmen F4 und F5

Eine weitere Verbesserung des Buchberger Algorithmus stellen die Algorithmen F4 [47]und F5 [48, 49] dar, die von Faugère eingeführt wurden. Diese beiden Algorithmen verwen-den Methoden aus der linearen Algebra. Das Kernstück der Algorithmen besteht in derErstellung und Triangulierung einer Matrix [93], wobei jedes Polynom als Matrixzeile dar-gestellt wird. Diese Matrix hat in der Regel sehr viel mehr Spalten als Zeilen. Simulationenhaben mittlerweile gezeigt, dass der F4 Algorithmus für dieselben Polynomialgleichungenweniger große Matrizen erzeugt und Zeit verbraucht, als der XL Algorithmus [4].

4.4.3 Experimentelle Ergebnisse

Für diejenigen Roboter, deren geometrische Eigenschaften in den Tabellen 4.5 und 4.6 an-gegeben sind, werden die kinematischen Gleichungen mit zwei unbekannten Gelenkvaria-blen in Polynomialdarstellung gebracht und dann die äquivalente Gröbnerbasis bestimmt.Der Buchberger Algorithmus benötigt hierfür nur einige Sekunden an Rechenzeit. Als ers-tes wird der Robotertyp I betrachtet und das folgende, nichtlineare GleichungssystemF = {f1, f2, f3, f4, f5, f6} durch Substitution gemäß Gleichung (4.5) aufgestellt. Unbe-kannte Variablen sind s1, c1, s5, c5, s6 und c6, Denavit–Hartenberg Parameter sind a5 und

Page 65: Automatische Konfiguration der Bewegungssteuerung von

4.4. Algebraische Lösung der inversen Kinematik 55

a6 und Variablen, die die Effektorlage angeben, sind nx, ny, ox, oy, ax, ay, px und py.

f1 = ax · s1 − ay · c1 − c5 f4 = c21 + s2

1 − 1

f2 = −ny · c1 · s6 − oy · c1 · c6 + nx · s1 · s6 + ox · c6 · s1 f5 = c25 + s2

5 − 1

f3 = (−a6 · ny + py) · c1 + (a6 · nx − px) · s1 f6 = c26 + s2

6 − 1

= + a5 · (−ny · c1 · c6 + oy · c1 · s6 + nx · c6 · s1 − ox · s1 · s6)

Um diese Gleichungen zu entkoppeln und eine Polynomialgleichung mit einer Unbekanntenzu erhalten, wird die Gröbnerbasis berechnet. Durch Anwendung der lexikographischenOrdnung mit s6 > c6 > s1 > c1 > s5 > c5 werden einfachere Gleichungen bestimmt. Indieser Variablenreihenfolge sind die Sinus– und Cosinusvariablen bezüglich der Gelenk-variable θ6 führend. In Experimenten konnte keine Gröberbasis berechnet werden, wenndie Variablen bezüglich θ1 oder θ5 als führend gewählt werden. In den folgenden Gröbner-basisgleichungen GB = {g1, g2, g3, g4, g5, g6} werden die Hilfsvariablen kij verwendet, dieTerme bestehend aus konstanten DH–Parametern und der Endeffektorlage (engl.: ToolCenter Point, TCP) symbolisieren.

g1 = k11 · s26 + k12 · s6 g4 = k41 · s1 · s6 + k42 · s1 + k43 · c1

g2 = k21 · c6 + k22 · s6 + k23 g5 = k51 · s25 + k52 · s6 + k53

g3 = k31 · s21 + k32 · s6 + k33 g6 = k61 · s1 · s6 + k62 · c5 + k63 · s1

Diese Gleichungen haben dieselben Lösungen wie die ursprünglichen Kinematikgleichun-gen. Da diese Gleichungen trianguliert sind, können die Lösungen mittels Rücksubstitutionermittelt werden. Die erste Gleichung hängt nur von der Unbekannten s6 ab. Die zweiteenthält die Unbekannten c6 und s6. In den darauffolgenden Gleichungen kommt jeweilseine Unbekannte hinzu. Die Gleichung g2 ist eine Prototypgleichung (Satz 4.5), die zweiLösungen hat. Deswegen kann die inverse Kinematik geschlossen gelöst werden und fürθ6 gibt es zwei Lösungen. Die restlichen Unbekannten werden dann in Abhängigkeit vonθ6 durch Pattern Matching mit der Wissensbasis gelöst. Für θ1 gibt es zwei Lösungen,für θ5 eine Lösung, für θ3 zwei Lösungen, für θ2 eine Lösung und für θ4 eine Lösung.Im allgemeinen gibt es für diesen Manipulator insgesamt acht Konfigurationen, um einevorgegebene Pose im kartesischen Raum zu erreichen (Abbildung 4.6). Die Generierungeiner Softwarekomponente schließt den Berechnungsvorgang für diesen Roboterarm ab.

Auf dieselbe Art wird der zweite Manipulatortyp gelöst. Die Gleichungen {f1, f2, f3} sinddie in Polynomialdarstellung konvertierten kinematischen Gleichungen mit zwei Unbe-kannten und die zusätzlichen Gleichungen {f4, f5, f6} stellen die trigonometrischen Bezie-hungen bezüglich den neu eingeführten Variablen dar. Von diesen Gleichungen wird dieGröbnerbasis GB = {g1, g2, g3, g4, g5, g6} mit der lexikographischen Ordnung s3 > c3 >s2 > c2 > s1 > c1 berechnet. Wichtig ist hierbei, mit den Variablen bezüglich θ3 undnicht bezüglich θ1 anzufangen. Andernfalls würde in der darauffolgenden Auswertung fürθ2 nicht eine Lösung ermittelt, sondern zwei Lösungen.

f1 = a3 · s2 · s3 + d4 · s2 · c3 + az · d6 − pz f4 = c21 + s2

1 − 1

f2 = d6 · (ay · c1 − ax · s1) + px · s1 − py · c1 + a3 · c3 − d4 · s3 + d2 f5 = c22 + s2

2 − 1

f3 = ax · d6 · c1 · s2 − py · s1 · s2 − pz · c2 + az · d6 · c2 − px · c1 · s2 f6 = c23 + s2

3 − 1

= + ay · d6 · s1 · s2

Die Gleichung g2 ist wiederum eine Prototypgleichung mit zwei Lösungen für θ3. Insgesamtergibt sich der folgende Auflösungsfluß für diesen Manipulator: zwei Lösungen für θ3,

Page 66: Automatische Konfiguration der Bewegungssteuerung von

56 Kapitel 4. Bestimmung des kinematischen Robotermodells

Abbildung 4.6 Auflösungsfluß bei der Berechnung der inversen Kinematik

θ4

θ4

θ4

θ4

θ4

θ4

θ4

θ4

1. Lösung

2. Lösung

3. Lösung

4. Lösung

5. Lösung

6. Lösung

7. Lösung

8. Lösung

θ2

θ2

θ2

θ2

θ2

θ2

θ2

θ2

θ13

θ23

θ13

θ23

θ13

θ23

θ13

θ23

θ5

θ5

θ5

θ5

θ11

θ21

θ11

θ21

θ16

θ26

TCP

zwei Lösungen für θ1, eine Lösung für θ2, zwei Lösungen für θ4, eine Lösung für θ6 undschließlich eine Lösung für θ5. Falls sich die Gröbnerbasis zu GB = {1} ergibt oder keinunivariates Polynom enthält, ist es nicht möglich, eine geschlossene Lösung zu bestimmen.In diesem Fall wird eine numerische Approximation angewendet (Abschnitt 4.6.3).

g1 = k11 · s23 + k12 · s3 g4 = k41 · c2

2 + k42

g2 = k21 · c3 + k22 · s3 + k23 g5 = k51 · s1 + k52 · s3 · c2 + k53 · c2 + k54

g3 = k31 · s2 + k32 · s3 + k33 g6 = k61 · c1 + k62 · s3 · c2 + k63 · c2 + k64

4.5 Geometrische Lösung der inversen KinematikEine Alternative zu homogenen Koordinaten und homogenen 4 × 4 Transformationsma-trizen stellen sogenannte Twist–Koordinaten (engl.: Verwindung) dar, mit denen ebenfallsdas kinematische Robotermodell vollautomatisch bestimmt wird. Durch diese diversitäreEntwicklung können sowohl die automatisch generierten Modelle verglichen und bewertetwerden, als auch eine hohe Softwarequalität für die Bewegungssteuerung erzielt werden.Mit Hilfe von Twist–Koordinaten wird für eine serielle Kinematik genau dasselbe direktekinematische Modell bestimmt, wie mit homogenen 4 × 4 Transformationsmatrizen (Ab-schnitt 4.2). Ein Vorteil des Verfahrens ist es, dass nicht jeder Gelenkachse ein lokalesKoordinatensystem zugeordnet werden muß. Nur das Basis– und das Endeffektorkoordi-natensystem des Roboters werden benötigt. Deswegen können Twist–Koordinaten sehrviel einfacher als Denavit–Hartenberg Parameter ermittelt werden. Brockett [11] zeigte,dass die Vorwärtstransformation einer kinematischen Kette durch die Berechnung derExponenten von Twists und durch Multiplikation der sich hieraus ergebenden Matrizenbestimmt werden kann.

T0,n(�q) =

(n∏

i=1

exp(ξiqi)

)∗ T0,n(�0) (4.8)

Page 67: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 57

Die Transformationsmatrix T0,n(�0) gibt die Transformation zwischen dem Basis– und demEndeffektorkoordinatensystem an, wenn sich der Roboter in der Nullstellung befindet. DerVektor �q = (q1, . . . , qn)T gibt die Gelenkkonfiguration des Roboters wieder. Die Exponen-tialfunktion exp definiert eine surjektive Abbildung von der Lie–Algebra se(3) nach derLie–Gruppe SE(3). Der Twist ξi, der dem i–ten Gelenk zugeordnet wird, kann als Ele-ment von se(3) geschrieben werden oder als sechsdimensionaler Vektor ξi, der auch alsTwist–Koordinate bezeichnet wird (Abschnitt A.2).

ξi =

⎛⎜⎜⎝

0 −ω3 ω2 ν1

ω3 0 −ω1 ν2

−ω2 ω1 0 ν3

0 0 0 0

⎞⎟⎟⎠ �−→ ξi = (�νi, �ωi)

T ∈ R6×1 (4.9)

4.5.1 Bestimmung der Twist–Koordinaten eines Manipulators

Die systematische Berechnung der direkten Kinematik mit Hilfe von Twists wird in mehre-ren Schritten durchgeführt. Als erstes wird jeder Gelenkachse im Basiskoordinatensystemdes Roboters ein Twist beziehungsweise Twist–Koordinate zugewiesen. Diese Zuweisungkann durch sehr einfache geometrische Überlegungen erfolgen. Für Translations– bezie-hungsweise Rotationsgelenke sind Twist–Koordinaten von der folgenden Form:

ξTi = (�νi, 03×1)

T ξRi = (−�ωi × �ri, �ωi)

T (4.10)

Der Einheitsvektor �νi gibt bei Translationsgelenken die Richtung der Linearbewegungund der Einheitsvektor �ωi bei Rotationsgelenken die Richtung der Rotationsachse an.Bei Rotationsgelenken zeigt der Vektor �ri vom Ursprung des Basiskoordinatensystems zueinem beliebig gewählten Punkt auf der Rotationsachse. Passiven Gelenkachsen und star-ren Verbindungen werden keine Twist–Koordinaten zugewiesen. Die homogene Matrix, diedas Basiskoordinatensystem in das Endeffektorkoordinatensystem in der Nullstellung desManipulators überführt, kann typischerweise durch Inspektion bestimmt werden. Alter-nativ können Twists auch anhand der Denavit–Hartenberg Parameter bestimmt werden.In diesem Fall werden die Twists durch folgende Matrixmultiplikationen ermittelt.

ξi = M1 ∗ . . . ∗ Mi−1 ∗ Pi ∗ (M1 ∗ . . . ∗ Mi−1)−1 (4.11)

Die Matrix Mi ist die i–te Denavit–Hartenberg Matrix (Gleichung 4.1), wobei die Gelenk-variable (θi beziehungsweise di) auf Null gesetzt ist. Die Matrix Pi hat für ein Translations–beziehungsweise Rotationsgelenk die folgende Gestalt:

P Ti =

⎛⎜⎜⎝

0 0 0 00 0 0 00 0 0 10 0 0 0

⎞⎟⎟⎠ P R

i =

⎛⎜⎜⎝

0 −1 0 01 0 0 00 0 0 00 0 0 0

⎞⎟⎟⎠ (4.12)

Der nächste Schritt ist die Berechnung der Matrixexponenten der Twists. Im allgemeinenist diese Berechnung sehr komplex, da die Exponentialfunktion als unendliche Reihe de-finiert ist und hier auf Matrizen angewendet wird. Im Falle von Starrkörperbewegungenkonvergiert diese Reihe und es kann die folgende Formel verwendet werden:

exp(ξiqi) = exp

([ωi �νi

03×1 01×1

]qi

)=

(exp(ωiqi) �bi

03×1 11×1

)(4.13)

Page 68: Automatische Konfiguration der Bewegungssteuerung von

58 Kapitel 4. Bestimmung des kinematischen Robotermodells

Für die Berechnung von Exponentialausdrücken der Form exp(ωiqi), wird die Rotati-onsformel von Rodrigues (Gleichung A.14) [150] angewendet. Diese Formel wandelt eineschiefsymmetrische Einheitsmatrix ωi (Kreuzproduktmatrix), die eine Rotationsachse be-schreibt sowie einen Drehwinkel qi in eine trigonometrische Rotationsmatrix um.

exp(ωiqi) =

{I3×3 + ωi · sin θi + ω2

i · (1 − cos θi) , qi = θi

I3×3 , qi = di

(4.14)

�bi =

{(I3×3 − exp(ωiqi)) · (�ωi × �νi) , qi = θi

di · �νi , qi = di

(4.15)

Nach Berechnung der Matrizen exp(ξiqi) für jedes Gelenk wird das direkte kinematischeProblem durch Matrixmultiplikation nach Brockett (Gleichung 4.8) automatisch gelöst.

4.5.2 Bestimmung der Adjungierten von Twist–Koordinaten

Bei der Bestimmung der Vorwärtstransformation werden Twist–Koordinaten im Basisko-ordinatensystem des Roboters angegeben. Manchmal ist es nötig, Twist–Koordinaten inein anderes Koordinatensystem zu transformieren, beispielsweise bei der Bestimmung derJacobi–Matrix mit Twist–Koordinaten [131]. Für eine homogene TransformationsmatrixT ∈ SE(3) wird die Adjungierte AdT beziehungsweise inverse Adjungierte Ad−1

T einge-führt, die Twist–Koordinaten zwischen unterschiedlichen Koordinatensystemen transfor-miert. Dabei bezeichnet R die Rotationsmatrix und �p den Translationsvektor bezüglichder Transformation T und p die durch �p definierte antisymmetrische 3 × 3–Matrix.

AdT =

(R p ∗ R0 R

)∈ R6×6 Ad−1

T =

(RT −RT ∗ p0 RT

)∈ R6×6 (4.16)

Für eine Twist–Koordinate ξ und eine homogene Transformation T gilt, dass ξ′ = AdT ∗ ξund ξ′′ = Ad−1

T ∗ξ ebenfalls zwei Twist–Koordinaten sind mit exp(ξ′q) = T ∗exp(ξq)∗T−1

und exp(ξ′′q) = T−1 ∗ exp(ξq) ∗ T .

4.5.3 Entwicklung einer Wissensbasis für Exponentialgleichungen

Die inverse Kinematik wird automatisch bestimmt, indem die Gleichungen der direk-ten Kinematik in eine Menge von einfacheren Gleichungen, die geschlossene Lösungenbesitzen, transformiert werden. Diese kanonischen Teilprobleme basieren auf der Schrau-bentheorie [6] und resultieren aus geometrischen Überlegungen und algebraischen Um-formungen. Die ersten drei Teilprobleme wurden von Kahan [83] und Paden [129, 130]eingeführt und geometrisch gelöst. Chen und Gao [23, 61] haben sich auch mit der geome-trischen Lösung von Teilproblemen auseinandergesetzt, wobei sie die Lösungen unbekann-ter Gelenkvariablen durch Polynomfunktionen, die teilweise vom Grad 4 oder Grad 8 sind,ausdrückten. Mit ihren Lösungen bestimmten sie die inverse Kinematik von modularenRobotern ausschließlich numerisch. Im Gegensatz hierzu wird in dieser Arbeit die inverseKinematik analytisch gelöst. Die Lösungen der Teilprobleme 1 sowie 3 bis 17 wurden imRahmen dieser Arbeit unter Verwendung des Skalar–, Vektor– und Spatprodukts formalhergeleitet. Sämtliche Teilprobleme wurden in einer Wissensbasis abgespeichert.

Page 69: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 59

Teilproblem 1: Rotation um eine einzelne Gelenkachse

Durch die Drehung einer Gelenkachse um den Winkel θ soll der Punkt �p nach dem Punkt�q rotiert werden. Der Gelenkachse ist die Twist–Koordinate ξ = (−�ω × �r, �ω) mit |�ω| = 1zugeordnet. Dann existiert eine eindeutige Lösung für den unbekannten Gelenkwinkel θ,um �p nach �q zu verschieben. Zunächst werden die beiden Hilfsvektoren �u = �p − �r und�v = �q − �r eingeführt. Als nächstes werden die beiden Vektoren auf die Ebene projeziert,die senkrecht zu �ω steht. Das Ergebnis sind die Vektoren �u2 = �ω× (�u×�ω) = �u · (�ωT · �ω)−�ω · (�ωT · �u) = �u− �ω · (�ωT · �u) und �v2 = �ω × (�v × �ω) = �v − �ω · (�ωT ·�v). Der Winkel zwischendiesen beiden Vektoren ist die Lösung für θ. Mit dem Vektorprodukt wird der Sinus undmit dem Skalarprodukt der Cosinus von θ berechnet.

exp(ξθ) ∗ �p = �q =⇒ �p + sin θ · (�ω × �u) − �u2 + cos θ · �u2 = �q (4.17)=⇒ sin θ · (�ω × �u2) + cos θ · �u2 = �v2 (4.18)=⇒ sin θ · �ω · |�u2|2 = �u2 × �v2 ∧ cos θ · |�u2|2 = �uT

2 · �v2 (4.19)=⇒ θ = arctan2(�ω

T · (�u2 × �v2), �uT2 · �v2) (4.20)

Abbildung 4.7 Graphische Lösung des Teilproblems 1 (Paden–Kahan 1)

�ω

ξ

�r θ�u

�v

�p

�q

�u2

�v2

θ

�p

�q

Teilproblem 2: Rotationen um zwei sich schneidende Gelenkachsen

Es soll ein Punkt �p auf einen Punkt �q verschoben werden, wobei zuerst mit dem Winkelθ2 um die eine Gelenkachse gedreht wird und dann mit dem Winkel θ1 um die andereGelenkachse. Den beiden Gelenkachsen sind die Twist–Koordinaten ξ1 = (−�ω1 × �r, �ω1)mit |�ω1| = 1 und ξ2 = (−�ω2×�r, �ω2) mit |�ω2| = 1 zugeordnet, wobei �r der Schnittpunkt derbeiden Gelenkachsen ist. Es gilt |ω1 × ω2| �= 0. Dieses Problem wird auf die Berechnungdes Schnittpunkts zweier Kreise zurückgeführt. Es werden die Hilfsvektoren �u = �p − �rund �v = �q − �r sowie die Hilfsvariablen α, β und γ bestimmt.

α =(�ωT

1 · �ω2) · (ωT2 · �u) − (�ωT

1 · �v)

(�ωT1 · �ω2)2 − 1

β =(�ωT

1 · �ω2) · (ωT1 · �v) − (�ωT

2 · �u)

(�ωT1 · �ω2)2 − 1

(4.21)

γ2 =|�u|2 − α2 − β2 − 2 · α · β · (�ωT

1 · �ω2)

|�ω1 × �ω2|2 (4.22)

Für den Schnittpunkt �c der beiden Kreise kann es höchstens zwei Lösungen geben. Es gilt�c = �r+α ·�ω1+β ·�ω2±γ ·(�ω1×�ω2). Die beiden Lösungen für die unbekannten Gelenkwinkelθ1 und θ2 werden bestimmt, indem zweimal das Teilproblem 1 mit Hilfe von �c gelöst wird.

exp(ξ1θ1) ∗ exp(ξ2θ2) ∗ �p = �q =⇒ exp(ξ1θ1) ∗ �c = �q und exp(ξ2θ2) ∗ �p = �c (4.23)

Page 70: Automatische Konfiguration der Bewegungssteuerung von

60 Kapitel 4. Bestimmung des kinematischen Robotermodells

Abbildung 4.8 Graphische Lösung des Teilproblems 2 (Paden–Kahan 2)

�r

�ω1

ξ1

�ω2

ξ2

�u

�v

�p

�q

�c1

�c2

θ1

θ2

Teilproblem 3: Rotation um eine bestimmte Distanz

Es soll ein Punkt �p um eine Rotationsachse mit dem Winkel θ gedreht werden, sodassnach der Drehung der Abstand zwischen den Punkten �p und �q dem Wert δ entspricht.Der Gelenkachse ist die Twist–Koordinate ξ = (−�ω × �r, �ω) mit |�ω| = 1 zugeordnet. DieVektoren �u, �v, �u2 und �v2 werden wie in Teilproblem 1 bestimmt. Der Winkel θ0 ist derWinkel zwischen den Vektoren �u2 und �v2 und wird wie in Gleichung (4.20) bestimmt. MitHilfe der Variablen δ2

2 = δ2 − (ωT · (�p − �q))2 und durch Anwendung des Kosinussatzeswerden die zwei Lösungen für den unbekannten Gelenkwinkel θ bestimmt.

| exp(ξθ) ∗ �p − �q| = δ =⇒ |�p − �q|2 = |�u2 − �v2|2 + (ωT · (�p − �q))2 (4.24)

=⇒ | exp(ξθ) ∗ �u2 − �v2|2 = δ22 (4.25)

=⇒ sin2 θ · |ω × �u2|2 + cos2 θ · |�u2|2 = |�u2|2 (4.26)=⇒ (ω × �u2) · �v2 = cos(θ0 ± π/2) · |�u2| · |�v2| (4.27)=⇒ |�u2|2 − 2 · �uT

2 · �v2 · cos(θ ± θ0) + |�v2|2 = δ22 (4.28)

=⇒ θ(1,2) = θ0 ± arccos

( |�u2|2 + |�v2|2 − δ22

2 · �uT2 · �v2

)(4.29)

Abbildung 4.9 Graphische Lösung des Teilproblems 3 (Paden–Kahan 3)

�ω

ξ

�r θ�u

�v

�p

�q

�ωT (�p − �q)

δ

�u2�p

�q

�v2δ2

θ

θ0

Teilproblem 4: Translation um eine bestimmte Distanz

Es soll ein Punkt �p entlang einer Translationsachse mit dem Wert d verschoben werden,sodass nach der Verschiebung der Abstand zwischen den Punkten �p und �q dem Wert δentspricht. Der Gelenkachse ist die Twist–Koordinate ξ = (�ν,�03×1) mit |�ν| = 1 zugeordnet.

Page 71: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 61

Für den unbekannten Translationsweg d gibt es höchstens zwei Lösungen.

| exp(ξd) ∗ �p − �q| = δ =⇒ |d · �ν + �p − �q| = δ (4.30)=⇒ d2 + 2 · d · (�νT · (�p − �q)) + |�p − �q|2 = δ2 (4.31)

=⇒ d(1,2) = −(�νT · (�p − �q)) ±√

δ2 − |�p − �q|2 + (�νT · (�p − �q))2

(4.32)

Teilproblem 5: Translation eines Punkt–Vektors

Ein Punkt �p soll entlang einer Translationsachse auf einen Punkt �q verschoben werden.Die Translationsachse ist gegeben als ξ = (�ν, 03×1) mit |�ν| = 1. Unter der Voraussetzung|(�q − �p) × �ν| = 0 gibt es eine eindeutige Lösung für den gesuchten Translationsweg d.

exp(ξd) ∗ �p = �q =⇒ d · �ν = �q − �p =⇒ d = (�q − �p)T · �ν (4.33)

Teilproblem 6: Translation / Translation eines Punkt–Vektors

Ein Punkt �p soll entlang zweier Translationsachsen auf einen Punkt �q verschoben werden.Den Translationsachsen sind die Twist–Koordinaten ξ1 = (�ν1, 03×1) mit |�ν1| = 1 undξ2 = (�ν2, 03×1) mit |�ν2| = 1 zugeordnet, wobei |ν1 × ν2| �= 0 und (�q − �p)T · (ν1 × ν2) = 0gilt. Die Translationsachsen sind nicht parallel angeordnet. Dann gibt es eine eindeutigeLösung für die gesuchten Translationsvariablen d1 und d2.

exp(ξ1d1) ∗ exp(ξ2d2) ∗ �p = �q =⇒ d1 · �ν1 + d2 · �ν2 = �q − �p (4.34)

=⇒ d1 =((�q − �p) × �ν2)

T · (�ν1 × �ν2)

|�ν1 × �ν2|2 (4.35)

Nachdem d1 bekannt ist, wird Teilproblem 5 verwendet, um d2 zu bestimmen.

Teilproblem 7: Translation / Translation / Translation eines Punkt–Vektors

Ein Punkt �p soll entlang dreier Translationsachsen auf einen Punkt �q verschoben werden.Die Translationsachsen sind gegeben als ξ1 = (�ν1, 03×1) mit |�ν1| = 1, ξ2 = (�ν2, 03×1) mit|�ν2| = 1 und ξ3 = (�ν3, 03×1) mit |�ν3| = 1, wobei die Achsen paarweise nicht parallel sind.Es gibt eine eindeutige Lösung für die gesuchten Translationsvariablen d1, d2 und d3.

exp(ξ1d1) ∗ exp(ξ2d2) ∗ exp(ξ3d3) ∗ �p = �q =⇒ d1 · �ν1 + d2 · �ν2 + d3 · �ν3 = �q − �p (4.36)

=⇒ d1 =(�q − �p)T · (�ν2 × �ν3)

�νT1 · (�ν2 × �ν3)

(4.37)

Nachdem d1 bekannt ist, wird Teilproblem 6 verwendet, um d2 und d3 zu bestimmen.

Teilproblem 8: Translation / Rotation eines Punkt–Vektors

Zunächst wird ein Punkt �p entlang einer Translationsachse mit dem Wert d verschobenund anschließend um eine Rotationsachse mit dem Winkel θ gedreht. Daraus ergibt sichder Zielpunkt �q. Der Translationsachse ist die Twist–Koordinate ξ2 = (�ν,�03×1) mit |�ν| = 1und der Rotationsachse die Twist–Koordinate ξ1 = (−�ω×�r, �ω) mit |�ω| = 1 zugeordnet. Beistarren Körpern ist der Abstand zwischen einem Punkt �r, der auf der Rotationsachse liegt,

Page 72: Automatische Konfiguration der Bewegungssteuerung von

62 Kapitel 4. Bestimmung des kinematischen Robotermodells

und dem Anfanspunkt der Rotation gleich dem Abstand zwischen �r und dem Endpunktder Rotation. Dadurch wird dieses Problem auf das Teilproblem 4 zurückgeführt.

exp(ξ1θ) ∗ exp(ξ2d) ∗ �p = �q =⇒ d · (�νT · �ω) = (�q − �p)T · �ω (4.38)=⇒ |d · �ν + �p − �r| = |�q − �r| (4.39)

Geometrisch betrachtet handelt es sich bei diesem Teilproblem um die Bestimmung derSchnittpunkte eines Kreises und einer Geraden. In der Lösung werden zwei Fälle unter-schieden. Wenn die beiden Gelenkachsen rechtwinklig angeordnet sind, das heißt es gilt�νT ·�ω = 0, so gibt es höchstens zwei Lösungen für d, die anhand Gleichung (4.39) bestimmtwerden. Ansonsten gibt es eine Lösung für den Translationsweg d = ((�q−�p)T ·�ω)/(�νT ·ω).Anschließend wird das Teilproblem 1 verwendet, um θ zu bestimmen (Abbildung 4.10).

Abbildung 4.10 Graphische Lösung des Teilproblems 8

θ

�q

�ωξ1

�p

�ν

�r�u �v

�c1

�c2Fall 1:�νT · �ω = 0 θ

�q

�ωξ1

�p

�ν

�r

�u �v

�cFall 2:

�νT · �ω �= 0

Teilproblem 9: Rotation / Translation eines Punkt–Vektors

Dieses Teilproblem ist dual zu Teilproblem 8. Zunächst wird ein Punkt �p um eine Rota-tionsachse mit dem Winkel θ gedreht und anschließend entlang einer Translationsachsemit dem Wert d verschoben. Daraus ergibt sich der Zielpunkt �q. Der Rotationsachse istdie Twist–Koordinate ξ2 = (−�ω × �r, �ω) mit |�ω| = 1 und der Translationsachse ist dieTwist–Koordinate ξ1 = (�ν,�03×1) mit |�ν| = 1 zugeordnet. Durch Umformung wird diesesProblem auf Teilproblem 8 zurückgeführt.

exp(ξ1d) ∗ exp(ξ2θ) ∗ �p = �q =⇒ exp(−ξ2θ) ∗ exp(−ξ1d) ∗ �q = �p (4.40)

Teilproblem 10: Rotation / Rotation eines Punkt–Vektors

Zunächst wird ein Punkt �p um eine Gelenkachse mit dem Winkel θ2 und anschließendum eine andere Gelenkachse mit dem Winkel θ1 gedreht. Daraus ergibt sich der Zielpunkt�q. Den Gelenkachsen sind die Twist–Koordinaten ξ1 = (−�ω1 × �r1, �ω1) mit |�ω1| = 1 undξ2 = (−�ω2 × �r2, �ω2) mit |�ω2| = 1 zugeordnet. Im Gegensatz zu Teilproblem 2 müssen sichdie Gelenkachsen nicht schneiden. Die Gleichungen werden zuerst umgeformt.

exp(ξ1θ1) ∗ exp(ξ2θ2) ∗ �p = �q =⇒ exp(ξ2θ2) ∗ �p = exp(−ξ1θ1) ∗ �q (4.41)

=⇒ (exp(ξ2θ2) ∗ �p)T · �ω1 = �qT · �ω1 (4.42)

Bei der Lösung dieses Teilproblems wird unterschieden, ob die Gelenkachsen parallel odernicht parallel zueinander angeordnet sind. Sind die beiden Rotationsachsen nicht parallelangeordnet (|�ω1 × �ω2| �= 0), so wird Gleichung (4.42) ausmultipliziert und dabei dieVektoren �u = �p − �r2 und �u2 = �u − �ω2 · (�ω2 · �u) verwendet. Die resultierende Gleichung

Page 73: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 63

(4.43) ist in Satz 4.5 in Abschnitt 4.3.1 bereits gelöst worden. Deshalb gibt es für θ2 zweiLösungen. Nachdem θ2 bekannt ist, wird Teilproblem 1 verwendet, um θ1 zu bestimmen.

cos θ2 · �uT2 · �ω1 + sin θ2 · (�ω2 × �u)T · �ω1 = (�q − �p + �u2)

T · �ω1 (4.43)

Falls die beiden Rotationsachsen parallel angeordnet sind (�ω1 ·�ω2 = 1), so wird Gleichung(4.41) ausmultipliziert. Das Ergebnis ist Gleichung (4.44).

sin(θ1 + θ2) · (�ω2 × �u) + cos(θ1 + θ2) · �u2 + sin θ1 · �ω2 × (�r2 − �r1)

+(1 − cos θ1) · �ω2 · (�ω2 · (�p − �r1)) + cos θ1 · (�r2 − �r1 + �ω2 · (�ω2 · �u)) = �v (4.44)

Dabei wird der Vektor �v = �q − �r1 verwendet. Durch Multiplikation dieser Gleichung mitdem Vektor �u2 beziehungsweise �ω2×�u ergibt sich Gleichung (4.45) beziehungsweise (4.46).

cos(θ1 + θ2) · |�u2|2 − sin θ1 · (�r2 − �r1) · (�ω2 × �u) + cos θ1 · (�r2 − �r1) · �u2 = �v · �u2 (4.45)sin(θ1 + θ2) · |�u2|2 + sin θ1 · (�r2 − �r1) · �u2 + cos θ1 · (�r2 − �r1) · (�ω2 × �u) = �v · (�ω2 × �u)

(4.46)

Gleichung (4.45) wird mit dem Term a = (�r2 − �r1) · �u2 und Gleichung (4.46) mit demTerm b = (�r2 − �r1) · (�ω2 × �u) multipliziert. Durch Addition der Gleichungen entsteht dieGleichung (4.47). Gleichung (4.45) wird mit dem Term −b und Gleichung (4.46) mit demTerm a multipliziert. Durch Addition der Gleichungen entsteht die Gleichung (4.48). Beiden beiden Gleichungen (4.47) und (4.48) handelt es sich um zwei Gleichungstypen, die inSatz 4.9 in Abschnitt 4.3.1 bereits gelöst wurden. Somit ergeben sich zwei Lösungen fürθ2 und eine Lösung für θ1 (Abbildung 4.11). Falls die beiden Rotationsachsen „zusammenfallen“, das heißt es gilt |(�r2 − �r1) × �ω2| = 0, ist der Manipulator kinematisch redundant.

b · |�u2|2 · sin(θ1 + θ2) + a · |�u2|2 · cos(θ1 + θ2) + (a2 + b2) · cos θ1 = d (4.47)a · |�u2|2 · sin(θ1 + θ2) − b · |�u2|2 · cos(θ1 + θ2) + (a2 + b2) · sin θ1 = e (4.48)

mit d = a · �v · �u2 + b · �v · (�ω2 × �u) und e = a · �v · (�ω2 × �u) − b · �v · �u2

Abbildung 4.11 Graphische Lösung des Teilproblems 11 (Parallele Rotationsachsen)

�ω2 �ω1

ξ2 ξ1

�p �q

�r2 �r1

�u �v�c1

�c1

�c2

θ2 θ1

�p �q�u2 �v2

Teilproblem 11: Translation / Rotation / Translation eines Punkt–Vektors

Zunächst wird ein Punkt �p entlang einer Translationsachse mit dem Wert d3 verschoben,dann um eine Rotationsachse mit dem Winkel θ gedreht und schließlich entlang eineranderen Translationsachse mit dem Wert d1 verschoben. Daraus ergibt sich der Zielpunkt�q. Der ersten Translationsachse ist die Twist–Koordinate ξ3 = (�ν3,�03×1) mit |�ν3| = 1,

Page 74: Automatische Konfiguration der Bewegungssteuerung von

64 Kapitel 4. Bestimmung des kinematischen Robotermodells

der Rotationsachse die Twist–Koordinate ξ2 = (−�ω × �r, �ω) mit |�ω| = 1 und der zwei-ten Translationsachse die Twist–Koordinate ξ1 = (�ν1,�03×1) mit |�ν1| = 1 zugeordnet. Diebeiden Translationsachsen dürfen nicht parallel angeordnet sein, ansonsten ist der Mani-pulator kinematisch redundant. Die zu lösende Gleichung wird wie folgt umgeformt.

exp(ξ1d1) ∗ exp(ξ2θ) ∗ exp(ξ3d3) ∗ �p = �q (4.49)

=⇒ exp(ξ2θ) ∗ (d3 · �ν3 + �p) = −d1 · �ν1 + �q (4.50)=⇒ d1 · (�νT

1 · �ω) + d3 · (�νT3 · �ω) = (�q − �p)T · �ω (4.51)

=⇒ |d3 · �ν3 + �p − �r| = | − d1 · �ν1 + �q − �r| (4.52)

Je nachdem wie die Gelenkachsen angeordnet sind, werden bei der Lösung insgesamt vierFälle unterschieden. Falls beide Translationsachsen zu der Rotationsachse rechtwinkligangeordnet sind, das heißt es gilt �νT

1 ·�ω = 0 und �νT3 ·�ω = 0, so ist der Manipulator kinema-

tisch redundant. Falls nur eine Translationsachse zu der Rotationsachse orthogonal steht,wird die Gelenkvariable der anderen Translationsachse direkt anhand Gleichung (4.51) be-stimmt, das heißt d1 = ((�q−�p)T ·�ω)/(�νT

1 ·�ω) beziehungsweise d3 = ((�q−�p)T ·�ω)/(�νT3 ·�ω). Die

beiden anderen Gelenkvariablen werden dann mit den Teilproblemen 4 und 1 bestimmt.

Falls keine Translationsachse zu der Rotationsachse rechtwinklig angeordnet ist, wirdGleichung (4.51) nach d3 aufgelöst. Die Variable θ wird dadurch aus Gleichung (4.50)eliminiert, dass bei einer Rotation der Abstand zwischen einem Punkt auf der Rotati-onsachse und dem zu drehenden Punkt erhalten bleibt. Durch Substitution von d3 in derAbstandsgleichung (4.52) wird zunächst d1 und anschließend d3 und θ bestimmt.

Teilproblem 12: Translation / Translation / Rotation eines Punkt–Vektors

Dieses Problem ist ähnlich zu dem vorherigen Teilproblem. Es wird ein Punkt �p ent-lang einer Translationsachse mit dem Wert d3 und entlang einer weiteren Translations-achse mit dem Wert d2 verschoben und dann um eine Rotationsachse mit dem Winkelθ gedreht. Daraus ergibt sich der Zielpunkt �q. Den beiden Translationsachsen sind dieTwist–Koordinaten ξ3 = (�ν3,�03×1) mit |�ν3| = 1 und ξ2 = (�ν2,�03×1) mit |�ν2| = 1 und derRotationsachse ist die Twist–Koordinate ξ1 = (−�ω × �r, �ω) mit |�ω| = 1 zugeordnet. DieGleichung wird zuerst weiter umgeformt. Das Ergebnis sind die folgenden Gleichungen.

exp(ξ1θ) ∗ exp(ξ2d2) ∗ exp(ξ3d3) ∗ �p = �q (4.53)

=⇒ d2 · �ν2 + d3 · �ν3 + �p = exp(−ξ1θ) ∗ �q (4.54)

=⇒ �pT · (�ν2 × �ν3) = (exp(−ξ1θ) ∗ �q)T · (�ν2 × �ν3) (4.55)

Falls beide Translationsachsen zu der Rotationsachse senkrecht angeordnet sind, das heißt�νT

2 · �ω = 0 und �νT3 · �ω = 0, ist der Manipulator kinematisch redundant. Anderfalls gibt es

für dieses Teilproblem insgesamt zwei Lösungen (Abbildung 4.12). Gleichung (4.55) wirdausmultipliziert und dabei die Hilfsvektoren �v = �q − �r und �v2 = �v − �ω · (�ω · �v) verwendet.Das Ergebnis ist Gleichung (4.56) bei der es sich um eine Prototypgleichung handelt,deren zwei Lösungen bereits in Satz 4.5 in Abschnitt 4.3.1 bestimmt wurden.

cos θ · �vT2 · (�ν2 × �ν3) − sin θ · (�ω × �v)T · (�ν2 × �ν3) = (�p − �q + �v2)

T · (�ν2 × �ν3) (4.56)

Geometrisch betrachtet wird durch die beiden Translationsachsen eine Ebene aufgespanntund deren Schnittpunkte mit der Kreisbahn des Rotationsgelenks ermittelt. Nachdem θbekannt ist, werden die Lösungen von d2 und d3 mit Hilfe von Teilproblem 6 bestimmt.

Page 75: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 65

Abbildung 4.12 Graphische Lösung des Teilproblems 12

�ν2 × �ν3

�p �ν2 ξ2

�ν3

ξ3

�c2

�c1�r

�v

�qξ1

�ω

θ

Teilproblem 13: Rotation / Translation / Translation eines Punkt–Vektors

Dieses Problem ist dual zu dem vorherigen Problem. Es wird ein Punkt �p um eine Rota-tionsachse mit dem Winkel θ gedreht und dann entlang einer Translationsachse mit demWert d2 und entlang einer weiteren Translationsachse mit dem Wert d1 verschoben. Darausergibt sich der Zielpunkt �q. Der Rotationsachse ist die Twist–Koordinate ξ3 = (−�ω×�r, �ω)mit |�ω| = 1 und den Translationsachsen die Twist–Koordinaten ξ2 = (�ν2,�03×1) mit |�ν2| = 1und ξ1 = (�ν1,�03×1) mit |�ν1| = 1 zugeordnet. Durch entsprechende Substitution wird diezu lösende Gleichung auf Teilproblem 12 zurückgeführt.

exp(ξ1d1) ∗ exp(ξ2d2) ∗ exp(ξ3θ) ∗ �p = �q (4.57)

=⇒ exp(−ξ3θ) ∗ exp(−ξ2d2) ∗ exp(−ξ1d1) ∗ �q = �p (4.58)

Teilproblem 14: Rotation / Translation / Rotation eines Punkt–Vektors

Zunächst wird ein Punkt �p um eine Rotationsachse mit dem Winkel θ3 gedreht, dannentlang einer Translationsachse mit dem Wert d verschoben und schließlich um eine andereRotationsachse mit dem Winkel θ1 gedreht. Daraus ergibt sich der Zielpunkt �q. Denbeiden Rotationsachsen sind die Twist–Koordinaten ξ3 = (−�ω3 × �r3, �ω3) mit |�ω3| = 1sowie ξ1 = (−�ω1 × �r1, �ω1) mit |�ω1| = 1 und der Translationsachse die Twist–Koordinateξ2 = (�ν,�03×1) mit |�ν| = 1 zugeordnet. Die zu lösende Gleichung wird wie folgt umgeformt.

exp(ξ1θ1) ∗ exp(ξ2d) ∗ exp(ξ3θ3) ∗ �p = �q (4.59)

=⇒ d · �ν + exp(ξ3θ3) ∗ �p = exp(−ξ1θ1) ∗ �q (4.60)

=⇒ d · �νT · �ω1 + (exp(ξ3θ3) ∗ �p)T · �ω1 = �qT · �ω1 (4.61)

=⇒ d · �νT · �ω3 + �pT · �ω3 = (exp(−ξ1θ1) ∗ �q)T · �ω3 (4.62)

Je nachdem wie die Gelenkachsen angeordnet sind, werden fünf Fälle unterschieden. Fallsdie beiden Rotationsachsen parallel zueinander stehen und die Translationsachse dazusenkrecht angeordnet ist (�νT · �ω1 = 0), ist der Manipulator kinematisch redundant. Fallsdie beiden Rotationsachsen parallel angeordnet sind und es gilt �νT ·�ω1 �= 0, so gibt es eineeindeutige Lösung für den Translationsweg d = ((�q− �p)T · �ω1)/(�νT · �ω1). Die Lösungen fürθ1 und θ3 werden dann anhand Gleichung (4.60) mit dem Teilproblem 10 bestimmt.

Falls die beiden Rotationsachsen nicht parallel angeordnet sind, und es gilt �νT · �ω1 = 0,so werden zuerst die Lösungen für θ3 bestimmt. Hierfür wird Gleichung (4.61) ausmul-tipliziert und dabei die Vektoren �u = �p − �r3 und �u2 = �u − �ω3 · (�ω3 · �u) verwendet. Beider erhaltenen Gleichung (4.63) handelt es sich um einen Gleichungstyp, der in Satz 4.5

Page 76: Automatische Konfiguration der Bewegungssteuerung von

66 Kapitel 4. Bestimmung des kinematischen Robotermodells

in Abschnitt 4.3.1 bereits gelöst wurde. Somit ergeben sich zwei Lösungen für θ3. DieLösungen von d und θ1 werden anschließend mit Hilfe von Teilproblem 8 bestimmt.

cos θ3 · �uT2 · �ω1 + sin θ3 · (�ω3 × �u)T · �ω1 = (�q − �p + �u2)

T · �ω1 (4.63)

Falls die beiden Rotationsachsen nicht parallel angeordnet sind, und es gilt �νT ·�ω3 = 0, sowird zunächst die Gleichung (4.62) ausmultipliziert. Dabei werden die Vektoren �v = �q−�r1

und �v2 = �v−�ω1 · (�ω1 ·�v) verwendet. Das Ergebnis ist Gleichung (4.64), mit der die beidenLösungen von θ1 wiederum mit Satz 4.5 aus Abschnitt 4.3.1 ermittelt werden. Danachwerden die Lösungen von d und θ3 mit Hilfe von Teilproblem 9 bestimmt.

cos θ1 · �vT2 · �ω3 − sin θ1 · (�ω1 × �v)T · �ω3 = (�p − �q + �v2)

T · �ω3 (4.64)

Geometrisch betrachtet handelt es sich bei den vorherigen beiden Fällen um die Bestim-mung der beiden Schnittpunkte einer Ebene und eines Kreises (Abbildung 4.13). DieEbene ist jeweils durch das Rotations– und Translationsgelenk, die senkrecht zueinanderstehen, definiert. Der Spezialfall, dass die beiden Rotationsachsen nicht parallel angeord-net sind und weder �νT ·�ω1 = 0 noch �νT ·�ω3 = 0 gilt, führt zu sehr komplexen Lösungsglei-chungen. Geometrisch gesehen werden hierbei die Schnittpunkte eines Kreises mit deneneines eventuell geneigten Zylinders bestimmt. Die Neigung des Zylinders hängt davon ab,ob die Translations– und eine der Rotationsachsen parallel zueinander sind oder nicht.

Abbildung 4.13 Graphische Lösung des Teilproblems 14

Fall 1:�νT · �ω2 �= 0|ω1 × ω2| = 0

�ω2 �ω1

ξ2 ξ1

�p

�q

�r2 �r1�u

�v

d · �νFall 2:

�νT · �ω2 = 0|ω1 × ω2| �= 0

�ω2

�ω1ξ2

ξ1

�p

�q

�r2

�r1

�u

�vd · �ν

Teilproblem 15: Rotation / Rotation / Translation eines Punkt–Vektors

Zunächst wird ein Punkt �p um eine Rotationsachse mit dem Winkel θ3 gedreht, dannum eine weitere Rotationsachse mit dem Winkel θ2 gedreht und schließlich entlang einerTranslationsachse mit dem Wert d verschoben. Daraus ergibt sich der Zielpunkt �q. Denbeiden Rotationsachsen sind die Twist–Koordinaten ξ3 = (−�ω3 × �r3, �ω3) mit |�ω3| = 1sowie ξ2 = (−�ω2 × �r2, �ω2) mit |�ω2| = 1 und der Translationsachse die Twist–Koordinateξ1 = (�ν,�03×1) mit |�ν| = 1 zugeordnet. Die zu lösende Gleichung wird wie folgt umgeformt.

exp(ξ1d) ∗ exp(ξ2θ2) ∗ exp(ξ3θ3) ∗ �p = �q (4.65)

=⇒ exp(ξ3θ3) ∗ �p = exp(−ξ2θ2) ∗ (−d · �ν + �q) (4.66)

=⇒ d · �νT · �ω2 + (exp(ξ3θ3) ∗ �p)T · �ω2 = �qT · �ω2 (4.67)

=⇒ �pT · �ω3 = (exp(−ξ2θ2) ∗ (−d · �ν + �q))T · �ω3 (4.68)

Bei der Lösung dieses Teilproblems werden insgesamt fünf Fälle unterschieden. Falls diebeiden Rotationsachsen parallel zueinander stehen und die Translationsachse dazu senk-recht angeordnet ist (�νT · �ω2 = 0), so ist der Manipulator kinematisch redundant. Falls

Page 77: Automatische Konfiguration der Bewegungssteuerung von

4.5. Geometrische Lösung der inversen Kinematik 67

die beiden Rotationsachsen parallel angeordnet sind und es gilt �νT · �ω2 �= 0, so gibt eseine eindeutige Lösung für den Translationsweg d = ((�q − �p)T · �ω2)/(�νT · �ω2). Die zweiLösungen für θ2 und θ3 werden dann mit dem Teilproblem 10 bestimmt.

Falls die beiden Rotationsachsen nicht parallel angeordnet sind und es gilt �νT · �ω2 = 0,so werden zuerst die Lösungen für θ3 bestimmt. Hierfür wird Gleichung (4.67) ausmul-tipliziert und dabei die Vektoren �u = �p − �r3 und �u2 = �u − �ω3 · (�ω3 · �u) verwendet. Dieresultierende Gleichung (4.69) liefert zwei Lösungen für θ3, die mit Satz 4.5 aus Abschnitt4.3.1 ermittelt werden. Ein geometrische Betrachtung zeigt, dass es sich bei den beidenLösungen um die Schnittpunkte einer Ebene und eines Kreises handelt. Die Ebene istdurch die Translations– und Rotationsachse, die rechtwinklig angeordnet sind, definiert.Die Lösungen von d und θ2 werden anschließend mit Hilfe von Teilproblem 9 bestimmt.

cos θ3 · �uT2 · �ω2 + sin θ3 · (�ω3 × �u)T · �ω2 = (�q − �p + �u2)

T · �ω2 (4.69)

Falls die beiden Rotationsachsen nicht parallel angeordnet sind und auch nicht �νT ·�ω2 = 0gilt, so wird unterschieden, ob die Translationsachse und die benachbarte Rotationsachseparallel zueinander sind oder es nicht sind. Beide Fälle führen zu sehr komplexen Lösungs-gleichungen, wobei bei parallelen Gelenkachsen die Lösungen etwas einfacher sind.

Teilproblem 16: Translation / Rotation / Rotation eines Punkt–Vektors

Dieses Problem ist dual zu dem vorherigen Problem. Es wird ein Punkt �p entlang einerTranslationsachse mit dem Wert d verschoben, dann um eine Rotationsachse mit demWinkel θ2 gedreht und danach um eine weitere Rotationsachse mit dem Winkel θ1 gedreht.Daraus ergibt sich der Zielpunkt �q. Der Translationsachse ist die Twist–Koordinate ξ3 =(�ν,�03×1) mit |�ν| = 1 und den Rotationsachsen die Twist–Koordinaten ξ1 = (−�ω1 ×�r1, �ω1)mit |�ω1| = 1 und ξ2 = (−�ω2 × �r2, �ω2) mit |�ω2| = 1 zugeordnet. Durch entsprechendeSubstitution wird die zu lösende Gleichung auf Teilproblem 15 zurückgeführt.

exp(ξ1θ1) ∗ exp(ξ2θ2) ∗ exp(ξ3d) ∗ �p = �q (4.70)

=⇒ exp(−ξ3d) ∗ exp(−ξ2θ2) ∗ exp(−ξ1θ1) ∗ �q = �p (4.71)

Teilproblem 17: Rotation / Rotation / Rotation eines Punkt–Vektors

Zuerst wird ein Punkt �p um eine Rotationsachse mit dem Winkel θ3, dann um eine zweiteRotationsachse mit dem Winkel θ2 und schließlich um eine dritte Rotationsachse mit demWinkel θ1 gedreht. Daraus ergibt sich der Zielpunkt �q. Den Rotationsachsen sind dieTwist–Koordinaten ξ3 = (−�ω3 ×�r3, �ω3) mit |�ω3| = 1, ξ2 = (−�ω2 ×�r2, �ω2) mit |�ω2| = 1 undξ1 = (−�ω1 × �r1, �ω1) mit |�ω1| = 1 zugeordnet. Die zu lösende Gleichung wird umgeformt.

exp(ξ1θ1) ∗ exp(ξ2θ2) ∗ exp(ξ3θ3) ∗ �p = �q (4.72)

=⇒ exp(ξ2θ2) ∗ exp(ξ3θ3) ∗ �p = exp(−ξ1θ1) ∗ �q (4.73)

=⇒ (exp(ξ3θ3) ∗ �p)T · �ω2 = (exp(−ξ1θ1) ∗ �q)T · �ω2 (4.74)

Bei der Lösung werden die folgenden vier Fälle bezüglich der Anordnung der Gelenkachsenunterschieden. Falls die drei Rotationsachsen parallel zueinander angeordnet sind undweder �p auf der ersten noch �q auf der dritten Rotationsachse liegt, so ist der Manipulatorkinematisch redundant. Als nächstes werden die beiden Fälle betrachtet, dass genau zweiRotationsachsen parallel zueinander sind. Falls |�ω1×�ω2| = 0 gilt, so gibt es zwei Lösungen

Page 78: Automatische Konfiguration der Bewegungssteuerung von

68 Kapitel 4. Bestimmung des kinematischen Robotermodells

für θ3. Zur Bestimmung dieser Lösungen wird Gleichung (4.74) mit den Vektoren �u = �p−�r3

und �u2 = �u − �ω3 · (�ω3 · �u) umgeformt. Das Ergebnis ist Gleichung (4.75), bei der es sichum einen Gleichungstyp handelt, der in Satz 4.5 in Abschnitt 4.3.1 bereits gelöst wurde.Die Lösungen von θ1 und θ2 werden anschließend mit Hilfe von Teilproblem 10 bestimmt.

cos θ3 · �uT2 · �ω2 + sin θ3 · (�ω3 × �u)T · �ω2 = (�q − �p + �u2)

T · �ω2 (4.75)

Falls |�ω2 × �ω3| = 0 gilt, so gibt es zwei Lösungen für θ1. Diese Lösungen werden durchAusmultiplikation von Gleichung (4.74) bestimmt. Das Ergebnis ist die Gleichung (4.76),wobei die Vektoren �v = �q−�r1 und �v2 = �v−�ω1·(�ω1·�v) verwendet werden. Die zwei Lösungenfür θ1 sind geometrisch betrachtet die Schnittpunkte einer Ebene und eines Kreises. DieEbene ist durch die zwei parallelen Rotationsachsen festgelegt. Danach werden die beidenLösungen von θ2 und θ3 mit Hilfe von Teilproblem 10 bestimmt.

cos θ1 · �vT2 · �ω2 − sin θ1 · (�ω1 × �v)T · �ω2 = (�p − �q + �v2)

T · �ω2 (4.76)

Der Spezialfall, dass überhaupt keine Gelenkachsen parallel angeordnet sind, führt zu sehrkomplexen Lösungsgleichungen.

4.5.4 Dekomposition der direkten Kinematik

Die Bestimmung der inversen Kinematik mit Twist–Koordinaten erfolgt durch Dekomposi-tion der direkten Kinematik in kleinere Teilprobleme. Schneiden sich aufeinanderfolgendeRotationsachsen eines Manipulators in einem Punkt, so existiert ein Fixpunkt, mit demsich die Berechnungen vereinfachen lassen. Zur Bestimmung einer geschlossenen Lösungder Rückwärtstransformation werden deswegen zuerst die Schnittpunkte der Rotations-achsen ermittelt. Für zwei aufeinanderfolgende Twist–Koordinaten ξi = (−�ωi×�ri, �ωi) mit|�ωi| = 1 und ξi+1 = (−�ωi+1 × �ri+1, �ωi+1) mit |�ωi+1| = 1 gibt es einen eindeutigen Schnitt-punkt �p, falls die beiden Rotationsachsen nicht parallel zueinander sind, das heißt es gilt|�ωi+1 × �ωi| �= 0, und falls die beiden Rotationsachsen in einer Ebene liegen, das heißt esgilt (�ri − �ri+1) · (�ωi+1 × �ωi) = 0. Der Schnittpunkt �p wird dann wie folgt berechnet:

�p = �ri+1 +((�ri − �ri+1) × �ωi)

T · (�ωi+1 × �ωi)

|�ωi+1 × �ωi|2 · �ωi+1 (4.77)

Der Ausgangspunkt für die Berechnung der inversen Kinematik ist Gleichung (4.8), wobeidie Transformationsmatrix T0,n(�0), die die Nullstellung des Roboters angibt, auf die ande-re Seite gebracht wird. Liegt der zu rotierende Punkt �p auf der Rotationsachse, so änderteine Drehung um die gegebene Achse diesen Punkt-Vektor nicht. Es gilt exp(ξiqi) ∗ �p = �pfür jeden beliebigen Punkt �p auf dieser Rotationsachse. Schneiden sich drei aufeinander-folgende Rotationsachsen eines sechsachsigen beziehungsweise zwei aufeinanderfolgendeRotationsachsen eines fünfachsigen Roboters in dem Punkt �p, oder liegt der Punkt �p aufgenau einer Rotationsachse eines vierachsigen Roboters, so vereinfacht sich die Gleichungder direkten Kinematik stark. Liegt �p auf den Achsen 4 bis n eines n–achsigen Roboters(n = 4, . . . , 6), so lässt sich die direkte Kinematik zur Gleichung (4.79) vereinfachen, diemit den Teilproblemen 1 bis 17 analytisch gelöst wird.(

3∏i=1

exp(ξiqi)

)∗(

n∏i=4

exp(ξiθi)

)= T0,n(�q) ∗ T−1

0,n(�0) (4.78)

=⇒(

3∏i=1

exp(ξiqi)

)∗ �p = T0,n(�q) ∗ T−1

0,n(�0) ∗ �p (4.79)

Page 79: Automatische Konfiguration der Bewegungssteuerung von

4.6. Jacobi–Matrix / Geschwindigkeitstransformation 69

Nachdem q1, q2 und q3 gelöst sind, wird Gleichung (4.78) nach den verbleibenden Unbe-kannten q4 bis qn aufgelöst. Diese Gelenkvariablen werden wiederum durch Anwendungder Teilprobleme 1 bis 17 analytisch gelöst. Die inverse Kinematik wird mit diesem Verfah-ren vollautomatisch bestimmt, wenn sich maximal drei Rotationsachsen in einem Punktschneiden. Schneiden sich vier Rotationsachsen in einem Punkt, so ist der Manipulatorkinematisch redundant und kann nur numerisch gelöst werden.

4.5.5 Experimentelle Ergebnisse

Für dieselben Roboter für die in Abschnitt 4.3.3 das kinematische Modell mit Hilfe vonhomogenen Transformationsmatrizen bestimmt wurde, wurde es auch mit Hilfe von Twist–Koordinaten bestimmt. Das direkte kinematische Modell, das bei beiden Verfahren gene-riert wird, ist jedesmal vollkommen identisch und darf deswegen als korrekt angenommenwerden. Beim inversen kinematischen Modell unterscheiden sich teilweise die generier-ten analytischen Ausdrücke. Bei der numerischen Ausführung werden allerdings dieselbenWerte berechnet. Die erforderlichen Operationen der generierten kinematischen Modelleauf Basis von Twist–Koordinaten sind in Tabelle 4.7 dargestellt.

Tabelle 4.7 Evaluation des kinematischen Robotermodells für ausgewählte Roboter

Anzahl arithmetische Operatoren der direkten KinematikRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 0 0 4 0 2 2 0 0 0Scara I 8 5 4 0 4 4 0 0 0Scara II 12 1 4 0 4 4 0 0 0Zylindrischer Roboter 8 10 55 0 4 4 0 0 0Stanford Arm 19 16 123 0 5 5 0 0 0Gelenkarmroboter 54 18 128 0 21 22 0 0 0

Anzahl arithmetische Operatoren der inversen KinematikRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 0 0 0 0 0 0 2 0 0Scara I 11 9 31 1 3 3 4 1 9Scara II 12 7 35 1 2 2 4 1 9Zylindrischer Roboter 12 15 56 0 3 3 5 2 3Stanford Arm 27 17 129 0 4 4 7 3 6Gelenkarmroboter 29 26 170 1 5 5 8 2 12

4.6 Jacobi–Matrix / Geschwindigkeitstransformation

Die inverse Kinematik kann weder mit der Denavit–Hartenberg Konvention noch mitTwist–Koordinaten für jeden beliebigen Robotertyp analytisch bestimmt werden. In diesenFällen werden näherungsweise Verfahren, die auf der Berechnung der Jacobi–Matrix basie-ren, angewendet. Die Jacobi–Matrix beziehungsweise Funktional– oder Ableitungsmatrixist nach dem Mathematiker Carl Gustav Jacob Jacobi (1804–1851) benannt. Sie beschreibt

Page 80: Automatische Konfiguration der Bewegungssteuerung von

70 Kapitel 4. Bestimmung des kinematischen Robotermodells

den Zusammenhang zwischen den Gelenkgeschwindigkeiten und der Geschwindigkeit desEndeffektors und wird in dieser Arbeit für die Ermittlung singulärer Konfigurationen (Ab-schnitt 4.6.2), für die näherungsweise Rückwärtstransformation (Abschnitt 4.6.3) und fürdie Bestimmung des dynamischen Robotermodells nach Lagrange (Abschnitt 5.1) verwen-det. Die Dimension der Jacobi–Matrix beträgt 6×n, wobei n die Anzahl der Gelenkachsendes Roboters ist, das heißt jede Spalte entspricht einer Gelenkachse.

4.6.1 Bestimmung der Jacobi–Matrix

Die Jacobi–Matrix wird auch als Matrix der partiellen Ableitungen bezeichnet und kannauf unterschiedliche Arten bestimmt werden [126]. Sie kann beispielsweise durch Differen-tiation der Gleichungen des direkten kinematischen Modells bestimmt werden. Die dreiFunktionen f1, f2 und f3 berechnen die Position und die drei Funktionen f4, f5 und f6

die Orientierung des Endeffektors in Abhängigkeit der Gelenkvariablen q1, . . . , qn.

J =dFd�q

=

⎛⎜⎝

∂f1

∂q1

∂f1

∂q2. . . ∂f1

∂qn

...... . . . ...

∂f6

∂q1

∂f6

∂q2. . . ∂f6

∂qn

⎞⎟⎠ (4.80)

Die ersten drei Zeilen der Jacobi–Matrix können durch partielle Ableitung des Positi-onsvektors des direkten kinematischen Modells (Gleichung 4.2) bestimmt werden. DieBestimmung der Zeilen vier bis sechs durch partielle Ableitung der Orientierung ist hin-gegen kompliziert, da die Orientierung des Endeffektors als Rotationsmatrix angegegebenist und zunächst in Euler Winkel (Abschnitt A.1.1) umgewandelt werden muß. Dabei ent-stehen meistens Terme, die die Arcustangensfunktion enthalten. Da diese Funktion sehraufwendig abzuleiten ist, wird die Jacobi–Matrix unter Verwendung der in Abschnitt 4.1festgelegten Koordinatensysteme iterativ berechnet. Die i–te Spalte der Jacobi–Matrixhat für Translations– beziehungsweise Rotationsgelenke die folgende Gestalt [162]:

J Ti =

(�zi−1

03×1

)J R

i =

(�zi−1 × (�pn − �pi−1)

�zi−1

)(4.81)

Der Vektor �pi−1 entspricht dem Ursprung und der Vektor �zi−1 der z–Achse des (i − 1)–ten Koordinatensystems im Basiskoordinatensystem des Roboters. Der Vektor �pn gibt diePosition des Endeffektors im Basiskoordinatensystem wieder.

Darüber hinaus wird die Jacobi–Matrix auch mit Hilfe von Twist–Koordinaten (Abschnitt4.5.1) und deren Adjungierten (Abschnitt 4.5.2) bestimmt. Die Jacobi–Matrix kann ent-weder beginnend vom Basiskoordinatensystem oder beginnend vom Endeffektorkoordina-tensystem hergeleitet werden. Im ersten Fall wird zunächst die Matrix JS (engl.: spatialmanipulator Jacobian) und im zweiten Fall zuerst die Matrix JB (engl.: body manipulatorJacobian) bestimmt. Die i–te Spalte von JS hängt von den vorangehenden Gelenkkoor-dinaten q1, . . . , qi−1 ab, während die i–te Spalte der Matrix JB von den nachfolgendenGelenkkoordinaten qi+1, . . . , qn abhängt.

JS i = Adexp(ξ1q1)∗...∗exp(ξi−1qi−1)∗ ξi JBi = Ad−1

exp(ξiqi)∗...∗exp(ξnqn)∗T0,n(�0)∗ ξi (4.82)

Durch Multiplikation der inversen Adjungierten von der Transformatiosmatrix Ts und derMatrix JS beziehungsweise durch Multiplikation der Adjungierten von der Transforma-tionsmatrix Tb und der Matrix JB wird die Jacobi–Matrix J bestimmt. Die Matrix Ts

Page 81: Automatische Konfiguration der Bewegungssteuerung von

4.6. Jacobi–Matrix / Geschwindigkeitstransformation 71

berücksichtigt nur den Translationsanteil �pdk und die Matrix Tb nur den RotationsanteilRdk des direkten kinematischen Modells (Gleichung 4.8).

J = Ad−1Ts

∗ JS mit Ts =

(13×3 �pdk

01×3 11×1

)(4.83)

J = AdTb∗ JB mit Tb =

(Rdk 03×1

01×3 11×1

)(4.84)

4.6.2 Durchführung einer Singularitätsanalyse

Singuläre Konfigurationen sind Gelenkstellungen bei denen der Roboter einen oder meh-rere Freiheitsgrade im kartesischen Raum verliert. Die Erkennung und Vermeidung sin-gulärer Konfigurationen ist eine weitere Hauptaufgabe bei der Steuerung von Robotern,da in singulären Konfigurationen die Beweglichkeit eines Manipulators eingeschränkt ist.Es werden zwei Arten von Singularitäten unterschieden.

• Äußere Singularitäten liegen am Rand des Arbeitsraums eines Roboters. Hier istzum Beispiel der Arm voll ausgestreckt oder zusammmengefaltet und kann in einerRaumrichtung nicht bewegt werden.

• Innere Singularitäten treten im Inneren des Arbeitsraums auf. Hier liegen zum Bei-spiel zwei Gelenkachsen auf einer Linie und es gibt unendlich viele Gelenkeinstellun-gen, die zur gleichen Effektorlage führen. Die Drehung der einen Gelenkachse kanndurch entsprechende Gegendrehung der anderen Gelenkachse kompensiert werden.

Werden die kartesischen Geschwindigkeiten eines Roboters über die inverse Jacobi–Matrixin Gelenkgeschwindigkeiten überführt, können sich in der Nähe von Singularitäten unend-lich hohe Gelenkgeschwindigkeiten ergeben.

Mit Hilfe der Jacobi–Matrix wird automatisch eine Singularitätsanalyse durchgeführt. Beisechsachsigen Robotern ist die Jacobi–Matrix in singulären Konfigurationen singulär, dasheißt sie ist dann nicht mehr invertierbar. Zur Ermittlungen singulärer Konfigurationenwerden bei sechsachsigen Robotern die Nullstellen der Jacobi–Determinante bestimmt.Hierbei wird die Jacobi–Matrix nach Möglichkeit in die folgende Blockgestalt gebracht,da es dann möglich ist, die Jacobi–Determinante durch zwei Unterdeterminaten auszu-drücken, die nach der Sarrus–Regel bestimmt werden.

det

[A3×3 03×3

B3×3 C3×3

]= det

[(A3×3 03×3

B3×3 13×3

)∗(

13×3 03×3

03×3 C3×3

)]= det(A3×3)·det(C3×3) (4.85)

4.6.3 Näherungsweise Rückwärtstransformation

Falls es nicht möglich ist, eine geschlossene Lösung der inversen Kinematik zu bestimmen,so werden numerische (iterative) Näherungsverfahren eingesetzt, die prinzipiell für alleRobotertypen mit beliebig vielen Freiheitsgraden verwendbar sind. Das Newton–RaphsonVerfahren, benannt nach Isaac Newton (1643–1727) und Joseph Raphson (1648–1715),ist die am weitesten verbreitete numerische Methode, um die inverse Kinematik zu be-rechnen. Die Jacobi–Matrix beziehungsweise inverse Jacobi–Matrix ist Bestandteil diesesVerfahrens. Der größte Vorteil dieser Methode ist ihre quadratische Konvergenz, sofern derAnfangswert der Iteration nahe genug bei der Lösung liegt [127]. Zu den Nachteilen zäh-len der geringe Konvergenzradius und der hohe Rechenaufwand. Für jeden Bahnpunkt ist

Page 82: Automatische Konfiguration der Bewegungssteuerung von

72 Kapitel 4. Bestimmung des kinematischen Robotermodells

eine erneute Iteration erforderlich und in jedem Iterationsschritt muß die inverse Jacobi–Matrix neu berechnet werden. Die Matrix kann nur dann invertiert werden, wenn siequadratisch ist, das heißt wenn es sich um einen sechsachsigen Roboter handelt. Andern-falls wird die nach einem amerikanischen und einem englischen Mathematiker benannteMoore–Penrose–Inverse beziehungsweise Pseudoinverse J + bestimmt [116, 136]. Für Ro-boter mit weniger als sechs Gelenkachsen wird die linke und für Roboter mit mehr alssechs Gelenkachsen die rechte Pseudoinverse bestimmt. Die Dimension der Matrix beträgtn × 6.

J + =

{J T ∗ (J ∗ J T )−1 , n > 6

(J T ∗ J )−1 ∗ J T , n < 6(4.86)

Beim Newton–Raphson Verfahren müssen von dem Startpunkt P0 sowohl die kartesischen�x0 als auch die Gelenkkoordinaten �q0 bekannt sein. Mit Hilfe der inversen Jacobi–Matrixwerden dann die kartesischen Koordinaten �x eines Punkts P in Gelenkkoordinaten �qk

umgerechnet. Es wird die folgende Rekursionsformel verwendet:

�qk+1 = �qk + J −1(�qk) · (�x − �xk) mit �xk = f(�qk) (4.87)

Damit sich die einzelnen Fehler nicht addieren, wird nach jedem Iterationsschritt mitder Funktion f eine Vorwärtstransformation durchgeführt. Mit dem Vektor �xk wird dannweiter gerechnet. Die Iteration wird beendet, falls die Differenz zwischen der gegebenenkartesischen Lage und der iterierten Lösung unter eine Schwelle sinkt: |�x − �xk| < ε.Um „endlose“ Iterationen zu verhindern, wird die Anzahl der Iterationsschritte gezählt.Ein Abbruch erfolgt auch dann, wenn die geforderte Genauigkeit nach einer bestimmtenAnzahl von Iterationszyklen noch nicht erreicht wurde. Die Iteration darf jedoch nicht zufrüh abgebrochen werden.

4.6.4 Experimentelle Ergebnisse

Für dieselben Robotertypen für die in Abschnitt 4.3.3 das kinematische Modell aufgestelltwurde, wurde ebenfalls die Jacobi–Matrix in analytischer Form ermittelt (Tabelle 4.8).Die Jacobi–Matrix wurde sowohl mit Hilfe von homogenen Koordinaten (Gleichung 4.81)als auch mit Hilfe von Twist–Koordinaten (Gleichung 4.84) bestimmt. Die beiden gene-rierten Jacobi–Matrizen für den jeweiligen Robotertyp wurden miteinander verglichen.Da sie jedes Mal völlig übereinstimmen, dürfen diese komplizierten Matrizen als korrektangenommen werden. Dieses diversitäre Vorgehen garantiert eine hohe Softwarequalität.

Tabelle 4.8 Evaluation der Jacobi–Matrix für verschiedene Roboter

Anzahl arithmetische Operatoren der Jacobi–MatrixRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 0 0 0 0 1 1 0 0 0Scara I 5 1 6 0 3 3 0 0 0Scara II 5 1 6 0 3 3 0 0 0Zylindrischer Roboter 4 4 41 0 3 3 0 0 0Stanford Arm 9 19 120 0 4 4 0 0 0Gelenkarmroboter 55 29 151 0 26 27 0 0 0

Page 83: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 5

Bestimmung des dynamischenRobotermodells

In diesem Kapitel wird beschrieben, wie die Herleitung des dynamischen Robotermo-dells anhand einer Beschreibung der mechanischen Struktur des Roboters vollautoma-tisch durchgeführt wird. Hierbei handelt es sich um ein sehr komplexes Problem, da dasdynamische Modell aus partiellen Differentialgleichungen mit großen Nichtlinearitäten be-steht. Für die meisten Robotertypen läßt sich diese Herleitung nicht mehr fehlerfrei vonHand bewerkstelligen, da sie sehr komplex und mit hohem Aufwand verbunden ist. Dy-namik (griech.: dynamis = Kraft) ist die mathematische Beschreibung der Bewegung vonKörpern unter der Einwirkung von Kräften. Zur Berechnung des dynamischen Roboter-modells werden verschiedene Berechnungsverfahren angewendet, und zwar das LagrangeVerfahren (Abschnitt 5.1) und das rekursive Newton–Euler Verfahren (Abschnitt 5.2).

Das dynamische Modell berechnet den Zusammenhang zwischen Position, Geschwindig-keit und Beschleunigung auf der einen Seite und den Antriebskräften und Momenten, diezur Durchführung der Bewegung erforderlich sind, auf der anderen Seite [161, 170, 179].Es werden dabei sowohl externe Kräfte wie zum Beispiel Gravitation als auch interneParameter wie zum Beispiel konzentrierte Massen der einzelnen Manipulatorglieder be-rücksichtigt. Ähnlich wie beim kinematischen Robotermodell gibt es beim dynamischenRobotermodell auch ein direktes und ein inverses Problem (Abbildung 5.1).

Abbildung 5.1 Direkte und inverse Dynamik

Inverse Dynamik

Direkte Dynamik

Profile derGelenktrajektorien

Q(t), Q(t), Q(t)

Profile derGelenkmomenteτ1(t), . . . , τn(t)

Die inverse Dynamik beziehungsweise Rückwärtsdynamik berechnet die in den Gelenkach-sen auftretenden Kräfte und Momente in Abhängigkeit der Lage, der Geschwindigkeitund der Beschleunigung der einzelnen Achsen. Die direkte Dynamik beziehungsweise Vor-wärtsdynamik berechnet die Bewegung eines Manipulators in Abhängigkeit von internoder extern wirkenden Kräften und Momenten. Das direkte Modell erhält als Eingabedie aktuellen Gelenkwerte und Gelenkgeschwindigkeiten sowie die momentan wirkendenKräfte und Momente und liefert als Ausgabe die resultierenden Gelenkbeschleunigungen.

Page 84: Automatische Konfiguration der Bewegungssteuerung von

74 Kapitel 5. Bestimmung des dynamischen Robotermodells

Durch Integration der berechneten Beschleunigungen nach der Zeit werden die Geschwin-digkeiten und durch Integration der Geschwindigkeiten nach der Zeit werden die Positio-nen der Gelenkachsen bestimmt. Die kartesischen Koordinaten des Endeffektors könnendann mit der direkten Kinematik bestimmt werden. Die inverse Dynamik ist wichtig fürden modellbasierten Reglerentwurf. Durch die Einbeziehung der inversen Dynamik in dieBerechnung der Sollwerte für die Antriebe kann die Positioniergenauigkeit eines Manipu-lators verbessert werden. Die direkte Dynamik ist wichtig für die Simulation und für dieNeuentwicklung von Robotern sowie für die Auswahl von geeigneten Antrieben.

Die Roboterdynamik kann numerisch oder analytisch bestimmt werden. Bei der Ermitt-lung einer Matrixdarstellung werden die Massen–, Coriolis– und Zentrifugalmatrix sowieder Gravitationsvektor explizit berechnet. Das analytische Aufstellen der Bewegungsglei-chungen in Form eines Differentialgleichungssystems hat den Vorteil, dass diese Gleichun-gen sehr leicht nach den Beschleunigungsgrößen aufgelöst werden können. Somit kann diedirekte Dynamik durch Invertierung der Massenmatrix und Umstellung der Gleichungeneinfach berechnet werden. Die Komplexität der Gleichungen hängt stark von der Zahl derFreiheitsgrade ab. Deswegen eignet sich eine analytische Lösung nicht für jeden Roboter-typ, insbesondere wenn er sehr viele Freiheitsgrade hat.

5.1 Lagrange VerfahrenJoseph Louis Lagrange (1736–1813) war ein französischer Mathematiker italienischer Her-kunft, der allgemeine Gleichungen für die Bewegungen dynamischer Systeme unter Be-trachtung von Energiebilanzen einführte. Ausgangspunkt ist die Lagrange–Funktion L,die sich bei Starrkörpersystemen aus der Differenz zwischen der kinetischen Energie K(Bewegungsenergie) und der potentiellen Energie P (Lageenergie) ergibt. Die Lagrange–Gleichungen (Gleichung 5.1) ergeben sich durch Differentiation der Lagrange–Funktionnach der Zeit t sowie nach sogenannten verallgemeinerten Koordinaten qi und derenzeitlichen Ableitungen qi. Bei Rotationsgelenken handelt es sich bei den Größen qi umDrehwinkel und bei Translationsgelenken um Verfahrwege. Die Größen τi stellen bei Ro-tationsgelenken Momente und bei Translationsgelenken Kräfte dar.

τi =d

dt

(∂L∂qi

)− ∂L

∂qi

=d

dt

(∂K∂qi

)− ∂K

∂qi

+∂P∂qi

i = 1, . . . , n (5.1)

Beim Lagrange–Verfahren werden die Bewegungsgleichungen eines Manipulators in Formvon n gekoppelten nichtlinearen Differentialgleichungen 2. Ordnung aufgestellt. Jeder Frei-heitsgrad ergibt eine Gleichung. Die mathematische Herleitung erfolgt durch die analyti-sche Umformung der Lagrange Funktion und deren partiellen Differenzierung.

5.1.1 Automatische Erzeugung der Bewegungsgleichungen

Für das Aufstellen der Bewegungsgleichungen werden die Massen mi, MassenverteilungenIxx, Iyy, Izz, Ixy, Ixz, Iyz und Schwerpunktslagen �ri der Manipulatorglieder in den Konfigu-rator (Abschnitt 6.2) eingegeben, der in dieser Arbeit entwickelt wurde. Dabei wird fürjedes Glied angenommen, dass die Masse jeweils im Schwerpunkt des Glieds konzentriertist. Anhand der Benutzerbeschreibung wird zunächst die kinetische und potentielle Ener-gie der einzelnen Glieder bestimmt. Dazu wird die Trägheitstensormatrix aufgestellt, diebeschreibt wie die Masse eines Gliedes hinsichtlich eines Referenzkoordinatensystems (hier

Page 85: Automatische Konfiguration der Bewegungssteuerung von

5.1. Lagrange Verfahren 75

A) verteilt ist. Sie ist eine symmetrische 3 × 3 Matrix, die durch drei Trägheitsmomen-te in der Hauptdiagonalen und drei Deviationsmomente außerhalb der Hauptdiagonalencharakterisiert ist. Diese sechs Elemente sind voneinander unabhängig.

AI =

⎛⎝ Ixx −Ixy −Ixz

−Ixy Iyy −Iyz

−Ixz −Iyz Izz

⎞⎠ (5.2)

In der Praxis wird die Trägheitstensormatrix üblicherweise im Hinblick auf den Massen-schwerpunkt bestimmt. Hierauf basierend wird die verallgemeinerte Massenmatrix Mi fürdas i–te Glied definiert, wobei mi die Masse des Glieds und I3×3 die 3× 3 Einheitsmatrixist. Diese zeitinvariante Matrix wird zur Berechnung der kinetischen Energien verwendet.

Mi =

(mi · I3×3 0

0 AI)

6×6

(5.3)

Durch Aufsummierung der kinetischen Energien der einzelnen Glieder wird die kinetischeEnergie des gesamten Manipulators bestimmt. Die kinetische Energie eines Manipulatorssetzt sich aus der kinetischen Translations– und der kinetischen Rotationsenergie zusam-men. Sie wird durch Gleichung (5.4) bestimmt. Die kinetische Energie eines Systems istein quadratischer Term und deshalb positiv, soforn das System sich nicht im Ruhezustandbefindet. Die Matrix Ji ist die i–te partielle Jacobi–Matrix (Dimension 6 × n), die dieGelenkvariablen q1, . . . , qi auf die Trägheitsgeschwindigkeit des Schwerpunkts des i–tenGliedes abbilden. Die Transformationsmatrix T0,i beschreibt das i–te Koordinatensystemrelativ zum Basiskoordinatensystem des Roboters. Der Vektor �ri = (rxi, ryi, rzi)

T gibtdie Position des Schwerpunkts des i–ten Gliedes im i–ten Koordinatensystem an.

K =1

2Q

⎧⎪⎪⎪⎪⎨⎪⎪⎪⎪⎩

n∑i=1

(Ji

[T0,i ∗

(I3×3 �ri

0 1

)])T

∗ Mi ∗(Ji

[T0,i ∗

(I3×3 �ri

0 1

)])︸ ︷︷ ︸

M(Q)

⎫⎪⎪⎪⎪⎬⎪⎪⎪⎪⎭

Q (5.4)

Die potentielle Energie des Manipulators ergibt sich als Summe der potentiellen Ener-gien der einzelnen Glieder. Die potentielle Energie jedes Glieds hängt von der jeweili-gen Masse und den jeweiligen Schwerpunktkoordinaten ab. Durch Aufsummierung ergibtsich die potentielle Gesamtenergie als Funktion der Gelenkvariablen. Der Gravitätsvek-tor �g = (gx, gy, gz, 0)T wird im Basiskoordinatensystem des Roboters angegeben. Für diemeisten Roboter, die ortsfest am Boden verankert sind, ist �g = (0, 0,−g, 0)T . Die Gravi-tationsbeschleunigung g ist ortsabhängig. In Meereshöhe, auf 45◦ geographischer Breitebeträgt die Normalfallbeschleunigung im Mittel g = 9, 80665 m/s2 (DIN 1305).

P =n∑

i=1

−mi · (gx, gy, gz, 0) ∗ T0,i ∗(

�ri

1

)(5.5)

Das Zusammenfügen dieser Gleichungen führt zu einer vollständigen Darstellung der dy-namischen Gleichungen eines Manipulators.⎛

⎜⎝τ1...τn

⎞⎟⎠ = M(Q) ∗ Q︸︷︷︸

∂Q∂t

+

(n∑

i=1

∂M(Q)

∂qiqi

)︸ ︷︷ ︸

M(Q)∂t

∗Q − 1

2

⎛⎜⎝QT M(Q)

∂q1Q

...QT M(Q)

∂qnQ

⎞⎟⎠

︸ ︷︷ ︸C(Q,Q)∗Q

+

⎛⎜⎝

P∂q1

...P

∂qn

⎞⎟⎠

︸ ︷︷ ︸G(Q)

(5.6)

Page 86: Automatische Konfiguration der Bewegungssteuerung von

76 Kapitel 5. Bestimmung des dynamischen Robotermodells

Die einzelnen Matrizen und Vektoren haben folgende Bedeutungen und Eigenschaften.

• Die Matrix M(Q) wird als Massenmatrix beziehungsweise Trägheitsmatrix eines Ma-nipulators bezeichnet. Diese Matrix ist symmetrisch und positiv definit und deshalbimmer invertierbar. Die Dimension dieser quadratischen Matrix ist gleich n×n. DieMassenmatrix beschreibt die Massenverteilung und somit das Trägheitsverhaltendes Roboters sowohl für translatorische als auch für rotatorische Bewegungen.

• Die Matrix C(Q, Q) wird als Matrix der Zentrifugal– und Corioliskräfte bezeichnet.Die Dimension dieser quadratischen Matrix beträgt n × n.

• Der Vektor G(Q) wird als Gravitationsvektor bezeichnet. Er berechnet die aus derErdanziehung resultierende Kraft, die senkrecht in Richtung zur Erdoberfläche anden Manipulatorgliedern wirkt. Die Dimension des Vektors ist n × 1.

Die Matrix M(Q) und der Vektor G(Q) hängen nur von Gelenkvariablen ab, währenddie Matrix C(Q, Q) sowohl von den Gelenkvariablen als auch von den Gelenkgeschwin-digkeiten abhängt. Die Matrix C(Q, Q) kann in die zwei Matrizen CO(Q) und CF(Q)umgeformt werden, die dann nur noch von den Gelenkvariablen abhängen. Die einzelnenElemente dieser beiden Matrizen werden durch Differentiation der Massenmatrixelementebestimmt. Für die Bestimmung des (i, j)–ten Elements der Coriolismatrix werden zweiHilfsvariablen k und l eingeführt. Die Hilfsvariable k wird von 1 bis n und die Variable lvon k + 1 bis n iteriert. Der Wert von j ergibt sich dann als l + (k − 1) · n− k · (k + 1)/2.

CO[i, j] =1

2·(

∂qlM[i, k] +

∂qkM[i, l] − ∂

∂qiM[k, l]

)(5.7)

CF [i, j] =∂

∂qjM[i, j] − 1

2· ∂

∂qiM[j, j] (5.8)

Mit diesen Matrizen wird das inverse und direkte dynamische Modell berechnet. Bei Glei-chung (5.6) handelt es sich um die inverse Dynamik, das bei gegebenen Gelenkvariablen,Geschwindigkeiten und Beschleunigungen die Kräfte und Momente berechnet. Die Bewe-gungsgleichungen werden wie folgt in Matrizenschreibweise kompakt dargestellt.

�τ = M(Q) ∗ Q + C(Q, Q) ∗ Q + G(Q) (5.9a)

= M(Q) ∗ Q + CO(Q) ∗ [QQ] + CF(Q) ∗ [Q2] + G(Q) (5.9b)

• Die Matrix CO(Q) enthält die Coriolis–Koeffizienten. Die Coriolis–Kräfte bewirkenin rotierenden Systemen eine seitliche Ablenkung und sind zu den Gelenkgeschwin-digkeiten proportional. Die Dimension der Matrix ist n × n · (n − 1)/2.

• Die Matrix CF(Q) enthält die Zentrifugal–Koeffizienten. Die Zentrifugalmatrix gibtdie radial nach außen weisenden Reaktionskräfte bei Rotationsbewegungen an. DieseKräfte sind umso größer, je größer die quadrierten Gelenkgeschwindigkeiten und dieMassen der Manipulatorglieder sind. Die Dimension der Matrix ist n × n.

• Der Vektor [QQ] = [q1q2, q1q3, . . . , q1qn, q2q3, q2q4, . . . , qn−2qn, qn−1qn]T enthält allemöglichen Kombinationen von unterschiedlichen Paaren von Gelenkgeschwindigkei-ten. Die Dimension des Vektors ist n · (n − 1)/2 × 1.

• Der Vektor [Q2] = [q21, q

22, . . . , q

2n]T enthält die quadrierten Gelenkgeschwindigkeiten.

Die Dimension des Vektors ist n × 1.

Page 87: Automatische Konfiguration der Bewegungssteuerung von

5.1. Lagrange Verfahren 77

Für die Bestimmung des direkten dynamischen Modells werden bei gegebenem Vektor �τdie Gleichungen (5.9a) und (5.9b) nach dem Beschleunigungsvektor Q aufgelöst.

Q = M(Q)−1 ∗(�τ − C(Q, Q) ∗ Q − G(Q)

)(5.10a)

= M(Q)−1 ∗(�τ − CO(Q) ∗ [QQ] − CF(Q) ∗ [Q2] − G(Q)

)(5.10b)

Das Vorgehen zur Aufstellung der Bewegungsgleichungen für einen Manipulator nachdem Lagrange Verfahren besteht im Wesentlichen aus vier Schritten. Es erfolgt eine kurzeZusammenfassung dieser Schritte, die vollautomatisch durchgeführt werden.

1. Berechnung der potentiellen und kinetischen Energie für jedes Gelenk.

2. Aufsummierung der potentiellen Energien. Hieraus ergibt sich der Gravitätsvektor.

3. Aufsummierung der kinetischen Energien. Hieraus ergibt sich die Massenmatrix.

4. Differentiation und Umformung der Massenmatrix gemäß den Lagrange Gleichun-gen. Hieraus ergeben sich die Zentrifugal– und die Coriolismatrix.

5.1.2 Experimentelle Ergebnisse

Es wurde ein sehr effektiver C/C++ Codegenerator entwickelt, welcher anhand einer Be-schreibung des Roboters die Bewegungsgleichungen automatisch nach Lagrange erzeugt.Die einzelnen Schritte bei der Herleitung sowie das Ergebnis werden zudem in dem Satz-system LATEX dokumentiert. Der Zeitaufwand zum Aufstellen des dynamischen Modellsfür dieselben Robotertypen für die in Abschnitt 4.3.3 das kinematische Modell aufgestelltwurde, wurde experimentell mit einer mit 2.0 GHz getakteten Pentium–CPU unter demBetriebssystem Linux ermittelt (Tabelle 5.1). Der Vorteil des Lagrange Verfahrens ist,dass man eine vollständige und geschlossene Darstellung der Roboterdynamik erhält. Dadie Komplexität O(n4) beträgt, wobei n die Anzahl der Gelenkachsen ist, entstehen teil-weise auch viele Terme mit komplexen Ausdrücken (Tabelle 5.2). Werden konkrete Zahlenfür die dynamischen Parameter, wie Massen, Schwerpunktslagen und Trägheitstensoren,eingesetzt, so verkürzen sich die erzeugten Gleichungen erheblich. Die numerische Berech-nung ist dadurch unter Echtzeitbedingungen möglich und dauert bei einem Gelenkarmro-boter 0.2 Millisekunden. Darüber hinaus ist die Auswertung der Gleichungen hochgradigparallelisierbar und kann zum Beispiel mit einer FPGA Architektur erfolgen.

Tabelle 5.1 Zeitbedarf zum Aufstellen der Bewegungsgleichungen (min:sec)

Gravitäts– Massen– Zentrifugal– Coriolis–Roboter vektor matrix matrix matrixKartesischer Roboter 00:01 00:02 00:01 00:01Scara I 00:01 00:01 00:01 00:01Scara II 00:01 00:01 00:01 00:01Zylindrischer Roboter 00:01 00:05 00:01 00:01Stanford Arm 00:01 00:34 00:08 00:02Gelenkarmroboter 00:02 01:11 00:14 00:05

Page 88: Automatische Konfiguration der Bewegungssteuerung von

78 Kapitel 5. Bestimmung des dynamischen Robotermodells

Tabelle 5.2 Evaluation des dynamischen Robotermodells für verschiedene Roboter

Anzahl arithmetische Operatoren des GravitationsvektorsRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 2 5 28 0 2 2 0 0 0Scara I 0 1 2 0 0 0 0 0 0Scara II 3 0 4 0 0 0 0 0 0Zylindrischer Roboter 5 4 32 0 2 2 0 0 0Stanford Arm 8 15 103 0 3 3 0 0 0Gelenkarmroboter 46 24 156 0 26 14 0 0 0

Anzahl arithmetische Operatoren der MassenmatrixRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 24 10 78 0 0 0 0 0 0Scara I 37 0 74 0 1 0 0 0 0Scara II 30 0 59 0 1 0 0 0 0Zylindrischer Roboter 66 20 311 0 1 1 0 0 0Stanford Arm 178 62 1130 0 3 1 0 0 0Gelenkarmroboter 520 96 1774 0 137 101 0 0 0

Anzahl arithmetische Operatoren der ZentrifugalmatrixRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 8 11 66 0 2 0 0 0 0Scara I 3 3 24 0 0 1 0 0 0Scara II 2 2 18 0 0 1 0 0 0Zylindrischer Roboter 38 38 350 0 4 0 0 0 0Stanford Arm 135 161 1627 0 35 0 0 0 0Gelenkarmroboter 739 232 2654 0 271 234 0 0 0

Anzahl arithmetische Operatoren der CoriolismatrixRoboter + − ∗ / cos sin atan2 sqrt pow

Kartesischer Roboter 2 4 40 0 2 0 0 0 0Scara I 0 3 16 0 0 0 0 0 0Scara II 0 2 12 0 0 0 0 0 0Zylindrischer Roboter 71 57 685 0 46 0 0 0 0Stanford Arm 329 290 3750 0 204 6 0 0 0Gelenkarmroboter 1531 572 6515 0 801 473 0 0 0

5.2 Rekursive Newton–Euler Verfahren

Außer dem Lagrange Verfahren wird das dynamische Modell auch nach dem rekursivenVerfahren von Isaac Newton (1643–1727) und Leonhard Euler (1707–1783) bestimmt.Rekursiv bedeutet in diesem Zusammenhang, dass die Absolutgrößen jedes Roboterge-lenks als Funktionen der Absolutgrößen des vorherigen Gelenks und den Relativgrößenzwischen ihnen beschrieben werden. Als Grundlage für dieses Verfahren dienen die drei

Page 89: Automatische Konfiguration der Bewegungssteuerung von

5.2. Rekursive Newton–Euler Verfahren 79

Newton’sche Axiome (Trägheitsprinzip, Aktionsprinzip, Actio–Reactio–Prinzip) [125], dieAussagen über die Bewegung von Körpern unter der Einwirkung von Kräften machen.Insbesondere das zweite Axiom beziehungsweise die Newton’sche Gravitationsgleichungist wichtig für das Aufstellen von Bewegungsgleichungen. Der Berechnungsvorgang nachNewton–Euler erfolgt in zwei Teilen, und zwar einer Vorwärtsrechnung von der Basis desRoboters zum Endeffektor und einer Rückwärtsrechnung vom Endeffektor zur Basis.

5.2.1 Vorwärtsrechnung von der Basis zum Endeffektor

In der Vorwärtsrechnung werden ausgehend von der Basis die vektorielle Winkelgeschwin-digkeit �ωi, Winkelbeschleunigung �ωi und Linearbeschleunigung �vi bezüglich des Koordina-tensystems jeder Gelenkachse iterativ bestimmt. Außerdem werden die auftretende Linear-beschleunigung �vci und Kraft Fi sowie das auftretende Drehmoment Ni im Schwerpunktjedes Manipulatorglieds bestimmt. Im folgenden wird durch einen Kennungsparamter σi

unterschieden, ob die i–te Achse translatorisch (σi = 1) oder rotatorisch (σi = 0) ist. Imersten Schritt der Vorwärtsrechnung wird die Winkelgeschwindigkeit der i–ten Gelenkach-se �ωi berechnet, indem die Winkelgeschwindigkeit der vorangegangen Achse �ωi−1 und dieWinkelgeschwindigkeit der aktuellen Achse zuerst addiert und dann mit der Rotations-matrix Ri,i−1 in das aktuelle Koordinatensystem transformiert werden (�ω0 = �0).

�ωi = Ri,i−1 ∗⎛⎝�ωi−1 + (1 − σi) ·

⎛⎝0

0

θi

⎞⎠⎞⎠ (5.11)

Durch Ableitung des Geschwindigkeitsvektors �ωi nach der Zeit wird der Beschleunigungs-vektor �ωi im Koordinatensystem der i–ten Gelenkachse bestimmt (�ω0 = �0).

�ωi = Ri,i−1 ∗⎛⎝�ωi−1 + (1 − σi) ·

⎡⎣⎛⎝0

0

θi

⎞⎠+ �ωi−1 ×

⎛⎝0

0

θi

⎞⎠⎤⎦⎞⎠ (5.12)

Als nächstes wird der Geschwindigkeitsvektor �vi bezüglich des Ursprungs des i–ten Koordi-natensystems ermittelt. Hierbei wird der Vektor �pi = (ai, di · sin αi, di · cos αi)

T verwendet,der die Position des i–ten Koordinatensystems bezüglich des Vorgängerkoordinatensys-tems angibt. Die Erdanziehungskraft wird in der Initialisierung berücksichtigt (�v0 = −�g).

�vi = Ri,i−1 ∗⎛⎝�vi−1 + σi ·

⎡⎣⎛⎝ 0

0

di

⎞⎠+ 2 · �ωi−1 ×

⎛⎝ 0

0

di

⎞⎠⎤⎦⎞⎠+ �ωi × �pi + �ωi × (�ωi × �pi) (5.13)

Zur Berechnung des Linearbeschleunigungsvektors �vci des Massenmittelpunkts des i–tenGlieds wird der Vektor �ri verwendet. Der Vektor �ri ist der Vektor zum Massenmittelpunktdes i–ten Manipulatorglieds und wird im i–ten Koordinatensystem angegeben.

�vci = �vi + �ωi × �ri + �ωi × (�ωi × �ri) (5.14)

Die Kraft Fi, die im Schwerpunkt des i–ten Glieds wirkt, entspricht der Änderung desImpulses nach der Zeit und wird durch Multiplikation der Masse mi des Glieds mit derLinearbeschleunigung des Schwerpunkts des Glieds �vci berechnet. Diese Gleichung wirdauch als Impulssatz bezeichnet und ist gleichwertig zu dem zweiten Newton’schen Axiom.

Fi = mi · �vci (5.15)

Page 90: Automatische Konfiguration der Bewegungssteuerung von

80 Kapitel 5. Bestimmung des dynamischen Robotermodells

Für die Berechnung des Moments, das im Schwerpunkt des i–ten Glieds wirkt, wird zuerstder Trägheitstensor AI des Glieds in das Basiskoordinatensystem transformiert.

Ici = Ri,0 ∗A I ∗ R0,i (5.16)

Der Drehimpuls beziehungsweise Drall bezüglich des Schwerpunkts des i–ten Glieds wirddurch Multiplikation der Matrix des Trägheitstensors Ici mit dem Geschwindigkeitsvek-tor der Winkelrotation �ωi berechnet. Durch Ableitung des Drehimpulses nach der Zeitwird das Drehmoment Ni, das im Schwerpunkt des i–ten Glieds wirkt, bestimmt. DieserZusammenhang ist im Drehimpulssatz beziehungsweise Drallsatz festgehalten.

Ni = Ici ∗ �ωi − �ωi × (Ici ∗ �ωi) (5.17)

5.2.2 Rückwärtsrechnung vom Endeffektor zur Basis

In der Rückwärtsrechnung, die am Endeffektor beginnt und an der Roboterbasis endet,werden der Kraftvektor �fi und der Momentenvektor �ni den das Manipulatorglied i aufdas Glied i − 1 ausübt sowie die Kraft beziehungsweise das Moment τi, das im Gelenk iwirkt, iterativ bestimmt. Die Lasten am Endeffektor werden voreingestellt mit Null initia-lisiert (�fi+1 = �0, �ni+1 = �0). Der Kraftvektor �fi wird berechnet, indem der Kraftvektor dervorangegangenen Iteration mit der Rotationsmatrix Ri,i+1 in das aktuelle Koordinaten-system transformiert wird und die Kraft Fi, die im Schwerpunkt des i–ten Glieds wirkt,addiert wird. Der Momentenvektor �ni wird analog hierzu berechnet. Zusätzlich werdenhier allerdings noch zwei weitere Terme berechnet, und zwar ist ein Drehmoment als Vek-torprodukt von Positionsvektor �pi und Kraftvektor �fi und ein weiteres als Vektorproduktvon Massenmittelpunktvektor �ri und Vektor Fi definiert. Schließlich wird in Abhängigkeitdes Gelenktyps die Kraft beziehungsweise das Moment des i–ten Gelenks bestimmt.

�fi = Ri,i+1 ∗ �fi+1 + Fi (5.18)

�ni = Ri,i+1 ∗ �ni+1 + Ni + �pi × �fi + �ri × Fi (5.19)

τi = (1 − σi) · �nTi ∗

⎡⎣Ri,i−1 ∗

⎛⎝0

01

⎞⎠⎤⎦+ σi · �fT

i ∗⎡⎣Ri,i−1 ∗

⎛⎝0

01

⎞⎠⎤⎦ (5.20)

5.2.3 Modifikation der Vorwärtsrechnung

Die Berechnungen der Vorwärts– und Rückwärtsiteration können sowohl numerisch alsauch symbolisch durchgeführt werden. Bei einem symbolischen Vorgehen können die er-mittelten Bewegungsgleichungen in Matrizenschreibweise mit Gravitationsvektor sowieMassen–, Zentrifugal– und Coriolismatrix (Gleichung 5.9b) gebracht werden, um eineübersichtliche Struktur der Gleichungen zu erhalten. Außerdem ergeben sich dadurch die-selben Differentialgleichungen 2. Ordnung wie beim Lagrange Verfahren. Dieses Vorgehenist bei einfacheren Robotertypen mit bis zu fünf Gelenkachsen möglich. Da die Anzahl unddie Komplexität der Gleichungen mit der Anzahl der Gelenkachsen eines Roboters starkwächst, werden bei komplexeren Robotertypen sehr umfangreiche und unüberschaubareGleichungen generiert. Diese Gleichungen lassen sich nur noch sehr schlecht vereinfachenund sind letztlich nicht mehr umformbar.

Um die Gleichungen beherrschbar zu machen, wurde die Vorwärtsiteration im Rahmen

Page 91: Automatische Konfiguration der Bewegungssteuerung von

5.3. Kane’s dynamische Gleichungen 81

dieser Arbeit dahingehend abgeändert, dass in der ersten Iteration nur die Terme bezüg-lich des Gravitationsvektors, in der zweiten Iteration nur die Terme bezüglich der Mas-senmatrix, in der dritten Iteration nur die Terme bezüglich der Zentrifugalmatrix undin der vierten Iteration nur die Terme bezüglich der Coriolismatrix berechnet werden.Die Berechnungen der Rückwärtsiteration bleiben unverändert. Zur Berechnung des Gra-vitationsvektors wird die Vorwärtsiteration folgendermaßen abgeändert. Hierbei werdenlediglich die Massen mi, die Rotationsmatrizen Ri,0 und der Gravitätsvektor �g verwendet.

Fi = −mi · Ri,0 ∗ �g (5.21a)

Ni = �0 (5.21b)

Die Modifikation der Vorwärtsiteration zur Berechnung der Terme der Massenmatrix siehtwie folgt aus. In der Initialisierung wird die Erdanziehungskraft nicht mehr berücksichtigt(�ω0 = 0, �v0 = 0) und die Berechnungen bezüglich Winkelgeschwindigkeiten �ωi entfallen.

�ωi = Ri,i−1 ∗⎛⎝�ωi−1 + (1 − σi) ·

⎛⎝0

0

θi

⎞⎠⎞⎠ (5.22a)

�vi = Ri,i−1 ∗⎛⎝�vi−1 + σi ·

⎛⎝ 0

0

di

⎞⎠⎞⎠+ �ωi × �pi (5.22b)

Fi = mi · (�vi + �ωi × �ri) (5.22c)

Ni = (Ri,0 ∗A I ∗ R0,i) ∗ �ωi (5.22d)

5.2.4 Experimentelle Ergebnisse

Es wurde ein System entwickelt, welches anhand einer Manipulatorbeschreibung die Be-wegungsgleichungen analytisch nach dem Newton–Euler Verfahren herleitet und darauseine hocheffiziente Softwarekomponente in C/C++ generiert. Für dieselben Robotertypenfür die in Abschnitt 5.1.2 das Dynamikmodell in symbolischer Matrizendarstellung nachLagrange bestimmt wurde, wurde es auch nach dem Newton–Euler Verfahren bestimmt.Der Gravitationsvektor sowie die Massen–, Zentrifugal– und Coriolismatrix wurden fürdie einzelnen Robotertypen, wie in Abschnitt 5.2.3 beschrieben, nacheinander berechnet.Durch dieses Vorgehen wurden beim Newton–Euler Verfahren äquivalente Ergebnisse be-züglich der generierten Differentialgleichungen 2. Ordnung wie beim Lagrange Verfahrenerzielt (Tabelle 5.2). Eine sehr hohe Softwarequalität ist hierduch sichergestellt.

5.3 Kane’s dynamische GleichungenKane’s Methode [84, 190] ist eine ebenfalls wichtige Methode zur Bestimmung der Robo-terdynamik. Im Gegensatz zu den Verfahren von Lagrange und Newton–Euler werden kei-ne Differentialgleichungen 2. Ordnung, sondern Differentialgleichungen 1. Ordnung (engl.:ordinary differential equation) bestimmt, das heißt die Bewegungsgleichungen enthaltennur erste Ableitungen nach der Zeit. Der Vorteil ist, dass die Gleichungen leichter zu in-tegrieren sind. Kane’s Grundgleichung besagt, dass die Summe aller Kräfte, die auf einenKörper einwirken, gleich Null sein muss. Dabei sind die von außen an einen Körper angrei-fenden Kräfte betragsmäßig so groß wie die Trägheitskraft eines Körpers. In den Termenfür die Trägheitskraft sind konstante Massen und Gelenkbeschleunigungen enthalten.

Page 92: Automatische Konfiguration der Bewegungssteuerung von

82 Kapitel 5. Bestimmung des dynamischen Robotermodells

5.4 Vergleich der VerfahrenDas dynamische Robotermodell ist sehr stark von der Bauart des Roboters abhängig undwird beispielsweise zur Vorsteuerung in Kaskadenreglern verwendet (Abschnitt 6.1). ZurAufstellung des vollständigen Dynamikmodells werden sowohl das Lagrange Verfahren(Abschnitt 5.1) als auch das rekursive Newton–Euler Verfahren (Abschnitt 5.2) angewen-det. Das dynamische Modell wird nicht nur in Form von Zahlenwerten berechnet, sondernes werden die analytischen Gleichungen automatisch aufgestellt. Hierfür werden die Ko-ordinatensysteme gemäß der Denavit–Hartenberg Konvention (Abschnitt 4.1) festgelegt.

Die Äquivalenz des Lagrange und des Newton–Euler Verfahrens für Manipulatoren wurdevon Silver [158] bewiesen. Beide Verfahren sind sowohl für Manipulatoren mit rotatori-schen als auch mit translatorischen Gelenkachsen geeignet. Während das erste Verfahrenein analytisches Verfahren ist, handelt es sich beim zweiten um ein synthetisches Verfah-ren. Das Newton–Euler Verfahren hat den Nachteil, dass Zwangskräfte und –momentein den Gelenken explizit berechnet werden müssen, die in den Differentialgleichungen garnicht explizit auftauchen. Um eine geschlossene Darstellung der Roboterdynamik zu erhal-ten, müssen diese Zwangskräfte und –momente zunächst ermittelt und in einem weiterenSchritt eliminiert werden. Beim Lagrange Verfahren brauchen hingegen keine Zwangskräf-te und –momente in den Gelenken berücksichtigt werden. Deswegen ist der analytischeAufwand zum Aufstellen der Bewegungsgleichungen beim Lagrange Verfahren geringer alsbeim Newton–Euler Verfahren. Bei einer ausschließlich numerischen Bestimmung der Dy-namik ist hingegen der Aufwand bei Newton–Euler linear proportional zu der Anzahl derGelenkachsen und damit, insbesondere bei Robotern mit vielen Freiheitsgraden, niedrigerals bei Lagrange.

Page 93: Automatische Konfiguration der Bewegungssteuerung von

Kapitel 6

Softwarearchitektur undKonfigurationswerkzeug für dieBewegungssteuerung von Robotern

In diesem Kapitel wird die eigentliche Konfiguration der Bewegungssteuerung unter Ver-wendung der automatisch generierten kinematischen und dynamischen Robotermodelle(Kapitel 4 und 5) beschrieben. Zunächst wird ein Referenzmodell mit den Komponen-ten einer Bewegungssteuerung aufgestellt (Abschnitt 6.1). Als nächstes wird die graphi-sche Benutzeroberfläche beschrieben, mit der der Benutzer die Bewegungssteuerung einesRoboters konfigurieren kann (Abschnitt 6.2). In Abschnitt 6.3 werden verschiedene Tra-jektoriengenerierungskomponenten entwickelt, die für die unterschiedlichen Betriebsarteneiner Bewegungssteuerung benötigt werden. Für die Vorverarbeitung und Ausführungvon Roboterprogrammen wurde ein IRL–Interpreter (Industrial Robot Language)

entwickelt (Abschnitt 6.4). Außerdem kann der Benutzer eigene Komponenten über eineAnwendungsprogrammierschnittstelle in das System integrieren (Abschnitt 6.5).

Die Bewegungssteuerung eines Roboters stellt eine Echtzeitanwendung dar, das heißt esbestehen harte Anforderungen hinsichtlich der Einhaltung zeitkritischer Berechnungen[40, 193]. Diese Berechnungen müssen in jeder Betriebssituation innerhalb einer vorgege-benen, kurzen Zeitspanne durchgeführt werden. Zu den Hauptaufgaben einer Bewegungs-steuerung gehören die Berechnung von geeigneten zeitlichen Zwischenwerten zwischen denprogrammierten Zielstellungen des Roboters (Interpolation) und die Transformation derEffektorlage, die in kartesischen Koordinaten angegeben wird, in entsprechende Sollwertefür die Gelenkregelkreise (inverse Kinematik). Außerdem steuert die Bewegungssteuerungdie einzelnen Gelenkachsen zeitlich parallel an, um die gewünschte Bewegung zu erzeugen.

6.1 Referenzmodell einer BewegungssteuerungDie in dieser Arbeit betrachtete Bewegungssteuerung ist in mehrere Softwarekomponen-ten aufgeteilt und wird in Abbildung 6.1 als Blockschaltbild dargestellt. Die Pfeile inder Abbildung stellen die Kommunikationswege der verschiedenen Komponenten unter-einander dar. Durch die Strukturierung der Bewegungssteuerung in Teilsysteme wird ihreKomplexität reduziert und ihre Wartbarkeit verbessert. Die einzelnen Komponenten sindmit einheitlichen Schnittstellen ausgestattet, um mit den anderen Komponenten zusam-menzuarbeiten. Die einzelnen Komponenten erfüllen die folgenden Aufgaben:Roboter Interpreter: Zur Abarbeitung der Bewegungsprogramme wurde ein herstel-

Page 94: Automatische Konfiguration der Bewegungssteuerung von

84 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

lerübergreifender Interpreter nach DIN 66312 [38] entwickelt (Abschnitt 6.4). DerInterpreter sendet die vorverarbeiteten Befehle an die Interpolationsvorbereitung.

Kartesische Interpolation: Ist im Roboterprogramm eine Bewegung des TCP im kar-tesischen Raum angegeben, so berechnen kartesische Interpolationskomponenten(Abschnitt 6.3.2) eine entsprechende lineare oder zirkulare Bahn. Vor Interpolati-onsbeginn berechnet die Interpolationsvorbereitung die Bahnlänge beziehungsweiseden Kurvenradius und den Kreismittelpunkt sowie die Orientierungsänderung.

Inverse Kinematik: Die Umwandlung von Koordinaten im kartesischen Raum in ent-sprechende Koordinaten im Gelenkwinkelraum erfolgt analytisch. Falls für einenManipulator keine geschlossene Lösung bestimmt werden kann, so wird eine nume-rische Approximation angewendet (Kapitel 4).

PTP–Interpolation: Diese Komponente (Abschnitt 6.3.1) berechnet die Bewegung je-des Gelenks zwischen dem Startpunkt und dem Endpunkt einer Bewegung entspre-chend eines ausgewählten Beschleunigungsprofils, ohne dass die kartesische Bahn desEndeffektors hierbei definiert wurde. Die Achsen werden so verfahren, dass sich einzeitoptimaler Bewegungsablauf ergibt und die Maximalwerte für Geschwindigkeit,Beschleunigung und Ruck der einzelnen Antriebe nicht überschritten werden.

Kaskadenregelungen: Weitere Komponenten sind eine Kaskadenreglung pro Roboter-achse, bestehend aus einem Lage–, Geschwindigkeits– und Stromregler, wobei derübergeordnete Regler den Sollwert für den untergeordneten Regler bestimmt.

Inverse Dynamik: Zur Verbesserung des Führungsverhaltens wird mit Hilfe des inver-sen dynamischen Modells eine Stellgröße aufgeschaltet, um die auf die Roboterbe-wegungen einwirkenden Massenträgheits–, Coriolis–, Zentrifugal– und Gravitations-kräfte beziehungsweise Momente zu kompensieren (Kapitel 5). Außerdem werden dieeinzelnen Kaskadenregler dadurch entlastet. Durch entsprechende Adaptionsgesetzekönnen nicht exakt bekannte Größen, wie zum Beispiel Modellparameter oder zubewegende Traglasten, an die realen Werte angepasst werden.

Abbildung 6.1 Softwarearchitektur der Bewegungssteuerung eines Roboters

RoboterInterpreter

Interpolations–vorbereitung

KartesischeInterpolation

InverseKinematik

PTPInterpolation

Lage–regler

Geschwin–digkeits–

regler

Strom–regler

MotorGelenk i

InverseDynamik

GeänderteAufgaben

AutomatischeKonfiguration

Adaptions–gesetze

Middleware/Monitoring

Berechnungen imkartesischen Raum Kaskadenregelung für jede Gelenkachse

ModularerRoboter

Berechnungen imGelenkwinkelraum

+

+

+

Page 95: Automatische Konfiguration der Bewegungssteuerung von

6.2. Beschreibung des Aufbaus des zu konfigurierenden Roboters 85

6.2 Beschreibung des Aufbaus des zu konfigurierendenRoboters

Zur Beschreibung der mechanischen Struktur eines Manipulators wurde ein Konfigurati-onswerkzeug entwickelt. Die graphische Benutzeroberfläche (Abbildung 6.2) entstand imRahmen einer Studienarbeit [139], die in dieser Arbeit betreut wurde. Bei der Gestaltungder Oberfläche wurde auf Benutzerfreundlichkeit und einfache Bedienbarkeit geachtet.Um plattformunabhängig und leicht portierbar zu sein, wurde die Oberfläche in der Pro-grammiersprache Java implementiert. Mit diesem Werkzeug kann der Benutzer zwischensehr vielen Konfigurations– und Kombinationsmöglichkeiten auswählen:

• Anzahl und Typen der Gelenkachsen, zum Beispiel passive oder angetriebene (trans-latorische beziehungsweise rotatorische) Gelenkachsen. In Abhängigkeit der angege-benen Gelenkanzahl werden die Eingabefelder für die weiteren Roboterparameterangepasst. Je mehr Gelenkachsen, insbesondere rotatorische Gelenkachsen der Ro-boter hat, desto komplizierter werden die zu bestimmenden mathematischen Modelledes Roboters (erhebliches Skalierbarkeitsproblem).

• Mechanische Bewegungsbeschränkungen der Achsen, das heißt Stellbereiche (An-schlag bei Rotationsgelenken und Längenbegrenzung bei Translationsgelenken), ma-ximal mögliche Geschwindigkeiten und Beschleunigungen, Maximalruck sowie ma-ximal erlaubte Momente und Kräfte der einzelnen Achsen. Diese Werte müssenso gewählt werden, damit das Leistungsvermögen der Antriebe nicht überschrittenwird. Der Stellbereich von Rotationsgelenken kann heute auch größer als 360◦ sein.

• Anordnung und Bewegungsmöglichkeiten der Haupt– und Nebenachsen, das heißtLage der Drehrichtung von rotatorischen Achsen und Lage der Verschiebungsrich-tung von translatorischen Achsen. Zwei aufeinanderfolgende Gelenkachsen könnenbeispielsweise parallel, rechtwinklig oder windschief zueinander angeordnet werden.Winkelmaße können numerisch im Bogenmaß oder symbolisch angegeben werden.

• Geometrische Parameter, wie Hebellängen und Hebelverschiebungen werden entwe-der direkt vom Hersteller geliefert oder am Roboter gemessen und durch Kalibrie-rung angepasst.

• Konzentrierte Massen der Manipulatorglieder, Schwerpunkte der Glieder in Koor-dinaten der lokalen Koordinatensysteme sowie Trägheitstensoren, die die Trägheitder Gelenkachsen bezüglich Bewegungen angeben. Für jedes Glied wird die Lage desSchwerpunkts durch einen dreidimensionalen und die Trägheitstensoren durch einensechsdimensionalen Vektor angegeben. Für die Massen der Manipulatorglieder giltdie Einschränkung, dass keine negativen Werte eingegeben werden dürfen.

• Kinematische Bauart, zum Beispiel kartesischer, zylindrischer, kugelförmiger Robo-ter, horizontaler oder vertikaler Knickarmroboter sowie Sonderbauformen.

• Zu unterstützende Interpolationsarten, Interpolationstakt, maximale Geschwindig-keit bei der Interpolation und Beschleunigungsprofilart, zum Beispiel Trapezprofil(beziehungsweise Dreieckprofil bei kurzer Weglänge), Sinoidenprofil oder Polynom-funktionprofil. Außerdem kann zwischen asynchronen, synchronen und vollsynchro-nen Punkt–zu–Punkt Bewegungen ausgewählt werden.

Page 96: Automatische Konfiguration der Bewegungssteuerung von

86 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Die Benutzereingaben werden zunächst auf Plausibilität überprüft und dann in einemXML–Dokument (Listing C.1) gespeichert. Anhand der ausgewählten Kriterien und denspezifizierten geometrischen Abmessungen werden die mathematischen Modelle des Ro-boters „auf Knopfdruck“ generiert und die Bewegungssteuerung (Abbildung 6.1) konfigu-riert. Die Beschreibung des Benutzers kann auch in einer Bibliothek abgelegt legen, um siespäter wiederzuverwenden beziehungsweise anzupassen, beispielsweise bei einem Robotermit der gleichen Gelenkanordnung, aber anderen geometrischen Abmessungen. Außerdemwird zur Kontrolle der Eingaben der beschriebene Manipulator im unteren Fenster desKonfigurationswerkzeugs dreidimensional dargestellt. Diese Darstellung kann vom Benut-zer gedreht und verschoben beziehungsweise vergrößert oder verkleinert werden.

Abbildung 6.2 Konfigurator für die Bewegungssteuerung eines Roboters

6.3 Betriebsarten einer Bewegungssteuerung

Damit ein Roboter eine bestimmte Bewegung dürchführen kann, muß die Bewegungssteue-rung entsprechende Sollwerte für die Gelenkregelkreise erzeugen. Die zeitliche Aufeinan-derfolge der Roboterkonfiguration zwischen Anfangs– und Endstellung des Endeffektorswird auch als Trajektorie bezeichnet. In Bewegungssteuerungen werden grundsätzlich zweiverschiedene Betriebsarten unterschieden. Punkt–zu–Punkt Bewegungen (engl.: Point–To–Point, PTP) werden genutzt, wenn der Endeffektor gewünschte Lagen anfahren soll und

Page 97: Automatische Konfiguration der Bewegungssteuerung von

6.3. Betriebsarten einer Bewegungssteuerung 87

der Weg dorthin nicht genau festgelegt sein muss („unkontrollierter Verlauf“). Außer demVerlauf der kartesischen Bahn sind auch die auftretenden kartesischen Geschwindigkeitenund Beschleunigungen dabei nicht vorhersagbar. Diese Bewegungsart wird typischerweisefür reine Positionierbewegungen, zum Beispiel beim Punktschweißen und bei Handha-bungsaufgaben eingesetzt. Für die Werkstückbearbeitung und in der Nähe von Hinder-nissen ist diese Bewegungsart nicht geeignet, da die Gefahr von Kollisionen besteht.

Im Gegensatz hierzu wird bei bahnbezogenen Aufgabenstellungen, wie zum Beispiel beimEntgraten, Schleifen, Polieren, Lackieren, Kleben, Falzen, Montieren oder Bahnschweißen,die Werkzeugspitze exakt entlang von vorgeschriebenen Bahnen bewegt. Um den Rechen-aufwand gering zu halten werden diese Bahnen mathematisch meistens durch Geradenoder Kreise beziehungsweise Kreissegmente beschrieben. Bei kartesischer Bahnsteuerung(engl.: Continuous Path, CP) können sich im Gegensatz zu PTP–Bewegungen Problememit Singularitäten und Arbeitsraumgrenzen ergeben. Auch wenn der Anfangs– und derEndpunkt der Bewegung sich innerhalb des Arbeitsraums befindet, kann es Zwischen-punkte geben, die außerhalb des Arbeitsraums liegen.

6.3.1 Trajektoriengenerierung im Gelenkwinkelraum

PTP–Bewegungen sind theoretisch die schnellste Möglichkeit, um einen Roboter von ei-ner Anfangspose zu einer Endpose zu verfahren. Nur für die Zielpose, die in kartesischenKoordinaten angegeben wird, werden mit Hilfe der inversen Kinematik entsprechendeGelenkkoordinaten im Gelenkwinkelraum ermittelt. Die Zwischenkoordinaten werden imGelenkwinkelraum generiert. Bei PTP–Bewegungen wird zwischen asynchronen, synchro-nen und vollsynchronen Bewegungen unterschieden.

Asynchrone PTP–Bewegung: Die Gelenkachsen werden so schnell wie möglich in ihreEndstellung verfahren. Die Sollwerte für die einzelnen Achsregler werden unabhängigvoneinander berechnet. In der Regel erreichen die Achsen nicht zur gleichen Zeit dieEndposition.

Synchrone PTP–Bewegung: Alle Achsen beginnen und beenden ihre Bewegung zurgleichen Zeit. Hierfür wird für jedes Gelenk anhand der Weg– beziehungsweise Win-keldistanz, maximalen Geschwindigkeit und Beschleunigung die Bewegungsdauerberechnet. Die Achse mit der größten Bewegungsdauer wird zur Leitachse. Die Ma-ximalgeschwindigkeiten der übrigen Achsen werden entsprechend verringert, so dassihre Bewegungsdauer so lange wird, wie die der Leitachse.

Vollsynchrone PTP–Bewegung: Zusätzlich werden auch die Beschleunigungs– undBremsphasen angepasst, so dass sie bei allen Achsen gleich lange dauern.

Eine Bewegung unterteilt sich in die Phasen Beschleunigung, gleichförmige Bewegung undBremsvorgang. Zur Trajektoriengenerierung werden für alle Gelenke Beschleunigungspro-file berechnet mit denen ruckfreie Bewegungen sowie die Einhaltung der maximal er-laubten Gelenkgeschwindigkeiten und –beschleunigungen gewährleistet werden. Durch dieBegrenzung des Rucks werden die Gelenke sanft beschleunigt und abgebremst und es ver-ringert sich die Beanspruchung der Mechanik und der Maschinenverschleiß. Werden dieGrenzwerte nicht eingehalten, so treten gravierende Bahnabweichungen auf. Für die Be-rechnung eines Beschleunigungsprofils gibt es mehrere Möglichkeiten, die im folgendenvorgestellt werden. Die Integration des Beschleunigungsprofils ergibt das Geschwindig-keitsprofil. Integriert man das Geschwindigkeitsprofil, so erhält man das Wegprofil.

Page 98: Automatische Konfiguration der Bewegungssteuerung von

88 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Trapezförmiges Beschleunigungsprofil (Dreieckprofil bei kurzer Weglänge)

Bei einem trapezförmigen Beschleunigungsprofil existieren maximal sieben Zeitintervalle,in denen eine Anfangsposition q(0) in eine Endposition q(t7) unter Berücksichtigung derMaximalgeschwindigkeit vmax, der Maximalbeschleunigung amax und des Maximalrucksjmax überführt wird. Die Bewegungszeit t7 soll dabei möglichst kurz sein. Die resultierendeBahn q(t), das Geschwindigkeitsprofil q(t) und das Beschleunigungsprofil q(t) werdendurch die Gleichungen (6.1)–(6.3) bestimmt. Durch Ableitung des Beschleunigungsprofilsentsteht ein blockförmiges Ruckprofil. Die Gelenkgeschwindigkeiten beginnen mit q(0)und enden mit q(t7), die Gelenkbeschleunigungen beginnen und enden bei Null.

q(t) =

⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩

q(0) + q(0) · t + 16· jmax · t3 , 0 ≤ t ≤ t1

q(0) + q(0) · t + 12· amax · t2 − 1

2· a2

max

jmax· t + 1

6· a3

max

j2max

, t1 < t ≤ t2

q(0) + q(0) · t + amax · t2 · t + jmax

6· (t3 − t)3 − 1

2· amax · t2 · t3 , t2 < t ≤ t3

q(0) + vmax · t + t32· (q(0) − vmax) , t3 < t ≤ t4

q(0) + vmax · t + jmax

6· (t4 − t)3 + t3

2· (q(0) − vmax) , t4 < t ≤ t5

q(0) + vmax · t − amax

2· (t5 − t)2 + a2

max

jmax· ( t5

3+ t4

6− t

2)

+ t32· (q(0) − vmax) , t5 < t ≤ t6

q(t7) + q(t7) · (t − t7) + jmax

6· (t − t6)

3 − amax

2· (t7 − t)2

+a2max

jmax· ( t7

3+ t6

6− t

2) , t6 < t ≤ t7

(6.1)

q(t) =

⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩

q(0) + 12· jmax · t2 , 0 ≤ t ≤ t1

q(0) + amax · t − 12· a2

max

jmax, t1 < t ≤ t2

q(0) + amax · t2 − jmax

2· (t3 − t)2 , t2 < t ≤ t3

vmax , t3 < t ≤ t4

q(t7) + amax · (t7 − t5) − jmax

2· (t4 − t)2 , t4 < t ≤ t5

q(t7) + amax · (t7 − t) − 12· a2

max

jmax, t5 < t ≤ t6

q(t7) + jmax

2· (t − t6)

2 + amax · (t7 − t) − 12· a2

max

jmax, t6 < t ≤ t7

(6.2)

q(t) =

⎧⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎩

jmax · t , 0 ≤ t ≤ t1

amax , t1 < t ≤ t2

amax − jmax · (t − t2) , t2 < t ≤ t3

0 , t3 < t ≤ t4

−jmax · (t − t4) , t4 < t ≤ t5

−amax , t5 < t ≤ t6

jmax · (t − t6) − amax , t6 < t ≤ t7

(6.3)

Der zu fahrende Weg ist Δq = |q(0) − q(t7)|. In den Phasen i = 1, 3, 5, 7 wird jeweils mitti − ti−1 = |amax/jmax| maximal beschleunigt beziehungsweise abgebremst. Die gesamteBeschleunigungszeit t3 und die gesamte Abbremszeit t74 = t7 − t4 ergeben sich zu:

t3 =vmax − q(0)

amax+

amax

jmaxt74 =

vmax − q(t7)

amax+

amax

jmax(6.4)

Page 99: Automatische Konfiguration der Bewegungssteuerung von

6.3. Betriebsarten einer Bewegungssteuerung 89

Die Zeitspanne t43 = t4 − t3, in der mit konstanter maximaler Geschwindigkeit verfahrenwird, beträgt:

t43 =1

vmax·(

Δq − vmax + q(0)

2· t3 − vmax + q(t7)

2· t74

)(6.5)

Falls t43 < 0 gilt, ist die Maximalgeschwindigkeit hinsichtlich der Bahnlänge und der Be-schleunigung zu groß und wird entsprechend Gleichung (6.6) verringert. Das Zeitintervallin dem die Geschwindigkeit konstant ist, fällt weg und das Gesamtprofil teilt sich nurnoch in sechs Zeitintervalle auf.

t43 = 0 =⇒ vmax =2 · Δq − q(0) · t3 − q(t7) · t74

t3 + t74(6.6)

Bei synchronen Bewegungen bestimmt die Achse mit der größten Verfahrzeit die Dauerder Bewegung. Es wird für jede Achse die Fahrzeit bestimmt und die Achse mit dermaximalen Fahrzeit tmax zur Leitachse gemacht. Die Gleichung tmax = t3 + t43 + t74 wirdnach der neuen maximalen Geschwindigkeit vmax für jedes Gelenk aufgelöst. Durch dieReduzierung der Maximalgeschwindigkeit von jeder Achse außer der Leitachse, ergibt sichfür alle Achsen dieselbe Bewegungsdauer.

vmax =q(0) + q(t7) + amax · (tmax − t1)

2− (6.7)√

(q(0)+q(t7)+amax·(tmax−t1))2−2·(q2(0)+q2(t7)+amax·(2·Δq−t1·(q(0)+q(t7))))

4

Für vollsynchrone Bewegungen wird die maximale Beschleunigungszeit t3,max, die maxi-male Abbremszeit t74,max und die maximale Zeit t43,max, in der mit konstanter Geschwin-digkeit verfahren wird, bestimmt. Mit diesen Werten wird die maximale Gesamtverfahrzeitt7,max = t3,max + t43,max + t74,max ermittelt. Durch Auflösung der Gleichungen (6.4) und(6.5) wird die neue Maximalgeschwindigkeit vmax sowie die Maximalbeschleunigung wäh-rend der Beschleunigungsphase a1,max und während der Abbremsphase a2,max von jederAchse bestimmt. Die Beschleunigungs– und Abbremszeit ist nun für alle Achsen gleich.

vmax =2 · Δq − t3,max · q(0) − t74,max · q(t7)

2 · t7,max − t3,max − t74,max(6.8)

a1,max =t3,max · jmax −

√(t3,max · jmax)2 − 4 · jmax · (vmax − q(0))

2(6.9)

a2,max =t74,max · jmax −

√(t74,max · jmax)2 − 4 · jmax · (vmax − q(t7))

2(6.10)

Die drei verschiedenen Möglichkeiten für PTP–Bewegungen mit trapezförmigen Beschleu-nigungsprofil sind in Abbildung 6.3 dargestellt. Zwei Gelenkachsen werden asynchron(links), synchron (Mitte) und vollsynchron (rechts) von einem Startpunkt zu einem End-punkt unter Berücksichtigung der maximal zulässigen Gelenkgeschwindigkeiten und Be-schleunigungen sowie des maximal zulässigen Rucks bewegt.

Sinusförmiges Beschleunigungsprofil

Das Sinoidenprofil hat den Vorteil, dass im Gegensatz zum Trapezprofil der Beschleuni-gungsverlauf unendlich oft stetig differenzierbar ist. Allerdings steigt durch die Berech-nung von trigonometrischen Funktionen auch der Rechenaufwand. Das Gesamtprofil ist

Page 100: Automatische Konfiguration der Bewegungssteuerung von

90 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Abbildung 6.3 PTP–Bewegungen mit trapezförmigen Beschleunigungsprofil1.

Gel

enka

chse

2.G

elen

kach

se

AsynchronePTP–Bewegung

t

t� � � � � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��������������������� � � � � ��������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������������������� � � � � � � � � � � � � � � � � � �

�������������������

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � �� � � � � � � �� � � � � � �� � � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � � �� � � � � � � �� � � � � � � � �� � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��������������������

1.G

elen

kach

se2.

Gel

enka

chse

SynchronePTP–Bewegung

t

t

� � � � � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��������������������� � � � � ��������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������������������� � � � � � � � � � � � � � � � � � �

�������������������

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � �

� � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��������������������� � � � � � � ��������������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������������������� � � � � ��������������������

1.G

elen

kach

se2.

Gel

enka

chse

VollsynchronePTP–Bewegung

t

t� � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

�������

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������ � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

����

nur noch in drei und nicht mehr in sieben Segmente aufgeteilt. Gleichung (6.11) gibt denVerlauf der Gelenkkoordinaten mit Anfangswert q(0) und Endwert q(t3), Gleichung (6.12)den Verlauf der Gelenkgeschwindigkeiten mit Anfangsgeschwindigkeit q(0) und Endge-schwindigkeit q(t3) und Gleichung (6.13) den Verlauf der Gelenkbeschleunigungen an.Anfangsbeschleunigung q(0) und Endbeschleunigung q(t3) sind Null.

q(t) =

⎧⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎩

q(0) + q(0) · t + amax ·[

14· t2 +

t218·π2 ·

(cos(2π

t1· t) − 1

)], 0 ≤ t ≤ t1

q(0) + vmax · t −(

vmax−q(0)2

)· t1 , t1 < t ≤ t2

q(t3) + vmax · (t − t3) + (vmax−q(t3))2

amax+ amax

2·[

(t3−t2)2

4π2 ·(1 − cos( 2π

t3−t2· (t − t2))

)− 1

2· (t − t2)

2]

, t2 < t ≤ t3

(6.11)

q(t) =

⎧⎪⎪⎨⎪⎪⎩

q(0) + amax ·[

12· t − t1

4π· sin

(2πt1

· t)]

, 0 ≤ t ≤ t1

vmax , t1 < t ≤ t2

vmax − amax ·[

12· (t − t2) − t3−t2

4π· sin

(2π

t3−t2· (t − t2)

)], t2 < t ≤ t3

(6.12)

q(t) =

⎧⎪⎪⎨⎪⎪⎩

amax · sin2(

πt1· t)

, 0 ≤ t ≤ t1

0 , t1 < t ≤ t2

−amax · sin2(

πt3−t2

· (t − t2))

, t2 < t ≤ t3

(6.13)

Der zu durchfahrende Weg ist Δq = |q(0) − q(t3)|. Für t = t1 ergibt sich in Gleichung(6.12) der Wert q(t) = vmax. Es gibt drei Zeitintervalle in denen der Ruck die konstantenWerte jmax, 0 und −jmax annimmt. Die Bewegungsdauer für die Beschleunigungszeit t1und der Abbremszeit t32 = t3 − t2 ergeben sich zu:

t1 =2 · (vmax − q(0))

amax

t32 =2 · (vmax − q(t3))

amax

(6.14)

Page 101: Automatische Konfiguration der Bewegungssteuerung von

6.3. Betriebsarten einer Bewegungssteuerung 91

Die gesamte Verfahrzeit soll möglichst klein sein und wird gemäß Gleichung (6.15) be-rechnet.

t3 =Δq

vmax

+amax

4 · vmax

· (t21 + t232)

(6.15)

Bei kurzen Bewegungen, bei denen die maximale Geschwindigkeit nicht erreicht werdenkann, reduziert sich die Anzahl der Zeitintervalle auf zwei. Sofern t2 − t1 < 0 gilt, gibt eskeinen Abschnitt in dem mit konstanter Geschwindigkeit verfahren wird. Die reduzierte,maximale Geschwindigkeit vmax bei kurzen Bahnlängen berechnet sich aus den Gleichun-gen (6.14) und (6.15) folgendermaßen:

t1 = t2 =⇒ t1 + t32 = t3 =⇒ vmax =

√q2(0) + q2(t3) + Δq · amax

2(6.16)

Für synchrone Bewegungen wird zunächst die Fahrzeit für jede Achse und hieraus dieVerfahrzeit tmax der Leitachse bestimmt. Durch Umformung der Gleichungen (6.14) und(6.15) wird die neue maximale Geschwindigkeit vmax für jedes Gelenk bestimmt.

vmax =2 · (q(0) + q(t3)) + amax · tmax

4− (6.17)√

(2 · (q(0) + q(t3)) + amax · tmax)2 − 8 · (q2(0) + q2(t3) + Δq · amax)

16

Damit ein vollsynchroner Bewegungsablauf entsteht, wird die maximale Geschwindigkeitund Beschleunigung der Achsen an die maximalen Verfahrzeiten der einzelnen Abschnitteangepasst. Es wird zunächst die maximale Beschleunigungszeit t1,max, die maximale Ab-bremszeit t32,max und die maximale Zeit mit konstanter Geschwindigkeit t21,max = t2 − t1bestimmt. Hieraus wird die maximale Gesamtverfahrzeit t3,max = t1,max + t21,max + t32,max

ermittelt. Anhand dieser Zeitspannen wird die maximale Geschwindigkeit vmax, die ma-ximale Beschleunigung während der Beschleunigungsphase a1,max und die maximale Be-schleunigung während der Abbremsphase a32,max für jede Achse bestimmt. Ausgangspunkthierfür sind die Gleichungen (6.14) und (6.15), die entsprechend umgeformt werden.

vmax =2 · Δq − t1,max · q(0) − t32,max · q(t3)

2 · t3,max − t1,max − t32,max(6.18)

a1,max =2 · (vmax − q(0))

t1,max

a32,max =2 · (vmax − q(t3))

t32,max

(6.19)

In Abbildung 6.4 sind die drei Möglichkeiten für PTP–Bewegungen mit sinusförmigenBeschleunigungsprofil bei zwei Gelenkachsen einander gegenübergestellt. Dabei werdendie Sollwerteverläufe von Lage, Geschwindigkeit und Beschleunigung für eine asynchrone(links), synchrone (Mitte) und vollsynchrone (rechts) PTP–Bewegung dargestellt. Wenndie Anfangsgeschwindigkeit q(0) oder Endgeschwindigkeit q(t3) ungleich Null sind, so wer-den Zwischenpunkte ohne Stillstand der Gelenkachsen durchfahren und es ergibt sich einsanfterer Übergang zwischen den einzelnen Bewegungsabschnitten. Außerdem verringertsich die Verfahrzeit, da weniger abgebremst und beschleunigt werden muss. Diese Bewe-gungsart wird auch als Überschleifen bezeichnet.

Polynomfunktionen

Für Beschleunigungsprofile können als weitere Möglichkeit auch Polynomfunktionen, zumBeispiel Polynome fünften Grades, verwendet werden.

Page 102: Automatische Konfiguration der Bewegungssteuerung von

92 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Abbildung 6.4 PTP–Bewegungen mit sinusförmigen Beschleunigungsprofil1.

Gel

enka

chse

2.G

elen

kach

se

AsynchronePTP–Bewegung

t

t� � � � � � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � �� ��������������� �� �� � � � � � � � �������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� �� �� �� �� �� �� �� �� �� �� �� �� �� � � �� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � �� � � � � � � � �� � � � � � � �� � � � � � �� � � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � � �� � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � �� � � � � � �� � � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � �� � � � � �� � � � � �� � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � �� � � �� � � �� � �� � �� � �� � �� � �� �� �� �� �� � �� � �� � �� � �� � �� � � �� � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � �� � �� � �� � �� � �� � �� �� �� �� �� �� �� � �� � �� � �� � �� � � �� � � � �� � � � � � � �

1.G

elen

kach

se2.

Gel

enka

chse

SynchronePTP–Bewegung

t

t

� � � � � � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � �� � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � �� ��������������� �� �� � � � � � � � �������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� �� �� �� �� �� �� �� �� �� �� �� �� �� � � �� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � �� � � � � �� � � � �� � � � �� � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � �� �� �������������� �� �� � � � � � � � � � ������������� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

������������� � � � � � � � �� ��������������� �� �� �

1.G

elen

kach

se2.

Gel

enka

chse

VollsynchronePTP–Bewegung

t

t� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � �� � � � � � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � �� � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � �� � � � � � � � � �� � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � �� � � � � �� � � � � �� � � � �� � � � � �� � � � � �� � � � � � � � �� � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � �� � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � �

� � � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � � � � � � �� � � � � � �� � � � � � �� � � � � � � �� � � � � � � � � �� � � � � � � � � � � �

6.3.2 Trajektoriengenerierung im kartesischen Raum

Bei der Trajektoriengenerierung im kartesischen Raum werden die Achsen des Roboters soangesteuert, dass der Endeffektor sich exakt entlang einer vorgeschriebenen Bahn bewegt.Die beiden Hauptvarianten sind Linear– und Zirkularinterpolation. Linearinterpolationkann auch zur Umorientierung des Endeffektors bei gleichbleibender Position verwendetwerden. Diese Bewegungsart wird als Quirlen bezeichnet. Wird zirkular interpoliert, soliegen die Interpolationspunkte in einer Ebene, die eventuell geneigt ist. Die Trajektori-engenerierung im kartesischen Raum erfordert mehr Rechenaufwand als im Gelenkwin-kelraum, da in jedem Interpolationstakt mit Hilfe der inversen Kinematik die berechneteZwischenkoordinate in den Gelenkwinkelraum transformiert werden muß.

Eine Orientierung kann als dreidimensionaler Vektor, als Rotationsmatrix oder als Qua-ternion repräsentiert werden. Bei der Interpolation von Orientierungen mit Euler Winkelnkönnen Mehrdeutigkeiten entstehen. Außerdem kann bei dieser Darstellung ein sogenann-ter Gimbal Lock [66] auftreten, das heißt dass bei bestimmten Winkelkonstellationen nichtmehr um drei, sondern nur noch um zwei Achsen gedreht werden kann. Mit einer Rota-tionsmatrix können kontinuierliche Orientierungsänderungen nur schwierig ausgedrücktwerden und es besteht die Gefahr, dass die Rotationsmatrix während der Interpolationihre Orthonormalität verliert. Deswegen werden in dieser Arbeit für die Interpolation vonOrientierungen Quaternionen eingesetzt. Quaternionen können einfach normiert werden,benötigen weniger Rechenoperationen und damit weniger Rechenzeit als Rotationsmatri-zen und es treten keine Singularitäten auf [156]. Außerdem können Euler Winkel, Quater-nionen und Rotationsmatrizen leicht ineinander umgewandelt werden (Abschnitt A.1).

Lineare Interpolation in kartesischen Koordinaten

Für geradlinige Bewegungen müssen der Anfangspunkt �pa = (pa,x, pa,y, pa,z)T und der End-

punkt �pe = (pe,x, pe,y, pe,z)T der Geraden angegeben werden (Abbildung 6.5). Die Anfangs-

orientierung qa = (qa,w, qa,x, qa,y, qa,z)T und die Endorientierung qe = (qe,w, qe,x, qe,y, qe,z)

T

Page 103: Automatische Konfiguration der Bewegungssteuerung von

6.3. Betriebsarten einer Bewegungssteuerung 93

werden als Quaternionen dargestellt. Sofern die Bahnanfangs– und der Bahnendlage diegleiche Orientierung haben, wird die Orientierung während der Interpolation konstantgehalten. Unterscheiden sich die Orientierungen, so wird die Anfangsorientierung wäh-rend der Interpolation kontinuierlich in die Endorientierung überführt. Zunächst wird dieLänge der abzufahrenden Translationsstrecke Δp im kartesischen Raum und die Orientie-rungsänderung Δq im Quaternionenraum berechnet.

Δp =√

(pe,x − pa,x)2 + (pe,y − pa,y)2 + (pe,z − pa,z)2 (6.20)

Δq =√

(qe,w − qa,w)2 + (qe,x − qa,x)2 + (qe,y − qa,y)2 + (qe,z − qa,z)2 (6.21)

Zur Berechnung der Interpolationspunkte �p(t) und der Quaternionen q(t) wird der Bahn-parameter sl(t) eingeführt. Um ruckfreies Beschleunigen und Abbremsen zu erreichen,wird der Bahnparameter wie bei PTP–Bewegungen interpoliert mit Startwert 0 und End-wert max{Δp, Δq}. Die Interpolationsgleichungen zur Überführung des Anfangspunkts inden Endpunkt und zur Überführung der Anfangs– in die Endorientierung lauten:

�p(t) = �pa +sl(t)

max{Δp, Δq} · (�pe − �pa) (6.22)

q(t) = qa +sl(t)

max{Δp, Δq} · (qe − qa) (6.23)

Nach dieser Berechnung wird das Quaternion normiert q(t) = q(t)/|q(t)|. Dieser Schrittist in jedem Interpolationstakt erforderlich, damit aus diesem Einheitsquaternion die kor-respondierende Rotationsmatrix bestimmt werden kann (Gleichung A.6). Aus Rotations-matrix und Positionsvektor wird anschließend eine homogene Transformationsmatrix ge-bildet, die mit der inversen Kinematik in den Gelenkwinkelraum transformiert wird.

Zirkuläre Interpolation in kartesischen Koordinaten

Für kreisförmige Bewegungen ist die Angabe des Anfangspunkts �pa = (pa,x, pa,y, pa,z)T und

des Endpunkts �pe = (pe,x, pe,y, pe,z)T der Bewegung sowie die Angabe eines zusätzlichen

Hilfspunktes �ph = (ph,x, ph,y, ph,z)T auf der Bahn erforderlich (Abbildung 6.5). Diese drei

Punkte dürfen nicht identisch sein und nicht auf einer Geraden liegen. Außerdem sollteder Hilfspunkt nicht zu nahe am Anfangs– oder Endpunkt liegen. Der Hilfspunkt dientdazu, den Kreismittelpunkt �pm = (pm,x, pm,y, pm,z)

T , Kurvenradius r und Normalenvektor�n der Kreisebene zu definieren, in der interpoliert wird. Ein geeigneter Normalenvektorwird durch das Kreuzprodukt �n = (�ph − �pa) × (�pe − �ph) definiert. Der Kurvenradius rergibt sich aus den Abständen a = |�ph − �pa|, b = |�pe − �ph| und c = |�pe − �pa| gemäß demSatz des Heron.

r =a · b · c√

(a + b + c) · (a + b − c) · (a − b + c) · (−a + b + c)(6.24)

Der Kreismittelpunkt liegt im gemeinsamen Schnittpunkt der Mittelsenkrechten des von�pa, �ph, und �pe aufgespannten Dreiecks. Die gemeinsame Lösung der Mittelsenkrechtsglei-chungen und der Kreisebenengleichung, die hier in Normalvektorform angegeben sind,bestimmen die Koordinaten des Kreismittelpunkts �pm.

(�ph − �pa) · �pm = 12· (�pa + �ph) · (�ph − �pa)

(�pe − �ph) · �pm = 12· (�ph + �pe) · (�pe − �ph) (6.25)

�n · �pm = �n · �pa

Page 104: Automatische Konfiguration der Bewegungssteuerung von

94 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Zur numerischen Lösung dieses linearen Gleichungssystems wird die Cramersche Regelbeziehungsweise das Determinantenverfahren [12] angewendet. Anschließend wird in denKreismittelpunkt ein rechtshändiges orthonormiertes Koordinatensystem KS gelegt. Diex–Achse zeigt dabei vom Kreismittelpunkt �pm auf den Anfangspunkt �pa der zu interpo-lierenden Kreisbahn und die z–Achse entlang des Normalenvektors �n der Kreisebene.

KS = (�e1, �e2, �e3) =

(�pa − �pm

|�pa − �pm| , �e3 × �e1,�n

|�n|)

(6.26)

Der Mittelpunktswinkel eines Kreisbogens ist doppelt so groß wie einer der zugehörigenUmfangswinkel. Mit Hilfe des Kosinussatzes wird der zu durchfahrende GesamtdrehwinkelΔα berechnet.

Δα = 2π − 2 · arccos

(a2 + b2 − c2

2 · a · b)

(6.27)

Die zu durchfahrende Bogenlänge beträgt Δs = r · Δα. Die Berechnung der Interpolati-onspunkte �p(t) erfolgt über den Bahnparameter sc(t), der die zurückgelegte Bogenlängeangibt. Der Bahnparameter wird wie bei PTP–Bewegungen im Gelenkwinkelraum mitStartwert 0 und Endwert Δs interpoliert. In der folgenden Interpolationsgleichung wirdzunächst in den Kreismittelpunkt transformiert und anschließend in der Kreisebene diekartesischen Koordinaten berechnet.

�p(t) = �pm + KS ∗

⎛⎜⎜⎝

r · cos(

sc(t)r

)r · sin

(sc(t)

r

)0

⎞⎟⎟⎠ (6.28)

Abbildung 6.5 Lineare und zirkuläre Trajektoriengenerierung

x

y

z

� � � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � �� �

�pa

�pe�pa: Anfangspunkt�pe: Endpunkt�ph: Hilfspunkt�pm: Kreismittelpunkt

x

y

z

������������

�����������

����������

����������

����������

���������������������������������������������������������� � � � � �� � � � � �� � � � � �� � � � � �� � � � � � �� � � � � � �� � � � � � �� � � � � � � �� � � � � � � � �

� � � � � � � � � �� � � � � � � � � � � �

� � � � � � � � � � � � � � � � �� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

��

�pa

�pe�ph

�pm

Bei Kreisinterpolation kann die Orientierung des Endeffektors während der gesamten In-terpolation entweder konstant bleiben oder variabel sein. Außerdem kann entweder raum-bezogen oder bahnbezogen interpoliert werden. Der raumbezogene Fall ist analog zurOrientierungsinterpolation bei Linearbewegungen definiert.

Bei konstanter, raumbezogener Interpolation bleibt die Orientierung des Endeffektors be-züglich des Basiskoordinatensystems während der gesamten Bewegung konstant.

Bei variabler, raumbezogener Interpolation wird eine Anfangsorientierung kontinuierlichin eine Endorientierung überführt. Die Anfangs– und die Endorientierung werden als Qua-ternionen qa = (qa,w, qa,x, qa,y, qa,z)

T beziehungsweise qe = (qe,w, qe,x, qe,y, qe,z)T dargestellt.

Die Orientierung des Hilfspunkts, der die Kreisbahn festlegt, wird nicht benötigt. Zunächstwird die Orientierungsänderung Δq im Quaternionenraum wie in Gleichung (6.21) berech-net. Es wird der Bahnparameter sc2(t) mit Startwert 0 und Endwert Δq eingeführt. Die

Page 105: Automatische Konfiguration der Bewegungssteuerung von

6.4. Entwicklung eines Interpreters 95

beiden Paramter sc(t) und sc2(t) werden wie bei synchronen PTP–Bewegungen interpo-liert, damit die Interpolation von Positionen und Orientierungen gleichzeitig beginnt undendet. Die Interpolationsgleichung zur Überführung der Anfangs– in die Endorientierunglautet:

q(t) = qa +sc2(t)

Δq· (qe − qa) (6.29)

Bei konstanter, bahnbezogener Orientierung wird die Orientierung bezüglich der sich än-dernden Orientierung der Bahntangente interpoliert. Dadurch wird eine Bahnbewegungmit konstanter Orientierung des Endeffektors zur Bahntangente bewirkt. Das resultieren-de Orientierung ergibt sich durch Quaternionenmultiplikation der Anfangsorientierungqa = (qa,w, qa,x, qa,y, qa,z)

T mit dem Quaternion, das sich anhand der Kreisebene und demüber die zurückgelegte Bogenlänge definierten Drehwinkel ergibt.

q(t) = qa ∗⎛⎝ cos

(sc(t)

r

)sin

(sc(t)

r

)· �n/|�n|

⎞⎠ (6.30)

Bei variabler, bahnbezogener Orientierung wird sowohl eine Anfangs– in eine Endorientie-rung überführt als auch die sich ändernde Orientierung der Bahntangente berücksichtigt.Dieser Fall ist eine Kombination der beiden vorherigen Fälle.

q(t) = (qa +sc2(t)

Δq· (qe − qa)) ∗

⎛⎝ cos

(sc(t)

r

)sin

(sc(t)

r

)· �n/|�n|

⎞⎠ (6.31)

6.4 Entwicklung eines InterpretersDie Aufgabe des Interpreters ist die Entgegennahme und Abarbeitung von Roboterbefeh-len und Programmen. Der Interpreter ist im Gegensatz zu den anderen Komponenten derBewegungssteuerung völlig unabhängig von der kinematischen Struktur eines bestimmtenRoboters. Ändert sich die Aufgabe eines Roboters, so wird das zu interpretierende Robo-terprogramm ausgetauscht und gegebenenfalls die Steuerungssoftware rekonfiguriert.

6.4.1 Herstellerspezifische Roboterprogrammiersprachen

Roboterprogrammiersprachen enthalten neben den in imperativen Programmiersprachenüblichen Konstrukten zusätzlich auch Bewegungsanweisungen, Geschwindigkeits– und Be-schleunigungsangaben, Anweisungen für den Betrieb von Werkzeugen und Greifern sowiezur Ansteuerung eventuell externer Gelenkachsen und Anweisungen für die Signal– undSensordatenverarbeitung. Außerdem gibt es robotikspezifische Datentypen, wie zum Bei-spiel Vektoren und Transformationsmatrizen und spezielle Operationen auf diesen Daten-typen, wie beispielsweise die Umrechnung von Euler–Winkeln in Rotationsmatrizen.

Während im Bereich der Werkzeugmaschinenprogrammierung die DIN 66025 [36] Verbrei-tung fand, konnte sich im Bereich der Roboterprogrammiersprachen bislang kein einheit-licher Standard durchsetzen. Jeder Hersteller verwendet seine eigene spezifische Sprache,wie zum Beispiel Kuka Robot Language (KRL), Variable Assembly Language

(VAL) oder die ABB–Roboterprogrammiersprache Rapid. Deswegen existieren heutzu-tage viele Roboterprogrammiersprachen. Die Sprachen der verschiedenen Hersteller un-terscheiden sich sowohl in ihrem Sprachumfang als auch in der Syntax und Semantik.

Page 106: Automatische Konfiguration der Bewegungssteuerung von

96 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

6.4.2 DIN 66313: Industrial Robot Data (IRDATA)

Herstellerspezifische Sprachen können nicht für beliebige Robotertypen, sondern nur fürdie speziellen Roboter eines Herstellers verwendet werden. Da Programme in diesen Spra-chen nur zwischen Robotern desselben Herstellers, nicht aber herstellerübergreifend aus-getauscht werden können, wurde die Schnittstellensprache IRDATA [37] vorgeschlagen.Roboterprogramme, die in verschiedenen Programmiersprachen implementiert sind, wer-den zuerst mit einem Compiler in diese Zwischensprache übersetzt. Anschließend wird die-ser einheitliche Zwischencode von dem Interpreter auf der Robotersteuerung ausgeführt.Der Zwischencode ist ein Zahlencode, bei dem die Anweisungen aus numerisch codiertenSätzen bestehen. Jeder Satz besteht aus einer Folge von Wörtern, die durch Kommatavoneinander getrennt werden. Das erste Wort eines Satzes ist die Satzfolgenummer mitder die Sätze in aufsteigender Folge numeriert werden. Das zweite Wort eines Satzes istdas Hauptwort, das den Satztyp beinhaltet, zum Beispiel Bewegungsbefehl, arithmetischeAnweisung oder Sensorfunktion. Die restlichen Wörter eines Satzes sind Nebenwörter, diedie erforderlichen Daten zu einem Hauptwort enthalten. Nebenwörter sind beispielsweisebei einem Bewegungsbefehl Geschwindigkeits– und Beschleunigungswerte und bei einerarithmetischen Operation sind es Operanden und deren Typen. Da es sich bei den meistenWörtern eines Satzes um Zahlen handelt, sollten Roboterprogramme nicht von Hand inIRDATA implementiert werden, sondern in einer Hochsprache und dann mit einem Com-piler nach IRDATA übersetzt werden (Abbildung 6.6). Ein IRDATA–Programm bestehtaus Programmbeginn, Vereinbarungsteil, Blöcke und Programmende. In dem Vereinba-rungsteil werden Prozeduren und Daten deklariert und in Blöcken, die geschachtelt seinkönnen, sind die eigentlichen Anweisungen enthalten. Es gibt eine Reihe vordefinierterDatentypen, zum Beispiel den Vektordatentyp, der aus drei reelen Zahlen besteht. Au-ßerdem kann der Benutzer neue Datentypen wie Felder und Verbunde einführen.

Abbildung 6.6 Programmierung über IRDATA Schnittstelle

Programm inRobotersprache A

Programm inRobotersprache B

Compiler fürRobotersprache A

Compiler fürRobotersprache B

IRDATAZwischencode

IRDATA Interpreterauf Steuerung 1

IRDATA Interpreterauf Steuerung 2

Der Vorteil von IRDATA ist, dass Roboterprogramme und Roboter von verschiedenenHerstellern miteinander kombiniert werden können. Diese Flexibilität wird durch die zwei-stufige Programmverarbeitung, das heißt Compilierung eines Programms in roboterunab-hängigen Zwischencode und anschließende Interpretation, erreicht. Der Nachteil von IR-

DATA ist, dass diese Zwischensprache sehr umfangreich und schwer zu erlernen ist. Dabisher für diese Norm keine Referenzimplementierungen erhältlich sind, ist für jede Robo-terprogrammiersprache, die unterstützt werden soll, ein Compiler zu entwickeln. Zur Neu-entwicklung mindestens eines Compilers und eines Interpreters muß ein hoher Aufwandbetrieben werden. Deswegen wird in dieser Arbeit für die einheitliche Roboterprogram-mierung eine herstellerübergreifende Sprache verwendet, da der Einarbeitungsaufwandgeringer als bei IRDATA ist und kein Compiler entwickelt zu werden braucht.

Page 107: Automatische Konfiguration der Bewegungssteuerung von

6.4. Entwicklung eines Interpreters 97

6.4.3 DIN 66312: Industrial Robot Language (IRL)

Die einzige speziell für die Roboterprogrammierung normierte Programmiersprache istdie Industrial Robot Language (IRL), die in DIN 66312 [38] spezifiziert ist. DieSprache dient der Vereinheitlichung der bisher herstellerabhängigen Roboterprogrammier-sprachen. Die Ausführung von IRL–Programmen durch die Bewegungssteuerung erfordertdie Entwicklung eines entsprechenden Interpreters. Darüber hinaus besteht die Möglich-keit, einen Compiler zu entwickeln, um IRL–Programme zuerst nach IRDATA (Abschnitt6.4.2) zu übersetzen. In dieser Arbeit wurde ein IRL–Interpreter entwickelt, der die Befeh-le im Roboterprogramm interruptgesteuert abarbeitet und dabei Funktionsaufrufe für dieTrajektoriengenerierungskomponenten erzeugt. Teile des Interpreters wurden im Rahmeneiner Studienarbeit implementiert, die innerhalb dieser Arbeit betreut wurde. Mit Hilfedes Parsergenerators ANTLR (ANother Tool for Language Recognition) [132] wird dieSyntaxanalyse durchgeführt, das Roboterprogramm in einen abstrakten Syntaxbaum alsZwischenform umgewandelt und dieser direkt durchlaufen und ausgewertet. Die Gram-matik von IRL wurde als LL(k) beziehungsweise als linksabsteigende Grammatik formali-siert, das heißt jeder Ableitungsschritt zum Aufbau des Syntaxbaums ist eindeutig durchdie nächsten k Eingabesymbole festgelegt. Es wurde eine Vorschau von k = 2 benutzt, dagrößere Werte zu längeren Programmlaufzeiten führen würden. Der für diese Grammatikerzeugte Parser verwendet die Methode des rekursiven Abstiegs, das heißt jedem Nicht-terminalsymbol wird eine Funktion zugeordnet, die alle aus dem Nichtterminalsymbolableitbaren Zeichenketten analysiert. Bei der Entwicklung des Parsers wurde berücksich-tigt, dass IRL grundsätzlich nicht zwischen Groß– und Kleinschreibung unterscheidet.

IRL ist eine Pascal–ähnlich Sprache und enthält zudem Konstrukte für Bewegungs-anweisungen. IRL–Programme bestehen aus einem Programmkopf, einem Programmver-einbarungsteil, einer Unterprogrammliste und einem Anweisungsteil. Der Programmkopfenthält im Wesentlichen einen Programmbezeichner. Im folgenden werden die wichtigstenKonstrukte dieser Sprache, die auch der entwickelte Interpreter beherrscht, vorgestellt.

Kommentare: Die Lesbarkeit von Programmen wird durch Kommentare erhöht. Kom-mentare werden durch geschweifte Klammern { } eingeleitet und beendet. Sie könnensich über eine oder mehrere Zeilen erstrecken und dürfen auch geschachtelt werden.

Bezeichner: Vom Benutzer deklarierte Variablen und Funktionen werden Bezeichner zu-geordnet. Bezeichner müssen mit einem Buchstaben oder einem Unterstrich beginnen.Daran dürfen beliebig viele Buchstaben oder Ziffern sowie Unterstriche folgen.

Schlüsselwörter: In IRL ist eine Vielzahl von Schlüsselwörtern oder reservierten Wör-tern definiert (135). Diese Zeichenketten dürfen nicht als Bezeichner verwendet werden.

Grunddatentypen: IRL enthält eine Reihe vordefinierter Datentypen und erlaubt es,neue Datentypen zu definieren. Der Typ bool umfaßt die Wahrheitswerte wahr ( �= 0)und falsch (= 0). Der Typ char dient dazu, ein einzelnes Ascii–Zeichen darzustellen. Fürganze Zahlen ist der Typ int mit einem minimalen Wertebereich von −231 + 1 bis 231 − 1verfügbar. Der Typ real wird für Gleitpunktzahlen verwendet. Als minimaler Wertebe-reich wird −1.7 · 1038 bis −1.7 · 10−38 und 1.7 · 10−38 bis 1.7 · 1038 sowie einschließlich derNull gefordert. Mit dem Typ string können Zeichenketten dargestellt werden.

Geometrische Datentypen: Außer diesen Grundtypen, die auch in anderen Program-miersprachen anzutreffen sind, sind geometrische Datentypen vordefiniert mit denen diePosition und Orientierung des Endeffektors beschrieben werden kann. Der Typ position

Page 108: Automatische Konfiguration der Bewegungssteuerung von

98 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

besteht aus drei Gleikommazahlen, um die x–, y– und z–Richtung von kartesischen Ko-ordinaten anzugeben. Der Typ orientation beschreibt die Orientierung eines Koordina-tensystems hinsichtlich eines Referenzkoordinatensystems. Die interne Implementierungdieses Datentyps ist nicht Teil der Norm, sondern wird dem Übersetzerbauer überlas-sen. Allerdings sind eine Reihe von Funktionen vordefiniert, um eine Variable dieses Typsbeispielsweise anhand von Euler Winkeln zu bestimmen. Der Typ pose ist ein zusammen-gesetzter Datentyp, der aus den beiden Grundtypen position und orientation besteht.

Benutzerdefinierte Datentypen: Als benutzerdefinierte Typen sind Felder und zu-sammengesetzte Typen erlaubt. Felder sind Datenstrukturen, die aus einer Anzahl vonElementen desselben Typs bestehen und auf deren Elemente über einen ganzzahligen In-dex zugegriffen werden kann. Zusammengesetzte Typen sind Verbunde, die aus mehrerenTypen bestehen. Benutzerdefinierte Typen können auch ineinander geschachtelt werden.

Programmvereinbarungsteil: Im Programmvereinbarungsteil werden Konstanten, Va-riablen und Typen vereinbart. Die Reihenfolge dieser Vereinbarungen ist beliebig. DurchKonstantendeklarationen wird die Lesbarkeit von Programmen erhöht. Mit Typdeklara-tionen werden neue Typen, das heißt zusammengesetzte Typen oder Felder, eingeführt.

Unterprogrammliste: In der Unterprogrammliste werden Prozeduren und Funktionenvereinbart. Im Gegensatz zu Prozeduren liefern Funktionen am Ende ihrer Ausführungeinen Rückgabewert. Drei verschiedene Parameterübergabemechanismen werden unter-stützt, und zwar Wertaufruf in, Ergebnisaufruf out und die Kombination inout. BeimWertaufruf wird der Parameter mit dem Wert des Arguments initialisiert. Beim Ergeb-nisaufruf wird nach Beendigung des Unterprogramms der Wert des Parameters an dasArgument zugewiesen. Das Argument selbst ist im Unterprogramm nicht lesbar.

Anweisungsteil: Der Anweisungsteil enthält die eigentlichen Anweisungen und Anwei-sungsblöcke, die geschachtelt sein können. Ein Anweisungsblock besteht aus einer einzel-nen oder mehreren Anweisungen. Eine Anweisung kann eine Zuweisung, ein Unterpro-grammaufruf, eine Programmflußanweisung, Ein/Ausgabeanweisung oder Bewegungsan-weisung sein. Durch eine Zuweisung erhält eine Variable einen neuen Wert, sofern dieTypen kompatibel sind. Mit einem Unterprogrammaufruf wird eine Prozedur oder eineFunktion gestartet. Zur Steuerung des Programmablaufs gibt es Sprunganweisungen, be-dingte Verzweigungen, Schleifenkonstrukte und Rückkehranweisungen. Programmsprüngesind nur innerhalb desselben Anweisungsblocks erlaubt. Aufgrund der besonderen Klam-merung tritt bei geschachtelten Verzweigungen das Dangling–Else–Problem nicht auf. Esgibt verschiedene Schleifenkonstrukte bei denen die Bedingung entweder am Schleifenan-fang oder am Schleifenende geprüft wird und es gibt Zählschleifen bei denen eine Lauf-variable die Anzahl der Schleifendurchläufe bestimmt. Funktionen müssen explizit eineRückkehranweisung enthalten, die auch durchlaufen wird und einen Wert zurückgibt. MitAusgabeanweisungen können Daten auf die Konsole oder in Dateien geschrieben werden.

Bewegungsanweisungen: Als Bewegungsarten können Punkt–zu–Punkt, lineare undzirkulare Bewegungen angegeben werden. Je nachdem, ob eine Positionierung bezüglichdes Basiskoordinatensystems gewünscht ist oder der Manipulator relativ zu seiner aktu-ellen Istposition verfahren soll, werden absolute und relative Bewegungen unterschieden.Bei Punkt–zu–Punkt und linearen Bewegungen wird die Zielposition mit einem geome-trischen Ausdruck angegeben. Bei zirkularen Bewegungen werden der Hilfspunkt und derEndpunkt der Kreisbahn durch zwei geometrische Ausdrücke festgelegt. Darüber hinauskann auch ein Bewegungspfad angegeben werden. Pfade werden durch eindimensionale

Page 109: Automatische Konfiguration der Bewegungssteuerung von

6.4. Entwicklung eines Interpreters 99

Felder oder Listen festgelegt. Bei Kreisbewegungen muß der Pfad eine gerade Anzahl vongeometrischen Ausdrücken enthalten. Die ungeraden Elemente des Pfades definieren Hilfs-punkte und die gerade Elemente die Endpunkte der Kreisbahnen. Die Anfangspositionwird in Bewegungsanweisungen nicht angegeben, da sie die momentane Stellung ist. FürBewegungsanweisungen wurden folgende grammatikalische Produktionsregeln definiert.

MovementStatement : PTPMovement | LinearMovement | CircleMovement ’;’PTPMovement : (’move’ | ’move_inc’) ’ptp’ˆ ToPoint PTPParameter ’;’LinearMovement : (’move’ | ’move_inc’) ’lin’ˆ ToPoint CPParameter ’;’CircleMovement : (’move’ | ’move_inc’) ’circle’ˆ Circle CPParameter ’;’ToPoint : Expression | Path ’;’Circle : Expression ’,’ Expression | Path ’;’

PTP–Bewegungsparameter: Bei einer Punkt–zu–Punkt Bewegung können optionalmehrere Parameter spezifiziert werden, zum Beispiel kann der aktuelle Roboter angegebenwerden. Es gibt die Möglichkeiten, einen Überschleiffaktor zu definieren und Überschleifeneinzuschalten, die Geschwindigkeit und Beschleunigung für jede Gelenkachse vorzugebensowie die Bewegungsdauer oder eine Bedingung für das Ende der Bewegung anzugeben.Außerdem kann eine externe Prozedur aufgerufen werden, mit der die Bewegung weiterangepasst werden kann, beispielsweise indem Sensorsignale verarbeitet werden.

PTPParameter : (’act_rob’ ’:=’ Expression)? { aktueller Roboter }( ’c_ptp’ (’:=’ Expression)* { Überschleiffaktor }| ’c_pass’ { Überschleifen }| ’speed_ptp’ (’:=’ Expression)* { Geschwindigkeit }| ’acc_ptp’ (’:=’ Expression)* { Beschleunigung }| ’time’ ’:=’ Expression { Bewegungsdauer }| ’until’ Expression { Stopbedingung }| ’alter_by’ ProcedureCall )* { Prozeduraufruf }

CP–Bewegungsparameter: Bei kartesischer Bahnsteuerung können sehr viele Parame-ter angegeben werden, die die Art der Bewegung festlegen. Außer den Parametern, dieauch bei Punkt–zu–Punkt Verbindungen zur Verfügung stehen, gibt es noch weitere Para-meter. Es ist möglich, koordinierte Bewegungen hinsichtlich zusätzlicher Achsen durchfüh-ren zu lassen. Bezüglich einer Überschleifbewegung kann der Radius der Überschleifkugelsowie die Überschleifgeschwindigkeit spezifiziert werden. Die Orientierungsgeschwindig-keit bei einer Quirlbewegung kann vorgegeben werden. Darüber hinaus kann angegebenwerden, dass eine Bewegung mit einer Pendelbewegung überlagert werden soll.

CPParameter : (’act_rob’ ’:=’ Expression)? { aktueller Roboter }(’adax_control’ ’:=’ Expression)? { Zusatzachsen }( ’c_cp’ (’:=’ Expression)* { Überschleifabstand }| ’c_speed’ (’:=’ Expression)* { Überschleifgeschw. }| ’speed_ori’ (’:=’ Expression)* { Orientierungsgeschw. }| ’c_pass’ { Überschleifen }| ’speed’ (’:=’ Expression)* { Geschwindigkeit }| ’acc’ (’:=’ Expression)* { Beschleunigung }| ’time’ ’:=’ Expression { Bewegungsdauer }| ’until’ Expression { Stopbedingung }| ’wobble’ { Pendelbewegung }| ’alter_by’ ProcedureCall )* { Prozeduraufruf }

Page 110: Automatische Konfiguration der Bewegungssteuerung von

100 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

6.4.4 Experimentelle Ergebnisse

In diesem Abschnitt werden eine Reihe von Beispielprogrammen aufgeführt, die von dementwickelten Roboterinterpreter direkt ausgeführt werden können. Bei dem Programm6.1 handelt es sich um ein Roboterprogramm, wie es tatsächlich bereits auf einer realenRobotersteuerung ausgeführt wurde. Das Programm besteht aus noch sehr viel mehrBewegungsbefehlen, die aus Platzgründen hier allerdings weggelassen wurden.

Programm 6.1 Roboterprogramm zur Inspektion komplexer Teileprogram Inspection;begin

move ptp pose (position(1289.57, 71.98,−595.04), orizyx(−1.60, 87.96, 89.52));move ptp pose (position(1126.06, 71.53,−767.46), orizyx(−29.11, 89.71, 62.01));move lin pose (position(1126.71, 104.75,−767.31), orizyx(−28.90, 89.71, 62.22));writeln(′Position reached.′);

endprogram;

Programm 6.2 ist ein weiteres Roboterprogramm, um Teile von einem Transportbanddurch einen Roboter entnehmen und palettieren zu lassen. Auf– und Abbewegungen zumHochheben und Absetzen eines Teils werden linear interpoliert. Sonstige Bewegungenwerden PTP interpoliert. Die Initialisierung wurde zur leichteren Lesbarkeit abgekürzt.

Programm 6.2 Roboterprogramm zur Palettierung von Objektenprogram Palette;var pose: TakePose, LayPose, UpPose, DownPose, SavePose;

int: p, x, xn, y, yn;bool: IsConveyer, IsPalette;position: xdiff, ydiff ;

begin { Beginn des Programms }Initialization();move ptp SavePose;Gripper := GripperOpen;while IsConveyer and IsPalette

for y := 1 to yn { Palettenpositionen in y–Richtung }for x := 1 to xn { Palettenpositionen in x–Richtung }

move ptp UpPose;move lin TakePose;Gripper := GripperClose; { Entnahme vom Transportband }move lin UpPose speed := 100.0;move ptp DownPose;move lin LayPose;Gripper := GripperOpen; { Ablage auf Palette }move lin DownPose speed := 100.0;DownPose.pos := DownPose.pos + xdiff ;LayPose.pos := LayPose.pos + xdiff ;

endfor; { x–Richtung }DownPose.pos := DownPose.pos - (xn - 1) * xdiff ;DownPose.pos := DownPose.pos + ydiff ;LayPose.pos := LayPose.pos - (xn - 1) * xdiff ;LayPose.pos := LayPose.pos + ydiff ;

endfor; { y–Richtung }move ptp SavePose;

endwhile;endprogram; { Ende des Programms }

Page 111: Automatische Konfiguration der Bewegungssteuerung von

6.5. Anwendungsprogrammierschnittstelle 101

6.5 Anwendungsprogrammierschnittstelle

In dieser Arbeit wird ein objektorientiertes Komponentenmodell verwendet. Die Verschal-tung der einzelnen Softwarekomponenten zu der Bewegungssteuerung erfolgt gemäß einesReferenzmodells (Abschnitt 6.1). Die Kommunikation zwischen den Komponenten wirddurch die Middleware unterstützt. Von allen Komponenten der Bewegungssteuerung wur-den einheitliche Schnittstellen definiert hinter denen die Komponenten ihre Funktionalitätkapseln. Dadurch kann eine existierende Komponente sehr leicht durch eine neue Kom-ponente mit denselben Schnittstellen ausgetauscht werden. Der Benutzer kann auf Basisdieser Schnittstellen eigene Komponenten entwickeln und in die Bewegungssteuerung inte-grieren. Um eine möglichst allgemeine Softwarearchitektur zu erreichen, sind die Schnitt-stellen unabhängig von Betriebssystemen und Robotertypen. Für jeden Robotertyp gibtes eine andere Kinematikkomponente, die allerdings dieselben öffentlichen Schnittstellenimplementiert. Der Konstruktor der Kinematikkomponente initialisiert die kinematischenParameter mit den Werten in dem angegebenen XML–Dokument, das durch den Konfi-gurator (Abschnitt 6.2) erzeugt wurde. Beispielsweise werden Denavit–Hartenberg Para-meter, die bisher nur symbolisch angegeben wurden, mit numerischen Werten belegt.

KinematicsComponent (char *fileName)

Diese Komponente stellt im Wesentlichen drei Methoden zur Verfügung, die in die Bewe-gungssteuerung eingebunden werden. Die Methode, die die direkte Kinematik berechnet,erhält als Eingabe die Gelenkkoordinaten und berechnet daraus die Lage des Endeffektorsim Basiskoordinatensystem des Roboters in Form einer Transformationsmatrix.

virtual int directKinematicsvirtual int (const Vector &positions, Frame &tcpBase) = 0

Die inverse Kinematik berechnet zu einer kartesischen Lage des Endeffektors die entspre-chenden Gelenkkoordinaten als Sollwerte für die Achsregler. Falls es mehrere Lösungengibt, so wird die der aktuellen Gelenkkonfiguration am dichtesten liegende Konfiguration,die zulässig ist, ausgewählt. Die Methode gibt eine Variable zurück, mit der überprüftwerden kann, ob die Berechnung erfolgreich war oder ob eine unerreichbare Pose vorliegt.

virtual int inverseKinematicsvirtual int (Vector &positions, const Frame &tcpBase) = 0

Die Methode, die die Jacobi–Matrix berechnet, erhält als Eingabe die Gelenkkoordinaten.

virtual int computeJacobianvirtual int (const Vector &positions, Matrix &jacobian) = 0

Für jeden Robotertyp gibt es auch eine andere Dynamikkomponente. Der Konstruktor derDynamikkomponente initialisiert die dynamischen Parameter, beispielsweise die Massender einzelnen Manipulatorglieder mit den Werten in dem angegebenen XML–Dokument.

DynamicsComponent (char *fileName)

Die Methode, die die direkte Dynamik berechnet, erhält als Eingabe die momentanen Ge-lenkkoordinaten, Gelenkgeschwindigkeiten und die in den Gelenken wirkenden Käfte undMomente. Hieraus berechnet die Methode die resultierenden Gelenkbeschleunigungen.

virtual int directDynamicsvirtual int (const Vector &positions, const Vector &velocities,virtual int (Vector &accelerations, const Vector &torques) = 0

Page 112: Automatische Konfiguration der Bewegungssteuerung von

102 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

Die Methode, die die inverse Dynamik berechnet, erhält als Eingabe die Gelenkkoordi-naten, Gelenkgeschwindigkeiten und Gelenkbeschleunigungen. Sie berechnet die Gelenk-kräfte und –momente, die bei Ausführung der Trajektorie auftreten.

virtual int inverseDynamicsvirtual int (const Vector &positions, const Vector &velocities,virtual int (const Vector &accelerations, Vector &torques) = 0

Für die PTP– und CP–Trajektoriengenerierungskomponenten gibt es eine Basisklasse,die mit den Werten in dem XML–Dokument initialisiert wird. Für die Anpassung dieserKomponenten an unterschiedliche Robotertypen ist keine Änderung der Implementierungund somit auch keine Rekompilierung notwendig. Die Anpassung wird über das XML–Dokument vorgenommen, das beispielsweise die Gelenkgeschwindigkeiten enthält.

TrajGen (char *fileName)

Die PTP–Trajektoriengenerierungskomponenten generieren Trajektorien im Gelenkwin-kelraum anhand eines ausgewählten Beschleunigungsprofils. Die Methoden, die asynchro-ne, synchrone und vollsynchrone Bewegungen generieren, erhalten als Argumente die Ko-ordinaten und Geschwindigkeiten der einzelnen Gelenkachsen zu Beginn und am Ende derBewegung. Die Anfangs– und Endbeschleunigungen der Gelenkachsen sind Null.

virtual void generateAsynchronousTrajectoryvirtual void (const Vector &initialPos, const Vector &finalVel,virtual void (const Vector &initialVel, const Vector &finalVel) = 0

virtual void generateSynchronousTrajectoryvirtual void (const Vector &initialPos, const Vector &finalVel,virtual void (const Vector &initialVel, const Vector &finalVel) = 0

virtual void generateFullySynchronousTrajectoryvirtual void (const Vector &initialPos, const Vector &finalVel,virtual void (const Vector &initialVel, const Vector &finalVel) = 0

Die CP–Trajektoriengenerierungskomponenten generieren lineare und zirkulare Trajekto-rien im kartesischen Raum. Die Methode, die lineare Trajektorien generiert, erhält alsArgumente, die Position und Orientierung zu Beginn und am Ende der Bewegung sowiedie kartesische Geschwindigkeit und Beschleunigung. Die Orientierung wird als Quater-nion angegeben. Die Methode, die zirkulare Trajektorien generiert, erhält als Argumentezusätzlich einen Hilfspunkt im kartesischen Raum, um den Kreisbogen zu definieren undeine Variable, die angibt, ob raum– oder bahnbezogen interpoliert werden soll.

virtual void generateLinTrajectoryvirtual void (const Vector &initialPos, const Vector &finalPos,virtual void (const Quaternion &initialOri, const Quaternion &finalOri,virtual void (double velocity, double acceleration) = 0

virtual void generateCircTrajectoryvirtual void (const Vector &initialPos, const Vector &finalPos,virtual void (const Quaternion &initialOri, const Quaternion &finalOri,virtual void (double velocity, double acceleration, int oriChavirtual void (const Vector &auxPos) = 0

Darüber hinaus wurden Komponenten für das Rechnen mit Vektoren, Matrizen und Qua-ternionen entwickelt, die leicht für andere Robotertypen wiederverwendet werden können.

Page 113: Automatische Konfiguration der Bewegungssteuerung von

Zusammenfassung und Ausblick

Die Entwicklung einer Bewegungssteuerung für Roboter erforderte bisher eine hohe Er-fahrung von Seiten der Entwickler. Ein Großteil dieser Software ist an die Geometrie desRoboters gekoppelt und kann nicht ohne Modifikationen bei anderen Robotertypen ein-gesetzt werden beziehungsweise muss für andere Bauarten neu entwickelt werden. Gleich-zeitig haben es die Entwickler von Steuerungssoftware für Roboter mit einer Vielzahl vonunterschiedlichen Robotertypen und kinematischen Aufbauarten zu tun. Die manuelleEntwicklung von Steuerungssoftware und insbesondere die Bestimmung von Robotermo-dellen ist ein sehr langwieriger und fehleranfälliger Vorgang. Aufgrund von Nichtlinearitä-ten können kinematische und dynamische Modelle nur sehr schwierig hergeleitet werden.

Ziel dieser Arbeit war die automatische Konfiguration der Bewegungssteuerung von belie-bigen Industrierobotern. Insbesondere wurde keine Software entwickelt, die nur für einenspeziellen Manipulator verwendet werden kann. Stattdessen wurde ein Konfigurations-werkzeug entwickelt, mit dem der Benutzer die mechanische Struktur eines Robotersmit einer einfach zu bedienenden graphischen Oberfläche komfortabel beschreiben kann.Dieser Konfigurator kann auch von Nichtexperten auf dem Gebiet der Robotik bedientwerden. Zum Beispiel kann der Benutzer Gelenkachsen als translatorisch, als rotatorischoder als passiv beziehungsweise unbeweglich definieren. Außerdem kann er kinematischeKenngrößen wie Richtungen und Abstände der einzelnen Gelenkachsen als auch dynami-sche Kenngrößen wie Massen und Trägheiten der einzelnen Manipulatorglieder angeben.Anhand dieser Beschreibung werden zuerst die mathematischen Modelle des Robotersautomatisch generiert. Anschließend wird die Bewegungssteuerung nach dem Baukasten-prinzip durch relativ einfache Kombination von Softwarekomponenten konfiguriert.

Bei der Herleitung der kinematischen und dynamischen Robotermodelle werden alle we-sentlichen Schritte und Zwischenergebnisse in dem Textformatierungssystem LATEX doku-mentiert. Dadurch kann der Benutzer nachvollziehen, wie eine Lösung bestimmt wurde.Die generierten analytischen Modelle werden zudem als Softwarekomponenten in der Pro-grammiersprache C/C++ ausgegeben. Da auch die Anzahl der erforderlichen Operatio-nen angegeben werden, können die Laufzeiten vorhergesagt werden. Zudem werden auchetwaige Mehrfachlösungen für die inverse Kinematik bestimmt und deren Anzahl ausgege-ben. Die Modelle erfüllen Echtzeitanforderungen, sind sehr effizient berechenbar sowie gutparallelisierbar. Durch die Wiederverwendbarkeit der einmal generierten Komponentenund Modelle reduziert sich zudem das Fehlerrisiko, was zu einer erheblichen Kostenein-sparung in der Softwareentwicklung führt. Bei einer Änderung der kinematischen Struktureines Roboters, zum Beispiel bei Austausch des Werkzeugs oder bei Ausfall eines Gelenks,können die Modelle sehr leicht angepasst beziehungsweise neu hergeleitet werden.

Der Schwerpunkt dieser Arbeit lag auf der symbolischen Berechnung von Robotermodel-len, da symbolische Modelle alle Lösungen beinhalten und sehr viel schneller als nähe-rungsweise Lösungen in Echtzeit ausgewertet werden können. Probleme die es bei nume-

Page 114: Automatische Konfiguration der Bewegungssteuerung von

104 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

rischen Algorithmen gibt, wie beispielsweise Instabilität in der Nähe von Singularitäten,werden vermieden. Außerdem sind geschlossene Lösungen ebenfalls besser geeignet, umdie Bahnplanung zu optimieren und Kollisionen zu erkennen, als Näherungslösungen. Beiseriellen Manipulatoren wird für die direkte Kinematik immer eine eindeutige Lösungdurch symbolische Multiplikation der Denavit–Hartenberg Matrizen bestimmt.

Zur Bestimmung der inversen Kinematik werden die Gleichungen der direkten Kinematikvon links und rechts mit invertierten Transformationsmatrizen multipliziert, um so weitereGleichungen zu erhalten, die weniger unbekannte Gelenkvariablen enthalten und einfacherzu lösen sind. Auf diese Art wird bei einem sechsachsigen Roboter ein Gleichungssystemmit insgesamt 252 Gleichungen aufgestellt. Bei einfacheren Robotergeometrien werden diekinematischen Gleichungen mit wissensbasierten Methoden (Abschnitt 4.3) gelöst. Hierfürwurde eine neue Wissensbasis entwickelt, die das analytische Lösen von Gleichungen, dietranszendente Funktionen enthalten, ermöglicht. Das Wissen über das Lösen von insge-samt zwölf Prototypgleichungen wurde symbolisch und in Regelform dargestellt. Regelnsind sowohl eine formale als auch eine für Menschen verständliche Form der Wissensre-präsentation. Regeln bestehen aus einem Bedingungs– und einem Aktionsteil und werdenvon links nach rechts abgearbeitet (Vorwärtsverkettung). Im Bedingungsteil wird das Vor-handensein von transzendenten Gleichungen geprüft und im Aktionsteil die Lösung dieserGleichungen durchgeführt. Zur Auflösung von Konflikten bei mehreren anwendbaren Pro-duktionsregeln sind den Regeln Prioritäten zugeordnet. Regeln, die eine eindeutige ma-thematische Lösung liefern, werden zuerst angewendet und erst danach Regeln, die zweiLösungen liefern. Da bei jeder Regelanwendung die Anzahl der unbekannten Gelenkvaria-blen in dem Gleichungssystem verringert werden, können keine Endlosschleifen auftreten.Um eine schnelle und effiziente Ausführung der Regeln zu erzielen, wird als Inferenzme-chanismus der Rete–Algorithmus eingesetzt. Dieses regelbasierte System wurde in derpopulären Expertensystemschale Jess (Java Expert System Shell) implementiert.

Es kann nicht jeder Robotertyp, der eine geschlossene Lösung hat, mit regelbasierten Me-thoden gelöst werden. Deswegen werden bei komplexeren Robotergeometrien algebraischeEliminationsmethoden, die auf der Berechnung von Gröbnerbasen beruhen, angewendet(Abschnitt 4.4). Zunächst werden die trigonometrischen Gleichungen, die untereinandergekoppelt sind, in eine Menge von Polynomgleichungen transformiert. Anschließend wer-den diese Polynomgleichungen in eine univariate Polynomgleichung konvertiert, soferneine solche Gleichung existiert. Eine Gleichung mit einer einzigen Unbekannten kann inder Regel wesentlich leichter gelöst werden als die ursprünglichen Gleichungen in mehre-ren Unbekannten. Die trigonometrischen Gleichungen werden mit der gefundenen Lösungvereinfacht und anschließend die verbleibenden unbekannten Gelenkvariablen wiederummit regelbasierten Methoden gelöst. Falls für einen Manipulator keine geschlossene Lö-sung ermittelt werden kann, so wird eine Näherungslösung angewendet.

Zur Modellierung von Manipulatoren wurden außer Denavit–Hartenberg Parametern (Ab-schnitt 4.1) auch Twist–Koordinaten (Abschnitt 4.5) verwendet. Diese beiden Methodenwurden gewählt, da mit beiden eine kompakte und kanonische Darstellung der Manipu-latorgeometrie möglich ist. Der Vorteil von Twist–Koordinaten ist, dass nicht jeder Ge-lenkachse ein Koordinatensystem zugeordnet werden braucht, sondern nur das Basis– unddas Endeffektorkoordinatensystem benötigt werden. Twist–Koordinaten können durchsehr einfache geometrische Betrachtungen bestimmt werden. Denavit–Hartenberg Para-meter werden zudem durch Matrixmultiplikation automatisch in Twist–Koordinaten um-gerechnet. Die mit diesen beiden Verfahren generierten Modelle können sehr leicht bezüg-

Page 115: Automatische Konfiguration der Bewegungssteuerung von

6.5. Anwendungsprogrammierschnittstelle 105

lich Korrektheit und Kompaktheit miteinander verglichen werden. Obwohl die Schrittezur Herleitung der direkten Kinematik und der Jacobi–Matrix bei beiden Verfahren sehrunterschiedlich sind, werden dieselben analytischen Ausdrücke generiert. Bezüglich derHerleitung der inversen Kinematik unterscheiden sich die beiden Verfahren sehr stark. Umdie inverse Kinematik auf Basis von Twist–Koordinaten zu bestimmen, wird die direkteKinematik in mehrere geometrische Teilprobleme zerlegt, deren geschlossene Lösungen indieser Arbeit durch algebraische Umformungen hergeleitet wurden. Infolgedessen werdenbei beiden Verfahren teilweise unterschiedliche analytische Lösungen für die inverse Ki-nematik generiert, da beispielsweise die Reihenfolge in der unbekannte Gelenkvariablenbestimmt werden, nicht immer eindeutig ist. Bei der numerischen Auswertung in einerSimulationsumgebung wurden jedoch dieselben Zahlenwerte berechnet. Deswegen dürfendiese sehr komplizierten Modelle als korrekt angenommen werden.

Nach der Bestimmung des kinematischen Robotermodells erfolgte die Bestimmung desdynamischen Modells nach dem Lagrange und dem Newton–Euler Verfahren. Eine ge-schlossene Lösung der inversen Dynamik ist teilweise noch schwieriger als eine geschlosseneLösung der inversen Kinematik zu bestimmen. Bereits bei sechsachsigen Robotern sind dieBewegungsgleichungen sehr umfangreich und es treten sehr viele trigonometrische Termeauf. Die manuelle Herleitung ist extrem aufwändig und nur im Prinzip möglich. Zunächstwird die inverse Dynamik auf Basis der Massen, Schwerpunktslagen und Trägheitstensorender Manipulatorglieder symbolisch bestimmt. Um die wiederholte Berechnung der glei-chen Teilausdrücke zu vermeiden und die Gleichungen numerisch effizienter auswerten zukönnen, werden Hilfsvariablen automatisch eingeführt. Durch Inversion der Massenmatrixund Umstellung der Gleichungen wird dann die direkte Dynamik erhalten. Die Herleitungder Bewegungsgleichungen nach Lagrange erfolgt in mehreren Schritten. Zuerst wird fürjedes Gelenk die potentielle und kinetische Enerige berechnet. Durch Aufsummierung derpotentiellen Energien wird der Gravitationsvektor und durch Aufsummierung der kine-tischen Energien die Massenmatrix berechnet. Schließlich werden die Zentrifugal– unddie Coriolismatrix durch Differentiation und Umformung der Massenmatrix gemäß denLagrange Gleichungen berechnet. Zur Überprüfung und Validierung des dynamischen Mo-dells werden die Gleichungen außerdem nach dem Newton–Euler Verfahren hergeleitet. Inder Vorwärtsiteration werden die Gelenkachsen vom Basis– bis zum Endeffektorkoordina-tensystem durchlaufen und mit dem Impuls– und Drehimpulssatz die Kräfte und Momentein den Schwerpunkten der Manipulatorglieder bestimmt. In der Rückwärtsiteration wer-den dann die Bewegungsgleichungen aufgestellt. Die entstehenden Differentialgleichungenwerden durch symbolische Umformungen in eine Matrizendarstellung gebracht, die zu derdes Lagrange Verfahrens äquivalent ist. Die analytische Lösung ist jedoch nur bei Robo-tern mit wenigen Freiheitsgraden möglich, da ansonsten die Gleichungen zu umfangreichwerden. Deswegen wurde in dieser Arbeit das Newton–Euler Verfahren dahingehend mo-difiziert, dass in nun vier Iterationen kleinere Gleichungen erstellt werden. In der erstenIteration wird der Gravitationsvektor, in der zweiten die Massenmatrix, in der dritten dieZentrifugalmatrix und in der vierten die Coriolismatrix berechnet. Durch die Aufteilungder Berechnungen auf mehrere Iterationen können auch sechsachsige Roboter analytischmit dem Newton–Euler Verfahren gelöst werden.

Eine Hauptkomponente jeder Bewegungssteuerung ist der Interpreter für Roboterpro-gramme. In dieser Arbeit wurde ein roboterunabhängiger IRL–Interpreter (Industrial Ro-bot Language) nach DIN 66312 entwickelt. Der Interpreter beherrscht alle notwendigenKonstrukte und Anweisungen, die für die Bewegungssteuerung erforderlich sind. Anhand

Page 116: Automatische Konfiguration der Bewegungssteuerung von

106 Kapitel 6. Softwarearchitektur und Konfigurationswerkzeug

von Bewegungsbefehlen in einem Roboterprogramm erzeugt der IRL–Interpreter Funkti-onsaufrufe für die Trajektoriengenerierungskomponenten. Zur Berechnung von Trajektori-en wurde eine Bibliothek von wiederverwendbaren Komponenten entwickelt. Diese Kom-ponenten können für verschiedene Robotertypen konfiguriert und parametriert werden,ohne die Komponenten neu kompilieren zu müssen. Als Bewegungsarten werden Punkt–zu–Punkt Bewegungen und kartesische Bahnsteuerung unterstützt. Der Benutzer hat sehrviele Möglichkeiten, um diese Komponenten zu konfigurieren. Er kann zum Beispiel diemaximale Geschwindigkeit und Beschleunigung sowie den maximalen Ruck für jede Ge-lenkachse vorgeben und zwischen trapez– und sinusförmigen Beschleunigungsprofil sowiezwischen asynchronen, synchronen oder vollsynchronen PTP–Bewegungen auswählen. Imkartesischen Raum können Geraden und Kreise mit konstanter oder variabler Orientierunginterpoliert werden. Bei Kreisinterpolation kann zusätzlich die Orientierung raum– oderbahnbezogen interpoliert werden. Für die Berechnung von Orientierungsänderungen wer-den Quaternionen verwendet. Zuvor werden Orientierungen, die in Roboterprogrammenals Euler Winkel angegeben werden, von der Interpolationsvorbereitung in Quaternionenumgewandelt. Zu den Vorteilen von Quaternionen gehören, dass sie numerisch stabiler alsEuler Winkel sind und sie weniger Rechenoperationen als Rotationsmatrizen benötigen.

Insgesamt betrachtet wird der Entwicklungszyklus von Steuerungssoftware für Manipula-toren durch diese Arbeit sehr vereinfacht. Im Vergleich zu einer Entwicklung der Softwarevon Hand ergeben sich keine signifikanten Unterschiede hinsichtlich der Codegröße. Jedochwird das Auftreten von Entwicklungs– und Programmierfehlern reduziert und es ergibtsich ein deutlicher Zeit– und Aufwandsgewinn. Die Ergebnisse dieser Arbeit können außerfür die Steuerung auch für die Simulation und den Neuentwurf von Robotern verwendetwerden. Die Resultate wurden publiziert und auf mehreren Internationalen Konferenzenund Workshops einer breiten Öffentlichkeit vorgestellt [183, 184, 185, 186, 187, 188]. DieVorträge fanden in den begleitenden Diskussionen eine sehr positive Resonanz.

Hinsichtlich einer späteren Weiterentwicklung des Systems gibt es eine Reihe von Möglich-keiten. Die Softwarearchitektur der Bewegungssteuerung von Robotern kann flexibel umzusätzliche Komponenten und Funktionalitäten erweitert werden. Bei der Erzeugung derBewegungsgleichungen können Reibungs– und Dämpfungskräfte berücksichtigt werden.An den Übergängen zwischen verschiedenen Interpolationsarten, zum Beispiel von Linear–nach Zirkularinterpolation, können Überschleifbereiche definiert werden. Für zeitoptima-les Verfahren werden Zwischenpunkte nicht exakt angefahren, sondern schon bei Erreicheneines Überschleifbereichs zur nächsten Bewegung übergegangen. Den Interpolationskom-ponenten können weitere Algorithmen hinzugefügt werden, beispielsweise Algorithmen diedurch vorgegebene Punkte verlaufen, wie Spline, Akima oder Bessel Interpolation oderAlgorithmen, die sich Punkten nur annähern, wie Bezier, B–Spline oder NURBS Kurven(Non–Uniform–Rational–B–Splines). Außer den Komponenten zur Bewegungssteuerung(Interpolation, Kinematik, Lageregelung, . . .) können auch Komponenten zur Technologie-steuerung (SPS–Funktionalitäten, Sensordatenverarbeitung, Prozesssteuerung, . . .) undzur Bedienung (Visualisierung, Menüoberflächen) in eine Bibliothek integriert werden. InZusammenarbeit mit einem Roboterhersteller können die Forschungsergebnisse genutztwerden, um reale Roboter anzusteuern. Eine mögliches Szenario ist, einen Roboter vorOrt durch relativ einfache Rekonfiguration um einen Drehtisch für die Teilepositionierungzu erweitern. Insbesondere hinsichtlich modularer rekonfigurierbarer Roboterstrukturen(Abschnitt 2.2.4) ist diese Arbeit sehr relevant.

Page 117: Automatische Konfiguration der Bewegungssteuerung von

Anhang A

Mathematischer Hintergrund

A.1 Darstellungen von OrientierungenDie Orientierung des Endeffektors kann auf unterschiedliche Arten dargestellt werden,beispielsweise mit Euler Winkeln, Quaternionen oder Rotationsmatrizen.

A.1.1 Euler Winkel

Euler Winkel repräsentieren die Orientierung von Objekten im dreidimensionalen Raumdurch ein Tripel (α, β, γ). Hierbei wird eine Orientierung als die Verkettung von drei auf-einander folgenden Rotationen dargestellt. Es gibt mehrere Konventionen, die sich in derReihenfolge der Rotationen unterscheiden. In dieser Arbeit wird die Z–Y’–X” Konventionverwendet. Bei dieser Konvention wird zunächst mit dem Winkel α um die z–Achse desAusgangskoordinatensystems gedreht. Es folgt eine Rotation mit dem Winkel β um dieneue y–Achse und schließlich eine Rotation mit dem Winkel γ um die nach den beidenvorherigen Rotationen erhaltene x–Achse. Die Umrechnung von Euler Winkeln in eineRotationsmatrix erfolgt durch entsprechende Matrizenmultiplikationen [157].

R =

⎛⎝cos α − sin α 0

sin α cos α 00 0 1

⎞⎠ ∗

⎛⎝ cos β 0 sin β

0 1 0− sin β 0 cos β

⎞⎠ ∗

⎛⎝1 0 0

0 cos γ − sin γ0 sin γ cos γ

⎞⎠ (A.1a)

=

⎛⎝cos α cos β cos α sin β sin γ − sin α cos γ cos α sin β cos γ + sin α sin γ

sin α cos β sin α sin β sin γ + cos α cos γ sin α sin β cos γ − cos α sin γ− sin β cos β sin γ cos β cos γ

⎞⎠ (A.1b)

Für die Umrechnung einer Rotationsmatrix R in die äquivalenten Euler Winkel nach derZ–Y’–X” Konvention werden die folgenden Gleichungen verwendet.

R =

⎛⎝nx ox ax

ny oy ay

nz oz az

⎞⎠ =⇒

⎛⎝α

βγ

⎞⎠ =

⎛⎝ arctan2(ny, nx)

arctan2(−nz ,√

n2x + n2

y)arctan2(oz, az)

⎞⎠ (A.2)

Falls nx = ny = 0 beziehungsweise oz = az = 0 gilt, so liegt eine singuläre Konfigurationvor und die Euler Winkel werden durch (α, β, γ) = (0, π/2, arctan2(ox, oy)) berechnet.

A.1.2 Quaternionen

Im Jahr 1843 entdeckte der irische Mathematiker William Rowan Hamilton (1805–1865)die sogenannten Quaternionen [69], die auch zur Darstellung von Rotationen im dreidi-

Page 118: Automatische Konfiguration der Bewegungssteuerung von

108 Kapitel A. Mathematischer Hintergrund

mensionalen Raum verwendet werden können. Ein Quaternion ist eine hyperkomplexeZahl, die aus einem reellen Anteil qw und drei imaginären Anteilen qx, qy und qz besteht.Die Rechenregeln für Quaternionen sind zu denen für komplexe Zahlen ähnlich. ZweiQuaternionen q = (qw, qx, qy, qz)

T und p = (pw, px, py, pz)T werden wie folgt multipliziert:

q ∗ p =

⎛⎜⎜⎝

qw −qx −qy −qz

qx qw −qz qy

qy qz qw −qx

qz −qy qx qw

⎞⎟⎟⎠ ∗

⎛⎜⎜⎝

pw

px

py

pz

⎞⎟⎟⎠ =

⎛⎜⎜⎝

qwpw − qxpx − qypy − qzpz

qwpx + qxpw + qypz − qzpy

qwpy + qypw + qzpx − qxpz

qwpz + qzpw + qxpy − qypx

⎞⎟⎟⎠ (A.3)

Die Multiplikation ist assoziativ, aber nicht kommutativ. Es gilt das Distributivgesetz. Istder Betrag eines Quaterions |q| =

√q2w + q2

x + q2y + q2

z gleich Eins, so spicht man von einemEinheitsquaternion. Die Multiplikation zweier normierter Quaternionen ergibt wiederumein normiertes Quaternion. Ein Quaternion q = (qw, qx, qy, qz)

T lässt sich wie folgt in eineRotation mit dem Winkel θ ∈ [0, 2π) um eine Drehachse �ω = (ωx, ωy, ωz)

T transformieren.

θ = 2 · arccos qw �ω =

{1

sin(θ/2)· (qx, qy, qz)

T , θ �= 0

�0 , θ = 0(A.4)

Das zu einer Rotation um den Einheitsvektor �ω = (ωx, ωy, ωz)T mit Drehwinkel θ ∈ [0, 2π)

äquivalente Quaternion q = (qw, qx, qy, qz)T kann ebenfalls sehr leicht berechnet werden.

qw = cos(θ/2) (qx, qy, qz)T = sin(θ/2) · �ω (A.5)

Ein Quaternion q = (qw, qx, qy, qz)T mit |q| = 1 wird wie folgt in eine äquivalente 3×3 Ro-

tationsmatrix umgewandelt. Unter der Bedingung, dass es sich um ein Einheitsquaternionhandelt, ist die entsprechende Rotationsmatrix orthonormal [60].

R =

⎛⎝1 − 2q2

y − 2q2z 2qxqy + 2qwqz 2qxqz − 2qwqy

2qxqy − 2qwqz 1 − 2q2x − 2q2

z 2qyqz + 2qwqx

2qxqz + 2qwqy 2qyqz − 2qwqx 1 − 2q2x − 2q2

y

⎞⎠ (A.6)

Insbesondere stellen q und −q dieselbe Rotation dar. Das hierzu inverse Problem ist dieBestimmung eines Quaternions q = (qw, qx, qy, qz)

T bei gegebener Rotationsmatrix R.

R =

⎛⎝nx ox ax

ny oy ay

nz oz az

⎞⎠ =⇒ q =

⎛⎜⎜⎝

12·√1 + nx + oy + az

12· sign(ay − oz) ·

√1 + nx − oy − az

12· sign(nz − ax) ·

√1 − nx + oy − az

12· sign(ox − ny) ·

√1 − nx − oy + az

⎞⎟⎟⎠ (A.7)

Ein Quaternion q = (qw, qx, qy, qz)T mit |q| = 1 wird in entsprechende Euler Winkel nach

der Z–Y’–X” Konvention umgewandelt, indem zunächst das Quaternion nach Gleichung(A.6) in eine äquivalente Rotationsmatrix umgewandelt wird und anschließend die Rota-tionsmatrix nach Gleichung (A.2) in Euler Winkel transformiert wird.

Für die umgekehrte Umwandlung von Euler Winkeln nach der Z–Y’–X” Konventionin Quaternionen werden die drei Einheitsquaternionen q1 = (cos(α/2), 0, 0, sin(α/2))T ,q2 = (cos(β/2), 0, sin(β/2), 0)T , q3 = (cos(γ/2), sin(γ/2), 0, 0)T miteinander multipliziert.

q =

⎛⎜⎜⎝

cos(α/2) · cos(β/2) · cos(γ/2) + sin(α/2) · sin(β/2) · sin(γ/2)cos(α/2) · cos(β/2) · sin(γ/2) − sin(α/2) · sin(β/2) · cos(γ/2)cos(α/2) · sin(β/2) · cos(γ/2) + sin(α/2) · cos(β/2) · sin(γ/2)sin(α/2) · cos(β/2) · cos(γ/2) − cos(α/2) · sin(β/2) · sin(γ/2)

⎞⎟⎟⎠ (A.8)

Page 119: Automatische Konfiguration der Bewegungssteuerung von

A.2. Lie Gruppen und Lie Algebren 109

A.2 Lie Gruppen und Lie AlgebrenEine quadratische Matrix ω heißt antisymmetrisch oder auch schiefsymmetrisch, wenndie Matrix −ω und die transponierte Matrix ωT gleich sind. Alle Diagonalelemente einerantisymmetrischen Matrix sind gleich Null und dadurch ist auch die Spur der Matrix Null.Zu jedem Vektor �ω ∈ R3×1 existiert eine eindeutige antisymmetrische Matrix ω ∈ R3×3

mit der das Kreuzprodukt durch Matrixmultiplikation berechnet werden kann. Die Mengeder antisymmetrischen Matrizen (Dimension 3 × 3) wird als so(3) bezeichnet.

so(3) ={ω|ω ∈ R3×3,−ω = ωT

} ⊂ R3×3 (A.9)

Eine Matrix wird als orthogonal bezeichnet, wenn die Spalten– und Zeilenvektoren jeweilseine orthonormierte Basis des Rn bilden. Die Determinante einer orthogonalen Matrix hatden Wert ±1. Die Menge der orthogonalen 3×3–Matrizen mit Determinante 1 bildet unterMatrixmultiplikation eine Gruppe, die sogenannte spezielle orthogonale Gruppe SO(3).Das neutrale Element dieser Gruppe ist die Einheitsmatrix I3×3. Jede orthogonale MatrixR besitzt genau eine inverse Matrix R−1 die gleich der transponierten Matrix RT ist.

SO(3) ={R| R ∈ R3×3, RRT = RT R = I3×3, det(R) = 1

} ⊂ R3×3 (A.10)

Die Menge der Twists wird als se(3) bezeichnet. Die Darstellung eines Elements von se(3)als sechsdimensionaler Vektor wird als Twist–Koordinate ξ = (�ν, �ω)T bezeichnet.

se(3) =

{(ω �ν

03×1 01×1

)| ω ∈ so(3), �ν ∈ R3×1

}⊂ R4×4 (A.11)

Eine Koordinatentransformation im dreidimensionalen Raum setzt sich aus einer Rotati-on und einer Translation zusammen. In einer homogenen Transformationsmatrix wird dieRotation durch eine orthogonale Matrix R ∈ SO(3) und die Translation durch einen Rich-tungsvektor �p ∈ R3×1 beschrieben. Die Menge der homogenen Transformationsmatrizenbildet mit der Matrixmultiplikation als Verknüpfung eine Gruppe, die auch als spezielleeuklidische Gruppe SE(3) bezeichnet wird. Neutrales Element ist die Einheitsmatrix I4×4.

SE(3) =

{(R �p

03×1 11×1

)| R ∈ SO(3), �p ∈ R3×1

}⊂ R4×4 (A.12)

Bei SO(3) und SE(3) handelt es sich um Lie–Gruppen, bei so(3) und se(3) handelt es sichum die Lie–Algebren dieser Lie–Gruppen. Eine Lie–Algebra, benannt nach dem norwe-gischen Mathematiker Marius Sophus Lie (1842–1899), ist ein Vektorraum L zusammenmit einer bilinearen Abbildung [·, ·] : L × L → L, welche auch als Lie–Klammer oderLie–Produkt bezeichnet wird. Die Lie–Klammer besitzt die folgenden Eigenschaften:

i. [λx + μy, z] = λ[x, z] + μ[y, z] ∀λ, μ ∈ R, ∀x, y ∈ L (Linearität 1. Argument)

ii. [x, y] = −[y, x] ∀x, y ∈ L (Antikommutativität)

iii. [x, [y, z]] + [y, [z, x]] + [z, [x, y]] = 0 ∀x, y, z ∈ L (Jacobi–Identität)

Die Lie–Klammer ist auch im zweiten Argument linear. Sie ist auf so(3) als einfacheMatrixmultiplikation der beiden Argumente definiert [ω1, ω2] = ω1 ∗ ω2 und auf se(3) als:

[ξ1, ξ2] =

[(ω1 �ν1

03×1 01×1

),

(ω2 �ν2

03×1 01×1

)]=

(ω1 ∗ ω2 ω1 ∗ �ν2 − ω2 ∗ �ν1

03×1 01×1

)(A.13)

Page 120: Automatische Konfiguration der Bewegungssteuerung von

110 Kapitel A. Mathematischer Hintergrund

Die Bilinearität, Antikommutativität und Jacobi–Identität von dieser Lie–Klammer kön-nen leicht nachgerechnet werden. Hingegen gilt das Assoziativgesetz, wie auch im allgemei-nen für Lie–Klammern, nicht. Eine Menge G mit einer inneren Verknüpfung ◦ : G×G → Gheißt Gruppe, wenn die Verknüpfung abgeschlossen ist, das Assoziativgesetz gilt, die Grup-pe ein neutrales Element enthält und es zu jedem Element der Gruppe ein inverses Ele-ment gibt. Eine Lie–Gruppe ist eine Gruppe, die eine differenzierbare Mannigfaltigkeit ist,das heißt dass sowohl die Gruppenverknüpfung als auch die Inversenbildung jeweils diffe-renzierbare Abbildungen sind. Den Zusammenhang zwischen einer Lie–Algebra und derzugehörigen Lie–Gruppe stellt die (Matrix–) Exponentialfunktion her (Abschnitt A.2.1).Die Matrixexponentialfunktion hat als Argument eine quadratische Matrix. Sie konver-giert für jede Matrix, ist stets invertierbar und beliebig oft differenzierbar.

A.2.1 Rotationsformel von Rodrigues

Die Rotationsformel von Olinde Rodrigues (1794–1851) stellt eine effiziente Methode dar,um diejenige Rotationsmatrix R ∈ SO(3) zu berechnen, die zu einer Rotation um einenormierte Drehachse �ω = (ωx, ωy, ωz)

T mit Drehwinkel θ ∈ [0, 2π) äquivalent ist (Rechte–Hand–Regel). Dem Vektor �ω wird die schiefsymmetrische Matrix ω ∈ so(3) zugeordnetund dann das Matrixexponential mittels Potenzreihenentwicklung berechnet. Zur leich-teren Lesbarkeit werden folgende Abkürzungen verwendet: cθ = cos θ, sθ = sin θ.

exp(ωθ) = I3×3 + ωθ +(ωθ)2

2!+

(ωθ)3

3!+ . . . = I3×3 + ωsθ + ω2(1 − cθ) (A.14)

=

⎛⎝1 0 0

0 1 00 0 1

⎞⎠+

⎛⎝ 0 −ωz ωy

ωz 0 −ωx

−ωy ωx 0

⎞⎠ sθ +

⎛⎝ 0 −ωz ωy

ωz 0 −ωx

−ωy ωx 0

⎞⎠2

(1 − cθ)

=

⎛⎝ cθ + ω2

x(1 − cθ) ωxωy(1 − cθ) − ωzsθ ωysθ + ωxωz(1 − cθ)ωzsθ + ωxωy(1 − cθ) cθ + ω2

y(1 − cθ) −ωxsθ + ωyωz(1 − cθ)−ωysθ + ωxωz(1 − cθ) ωxsθ + ωyωz(1 − cθ) cθ + ω2

z(1 − cθ)

⎞⎠

Diese Abbildung ist surjektiv. Zu jeder Rotationsmatrix R ∈ SO(3) existiert mindestenseine antisymmetrische Matrix ω ∈ so(3) beziehungsweise eine Drehachse �ω ∈ R3×1 sowieein Drehwinkel θ ∈ [0, 2π), so dass R = exp(ωθ) gilt. Aufgrund von Singularitäten istdiese Abbildung nicht eindeutig. Deswegen ist bei der Umrechnung einer Rotationsmatrixin eine Drehachse und einen Drehwinkel eine Fallunterscheidung erforderlich. Zunächstwird mit Gleichung (A.7) die Rotationsmatrix in ein Quaternion umgewandelt und an-schließend dieses Quaternion mit Gleichung (A.4) in Achse und Winkel umgerechnet.

Page 121: Automatische Konfiguration der Bewegungssteuerung von

Anhang B

Exemplarische Konfiguration

In diesem Abschnitt wird die Bewegungssteuerung eines RRT–SCARA schrittweise konfi-guriert. Die RRT–Konfiguration besteht aus zwei parallelen vertikalen Rotationsgelenkenund einem dazu anti–parallel angeordneten Translationsgelenk. Die vierte Gelenkachse istein Rotationsgelenk zur Orientierung des Endeffektors. Tabelle B.1 gibt die DH–Parameterdes Roboters wieder. Die variablen DH–Parameter sind θ1, θ2, d3 und θ4. Die restlichenDH–Parameter sind konstant und durch den mechanischen Aufbau bedingt.

Tabelle B.1 Denavit–Hartenberg Parameter eines RRT–SCARA

Gelenk i θi Offset di ai αi

1 θ1 0◦ d1 a1 0◦

2 θ2 0◦ 0 a2 180◦

3 0◦ 0◦ d3 0 0◦

4 θ4 0◦ 0 0 0◦

Anhand der DH–Parameter werden automatisch die äquivalenten Twist–Koordinaten be-stimmt (Abschnitt 4.5.1). Die positive Drehrichtung der Rotationsgelenke im Basiskoor-dinatensystem des Roboters kann aus Tabelle B.2 direkt abgelesen werden. Das erste undzweite Gelenk dreht um die positive z–Achse und das vierte um die negative z–Achse. Dasdritte Gelenk ist ein Translationsgelenk, das entlang der negativen z–Achse verschiebt.

Tabelle B.2 Twist Parameter des RRT–SCARA

Gelenk i ν1 ν2 ν3 ω1 ω2 ω3

1 0 0 0 0 0 12 0 −a1 0 0 0 13 0 0 −1 0 0 04 0 a1 + a2 0 0 0 −1

Für die Bestimmung des kinematischen Modells werden die Denavit–Hartenberg Matrizen(Gleichung 4.1) sowie die Matrixexponenten der Twist–Koordinaten (Gleichung 4.13) au-tomatisch berechnet und die einzelnen Matrizen auch invertiert. Die Denavit–HartenbergMatrizen sind etwas einfacher als die Matrixexponenten aufgebaut (Tabelle B.3).

Page 122: Automatische Konfiguration der Bewegungssteuerung von

112 Kapitel B. Exemplarische Konfiguration

Tabelle B.3 Transformations– und Exponentialmatrizen des RRT–SCARA

i Ti−1,i exp(ξiqi)

1

⎛⎜⎜⎝

cos θ1 − sin θ1 0 a1 · cos θ1

sin θ1 cos θ1 0 a1 · sin θ1

0 0 1 d1

0 0 0 1

⎞⎟⎟⎠

⎛⎜⎜⎝

cos θ1 − sin θ1 0 0sin θ1 cos θ1 0 0

0 0 1 d1

0 0 0 1

⎞⎟⎟⎠

2

⎛⎜⎜⎝

cos θ2 sin θ2 0 a2 · cos θ2

sin θ2 − cos θ2 0 a2 · sin θ2

0 0 −1 00 0 0 1

⎞⎟⎟⎠

⎛⎜⎜⎝

cos θ2 − sin θ2 0 a1 · (1 − cos θ2)sin θ2 cos θ2 0 −a1 · sin θ2

0 0 −1 00 0 0 1

⎞⎟⎟⎠

3

⎛⎜⎜⎝

1 0 0 00 1 0 00 0 1 d3

0 0 0 1

⎞⎟⎟⎠

⎛⎜⎜⎝

1 0 0 00 1 0 00 0 1 −d3

0 0 0 1

⎞⎟⎟⎠

4

⎛⎜⎜⎝

cos θ4 − sin θ4 0 0sin θ4 cos θ4 0 0

0 0 1 00 0 0 1

⎞⎟⎟⎠

⎛⎜⎜⎝

cos θ4 sin θ4 0 (a1 + a2) · (1 − cos θ4)− sin θ4 cos θ4 0 (a1 + a2) · sin θ4

0 0 1 00 0 0 1

⎞⎟⎟⎠

Die Lage des Endeffektors, wenn sich der Manipulator in der Nullstellung befindet, bezie-hungsweise im allgemeinen ist durch die beiden folgenden 4 × 4 Matrizen gegeben.

T04(�0) =

⎛⎜⎜⎝

1 0 0 a1 + a2

0 −1 0 00 0 −1 d1

0 0 0 1

⎞⎟⎟⎠ TCP =

⎛⎜⎜⎝

nx ox ax px

ny oy ay py

nz oz az pz

0 0 0 1

⎞⎟⎟⎠

Die direkte Kinematik wird durch symbolische Multiplikation der Transformationsmatri-zen (Gleichung 4.3) beziehungsweise der Matrixexponenten der Twistkoordinaten (Glei-chung 4.8) bestimmt. Bei beiden Verfahren wird das folgende Modell generiert.

T04 =

⎛⎜⎜⎝

cos(θ1 + θ2 − θ4) sin(θ1 + θ2 − θ4) 0 a1 · cos θ1 + a2 · cos(θ1 + θ2)sin(θ1 + θ2 − θ4) − cos(θ1 + θ2 − θ4) 0 a1 · sin θ1 + a2 · sin(θ1 + θ2)

0 0 −1 d1 − d3

0 0 0 1

⎞⎟⎟⎠

Als nächstes wird die inverse Kinematik bestimmt. Dafür wird das kinematische Glei-chungssystem durch entsprechende Multiplikationen der Transformationsmatrizen gene-riert (Abbildung 4.2). Gleichungen, die keine unbekannten Gelenkvariablen enthalten, tra-gen nicht zur Lösung bei und werden zur Verbesserung der Übersichtlichkeit weggelassen.Sind zwei oder mehrere der Gleichungen redundant, so wird nur eine dieser Gleichungenaufgeführt. Das zu lösende Gleichungssystem besteht aus sechs Gleichungen mit einer, elfGleichungen mit zwei und 34 Gleichungen mit drei unbekannten Gelenkvariablen.

Gleichungen mit einer Unbekannten:d3 = d1 − pz (1)

az · d3 = pz − d1 (2)

Page 123: Automatische Konfiguration der Bewegungssteuerung von

113

ax · cos θ1 + ay · sin θ1 = 0 (3)ax · sin θ1 − ay · cos θ1 = 0 (4)nz · sin θ4 + oz · cos θ4 = 0 (5)nz · cos θ4 − oz · sin θ4 = 0 (6)

Gleichungen mit zwei Unbekannten:a1 · cos θ1 + a2 · cos(θ1 + θ2) = px (7)a1 · sin θ1 + a2 · sin(θ1 + θ2) = py (8)

nz · cos θ2 · cos θ4 + nz · sin θ2 · sin θ4 − oz · cos θ2 · sin θ4 + oz · cos θ4 · sin θ2 = 0 (9)nz · cos θ2 · sin θ4 − nz · cos θ4 · sin θ2 + oz · cos θ2 · cos θ4 + oz · sin θ2 · sin θ4 = 0 (10)

a2 · nz · cos θ4 − a2 · oz · sin θ4 + az · d3 = pz − d1

(11)a2 · cos θ2 − px · cos θ1 − py · sin θ1 = −a1 (12)a2 · sin θ2 + px · sin θ1 − py · cos θ1 = 0 (13)ax · cos(θ1 + θ2) + ay · sin(θ1 + θ2) = 0 (14)ax · sin(θ1 + θ2) − ay · cos(θ1 + θ2) = 0 (15)

a1 · cos θ2 − px · cos(θ1 + θ2) − py · sin(θ1 + θ2) = −a2 (16)a1 · sin θ2 − px · sin(θ1 + θ2) + py · cos(θ1 + θ2) = 0 (17)

Gleichungen mit drei Unbekannten:cos(θ1 + θ2 − θ4) = nx (18)sin(θ1 + θ2 − θ4) = ny (19)sin(θ1 + θ2 − θ4) = ox (20)cos(θ1 + θ2 − θ4) = −oy (21)

cos(θ1 + θ2) − nx · cos θ4 + ox · sin θ4 = 0 (22)sin(θ1 + θ2) − ny · cos θ4 + oy · sin θ4 = 0 (23)sin(θ1 + θ2) − nx · sin θ4 − ox · cos θ4 = 0 (24)cos(θ1 + θ2) + ny · sin θ4 + oy · cos θ4 = 0 (25)a1 · cos θ1 + a2 · cos(θ1 + θ2) + ax · d3 = px (26)a1 · sin θ1 + a2 · sin(θ1 + θ2) + ay · d3 = py (27)nx · cos θ2 · cos θ4 + nx · sin θ2 · sin θ4

−ox · cos θ2 · sin θ4 + ox · cos θ4 · sin θ2 − cos θ1 = 0 (28)ny · cos θ2 · cos θ4 + ny · sin θ2 · sin θ4

−oy · cos θ2 · sin θ4 + oy · cos θ4 · sin θ2 − sin θ1 = 0 (29)nx · cos θ2 · sin θ4 − nx · cos θ4 · sin θ2

+ox · cos θ2 · cos θ4 + ox · sin θ2 · sin θ4 − sin θ1 = 0 (30)ny · cos θ2 · sin θ4 − ny · cos θ4 · sin θ2

+oy · cos θ2 · cos θ4 + oy · sin θ2 · sin θ4 + cos θ1 = 0 (31)a1 · cos θ1 + a2 · nx · cos θ4 − a2 · ox · sin θ4 + ax · d3 = px (32)a1 · sin θ1 + a2 · ny · cos θ4 − a2 · oy · sin θ4 + ay · d3 = py (33)

Page 124: Automatische Konfiguration der Bewegungssteuerung von

114 Kapitel B. Exemplarische Konfiguration

nx · cos θ1 + ny · sin θ1 − cos θ2 · cos θ4 − sin θ2 · sin θ4 = 0 (34)nx · sin θ1 − ny · cos θ1 − cos θ2 · sin θ4 + cos θ4 · sin θ2 = 0 (35)ox · cos θ1 + oy · sin θ1 + cos θ2 · sin θ4 − cos θ4 · sin θ2 = 0 (36)ox · sin θ1 − oy · cos θ1 − cos θ2 · cos θ4 − sin θ2 · sin θ4 = 0 (37)

nx · cos θ1 · cos θ4 + ny · cos θ4 · sin θ1

−ox · cos θ1 · sin θ4 − oy · sin θ1 · sin θ4 − cos θ2 = 0 (38)nx · cos θ4 · sin θ1 − ny · cos θ1 · cos θ4

−ox · sin θ1 · sin θ4 + oy · cos θ1 · sin θ4 + sin θ2 = 0 (39)nx · cos θ1 · sin θ4 + ny · sin θ1 · sin θ4

+ox · cos θ1 · cos θ4 + oy · cos θ4 · sin θ1 − sin θ2 = 0 (40)nx · sin θ1 · sin θ4 − ny · cos θ1 · sin θ4

+ox · cos θ4 · sin θ1 − oy · cos θ1 · cos θ4 − cos θ2 = 0 (41)a2 · cos θ2 + ax · d3 · cos θ1 + ay · d3 · sin θ1 − px · cos θ1 − py · sin θ1 = −a1 (42)a2 · sin θ2 − ax · d3 · sin θ1 + ay · d3 · cos θ1 + px · sin θ1 − py · cos θ1 = 0 (43)

nx · cos(θ1 + θ2) · cos θ4 + ny · cos θ4 · sin(θ1 + θ2)

−ox · cos(θ1 + θ2) · sin θ4 − oy · sin(θ1 + θ2) · sin θ4 = 1 (44)nx · cos θ4 · sin(θ1 + θ2) − ny · cos(θ1 + θ2) · cos θ4

−ox · sin(θ1 + θ2) · sin θ4 + oy · cos(θ1 + θ2) · sin θ4 = 0 (45)nx · cos(θ1 + θ2) · sin θ4 + ny · sin(θ1 + θ2) · sin θ4

+ox · cos(θ1 + θ2) · cos θ4 + oy · cos θ4 · sin(θ1 + θ2) = 0 (46)nx · sin(θ1 + θ2) · sin θ4 − ny · cos(θ1 + θ2) · sin θ4

+ox · cos θ4 · sin(θ1 + θ2) − oy · cos(θ1 + θ2) · cos θ4 = 1 (47)nx · cos(θ1 + θ2) + ny · sin(θ1 + θ2) − cos θ4 = 0 (48)nx · sin(θ1 + θ2) − ny · cos(θ1 + θ2) − sin θ4 = 0 (49)ox · cos(θ1 + θ2) + oy · sin(θ1 + θ2) + sin θ4 = 0 (50)ox · sin(θ1 + θ2) − oy · cos(θ1 + θ2) − cos θ4 = 0 (51)

Um so mehr DH–Parameter von Null verschieden sind, umso komplexer werden die Glei-chungen und umso schwieriger ist es, das inverse kinematische Modell zu bestimmen.Das kinematische Gleichungssystem dieses Manipulators kann jedoch geschlossen gelöstwerden. Durch Pattern Matching mit der Wissensbasis wird aus diesen Gleichungen diefolgenden Lösungen für die unbekannten Gelenkvariablen automatisch bestimmt. Zur Ver-meidung redundanter Mehrfachberechnungen wird dabei die Hilfsvariable h eingeführt.

h = (−a21 + a2

2 − p2x − p2

y)/(2 · a1)

θ1(1,2) = arctan2

(h,±

√p2

x + p2y − h2

)− arctan2(−px,−py)

θ2 = arctan2(−px · sin θ1 + py · cos θ1,−a1 + px · cos θ1 + py · sin θ1)

d3 = d1 − pz

θ4 = θ1 + θ2 − arctan2(ny, nx)

Wegen des ±–Zeichens in der Gleichung für θ1, gibt es insgesamt zwei Lösungen. DieseMehrfachlösung kann beispielsweise dazu genutzt werden, ein Hindernis zu umgreifen. Die

Page 125: Automatische Konfiguration der Bewegungssteuerung von

115

Reihenfolge der Berechnungen, um die beiden möglichen Konfigurationen dieses Roboterszu bestimmen, ist in Abbildung B.1 dargestellt. Die eindeutige Lösung für d3 und diebeiden Lösungen für θ1 werden nur in Abhängigkeit der Endeffektorlage (engl.: Tool CenterPoint, TCP) bestimmt. Nachdem diese Lösungen bekannt sind, werden die Lösungen fürdie unbekannte Gelenkvariable θ2 in Abhängigkeit des TCP und den zwei Lösungen fürdie erste Gelenkvariable bestimmt. Die Lösungen für θ4 werden auf die gleiche Weise inAbhängigkeit des TCP und den bereits bestimmten Lösungen für θ1 und θ2 ermittelt.

Abbildung B.1 Auflösungsfluß bei der Berechnung der inversen Kinematik

θ4

θ4

1. Lösung

2. Lösung

θ2

θ2

θ11

θ21

d3TCP

Zur Ermittlung singulärer Konfigurationen wird die Jacobi–Matrix J des Manipulatorsanalytisch aufgestellt und die Gelenkkonfigurationen bestimmt, bei denen die Jacobi–Matrix singulär ist. Die Herleitung erfolgt sowohl über Denavit–Hartenberg Parameterals auch über Twist–Koordinaten. Beide Verfahren führen zu genau derselben Matrix.

J =

⎛⎜⎜⎜⎜⎜⎜⎝

−a1 · sin θ1 − a2 · sin(θ1 + θ2) −a2 · sin(θ1 + θ2) 0 0a1 · cos θ1 + a2 · cos(θ1 + θ2) a2 · cos(θ1 + θ2) 0 0

0 0 −1 00 0 0 00 0 0 01 1 0 −1

⎞⎟⎟⎟⎟⎟⎟⎠

Alle singulären Konfigurationen liegen bei diesem Roboter auf dem Rand des Arbeits-raumes. Wenn der Arm vollständig ausgestreckt beziehungsweise eingefaltet ist, reduziertsich die Anzahl der Richtungen, in denen der Endeffektor bewegt werden kann.

det(J ) = a1 · a2 · sin θ2!= 0 ⇐⇒ θ2 = 0◦ + k · 180◦

Als nächstes wird das dynamische Modell des SCARA in symbolischer Darstellung au-tomatisch generiert. Für die Bestimmung der Bewegungsgleichungen werden neben denDH–Parametern auch die konzentrierten Massen, die Schwerpunktslagen und die Träg-heitstensoren von allen Manipulatorgliedern benötigt (Tabelle B.4).

Tabelle B.4 Tabelle mit Parametern für die Roboterdynamik

Glied i Masse Schwerpunktslagen Trägheitstensoren1 m1 rx1 0 rz1 Ixx1 Iyy1 Izz1 Ixy1 Ixz1 Iyz1

2 m2 rx2 0 rz2 Ixx2 Iyy2 Izz2 Ixy2 Ixz2 Iyz2

3 m3 0 0 rz3 Ixx3 Iyy3 Izz3 Ixy3 Ixz3 Iyz3

4 m4 0 0 rz4 Ixx4 Iyy4 Izz4 Ixy4 Ixz4 Iyz4

Die dynamischen Gleichungen des Manipulators werden zuerst nach dem Lagrange Verfah-ren bestimmt (Abschnitt 5.1). Für diesen speziellen Manipulator ist die einzige Variable,

Page 126: Automatische Konfiguration der Bewegungssteuerung von

116 Kapitel B. Exemplarische Konfiguration

die in der Massen–, Coriolis– und Zentrifugalmatrix vorkommt, der Gelenkwinkel θ2. DerGravitationsvektor ist konstant, da er nicht von den Werten der Gelenkvariablen abhängt.Die Bewegungsgleichungen lauten in Matrizenschreibweise:

⎛⎜⎜⎝

τ1

τ2

τ3

τ4

⎞⎟⎟⎠ =

⎛⎜⎜⎝M11 M12 0 M14

M12 M22 0 M24

0 0 M33 0M14 M24 0 M44

⎞⎟⎟⎠ ∗

⎛⎜⎜⎝

θ1

θ2

d3

θ4

⎞⎟⎟⎠ +

⎛⎜⎜⎝CO11 0 0 0 0 0

0 0 0 0 0 00 0 0 0 0 00 0 0 0 0 0

⎞⎟⎟⎠ ∗

⎛⎜⎜⎜⎝

θ1θ2

θ1d3...

d3θ4

⎞⎟⎟⎟⎠

+

⎛⎜⎜⎝

0 CF12 0 0CF21 0 0 0

0 0 0 00 0 0 0

⎞⎟⎟⎠ ∗

⎛⎜⎜⎝

θ1θ1

θ2θ2

d3d3

θ4θ4

⎞⎟⎟⎠+

⎛⎜⎜⎝

00G3

0

⎞⎟⎟⎠

M11 = Izz1 + Izz2 + Izz3 + Izz4 + a22 · (m2 + m3 + m4) + 2 · a2 · m2 · rx2 + m2 · rx2

2

= + a21 · (m1 + m2 + m3 + m4) + 2 · a1 · m1 · rx1 + m1 · rx2

1

= + 2 · a1 · a2 · cos θ2 · (m2 + m3 + m4) + 2 · a1 · m2 · rx2 · cos θ2

M12 = Izz2 + Izz3 + Izz4 + a22 · (m2 + m3 + m4) + 2 · a2 · m2 · rx2 + m2 · rx2

2

= + a1 · a2 · cos θ2 · (m2 + m3 + m4) + a1 · m2 · rx2 · cos θ2

M22 = Izz2 + Izz3 + Izz4 + a22 · (m2 + m3 + m4) + 2 · a2 · m2 · rx2 + m2 · rx2

2

M33 = m3 + m4

M14 = −Izz4

M24 = −Izz4

M44 = Izz4

CO11 = −2 · a1 · a2 · sin θ2 · (m2 + m3 + m4) − 2 · a1 · m2 · rx2 · sin θ2

CF21 = a1 · a2 · sin θ2 · (m2 + m3 + m4) + a1 · m2 · rx2 · sin θ2

CF12 = −a1 · a2 · sin θ2 · (m2 + m3 + m4) − a1 · m2 · rx2 · sin θ2

G3 = −(m3 + m4) · gAußerdem wird das vollständige Modell der Roboterdynamik nach dem Newton–EulerVerfahren (Abschnitt 5.2) hergeleitet. Die generierten Differentialgleichungen entsprechendenen des Lagrange Verfahrens und sind zu der Matrizendarstellung äquivalent.

τ1 = M11 · θ1 + M12 · θ2 + M14 · θ4 + CO11 · θ1θ2 + CF12 · θ2θ2

τ2 = M12 · θ1 + M22 · θ2 + M24 · θ4 + CF21 · θ1θ1

τ3 = M33 · d3 + G3

τ4 = M14 · θ1 + M24 · θ2 + M44 · θ4

Page 127: Automatische Konfiguration der Bewegungssteuerung von

Anhang C

XML–Beschreibung von Robotern

Die einheitliche Beschreibung der mechanischen Struktur von Manipulatoren erfolg inXML (extensible Markup Language). Unter anderem enthält diese Beschreibung Anga-ben über Anzahl und Typen der Gelenkachsen eines Roboters. Da die manuelle Erstellungder Manipulatorbeschreibung unkomfortabel und fehleranfällig ist, wurde hierfür ein gra-phisches Konfigurationswerkzeug entwickelt. Listing C.1 zeigt das XML–Schema mit demdie roboterspezifischen XML–Dokumente validiert werden. Beispielsweise wird beim Ein-lesen eines XML–Dokuments in das Konfigurationswerkzeug sichergestellt, dass die Dateiwohlgeformt ist und der Aufbau der vorgegebenen Struktur des XML–Schemas entspricht.Nur in diesem Fall kann der Benutzer das Dokument weiterverarbeiten oder ändern. Beider Generierung der Robotermodelle und der Konfiguration der Bewegungssteuerung wirdebenfalls zuerst das XML–Dokument anhand des Schemas validiert.

Listing C.1: XML–Schema der Manipulatorbeschreibung<?xml version=" 1 .0 " encoding="UTF−8" standalone="no"?><xs:schema xmlns :xs=" h t tp : //www.w3 . org /2001/XMLSchema" elementFormDefault="

q u a l i f i e d "><xs : import namespace=" h t tp : //www.w3 . org /XML/1998/namespace"/><xs : e l ement name="robot−c on f i g u r a t i o n ">

<xs:complexType><xs : s equence>

<xs : e l ement name="kinematic−s t r u c tu r e " type=" x s : s t r i n g "/><xs : e l ement name="number−of−j o i n t s " type=" x s : p o s i t i v e I n t e g e r "/><xs : e l ement name=" app l i ca t i on−a r ea s ">

<xs : e l ement name=" task " type=" x s : s t r i n g " minOccurs="0" maxOccurs="20"/>

</ xs : e l ement><xs : s equence minOccurs="2" maxOccurs="20">

<xs : e l ement name=" j o i n t "><xs:complexType>

<xs : s equence><xs : e l ement name=" jo i n t−type " type=" x s : s t r i n g "/><xs : e l ement name=" jo i n t−ang le " type=" x s : s t r i n g "/><xs : e l ement name=" jo i n t−o f f s e t " type=" x s : s t r i n g "/><xs : e l ement name=" l ink−o f f s e t " type=" x s : s t r i n g "/><xs : e l ement name=" l ink−l ength " type=" x s : s t r i n g "/><xs : e l ement name=" l ink−tw i s t " type=" x s : s t r i n g "/><xs : e l ement name=" theta−min" type=" x s : s t r i n g "/><xs : e l ement name=" theta−max" type=" x s : s t r i n g "/><xs : e l ement name=" ve l o c i t y−max" type=" x s : s t r i n g "/><xs : e l ement name=" a c c e l e r a t i on−max" type=" x s : s t r i n g "/><xs : e l ement name=" jerk−max" type=" x s : s t r i n g "/>

Page 128: Automatische Konfiguration der Bewegungssteuerung von

118 Kapitel C. XML–Beschreibung von Robotern

<xs : e l ement name=" fo r c e−max" type=" x s : s t r i n g "/><xs : e l ement name=" ro ta t i on−t r an s l a t i o n−ax i s " type="

x s : s t r i n g "/></ xs : s equence>

</xs:complexType></ xs : e l ement><xs : e l ement name="adjacent−frame−arrangement">

<xs:complexType><xs : s equence>

<xs : e l ement name=" d i r e c t i o n " type=" x s : s t r i n g "/><xs : e l ement name=" disp lacement" type=" x s : s t r i n g "/>

</ xs : s equence></xs:complexType>

</ xs : e l ement></ xs : s equence><xs : e l ement name=" l i n k " minOccurs="2" maxOccurs="20">

<xs:complexType><xs : s equence>

<xs : e l ement name="mass" type=" x s : s t r i n g "/><xs : e l ement name="rx" type=" x s : s t r i n g "/><xs : e l ement name="ry" type=" x s : s t r i n g "/><xs : e l ement name=" rz " type=" x s : s t r i n g "/><xs : e l ement name="Ixx" type=" x s : s t r i n g "/><xs : e l ement name="Iyy" type=" x s : s t r i n g "/><xs : e l ement name=" Izz " type=" x s : s t r i n g "/><xs : e l ement name="Ixy" type=" x s : s t r i n g "/><xs : e l ement name=" Ixz " type=" x s : s t r i n g "/><xs : e l ement name=" Iyz " type=" x s : s t r i n g "/>

</ xs : s equence></xs:complexType>

</ xs : e l ement><xs : e l ement name=" t r a j e c t o r y−gene ra t i on ">

<xs:complexType><xs : s equence>

<xs : e l ement name=" jo i n t−space−t r a j e c t o r i e s "><xs : e l ement name="motion " type=" x s : s t r i n g " minOccurs="0"

maxOccurs="1"/></ xs : e l ement><xs : e l ement name=" car t e s i an−space−t r a j e c t o r i e s ">

<xs : e l ement name="motion " type=" x s : s t r i n g " minOccurs="0"maxOccurs="10"/>

</ xs : e l ement><xs : e l ement name=" a c c e l e r a t i on−p r o f i l e " type=" x s : s t r i n g "/><xs : e l ement name=" in t e r po l a t i o n−c l o ck " type="

x s : p o s i t i v e I n t e g e r "/></ xs : s equence>

</xs:complexType></ xs : e l ement>

</ xs : s equence></xs:complexType>

</ xs : e l ement></xs:schema>

Page 129: Automatische Konfiguration der Bewegungssteuerung von

Literaturverzeichnis

[1] E. L. Allgower and K. Georg. Introduction to Numerical Continuation Methods,volume 45 of Classics in Applied Mathematics. Society for Industrial and AppliedMathematics (SIAM), Philadelphia, Pennsylvania, USA, 2003.

[2] M. Anantharaman and M. Hiller. Numerical simulation of mechanical systems usingmethods for differential–algebraic equations. International Journal for NumericalMethods in Engineering, 32(8):1531–1542, 1991.

[3] S. Anton. Inverse Kinematik am Robotersimulationsprogramm EASY–ROB. Scien-tific Reports 4, Institut für Automatisierungstechnik, Hochschule Mittweida (FH),Mittweida, Germany, October 2004.

[4] G. Ars, J.-C. Faugère, H. Imai, M. Kawazoe, and M. Sugita. Comparison betweenxl and groebner basis algorithms. In P. J. Lee, editor, Advances in Cryptology –ASIACRYPT 2004, volume 3329 of LNCS, pages 338–353. Springer, 2004.

[5] M. Attolico and P. Masarati. A multibody user–space hard real–time environmentfor the simulation of space robots. In Proceedings of the Fifth Real–Time LinuxWorkshop, Valencia, Spain, November 2003.

[6] R. S. Ball. A treatise on the theory of screws. Cambridge University Press, London,UK, 1900.

[7] B. Barenbrug. Designing a class library for interactive simulation of rigid body dyna-mics. PhD thesis, Department of Mathematics and Computing Science, TechnischeUniversiteit Eindhoven, Eindhoven, The Netherlands, April 2000.

[8] D. Batory. The LEAPS algorithm. Technical report, The University of Texas atAustin, Department of Computer Sciences, Austin, Texas, USA, 1994.

[9] D. S. Batory, J. Thomas, and M. Sirkin. Reengineering a complex application usinga scalable data structure compiler. In D. S. Wile, editor, Proceedings of the 2ndACM SIGSOFT Symposium on the Foundations of Software Engineering (FSE),pages 111–120, New Orleans, Louisiana, USA, December 1994. ACM Press.

[10] R. M. Bhatt and V. Krovi. DynaFlexPro for Maple. IEEE Control Systems Maga-zine, 26(6):127–138, December 2006.

[11] R. W. Brockett. Robotic manipulators and the product of exponentials formula. InP. A. Fuhrman, editor, Mathematical theory of networks and systems, volume 58,pages 120–129. Springer, New York, USA, 1984.

[12] I. N. Bronstein, K. A. Semendjajew, G. Musiol, and H. Mühlig. Taschenbuch derMathematik. Verlag Harri Deutsch, Frankfurt am Main, Germany, 6. edition, 2005.

Page 130: Automatische Konfiguration der Bewegungssteuerung von

120

[13] H. Bruyninckx. Open robot control software: the OROCOS project. In Proceedingsof the 2001 IEEE International Conference on Robotics and Automation, pages2523–2528, Seoul, Korea, May 2001.

[14] H. Bruyninckx. A free software framework for advanced robot control. In Procee-dings of the 7th ESA Workshop on Advanced Space Technologies for Robotics andAutomation (ASTRA 2002), Noordwijk, The Netherlands, November 2002.

[15] H. Bruyninckx, P. Soetens, and B. Koninckx. The real–time motion control core ofthe OROCOS project. In Proceedings of the 2003 IEEE International Conferenceon Robotics and Automation, pages 2766–2771, Taipei, Taiwan, September 2003.

[16] B. Buchberger. Ein Algorithmus zum Auffinden der Basiselemente des Restklas-senringes nach einem nulldimensionalen Polynomideal. PhD thesis, MathematicalInstitute, University of Innsbruck, Austria, 1965.

[17] B. Buchberger. A criterion for detecting unnecessary reductions in the constructionof groebner bases. In E. W. Ng, editor, Proceedings of the International Symposiumon Symbolic and Algebraic Computation, pages 3–21, Marseille, France, June 1979.

[18] B. Buchberger. Groebner–bases: An algorithmic method in polynomial ideal theo-ry. In N.K. Bose, editor, Multidimensional Systems Theory – Progress, Directionsand Open Problems in Multidimensional Systems, chapter 6, pages 184–232. ReidelPublishing Company, 1985.

[19] B. Buchberger. Applications of gröbner bases in non–linear computational geometry.In J.R. Rice, editor, Mathematical Aspects of Scientific Software, volume 14 of IMAVolume in Mathematics and its Applications, pages 59–87. Springer–Verlag, 1988.

[20] B. Buchberger. An implementation of gröbner bases in mathematica. TechnicalReport 90–58, RISC–Linz, Johannes Kepler University, Linz, Austria, 1990.

[21] B. Buchberger. Groebner bases in mathematica: Enthusiasm and frustration. InP. W. Gaffney and E. N. Houstis, editors, Proceedings of the IFIP Working Confe-rence on Programming Environments for High–Level Symbolic Computation, pages80–91, Karlsruhe, Germany, September 1991.

[22] S. Campbell, J. P. Chancelier, and R. Nikoukhah. Modeling and Simulation inScilab/Scicos. Springer Verlag, New York, USA, 2005.

[23] I-M. Chen and Y. Gao. Closed–form inverse kinematics solver for reconfigurablerobots. In Proceedings of the 2001 IEEE International Conference on Robotics andAutomation, pages 2395–2400, Seoul, Korea, May 2001.

[24] F. S. Cheng. A methodology for developing robotic workcell simulation models. InJ. A. Joines, R. R. Barton, K. Kang, and P. A. Fishwick, editors, Proceedings ofthe 2000 Winter Simulation Conference, pages 1265–1271, Orlando, Florida, USA,December 2000.

[25] C. L. Collins, J. M. McCarthy, A. Perez, and H. Su. The structure of an extensiblejava applet for spatial linkage synthesis. Journal of Computing and InformationScience in Engineering, 2(1):45–49, March 2002.

Page 131: Automatische Konfiguration der Bewegungssteuerung von

121

[26] P. I. Corke. A computer tool for simulation and analysis: the robotics toolbox forMATLAB. In Proceedings of the 1995 National Conference of the Australian RobotAssociation, pages 319–330, Melbourne, Australia, July 1995.

[27] P. I. Corke. A robotics toolbox for MATLAB. IEEE Robotics and AutomationMagazine, 3(1):24–32, March 1996.

[28] N. Courtois, A. Klimov, J. Patarin, and A. Shamir. Efficient algorithms for solvingoverdefined systems of multivariate polynomial equations. In Advances in Cryptology– EUROCRYPT 2000: International Conference on the Theory and Application ofCryptographic Techniques, pages 392–407, Bruges, Belgium, May 2000.

[29] N. T. Courtois and J. Patarin. About the XL algorithm over GF (2). In M. Joye,editor, Proceedings of Topics in Cryptology, Cryptographers’ Track at the RSA Con-ference (CT–RSA), volume 2612 of Lecture Notes in Computer Science, pages 141–157, San Francisco, California, USA, April 2003.

[30] D. A. Cox. Introduction to gröbner bases. In D. A. Cox and B. Sturmfels, editors,Proceedings of the 53th Symposium in Applied Mathematics (PSAM), volume 53,pages 1–24. American Mathematical Society, 1998.

[31] J. J. Craig. Introduction to Robotics: Mechanics and Control. Prentice Hall, 3rdedition, 2004.

[32] R. Davies. Writing a matrix package in C++. In Proceedings of the second annualobject–oriented numerics conference (OON–SKI), pages 207–213, April 1994.

[33] K. Demura. Robot Simulation – Robot programming with Open Dynamics Engine.Morikita Publishing Co. Ltd., Tokyo, Japan, 2007.

[34] J. Denavit and R. S. Hartenberg. A kinematic notation for lower–pair mechanismsbased on matrices. ASME Journal of Applied Mechanics, 22:215–221, June 1955.

[35] J. Denavit and R. S. Hartenberg. Kinematic Synthesis of Linkages. McGraw–Hill,New York, USA, 1964.

[36] Deutsches Institut für Normung e.V., editor. DIN 66 025: Programmaufbau fürnumerisch gesteuerte Arbeitsmaschinen. Beuth, Berlin, Germany, 1988.

[37] Deutsches Institut für Normung e.V., editor. DIN 66 313: Industrial Robot Data(IRDATA). Beuth, Berlin, Germany, 1991.

[38] Deutsches Institut für Normung e.V., editor. DIN 66 312: ProgrammierspracheIndustrial Robot Language (IRL). Beuth, Berlin, Germany, 1993.

[39] Deutsches Institut für Normung e.V., editor. DIN EN 775 (ISO 10218): Indus-trieroboter – Sicherheit. Beuth, Berlin, August 1993.

[40] R. Dillmann and M. Huck. Informationsverarbeitung in der Robotik. Springer Verlag,Berlin, Germany, 1991.

[41] W. Dong, H. Li, and X. Teng. Off–line programming of spot–weld robot for car–bodyin white based on robcad. In Proceedings of the IEEE International Conference onMechatronics and Automation, pages 763–768, Harbin, China, August 2007.

Page 132: Automatische Konfiguration der Bewegungssteuerung von

122

[42] H. Elmquist. A Structured Model Language for Large Continuous Systems. PhD the-sis, Department of Automatic Control, Lund Institute of Technology, Lund, Sweden,1978.

[43] H. Elmqvist. Object–oriented modeling and automatic formula manipulation inDymola. In Proceedings of the 35th Simulation Conference (SIMS), Kongsberg,Norway, June 1993. Scandinavian Simulation Society.

[44] H. Elmqvist and D. Brück. Composite constructs for object–oriented modeling.In F. Breitenecker and I. Husinsky, editors, Proceedings of the Eurosim SimulationCongress, Vienna, Austria, September 1995. Elsevier Publishing Company.

[45] G. Erdõs. A New Symbolic Approach for the Geometric, Kinematic and DynamicModeling of Industrial Robots. PhD thesis, Hungarian Academy of Sciences, Buda-pest, Hungary, 2000.

[46] G. Erdõs. LinkageDesigner: User Manual. Budapest, Hungary, August 2005.

[47] J.-C. Faugère. A new efficient algorithm for computing Gröbner bases (F4). Journalof Pure and Applied Algebra, 139(1–3):61–88, June 1999.

[48] J.-C. Faugère. A new efficient algorithm for computing Gröbner bases withoutreduction to zero (F5). In T. Mora, editor, ISSAC 2002: Proceedings of the 2002International Symposium on Symbolic and Algebraic Computation, pages 75–83,Lille, France, July 2002. ACM Press.

[49] J.-C. Faugère and L. Perret. Polynomial equivalence problems: Algorithmic andtheoretical aspects. In Advances in Cryptology – EUROCRYPT 2006, pages 30–47.Springer, 2006.

[50] P. Fisette, T. Postiau, L. Sass, and J.C. Samin. Fully symbolic generation of complexmultibody models. Mechanics of Structures and Machines, 30(1):31–82, 2002.

[51] P. Fisette and J.-C. Samin. Robotran: symbolic generation of multibody systemdynamic equations. In W. Schiehlen, editor, Advanced Multibody System Dyna-mics, Simulation and Software Tools, pages 373–378. Kluwer Academic Publishers,Dordrecht, Boston, London, 1993.

[52] C. L. Forgy. On the Efficient Implementation of Production Systems. PhD thesis,Computer Science Department, Carnegie–Mellon University, Pittsburgh, Pennsyl-vania, USA, February 1979.

[53] C. L. Forgy. Rete: A fast algorithm for the many pattern / many object patternmatch problem. Artificial Intelligence, 19(1):17–37, September 1982.

[54] E. Freund, A. Hypki, and D. H. Pensky. New architecture for corporate integrationof simulation and production control in industrial applications. In Proceedings of the2001 IEEE International Conference on Robotics and Automation, pages 806–811,Seoul, Korea, May 2001.

[55] E. Freund and D. H. Pensky. COSIMIR factory: Extending the use of manufacturingsimulations. In Proceedings of the 2002 IEEE International Conference on Roboticsand Automation, pages 2805–2810, Washington, DC, USA, May 2002.

Page 133: Automatische Konfiguration der Bewegungssteuerung von

123

[56] E. Freund and D. H. Pensky. Distributing 3d manufacturing simulations to realizethe digital plant. In Proceedings of the 2003 IEEE International Conference onRobotics and Automation, pages 1705–1710, Taipei, Taiwan, September 2003.

[57] E. Friedman-Hill. Jess in Action: Rule–Based Systems in Java. Manning Publica-tions Company, Greenwich, Connecticut, USA, 2003.

[58] A. Fumagalli, G. Gaias, and P. Masarati. A simple approach to kinematic inversionof redundant mechanisms. In Proceedings of the ASME 2007 International DesignEngineering Technical Conferences & Computers and Information in EngineeringConference, Las Vegas, Nevada, USA, September 2007.

[59] A. Fumagalli, P. Masarati, and A. Ercoli Finzi. Feedback dynamic compensationvia multibody models and applications to robot control. In C. Botasso, editor, Pro-ceedings of the ECCOMAS Thematic Conference on Multibody Dynamics, Milano,Italy, June 2007.

[60] J. Funda, R. Taylor, and R. Paul. On homogeneous transforms, quaternions, andcomputational efficiency. IEEE Transactions on Robotics and Automation, 6(3):382–388, June 1990.

[61] Y. Gao. Decomposable geometric inverse kinematics for reconfigurable robots usingproduct–of–exponential formula. Master of engineering thesis, School of Mechanicaland Production Engineering, Nanyang Technological University, 2000.

[62] J. Giarratano and G. Riley. Expert Systems – Principles and Programming. Thom-son / PWS Publishing Company, 4th edition, 2004.

[63] A. A. Goldenberg, B. Benhabib, and R. Fenton. A complete generalized solutionto the inverse kinematics of robots. IEEE Journal of Robotics and Automation,1(1):14–20, March 1985.

[64] V. E. Gough and S. G. Whitehall. Universal tyre test machine. In Proceedings ofthe 9th International Technical Congress FISITA, pages 117–137, May 1962.

[65] R. Gourdeau. Object oriented programming for robotic manipulators simulation.IEEE Robotics and Automation Magazine, 4(3):21–29, September 1997.

[66] F. S. Grassia. Practical parameterization of rotations using the exponential map.Journal of Graphics Tools, 3(3):29–48, March 1998.

[67] E. Hairer, S. P. Nørsett, and G. Wanner. Solving ordinary differential equations I:nonstiff problems. Springer Verlag, New York, USA, 2nd revised edition, 1993.

[68] D. Halperin. Automatic kinematic modelling of robot manipulators and symbolicgeneration of their inverse kinematics solutions. In Proceedings of the 2nd Interna-tional Workshop on Advances in Robot Kinematics, pages 310–317, Linz, 1990.

[69] W. R. Hamilton. On quaternions or on a new system of imaginaries in algebra.Philosophical Magazine, 25:10–13, July 1844.

Page 134: Automatische Konfiguration der Bewegungssteuerung von

124

[70] L. G. Herrera-Bendezu, E. Mu, and J. T. Cain. Symbolic computation of robot ma-nipulator kinematics. In Proceedings of the 1988 IEEE International Conference onRobotics and Automation, pages 993–998, Philadelphia, Pennsylvania, USA, 1988.

[71] W. Hirschberg and D. Schramm. Application of neweul in robot dynamics. Journalof Symbolic Computation, 7(2):199–204, February 1989.

[72] J. M. Hollerbach. A recursive lagrangian formulation of manipulator dynamics anda comparative study of dynamics formulation complexity. IEEE Transactions onSystems, Man, and Cybernetics, 10(11):730–736, November 1980.

[73] J. M. Hollerbach. Optimum kinematic design for a seven degree of freedom manipu-lator. In H. Hanafusa and H. Inoue, editors, Proceedings of the Second InternationalSymposium on Robotics Research, pages 341–349, Kyoto, Japan, August 1984.

[74] R. Höpler and P. J. Mosterman. Model integrated computing in robot control tosynthesize real–time embedded code. In Proceedings of the 2001 IEEE InternationalConference on Control Applications (CCA), pages 767–772, Mexico City, Mexico,September 2001.

[75] R. Höpler and M. Otter. A versatile c++ toolbox for model based, real time controlsystems of robotic manipulators. In Proceedings of the IEEE/RSJ InternationalInternational Conference on Robotics and Systems (IROS), pages 2208–2214, Maui,Hawaii, USA, October 2001.

[76] R. Houde, M. Blain, and J. Côté. Manuel de l’usager pour Microb. Institut derecherche d’Hydro–Québec, Varennes, Québec, Canada, 2000.

[77] M. L. Husty. An algorithm for solving the direct kinematics of general stewart–goughplatforms. Mechanism and Machine Theory, 31(4):365–380, May 1996.

[78] A. Jaramillo-Botero, A. Matta-Gomez, J. F. Correa-Caicedo, and W. Perea-Castro.Robomosp. IEEE Robotics and Automation Magazine, 13(4):62–73, December 2006.

[79] C. Jia, H. Zhang, and J. Lu. Planning and simulation of virtual production sys-tem. In Proceedings of the IEEE International Conference on Mechatronics andAutomation (ICMA), pages 452–456, Luoyang, China, June 2006.

[80] G. L. Steele Jr. Common Lisp: The Language. Digital Press, Burlington, Massa-chusetts, USA, 1984.

[81] D. L. Jung, W. E. Dixon, and F. G. Pin. Automated kinematic generator for surgicalrobotic systems. In Proceedings of the 12th Annual Medicine Meets Virtual RealityConference, pages 144–146, Newport Beach, California, USA, January 2004.

[82] E. Jung, C. Kapoor, and D. Batory. Automatic code generation for actuator interfa-cing from a declarative specification. In Proceedings of the IEEE/RSJ InternationalInternational Conference on Robotics and Systems (IROS), pages 3207–3212, Ed-monton, Canada, August 2005.

[83] W. Kahan. Lectures on computational aspects of geometry. Department of ElectricalEngineering and Computer Science, University of California, Berkeley, California,USA, 1983. Unpublished manuscript.

Page 135: Automatische Konfiguration der Bewegungssteuerung von

125

[84] T. R. Kane and D. A. Levinson. Multibody dynamics. Journal of Applied Mechanics,Transactions of ASME, 50(4b):1071–1078, December 1983.

[85] C. Kapoor, M. Cetin, M. Pryor, C. Cocca, T. Harden, and D. Tesar. A softwarearchitecture for multi–criteria decision making for advanced robotics. In Proceedingsof the International Joint Conference on Science and Technology of Intelligent Sys-tems, pages 525–530, Gaithersburg, Maryland, USA, September 1998.

[86] L. Kelmar and P. Khosla. Automatic generation of kinematics for a reconfigurablemodular manipulator system. In Proceedings of the IEEE International Conferenceon Robotics and Automation, volume 2, pages 663–668, Philadelphia, Pennsylvania,USA, April 1988.

[87] H. Y. Lee and C. G. Liang. A new vector theory for the analysis of spatial mecha-nisms. Journal of Mechanism and Machine Theory, 23(3):209–217, 1988.

[88] G. Legnani, F. Casolo, P. Righettini, and B. Zappa. A homogeneous matrix approachto 3d kinematics and dynamics. part 1: theory. Mechanism and Machine Theory,31(5):573–587, July 1996.

[89] G. Legnani, B. Zappa, and P. Righettini. A homogeneous matrix approach to 3dkinematics and dynamics. part 2: Application to chains of rigid bodies and serialmanipulators. Mechanism and Machine Theory, 31(5):589–605, July 1996.

[90] K. Levenberg. A method for the solution of certain problems in least squares.Quarterly of Applied Mathematics, 2(2):164–168, July 1944.

[91] R. Lot and M. Da Lio. A symbolic approach for automatic generation of the equa-tions of motion of multibody systems. Multibody System Dynamics, 12(2):147–172,September 2004.

[92] J. Y. Luh, M. W. Walker, and R. P. Paul. On–line computational scheme formechanical manipulators. Journal of Dynamics Systems, Measurement and Control,Transactions of ASME, 102(2):69–76, June 1980.

[93] F. S. Macaulay. The Algebraic Theory of Modular Systems. Cambridge UniversityPress, Cambridge, UK, 1916.

[94] D. Manocha. Algebraic and Numeric Techniques for Modeling and Robotics. PhDthesis, Department of Electrical Engineering and Computer Science, University ofCalifornia, Berkeley, California, USA, May 1992.

[95] D. Manocha and J. F. Canny. Real time inverse kinematics for general 6r ma-nipulators. In Proceedings of the IEEE International Conference on Robotics andAutomation, volume 1, pages 383–389, Nice, France, May 1992.

[96] D. Manocha and J. F. Canny. Efficient inverse kinematics for general 6r manipula-tors. IEEE Transactions on Robotics and Automation, 10(5):648–657, 1994.

[97] R. Manseur. A software package for computer–aided robotics education. In Pro-ceedings of the 26th Annual Conference Frontiers in Education Conference (FIE),volume 3, pages 1409–1412, Salt Lake City, Utah, USA, November 1996.

Page 136: Automatische Konfiguration der Bewegungssteuerung von

126

[98] R. Manseur. Interactive visualization tools for robotics education. In Proceedings ofthe International Conference on Engineering Education (ICEE), Gainesville, Flori-da, USA, October 2004.

[99] R. Manseur. Virtual reality in science and engineering education. In Proceedings ofthe 35th Annual Conference Frontiers in Education Conference (FIE), pages F2E8–13, Indianapolis, Indiana, USA, October 2005.

[100] R. Manseur and K. L. Doty. A robot manipulator with 16 real inverse kinematicsolution sets. International Journal of Robotics Research, 8(5):75–79, 1989.

[101] R. Manseur and K. L. Doty. A complete kinematic analysis of four–revolute–axisrobot manipulators. ASME Mechanisms and Machines, 27(5):575–586, 1992.

[102] R. Manseur and K. L. Doty. Fast inverse kinematic analysis of five–revolute–axisrobot manipulators. ASME Mechanisms and Machines, 27(5):587–597, 1992.

[103] P. March, R. Taylor, C. Kapoor, and D. Tesar. Decision making for remote roboticoperations. In Proceedings of the IEEE International Conference on Robotics andAutomation, volume 3, pages 2764–2769, New Orleans, Louisiana, USA, April 2004.

[104] D.W. Marhefka. Fuzzy control and dynamic simulation of a quadruped gallopingmachine. PhD thesis, Department of Electrical Engineering, Ohio State University,Columbus, Ohio, USA, 2000.

[105] D. W. Marquardt. An algorithm for least–squares estimation of nonlinear parame-ters. Journal of the Society for Industrial and Applied Mathematics, 11(2):431–441,June 1963.

[106] E. A. Maxwell. General Homogeneous Coordinates in Space of Three Dimensions.Cambridge University Press, Cambridge, UK, 1951.

[107] E. Mayr and A. Meyer. The complexity of the word problems for commutativesemigroups and polynomial ideals. Advances in Mathematics, 46(3):305–329, 1982.

[108] E. W. Mayr. Some complexity results for polynomial ideals. Journal of Complexity,13(3):303–325, September 1997.

[109] S. McMillan. Computational Dynamics for Robotic Systems on Land and UnderWater. PhD thesis, The Ohio State University, Columbus, Ohio, USA, 1994.

[110] S. McMillan, D. E. Orin, and R. B. McGhee. Object–oriented design of a dynamicsimulation for underwater robotic vehicles. In Proceedings of the IEEE InternationalConference on Robotics and Automation, pages 1886–1893, Nagoya, Japan, 1995.

[111] S. McMillan, D. E. Orin, and R. B. McGhee. A computational framework forsimulation of underwater robotic vehicle systems. Special Issue of the Journal ofAutonomous Robots on Autonomous Underwater Robots, 3:253–268, 1996.

[112] S. McMillan, P. Sadayappan, and D. E. Orin. Efficient dynamic simulation of mul-tiple manipulator systems with singular configurations. IEEE Transactions on Sys-tems, Man, and Cybernetics, 24:306–313, February 1994.

Page 137: Automatische Konfiguration der Bewegungssteuerung von

127

[113] J. McPhee, C. Schmitke, and S. Redmond. Dynamic modelling of mechatronicmultibody systems with symbolic computing and linear graph theory. Mathematicaland Computer Modelling of Dynamical Systems, 10(1):1–23, 2004.

[114] D. P. Miranker. Treat: A better match algorithm for ai production systems. InProceedings of Sixth National Conference on Artificial Intelligence, pages 42–47,Seattle, Washington State, USA, August 1987.

[115] D. P. Miranker. Treat: A new and efficient match algorithm for AI productionsystems. Morgan Kaufmann Publishers Inc., San Francisco, California, USA, 1990.

[116] E. H. Moore. On the reciprocal of the general algebraic matrix. Bulletin of theAmerican Mathematical Society, 26:394–395, 1920.

[117] M. Morandini, P. Masarati, and P. Mantegazza. A real–time hardware–in–the–loopsimulator for robotics applications. In J. M. Goicolea, J. Cuadrado, and J. C. GarciaOrden, editors, Proceedings of the ECCOMAS Thematic Conference on MultibodyDynamics, Madrid, Spain, June 2005.

[118] S. Morgan. Programming Microsoft Robotics Studio Developer Reference. MicrosoftPress, New York, USA, 2008. to appear.

[119] K. Morisse and G. Oevel. New developments in MuPAD. In J. Fleischer, J. Grab-meier, F. W. Hehl, and W. Küchlin, editors, Computer Algebra in Science andEngineering, pages 44–56, Singapore, 1995. World Scientific Publishing.

[120] H. D. Nayar. Robotect: serial–link manipulator design software for modeling, vi-sualization and performance analysis. In Proceedings of the 7th International Con-ference on Control, Automation, Robotics and Vision (ICARCV 2002), volume 3,pages 1359–1364, Singapore, December 2002.

[121] J. F. Nethery. Robotica: A structured environment for computer aided design andanalysis of robots. Master’s thesis, University of Illinois at Urbana–Champaign,Department of Electrical and Computer Engineering, June 1994.

[122] J. F. Nethery and M. W. Spong. Robotica: A Mathematica package for robotanalysis. IEEE Robotics and Automation Magazine, 1(1):13–20, March 1994.

[123] J. F. Nethery and M. W. Spong. A mathlink–based front end for the roboticapackage. The Mathematica Journal, 5(2):72–79, 1995.

[124] N. M. Newmark. A method of computation for structural dynamics. ASCE Journalof Engineering Mechanics Division, 85(EM3):67–94, March 1959.

[125] I. Newton. Mathematical Principles of Natural Philosophy, volume 34 of Great Booksof the Western World. Encyclopaedia Britannica, Chicago, Illinois, USA, 1687.

[126] D. E. Orin and W. W. Schrader. Efficient computation of the jacobian for robotmanipulators. International Journal of Robotics Research, 3(4):66–75, 1984.

[127] J. M. Ortega and W. C. Rheinboldt. Iterative solution of nonlinear equations inseveral variables. Society for Industrial and Applied Mathematics, Philadelphia,Pennsylvania, USA, 2000.

Page 138: Automatische Konfiguration der Bewegungssteuerung von

128

[128] M. Otter, H. Elmqvist, and F. E. Cellier. Modeling of multibody systems with theobject–oriented modeling language Dymola. In Proceedings of the NATO Advan-ced Study Institute on Computer Aided Analysis of Rigid and Flexible MechanicalSystems, pages 91–110, Troia, Portugal, June 1993.

[129] B. Paden. Kinematics and Control of Robot Manipulators. PhD thesis, Departmentof Electrical Engineering and Computer Science, University of California, Berkeley,California, USA, 1986.

[130] B. Paden and S. Sastry. Optimal kinematic design of 6r manipulators. InternationalJournal of Robotics Research, 7(2):43–61, March 1988.

[131] F. C. Park. Computational aspects of the product–of–exponentials formula for robotkinematics. IEEE Transactions on Automatic Control, 39(3):643–647, March 1994.

[132] T. Parr. The Definitive ANTLR Reference: Building Domain–Specific Languages(Pragmatic Programmers). Pragmatic Bookshelf, May 2007.

[133] R. P. Paul. Robot Manipulators: Mathematics, Programming, and Control. MITPress, Cambridge, Massachusetts, USA and London, UK, 1981.

[134] R. P. Paul, M. Renaud, and C. N. Stevenson. A systematic approach for obtainingthe kinematics of recursive manipulators based on homogeneous transformations. InM. Brady and R. Paul, editors, Proceedings of the First International Symposium onRobotics Research, pages 707–726, Cambridge, Massachusetts, USA, August 1984.MIT Press.

[135] R. P. Paul and H. Zhang. Computationally efficient kinematics for manipulatorswith spherical wrists based on the homogeneous transformation representation. In-ternational Journal of Robotics Research, 5(2):32–44, June 1986.

[136] R. A. Penrose. A generalized inverse for matrices. Mathematical Proceedings of theCambridge Philosophical Society, 51(3):406–413, 1955.

[137] A. Perez, H. J. Su, and J. M. McCarthy. Synthetica 2.0: Software for the synthesisof constrained serial chains. In Proceedings of the ASME 2004 Design EngineeringTechnical Conferences and Computers and Information in Engineering Conference(DETC), Salt Lake City, Utah, USA, September 2004.

[138] L. R. Petzold. A description of dassl: A differential/algebraic system solver. IMACSTransactions on Scientific Computing, 1:65–68, 1983.

[139] T. Pfirrmann. Xj3D–basierte Visualisierung von Industrierobotern. Pre–master’sthesis, Institut für Prozessrechentechnik, Automation und Robotik, UniversitätKarlsruhe (TH), February 2008.

[140] D. L. Pieper. The Kinematics of Manipulators under Computer Control. PhD thesis,Stanford University, Department of Mechanical Engineering, October 1968.

[141] F. G. Pin, L. J. Love, and D. L. Jung. Automated kinematic equations generationand constrained motion planning resolution for modular and reconfigurable robots.In Proceedings of the 227th American Chemical Society National Meeting, Anaheim,California, USA, March 2004.

Page 139: Automatische Konfiguration der Bewegungssteuerung von

129

[142] V. Poiré, S. Lemieux, P. Bigras, and M. Blain. Migration procedure of controllaws from a graphical simulation environment to a robotic framework. In C.-Y. Su,editor, Proceedings of the 8th IASTED International Conference on Control andAplications (CA 2006), Montreal, Quebec, Canada, May 2006. ACTA Press.

[143] W. H. Press, B. P. Flannery, S. A. Teukolsky, and W. T. Vetterling. Numericalrecipes: the art of scientific computing. Cambridge University Press, New York,USA, 1986.

[144] E. J. F. Primrose. On the input–output equation of the general 7r–mechanism.Mechanisms and Machine Theory, 21(6):509–510, 1986.

[145] M. Pryor, R. Taylor, C. Kapoor, and D. Tesar. Generalized software componentsfor reconfiguring hyper–redundant manipulators. IEEE/ASME Transactions onMechatronics, 7(4):475–478, December 2002.

[146] M. Raghavan. The Stewart platform of general geometry has 40 configurations.Journal of Mechanical Design, Transactions of ASME, 115(2):277–282, June 1993.

[147] M. Raghavan and B. Roth. Kinematic analysis of the 6r manipulator of generalgeometry. In H. Miura and S. Arimoto, editors, The fifth international symposiumon Robotics research, pages 263–269, Cambridge, Massachusetts, USA, 1990. MITPress.

[148] H. Rieseler and F. M. Wahl. Fast symbolic computation of the inverse kinematicsof robots. In Proceedings of the 1990 IEEE International Conference on Roboticsand Automation, pages 462–467, Cincinnati, Ohio, USA, May 1990.

[149] M. F. Robinette and R. Manseur. Robot–draw, an internet–based visualization toolfor robotics education. IEEE transactions on education, 44(1):29–34, February 2001.

[150] O. Rodrigues. Des lois geometriques qui regissent les deplacements d’un systemesolide independamment des causes qui peuvent les produire. Journal De Mathema-tiques Pures et Appliquees, 5:380–440, 1840.

[151] R. R. Ryan. Adams–multibody system analysis software. In W. O. Schiehlen, editor,Multibody Systems Handbook, pages 361–402. Springer–Verlag, Berlin, 1990.

[152] L. Sass. Symbolic modeling of electromechanical multibody systems. PhD thesis,Center for Research in Mechatronics, Université catholique de Louvain, Louvain–la–Neuve, Belgium, January 2004.

[153] D. L. Schneider. Review of the Robotica software package for robotic manipulators.IEEE Robotics and Automation Magazine, 1(1):21–22, March 1994.

[154] E. M. Schwartz, R. Manseur, and K. L. Doty. Algebraic properties of noncommen-surate systems. In Proceedings of the Florida Conference on Recent Advances inRobotics (FCRAR 1999), Gainesville, Florida, April 1999.

[155] J. M. Selig. Active versus passive transformations in robotics. IEEE Robotics andAutomation Magazine, 13(1):79–84, March 2006.

Page 140: Automatische Konfiguration der Bewegungssteuerung von

130

[156] K. Shoemake. Animating rotation with quaternion curves. In Proceedings of the 12thannual conference on Computer graphics and interactive techniques (SIGGRAPH),volume 19, pages 245–254, San Francisco, California, USA, July 1985. ACM Press.

[157] K. Shoemake. Euler angle conversion. In P. Heckbert, editor, Graphics Gems IV,pages 222–229. Academic Press Professional, San Diego, California, USA, 1994.

[158] W. M. Silver. On the equivalence of lagrangian and newton–euler dynamics formanipulators. International Journal of Robotics Research, 1(2):60–70, 1982.

[159] B. Sivaraman, T. Burks, and J. Schueller. Using modern robot synthesis and ana-lysis tools for the design of agricultural manipulators. Agricultural EngineeringInternational: the CIGR Ejournal, 8, January 2006. Invited Overview Paper No. 2.

[160] G. S. Soh, A. Perez, and J. M. McCarthy. The kinematic synthesis of mechanicallyconstrained planar 3r chains. In M. Husty and H.-P. Schröcker, editors, Proceedingsof the 1st European Conference on Mechanism Science (EuCoMeS), Obergurgl, Aus-tria, February 2006.

[161] M. W. Spong. Robot Dynamics and Control. John Wiley and Sons, Inc., New York,USA, 1989.

[162] M. W. Spong, S. Hutchinson, and M. Vidyasagar. Robot Modeling and Control.John Wiley and Sons, New York, USA, 2005.

[163] D. Stewart. A platform with six degrees of freedom. In Proceedings of the Instituteof Mechanical Engineering, volume 180, pages 371–386, 1965.

[164] J. Swevers, C. Ganseman, X. Chenut, and J.-C. Samin. Experimental identificationof robot dynamics for control. In Proceedings of the IEEE International Conferenceon Robotics and Automation, pages 241–246, San Francisco, California, USA, 2000.

[165] M. Thomas and D. Tesar. Dynamic modelling of serial manipulator arms. Journalof Dynamic Systems, Measurement, and Control, ASME Transactions, 104(9):218–228, September 1982.

[166] D. Tolani. Analytic Inverse Kinematics Techniques for Anthropometric Limbs. PhDthesis, University of Pennsylvania, Philadelphia, Pennsylvania, USA, January 1998.

[167] D. Tolani, A. Goswami, and N. I. Badler. Real–time inverse kinematics techniquesfor anthropomorphic limbs. Graphical Models and Image Processing, 62(5):353–388,September 2000.

[168] V. D. Tourassis and M. H. Ang. Task decoupling in robot manipulators. Journalof Intelligent and Robotic Systems, 14(3):283–302, November 1995.

[169] L. W. Tsai and A. P. Morgan. Solving the kinematics of the most general six– andfive–degree–of–freedom manipulators by continuation methods. ASME Journal ofMechanisms, Transmission, and Automation in Design, 107:189–200, 1985.

[170] J. J. Uicker. Dynamic force analysis of spatial linkages. Journal of Applied Mecha-nics, Transactions of ASME, 34(89):418–424, June 1967.

Page 141: Automatische Konfiguration der Bewegungssteuerung von

131

[171] J. J. Uicker, J. Denavit, and R. S. Hartenberg. An interactive method for the displa-cement analysis of spatial mechanisms. Journal of Applied Mechanics, Transactionsof ASME, 86(2):309–314, June 1964.

[172] G. van den Bergen. Efficient collision detection of complex deformable models usingAABB trees. Journal of Graphics Tools (JGT), 2(4):1–14, April 1997.

[173] Verein Deutscher Ingenieure VDI VDI–Gesellschaft Produktionstechnik, editor.VDI Richtlinie 2860: Montage– und Handhabungstechnik; Handhabungsfunktionen,Handhabungseinrichtungen; Begriffe, Definitionen, Symbole. Beuth, Berlin, Germa-ny, May 1990.

[174] O. Verlinden, P. Dehombreux, C. Conti, and S. Boucher. Formulation for the di-rect dynamic simulation of flexible mechanisms based on the newton–euler inversemethod. International Journal for Numerical Methods in Engineering, 37(19):3363–3387, February 1994.

[175] O. Verlinden, G. Kouroussis, and C. Conti. EasyDyn: A framework based on freesymbolic and numerical tools for teaching multibody systems. In J.M. Goicolea,J. Cuadrado, and J.C. Garcia Orden, editors, Proceedings of the ECCOMAS The-matic Conference on Multibody Dynamics 2005, Madrid, Spain, June 2005.

[176] O. Verlinden, G. Kouroussis, S. Datoussaid, and C. Conti. Open source symbolicand numerical tools for the simulation of multibody systems. In Proceedings ofthe 6th National Congress on Theoretical and Applied Mechanics (on CD), Ghent,Belgium, May 2003.

[177] D. N. Vila-Rosado and J. A. Dominguez-Lopez. A matlab toolbox for roboticmanipulators. In Proceedings of the Sixth Mexican International Conference onComputer Science (ENC 2005), pages 256–265, Puebla, Mexico, September 2005.IEEE Computer Society.

[178] D. N. Vila-Rosado and J. A. Dominguez-Lopez. A matlab toolbox for the optimaldesign of robot manipulators using evolutionary techniques. In D. J. Dorantes-González, editor, Proceedings the 10th International Conference on MechatronicTechnology (ICMT 2006), pages 256–265, Mexico City, Mexico, November 2006.

[179] M. W. Walker and D. E. Orin. Efficient dynamic computer simulation of robotic me-chanisms. Journal of Dynamics Systems, Measurement and Control, Transactionsof ASME, 104(3):205–211, September 1982.

[180] C. W. Wampler and A. P. Morgan. Solving the kinematics of general 6r manipulatorsusing polynomial continuation. In K. Warwick, editor, Robotics: Applied Mathema-tics and Computational Aspects. Clarendon Press, Oxford, UK, March 1993.

[181] Z. Wang, D. Zhang, and H. Han. Design and kinematics analysis of oblique axisnon–spherical 3r wrist. In Proceedings of the IEEE International Conference onAutomation and Logistics, pages 995–1000, Jinan, Shandong, China, August 2007.

[182] W. Weber and S. Rothenbücher. Mandy: Tool for fast development of open chainmultibody systems. In Proceedings of the 6th International Workshop on Researchand Education in Mechatronics (REM), pages 287–291, Annecy, France, July 2005.

Page 142: Automatische Konfiguration der Bewegungssteuerung von

132

[183] M. Wenz and H. Wörn. Automatic configuration of the dynamic model for commonindustrial robots. In C. Hochberger and R. Liskowsky, editors, Proceedings of theGI Jahrestagung, GI–Edition Lecture Notes in Informatics (LNI), pages 137–144,Dresden, Germany, October 2006.

[184] M. Wenz and H. Wörn. Entwicklung einer selbstkonfigurierenden und selbstorgani-sierenden Bewegungssteuerung für Industrieroboter. In G. Brandenburg, W. Schu-macher, R. D. Schraft, and K. Bender, editors, Tagungsband SPS/IPC/Drives 2006,pages 619–627, Nürnberg, Germany, November 2006.

[185] M. Wenz and H. Wörn. Rule–based generation of motion control software for generalserial–link robot manipulators. In Proceedings of the 8th International Workshop onComputer Science and Information Technologies (CSIT 2006), pages 16–21, Karls-ruhe, Germany, September 2006.

[186] M. Wenz and H. Wörn. Automatische Konfiguration der Bewegungssteuerung vonseriellen Kinematiken. In J. Gausemeier, F. Rammig, W. Schäfer, A. Trächtler,and J. Wallaschek, editors, Entwurf mechatronischer Systeme, volume 210 of HNI–Verlagsschriftenreihe, pages 57–68, Paderborn, Germany, March 2007.

[187] M. Wenz and H. Wörn. Computing symbolic–algebraic models of industrial mani-pulator arms in a fully automatic way. In K. Schilling, editor, Proceedings of the13th IASTED International Conference on Robotics and Applications (RA 2007),pages 334–339, Würzburg, Germany, August 2007. ACTA Press.

[188] M. Wenz and H. Wörn. Solving the inverse kinematics problem symbolically bymeans of knowledge–based and linear algebra–based methods. In Proceedings ofthe 12th IEEE International Conference on Emerging Technologies and FactoryAutomation (ETFA 2007), pages 1346–1353, Patras, Greece, September 2007. IEEEPress.

[189] R. L. Williams. Inverse kinematics and singularities of manipulators with offsetwrist. IASTED International Journal of Robotics and Automation, 14(1):1–8, 1999.

[190] D. W. Wloka and K. Blug. Simulation der Dynamik von Robotern nach dem Ver-fahren von Kane. Robotersysteme, 1(4):211–216, 1985.

[191] W. A. Wolovich. Robotics: Basic Analysis and Design. CBS College Publishing,New York, USA, 1987.

[192] W. A. Wolovich and H. Elliot. A computational technique for inverse kinematics.In Proceedings of the 32nd IEEE Conference on Decision and Control, pages 1359–1362, Las Vegas, Nevada, USA, December 1984.

[193] H. Wörn and U. Brinkschulte. Echtzeitsysteme, volume 1 of eXamen.press. Sprin-ger Verlag, Institut für Prozessrechentechnik, Automation und Robotik, UniversitätKarlsruhe (TH), 1st edition, Februar 2005.

[194] L. Zlajpah. Integrated environment for modelling, simulation and control design forrobotic manipulators. Journal of Intelligent and Robotic Systems, 32(2):219–234,October 2001.