dynamische regelung eines industrieroboters in echtzeit · nem kuka kr5 sixx roboter (aktuator) und...

23
Dynamische Regelung eines Industrieroboters in Echtzeit von J. Gut und H. Rapp Lernziele 1. Systemanalyse eines Industrieroboters 2. Implementierung eines physikalisch modellierten diskreten Reglers 3. Test und Bewertung verschiedener Parameter des Regelkreises F–1

Upload: others

Post on 30-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Dynamische Regelung einesIndustrieroboters in Echtzeit

von J. Gut und H. Rapp

Lernziele

1. Systemanalyse eines Industrieroboters

2. Implementierung eines physikalisch modellierten diskreten Reglers

3. Test und Bewertung verschiedener Parameter des Regelkreises

F – 1

Page 2: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Inhaltsverzeichnis

1 Einleitung 4

2 Versuchsaufbau und Einordnung der Aufgabe 4

3 Einfuhrung in Python und Linux 6

3.1 Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

3.2 Python Editor und Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . 7

4 Systemanalyse des Industrieroboters 7

4.1 Einfuhrung in die Robotersteuerung . . . . . . . . . . . . . . . . . . . . . 7

4.2 Bestimmung der Verzogerungszeit T0 des Robotersystems . . . . . . . . . 8

4.2.1 Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

4.2.2 Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 Regelung des Industrieroboters 12

5.1 Jonglieren eines Tischtennisballs . . . . . . . . . . . . . . . . . . . . . . . 13

5.1.1 Aufgabe (schriftlich vorzubereiten) . . . . . . . . . . . . . . . . . 14

5.2 Parameter eines PID Reglers . . . . . . . . . . . . . . . . . . . . . . . . . 16

5.2.1 Aufgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

5.2.2 Fragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

A Programmieren mit Python 19

A.1 Datentypen und Operatoren . . . . . . . . . . . . . . . . . . . . . . . . . . 19

A.2 Bibliotheken und Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

A.2.1 Bibliotheken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

A.2.2 Python Hilfe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

A.3 Ein- und Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

A.4 Beispiele fur Verzweigungen und Schleifen . . . . . . . . . . . . . . . . . 21

A.5 Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

A.6 Vektoren und Matrizen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

F – 2

Page 3: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Hinweise

• Der Versuchsaufbau darf nur unter Aufsicht des Betreuers in Betrieb genommen wer-den.

• Der Roboter darf ausschließlich vom Betreuer bedient werden.

• Das Betreten der Schutzumzaunung ist gefahrlich und deswegen verboten.

• Die Aufgabe in Abschnitt 5.1.1 ist schriftlich vorzubereiten.

F – 3

Page 4: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

1 Einleitung

Industrieroboter sind die Alleskonner der Automatisierungstechnik. Bisher nur sehr großenProduktionsanlagen mit sehr hohen Stuckzahlen vorbehalten, finden Sie in zunehmendemMaße auch Anwendung in Kleinserien. Ein besonderer Trend der letzen Zeit ist die steigendeInteraktivitat der Roboter die inzwischen auch an kooperativen Arbeitsplatzen direkt nebendem Menschen eingesetzt werden konnen. Sorgfaltig ubereinander gestapelte Bauteile, et-wa der Kotflugel einer Autokarosserie, sind fur die Montage mit heutigen Industrieroboternkein Problem. Schwieriger gestaltet sich beispielsweise die Entnahme von Bremsklotzen auseinem Container. Dieses Problem ist in der Fachwelt auch als ,,Griff in die Kiste” bekannt.Um dies zu leisten mussen die Roboter mehr von ihrer Umwelt sehen und verstehen lernen,als es in der Vergangenheit der Fall war.

Dieser Versuch untersucht die kognitive Leistungsfahigkeit heutiger Systeme exemplarischan einem kleinen Industrieroboter. Wie auch der Mensch bezieht der Roboter seine Infor-mationen uber die Umwelt durch visuelle Wahrnehmung. Die Aufgabe des Roboters bestehtdarin einen Tischtennisball autonom zu jonglieren. Der Ping-Pong-Roboter muss hierbeiaber nicht nur Objekte (Tischtennisball) in Bildern erkennen, sondern auch deren Verhaltenvorhersagen, interpretieren und eine eigene Reaktion ableiten. Der Versuch umfasst nebender Systemanalyse, in der das Reaktionsvermogen des Roboters ermittelt werden soll, dieBerechnung eines deterministischen Verhaltens des Roboters sowie die Regelung des Tisch-tennisballs in einen stationaren Zustand.

2 Versuchsaufbau und Einordnung der Aufgabe

Der Versuchsaufbau besteht aus zwei zueinander um 90◦ versetzten Kameras (Sensorik), ei-nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitungund Regelung stattfindet. Der Aufbau ist in Abbildung 1 dargestellt.

Abbildung 2 zeigt eine vereinfachte Version des geschlossenen Regelkreises, die den Flussder Information klar darlegt. Die Details der Regelung werden spater genau beschrieben.

Die momentane Position des Ping-Pong Schlagers wird in einem kartesischen Koordina-tensystem (siehe Abschnitt 4.2) angegeben; diese Koordinaten werden als Zustandsgroßendes Roboters betrachtet. Der Zustand des Roboters (und damit des Schlagers) wird durchdie Position r = (x, y, z)T und die Neigungswinkel ϕ = (A,B,C)T der Schlagerebenebeschrieben.

Durch seine Bewegung wirkt der Roboter auf den Ball und verandert damit die Ballflugbahn,die durch eine dreidimensionale Trajektorie b(t) = (xb(t), yb(t), zb(t))

T beschrieben wird.Die momentane Lage des Balls wird durch die zwei Kameras und das dazugehorige Bild-verarbeitungssystem gemessen. Mehrere dieser Messungen zu verschiedenen Zeitpunktenkonnen dann durch den Pradiktor in eine Schatzung der Auftreffparameter verrechnet wer-den. Die Auftreffparameter bestehen aus der dreidimensionalen Auftreffposition ri, der drei-dimensionalen Auftreffgeschwindigkeit vi und dem Auftreffzeitpunkt ti. i steht hier fur Im-pact. Die Regelung geschieht in diesem Versuch durch drei unabhangige Regler, die spater imDetail diskutiert und zum Teil implementiert werden mussen; als Eingabe verarbeiten diese

F – 4

Page 5: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Abbildung 1: Versuchsaufbau

b b

rs,ϕs

r,ϕri, vi, ti

rs,ϕs

Tracker / Prädiktor

Sample / Hold Roboter

Bildverarbeitung Physik des Balles

Regelungri,soll

Abbildung 2: Informationsfluss

Regler die Schatzungen aus dem Pradiktor und verschiedene Parameter fur das gewunschteVerhalten des Roboters wie zum Beispiel die Sollauftreffposition des Balls auf den Schlagerri,soll. Das Sample / Hold Glied sorgt dafur, dass der Roboter nicht zu viele Stellsignale be-kommt, da er diese nicht alle abfahren kann. Erst wenn sich die Eingangsgroßen nicht mehrzu stark andern, gibt das Sample / Hold (Halte-)Glied seinen momentanen Eingang an denRoboter weiter.

Die Software, welche die Signalverarbeitung und Regelung umfasst, muss also verschiedeneAufgaben erfullen:

1. Detektion des Balls in den von dem Kamerasystem gelieferten Bildern (Bildverarbei-tung)

2. Berechnung der Ballposition aus den Kamerabildern uber Triangulation (Bildverarbei-tung)

3. Schatzung der Geschwindigkeiten und Beschleunigungen des Balls (Tracker)

F – 5

Page 6: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

4. Vorhersage von Auftreffpunkt, Auftreffgeschwindigkeit und Auftreffzeitpunkt desBalls (Pradiktor)

5. Ausrichtung und Positionierung des Tischtennisschlagers (Regler)

6. Regelung des Auftreffpunkts des Balls in einen gute Position fur den Roboter; d.h. ineinen stationaren Zustand des Gesamtsystems. (Regler)

Da ein Bearbeiten aller Aufgaben den zeitlichen Rahmen des Versuchs weit uberschreitenwurde, wird nur die Regelungskomponente genauer betrachtet.

Der erste Schritt des Praktikumsversuchs besteht darin, eine Systemanalyse durchzufuhrenund sich mit dem Robotersystem vertraut zu machen. Fur das weitere Vorgehen wird hierauch die Frage geklart, mit welcher Verzogerungszeit der Roboter nach einem Stellbefehlseine maximale Verfahrgeschwindigkeit erreicht hat (Abschnitt 4.2).

Im Anschluss wird dem Roboter das Jonglieren des Tischtennisballs beigebracht. Hierbeiwird ein Regler entworfen, der aus der Auftreffgeschwindigkeit die Stellwinkel errechnet,die notig sind um den Ball senkrecht nach oben zu spielen (Abschnitt 5.1).

Um dem System ausreichend Stabilitat zu verleihen, wird zum Schluss eine Regelung ermit-telt, welche den Tischtennisball in einen stationaren Zustand regelt. Dies wird durch einenweiteren Regler realisiert der die Stellwinkel so verandert, dass der Ball langsam in die Mittedes Arbeitsbereiches des Roboters geregelt wird (Abschnitt 5.2).

3 Einfuhrung in Python und Linux

Die Programmierung des Roboters erfolgt in der Programmiersprache Python. Python ist ei-ne Multiparadigmensprache mit dem Ziel moglichst einfach und ubersichtlich zu sein. Die-se Eigenschaft ermoglicht besonders Programmieranfangern einen schnellen Einstieg. Furdas wissenschaftliche Arbeiten mit Python kann auf ein breites Spektrum an Bibliothekenzuruckgegriffen werden, die alle wichtigen Funktionen, wie das Arbeiten mit Matrizen undGrafiken beinhalten. Die erstellten Programme werden auf einem Linux PC ausgefuhrt. DieKommunikation mit dem Roboter erfolgt via Ethernet. Die fur das Bedienen und Starten derProgramme notwendigen Befehle werden im Folgenden kurz vorgestellt.

3.1 Linux

Fur das Navigieren im Dateisystem und Starten von Programmen bietet es sich an dasLinux Terminal zu verwenden. Dieses kann uber Anwendungen -> Zubehor ->Terminal gestartet werden. Fur das Arbeiten im Terminal werden folgende Befehlebenotigt:

• pwd - Zeigt das aktuelle Verzeichnis an

• ls - Gibt eine Liste aller Dateien und Ordner in einem Verzeichnis

F – 6

Page 7: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

• cd <Pfad> - Wechsel in einen Ordner oder in ein Verzeichnis

• cd .. - Wechselt in das daruberliegende Verzeichnis

• cd - Wechselt in das Home Verzeichnis

• ./pprobot.py - Starten des Python Programms pprobot.py

• idle player.py - Offnet die Python Datei player.py mit dem Editor IDLE

Wichtig: Um ein Programm zu starten bzw. eine Datei zu offnen, muss zuerst in den Ordnergewechselt werden, in dem die Datei gespeichert ist.

3.2 Python Editor und Konsole

Fur das Erstellen und Bearbeiten von Programmcode in Python gibt es eine große Auswahlan Editoren. Prinzipiell reicht aber schon ein einfacher Texteditor wie er unter Windows undLinux verfugbar ist um Programmcode zu schreiben oder zu verandern. Da diese Editorenaber sehr unkomfortabel sind wird in diesem Versuch der Editor IDLE verwendet. Der Editorkann uber Klicken auf Anwendungen -> Entwicklung -> IDLE gestartet werden.Es offnen sich nun eine Konsole (Python Shell) und ein Editor. Im Editor kann uber File-> Open die zu bearbeitende Python Datei geoffnet werden. Das Offnen der Datei mit demEditor IDLE uber das Linux Terminal ist mit dem Befehl idle player.py ebenfallsmoglich. Weitere Informationen zu Python konnen dem Anhang entnommen werden.

4 Systemanalyse des Industrieroboters

4.1 Einfuhrung in die Robotersteuerung

Bei dem in diesem Versuch verwendeten Roboter handelt es sich um einen Vertikal-Knickarmroboter. Dieser ist besonders in der Fertigungstechnik weit verbreitet. Er verfugtinsgesamt uber sechs Achsen die sich aus drei Hauptachsen und drei Kopfachsen zusam-mensetzen. Der Arbeitsraum des Vertikal-Knickarmroboters ist hohlkugelformig. Fur dieSteuerung von Industrierobotern haben sich im wesentlichen drei Methoden etabliert, diesich im Bewegungsverhalten und in der Art der Bewegungsprogrammierung unterscheiden.

Punkt-zu-Punkt-Steuerung (PTP, Point To Point): Bei der Punkt-zu-Punkt-Steuerungwerden durch die Programmierung Start- und Zielpunkte vorgegeben die der Roboteranfahren soll. Jede Achse fuhrt hierbei die zum Erreichen des Zielpunktes notwendigeDrehbewegung unabhangig voneinander aus. Die PTP-Steuerung ist nur dann geeig-net, wenn zwischen zwei Punkten keine genaue Bahnkontur gefordert ist. Sie ist dieschnellste der Bewegungsmethoden und ublicherweise ruckoptimal, d.h. die mechani-schen Teile des Roboters werden minimal belastet. Eingesetzt wird die PTP-Steuerungz.B. beim Punktschweißen, Palettieren und Bohren.

F – 7

Page 8: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Vielpunkt-Steuerung (MP, Multi Point): Bei der MP-Steuerung wird eine große Anzahlan Punkten die auf einer Bahn liegen vorgegeben. Diese Steuerungsart wird vor al-lem beim ’Playback’ verwendet. ’Playback’ ist die Programmierung eines Robotersuber einen Handgriff, welcher wie ein Werkzeug am Roboter angebracht ist, und mitdem man den Roboter bewegen kann. Die Programmiereinheit speichert hierbei miteiner festen Taktrate die Position des Roboterarms und kann im Anschluss die vorge-gebene Bahn nachfahren. Eine Programmierung uber das Teach-In-Verfahren, bei derverschiedene Punkte angefahren und gespeichert werden, ist ebenfalls moglich. Beider MP-Steuerung ist eine prazise Bahn und Geschwindigkeitssteuerung moglich. Siefindet große Anwendung in der Automatisierungstechnik.

Bahnsteuerung (CP, Continuous Path): Die Bewegung des Roboters zwischen verschie-denen Punkten muss durch den Programmierer mit Hilfe von mathematischen Funktio-nen wie Geraden, Kreisen oder Polynomen festgelegt werden. Da nicht jede beliebigeFunktion durch den Roboter mechanisch ausgefuhrt werden kann, sind Fehler beimAbfahren des Weges moglich.

In modernen Robotersystemen findet oft eine Vermischung der verschiedenen Steuerungsar-ten statt. Es existieren daher verschiedene kommerzielle Steuerungssysteme die auf Linear-,Zirkular- und Spline-Interpolation basieren. Fur diese Steuerungsarten genugt die Angabeweniger Punkte und die Angabe einer Interpolationsart, um einen linearen oder zirkularenVerlauf der Bahnkurve zu erreichen.

Um dem Roboter bestimme Zielpunkte Vorgeben zu konnen, mussen diese in einem zuvorfestgelegten Koordinatensystem liegen. Um fur den Benutzer eine moglichst benutzerfreund-liche Steuerung zu ermoglichen ist eine Eingabe der Zielpunkte fur den Roboter in kartesi-schen Koordinaten moglich. Die Transformation der Koordinaten erfolgt durch die Softwareauf dem externen Rechner und dem Robotersteuerungssystem. Das Roboterkoordinatensys-tem verwendet zum Beschreiben der Punkte die Winkelstellung der verschiedenen Achsen.

4.2 Bestimmung der Verzogerungszeit T0 des Robotersystems

Um eine moglichst lange Flugzeit des Tischtennisballs zu erreichen und so ausreichend Zeitfur die Pradiktion der Flugkurve zu erhalten, muss der Tischtennisball mit einem moglichstgroßen Impuls senkrecht nach oben gespielt werden. Da fur den Impuls gilt p = m · v, mussder Ball bei jedem Auftreffen auf den Schlager mit der maximal moglichen Geschwindigkeitdie der Roboter fahren kann angespielt werden. Es stellt sich somit die Frage, wann derRoboter ein Stellsignal erhalten muss damit die maximale Geschwindigkeit erreicht werdenkann. Um diese Verzogerungszeit zu ermitteln bietet sich die Analyse der Sprunganwort desSystems an. Neben der Sprungantwort soll in diesem Aufgabenteil zudem die Ansteuerungdes Roboters und das Systemverhalten genauer analysiert werden.

4.2.1 Aufgabe

Das Hochfahren des Roboters und des Rechners erfolgt durch den Betreuer. Fur die Ansteue-rung des Roboters kommt das Python Programm Desktop\pprobot\move.py zum Ein-

F – 8

Page 9: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Y-Achse

X-Achse

Z-Achse

Draufsicht

Abbildung 3: Koordinatensystem

satz. Zum Bearbeiten des Programms kann der Editor IDLE verwendet werden. In diesemProgramm kann ein zeitlicher Ablauf an Punkten, welche der Roboter abfahren soll, einge-geben werden (Punkt-zu-Punkt Steuerung).

X, Y und Z stehen hierbei fur die Koordinaten eines kartesischen Koordinatensystems (Ab-bildung 3), A, B und C fur die Winkel die fur den Tischtennisschlager eingestellt werdenkonnen. Der Ursprung des Koordinatensystems befindet sich im Fußpunkt des Roboters. DieZ-Koordinate steht hierbei fur die vertikale Koordinatenachse, X- und Y-Koordinate fur diehorizontale Ebene. Die Einheit der anzufahrenden Punkte ist mm, die Winkel mussen inGrad angegeben werden. Die Zeit t wird in Sekunden angegeben. Die Eingabe von Fließ-kommazahlen (float) ist fur alle Werte ebenfalls moglich. Die Ansteuerung kann uber dieAngabe kompletter Koordinaten vorgenommen werden, oder aber nur der sich anderndenkartesischen Koordinatenachsen. Eine mogliche Ansteuerung ist im Folgenden kurz darge-stellt.

Trotz der Beschrankung der Stellsignale ist eine Kollision des Roboters mit dem Hallen-boden und mit sich selbst nicht ausgeschlossen! Besonders das Verfahren in mehrereRichtungen gleichzeitig kann zu Kollisionen fuhren! Auch wenn das Programm kollisions-frei ablauft, ist eine Kollision des Roboters beim Zuruckfahren in seine Startpositionmoglich! Die Stellgroßen mussen daher mit großer Vorsicht gewahlt werden!

Beispiel 1: Angabe der vollstandigen Koordinaten

r.point(t = 1, X = 650, Y = 0, Z = 200, A = 0, B = 0, C = 0)r.point(t = 2, X = 950, Y = 200, Z = 300, A = 0, B = 0, C = 8)r.point(t = 3, X = 950, Y = 200, Z = 300, A = 0, B = 8, C = 0)r.point(t = 4, X = 650, Y = 0, Z = 200, A = 0, B = 0, C = 0)

Beispiel 2: Angabe der sich andernden Achsen

F – 9

Page 10: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

X-Achse Y-Achse Z-Achse Winkel A Winkel B Winkel Cmin 600 mm -500 mm 150 mm -20◦ -10◦ -20◦

max 1000 mm 500 mm 800 mm 20◦ 20◦ 20◦

Tabelle 1: Arbeitsraum

r.point(t = 1, X = 650, Y = 0, Z = 200)r.point(t = 2, X = 950, Y = 200, Z = 300, C = 8)r.point(t = 3, C = 20, B = 8, C = 0)r.point(t = 4, X = 650, Y = 0, Z = 200, B = 0)

Beispiel 3: Angabe der Koordinaten im ’float’ Format

r.point(t = 1.2, X = 650. , Y = 0, Z = 200.)r.point(t = 2.0, X = 900.5, Y = 0, Z = 300.5)r.point(t = 2.5, X = 650. , Y = 0, Z = 200.)

Schreiben Sie nun verschiedene Programmablaufe und analysieren Sie das dynamische Ver-halten des Roboters. Um Kollisionen mit dem Boden oder dem Roboter zu vermeiden, wurdefur die Systemanalyse ein quarderformiger Arbeitsraum, der in Tabelle 1 definiert ist, ange-legt. Trotz der Einschrankungen ist eine Kollision des Roboters mit sich selbst, aber auch mitdem Hallenboden nicht ausgeschlossen, da der Bahnweg des Roboters zwischen verschiede-nen Punkten nicht bekannt ist.

Nach Ablauf des Programmes offnen sich selbsttatig drei Fenster die den Verfahrweg uberdie Zeit in allen drei Koordinatenachsen visualisieren.

Abbildung 4 zeigt exemplarisch den zuruckgelegten Weg in der Z-Komponente eines zuvorausgefuhrten Programms. Die Große und der Zeitpunkt der Stellsignale werden durch rotePunkte gekennzeichnet. Die Angabe der Position erfolgt in mm die der Zeit in s. VerwendenSie fur das Ablesen der Verzogerungszeit ggf. auch den Zoom um ein moglichst genauesErgebnis zu erzielen.

4.2.2 Fragen

Beantworten Sie mit Hilfe ihrer Erfahrung, die Sie durch programmieren und analysierenverschiedener Programmablaufe gesammelt haben, folgende Fragen:

1. Wo befinden sich die Drehachsen fur die Winkel A, B und C?

2. Beeinflussen alle Winkel die Flugkurve des Balls?

3. Was ist der Zusammenhang zwischen Bewegungskurve und Geschwindigkeit des Ro-boters?

4. Warum ist die Ermittlung der Verzogerungszeit T0 notwendig?

5. Wie groß ist die Verzogerungszeit T0?

F – 10

Page 11: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Abbildung 4: Z-Koordinate

6. Hangt die Verzogerungszeit von der Roboterposition (Randbereiche) ab?

7. Wie ist das Systemverhalten bei Stellsignalen in sehr kurzen Abstanden?

Notizen:

F – 11

Page 12: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

b

b

vi

ri

ϕv,i

rsrs,ϕs r,ϕRegler für

vertikale Reflexion

Tracker / Prädiktor

Sample / Hold Roboter

Bildverarbeitung Physik des Balles

+

ti

∆z

Impulsregler

Abbildung 5: Blockschaltbild mit 2 Reglern. Verzogerunszeit T0 steckt im Impulsregler

5 Regelung des Industrieroboters

Um die Stabilitat des Systems aus Tischtennisball und Roboter zu gewahrleisten, ist einefortlaufende Regelung notig. Die auf den Tischtennisball einwirkende Stellgroße ist derTischtennisschlager bzw. die Bewegung des Roboters. Da die Geschwindigkeit des Tisch-tennisschlagers durch das komplexe Systemverhalten des Roboters und dem Wunsch nacheiner moglichst langen Flugzeit des Balls als Regelgroße ausscheidet, erfolgt die Regelungausschließlich uber die Winkel des Tischtennisschlagers. Diese mussen fur jeden Aufpralldes Tischtennisballs auf den Tischtennisschlager neu berechnet werden. Eine Regelung desTischtennisballs ist nur in der horizontalen Ebene vorgesehen.

Abbildung 5 zeigt den schematischen Aufbau der Regelung des Ping-Pong-Roboters wieer am Ende dieses Kapitels aussehen soll. Viele der Komponenten sind gleich wie in dervereinfachten Abbildung 2. Wahrend der Flugphase des Tischtennisballs ermittelt ein Ste-reokamerasystem mit einer Bildrate von 60 Hz die Ballposition b und speichert diese. ImAnschluss wird die Ballposition aus der detektierten Position des Balls in den jeweiligenKamerabildern uber Triangulation ermittelt. Da es sich bei der ermittelten Position um einenSchatzwert handelt wird dieser als b bezeichnet. Bei der Berechnung der Ballposition ste-hen nur Bilder an diskreten Zeitpunkten zur Verfugung, was zu einer Diskretisierung derBallposition fuhrt.

Da der Roboter schon in der Flugphase des Tischtennisballs ausgerichtet werden muss, isteine Vorhersage (Pradiktion) der Auftreffposition, Auftreffgeschwindigkeit und des Auftreff-zeitpunkts notig. Diese Pradiktion erfolgt durch ein Kalmanfilter. Das Kalmanfilter schatztmit Hilfe der 3D-Messpunkte aus der Bildverarbeitung die Parameter eines Systemmodells,welches die Flugbahn des Tischtennisballs beschreibt. Setzt man diese Parameter in das Sy-stemmodell ein, konnen die Auftreffposition ri, Geschwindigkeit vi und Zeitpunkt ti vor-hergesagt werden. Der Index i steht fur das englische Wort impact (auftreffen).

Die regelnde Komponente ist in diesem Schaubild im Detail dargestellt und setzt sich auszwei Reglern zusammen. Als erstes betrachten wir den Impulsregler. Er erhalt als Eingangs-

F – 12

Page 13: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

T∆

Stellsignal-Up

Stellsignal-Down

Abbildung 6: Zeit ∆T zwischen Stellsignalen

große ti und hat zwei freie Parameter: T0 und δz. Die Ausgangsgroße des Impulsreglersberechnet sich nach Formel (1).

∆z =

(t− (ti − T0)

)− σ

(t− (ti − T0 + ∆T )

)]δz (1)

Dieser Regler verandert die Sollposition des Roboters entlang der Z-Achse. Zur Zeit t − T0vor dem geschatzten Auftreffen soll der Roboter mit einer Impulsbewegung entlang der Z-Achse beginnen, damit er beim Auftreffen seine maximale Geschwindigkeit erreicht hat.Das optimale T0 wurde im letzten Abschnitt experimentell ermittelt. Danach soll er sofortwieder nach unten fahren um den nachsten Schlag abzuwarten. Dazu wird das Z-Stellsignal∆T Sekunden spater wieder um δz verringert. Das Stellsignal fur die Abwartsbewegungwird bereits wahrend der Aufwartsbewegung an den Roboter ubermittelt. Der Roboter fahrthierbei in Z-Richtung eine parabelformige Bahn deren Zenit δz uber ihrem Startwert liegt(Abbildung 6).

Der zweite Regler ist fur die vertikale Reflexion verantwortlich und soll im Folgenden im-plementiert werden. Sein Eingang ist die geschatzte Auftreffgeschwindigkeit vi, aus derenKomponenten der Regler die fur den Tischtennisschlager einzustellenden Winkel berechnet,um den Ball vertikal nach oben zu spielen. Ausgangsgroße des Reglers sind daher die Win-kel des Tischtennisschlager A, B, und C, welche zu einem Vektor ϕv,i (Indizes stehen furVertikale Reflexion bei Impact) zusammengefasst wurden.

5.1 Jonglieren eines Tischtennisballs

Bevor eine Regelung des Tischtennisballs in eine optimale Position stattfinden kann, mussder Tischtennisball durch den Roboter angenommen und eine gewisse Zeit in der Luft ge-halten werden. Der Ball muss folglich zunachst senkrecht nach oben gespielt werden. Da

F – 13

Page 14: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

X - Achse

Z - A

chse

Ball

Abbildung 7: Tischtennisball

der Tischtennisball einen sich mit der Zeit t verandernden Geschwindigkeitsvektor v(t) be-sitzt, muss dieser zunachst durch das Kalmanfilter ermittelt werden. Mit dieser Informationkann der Pradiktor eine Schatzung der Auftreffgeschwindigkeit vornehmen. Dieser dreidi-mensionale Geschwindigkeitsvektor stellt die Basis fur die Berechnung der einzustellendenTischtennisschlagerwinkel dar. Es mussen hierfur nur die Winkel bestimmt werden, welcheein Verdrehen um die X- oder Y-Achse bewirken (horizontale Achsen). Der dritte Winkel,welcher das Verdrehen des Tischtennisschlagers um die Z-Achse (vertikale Achse) bewirkt,kann als konstant angenommen werden, da dieser keine Einwirkungen auf den reflektiertenGeschwindigkeitsvektor des Balls hat.

5.1.1 Aufgabe (schriftlich vorzubereiten)

Winkelberechnung: Abbildung 7 zeigt den Tischtennisball kurz vor dem Auftreffen auf denTischtennisschlager. Aus Grunden der Ubersicht wurde auf eine dreidimensionale Darstel-lung verzichtet. Der Ball zeigt beim Auftreffen auf den Schlager naherungsweise das gleicheVerhalten wie es ein Koper beim elastischen Stoss zeigt. D.h. auch hier kann das Reflexions-gesetz (Einfallswinkel = Ausfallswinkel) angewendet werden.

vsoll = v − 2(vTn) n (2)

Der Einfallswinkel entspricht dem Winkel zwischen dem Normalenvektor n des Tischten-nisschlagers und dem Geschwindigkeitsvektor v des Balls. Der Ausfallswinkel entsprichtdem Winkel zwischen Normalenvektor n des Tischtennisschlagers und dem nach oben ge-richteten Einheitsvektor vsoll.

F – 14

Page 15: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Zeigen Sie mit Hilfe des Reflexionsgesetz, dass gilt:

n =vsoll − v√

2(||v||2 − vTvsoll)(3)

B = arctannx

nz

, C = arctanny

nz

, wobei n = (nx, ny, nz)T (4)

Hinweis: Erweitern Sie Gleichung (2) mit vT und ersetzen Sie dann vTn in der ursprungli-chen Gleichung (2).

Notizen:

Implementierung der vertikalen Reflexion: Offnen Sie das Programm Desktop\pprobot\pprobot.py und implementieren Sie den von ihnen gefundenen physikali-schen Sachverhalt an den markierten Stellen. Da der Roboter eine Winkelangabe in Gradbenotigt ist ggf. eine Umrechnung notig. Starten Sie im Anschluss mit Hilfe des Betreuersdas Programm Desktop\pprobot\pprobot.py sowie den Roboter und prufen Sie, obder Roboter die von ihnen zugeworfenen Tischtennisballe korrekt nach oben spielt. Es istfur diese Aufgabe sinnvoll, T0 = 0 zu setzen, da so das Verhalten des Balles mit wenigerStoreinfluss zu sehen ist.

Die von ihnen fur das Programm benotigten Python Befehle bzw. Funktionen sind:

• atan2(a,b) - Berechnet den Arcustangens

• pi - π

• (x)**.5 - Berechnet die Quadratwurzel von x

F – 15

Page 16: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

Informationen zur Python Hilfe oder dem Arbeiten mit Vektoren und Matrizen konnen demAnhang entnommen werden.

Implementierung der Verzogerungszeit: Sobald die Berechnung der Winkel fur den Tisch-tennisschlager des Roboters korrekt erfolgt, kann der Roboter bewegt werden. Hierfur istdie Implementierung der von ihnen ermittelten Verzogerungszeit T0 erforderlich. Imple-mentieren Sie im Programm Desktop\pprobot\pprobot.py die von ihnen ermittelteVerzogerungszeit an der markierten Stelle. Starten Sie den Roboter erneut und testen Sie ihrErgebnis. Der Roboter sollte den Ball einige Male jonglieren, bevor dieser den Arbeitsraumverlasst.

5.2 Parameter eines PID Reglers

In der zuvor bearbeiteten Aufgabe wurde der Tischtennisball bisher senkrecht nach obenjongliert. Unbekannte Storgroßen – wie zum Beispiel der Drall des Balles – und Schatzfeh-ler bringen eine Abweichung in die Flugbahn des Balles. Da der Roboter aber nur einen sehrbeschrankten Armradius hat verliert er den Ball schnell: das System ist also instabil. Um denBall in einem optimalen Abstand fur den Roboter zu halten ist eine zusatzliche Regelungnotwendig. Aufgabe der neuen Regelung ist es, den Tischtennisball in eine Position zu re-geln, in der der Roboter uber einen großen Dynamikbereich in seinen Bewegungen verfugtund so auch große Storungen ausregeln kann.

Neben der Stabilitat werden zudem Anforderungen an Schnelligkeit, Dampfung und sta-tionare Genauigkeit gestellt. Diese Randbedingungen sollten moglichst optimiert werden,bzw. mussen eine bestimmte Gute erfullen.

Fur den Reglerentwurf und die Ermittlung der Regelparameter ist fur gewohnlich eine Mo-dellierung der Strecke (Prozess) notwendig. Das Zusammenwirken aus Ball und Roboterfuhrt aber auf ein sehr komplexes Systemverhalten, welches eine Identifikation des Prozes-ses erschwert. Es steht daher fur die Regelung kein Modell der Strecke zur Verfugung. Trotzder fehlenden Ubertragungsfunktion soll aber ein Regler ausgewahlt werden, der den An-forderungen nach Stabilitat, Schnelligkeit und stationarer Genauigkeit genugt. Prinzipiellkonnten verschiedenste Regler zum Einsatz kommen. Um dem Verlangen nach stationarerGenauigkeit entgegen zu kommen sollten diese (auch wenn nicht zwingend notwendig) uberein I-Glied (Integrierglied) verfugen. Ein reiner I-Regler eignet sich aber nur bedingt, dadie Stabilitat des Regelkreises nur unter bestimmten Randbedingungen gegeben ist und erzudem sehr langsam ist.

Um die Vorteile des I-Glieds zu nutzen, kann dieses mit den Eigenschaften anderer Reg-ler kombiniert werden. Eine Moglichkeit besteht darin das I-Glied mit einem P-Glied zukombinieren. Das P-Glied (Proportionalglied) dient hierbei als Verstarkung und beschleu-nigt den Regelkreis. Weitere Glieder die in der Regelungstechnik zum Einsatz kommen sindD-Glieder (Differenzierglied). Ein D-Glied reagiert schnell auf Anderungen am Eingang undist als alleiniger Regler nicht geeignet.

Da die zu regelnde Strecke nicht bekannt ist mussen die Parameter des Reglers empirischermittelt werden. Um ein moglichst breites Spektrum an Moglichkeiten der Regelung zuerreichen, bietet sich der Einsatz eines PID-Reglers an. Dieser besteht aus der Kombination

F – 16

Page 17: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

b

b

ti

vi

ri

ϕv,i

∆ϕ

ϕs

rs

∆z

rs,ϕs r,ϕ

r

ri,soll

Regler für vertikale Reflexion

PID

Tracker / Prädiktor

Sample / Hold Roboter

Bildverarbeitung Physik des Balles

+

+

+

Impulsregler

Abbildung 8: Regelkreise mit allen drei Reglern

von jeweils einem P-,I- und D-Glied. Auch wenn dieser ggf. nicht die optimale Regelung lie-fert, kann die Anpassung des Systems uber verschiedene Parameter erfolgen und so schnellerein akzeptables Ergebnis liefern.

Abbildung 8 zeigt die Implementierung des zusatzlichen Reglers. Er nimmt als Eingang denUnterschied zwischen der Ist-Auftreffposition und der Soll-Auftreffposition in mm und gibtals Ausgang eine Veranderung der Stellwinkel weiter. Diese werden direkt auf das Ergebnisdes Reglers fur vertikale Reflexion aufaddiert und so an das Sample / Hold Glied weitergegeben.

Da es sich um ein zeitdiskretes System handelt, muss dieses durch einen zeitdiskreten PID-Regler geregelt werden. Die Stellgroße ∆ϕ des PID-Reglers berechnet sich fur die X-Achsezu:

∆ϕ = PG ·∆x+ IG

N∑0

∆x ·∆t+DG∆xcurrent −∆xlast

∆t(5)

∆x ist hierbei der Eingang, ∆t bezeichnet die Diskretisierungseinheit der Zeit.

5.2.1 Aufgabe

Da die Parameter des PID-Reglers nicht auf analytischem Wege bestimmt werden konnen,sollen diese durch experimentelles Vorgehen ermittelt werden. Offnen Sie hierfur das Pro-gramm Desktop\pprobot\pprobot.py mit einem Editor und geben Sie plausibleWerte ein. Starten Sie (nur unter Aufsicht des Betreuers) den Roboter und beobachten Siedas Verhalten des Roboters. Analysieren Sie den Einfluss der verschiedenen Parameter undversuchen Sie durch Verandern der Parameter eine moglichst optimale Regelung zu gewahr-leisten.

F – 17

Page 18: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

5.2.2 Fragen

Beantworten Sie folgende Fragen mit Hilfe der Erfahrungen, welche Sie durch das Expe-rimentieren mit dem PID-Regler gesammelt haben. Achten Sie insbesondere auf den Ein-schwingvorgang (z.B. Uberschwinger).

1. Welche Storgroßen wirken auf das System ein?

2. Welche Großenordnung erwarten Sie fur die Paramter ’P’, ’I’ und ’D’?

3. Welchen Einfluss haben die Parameter ’P’, ’I’ und ’D’ auf das Verhalten des Systems?

4. Warum ist ein PID-Regler fur diese Regelungsaufgabe geeignet?

5. Welche Werte haben Sie fur die Parameter P, I und D ermittelt?

Notizen:

F – 18

Page 19: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

A Programmieren mit Python

A.1 Datentypen und Operatoren

Python verfugt uber eine Vielzahl verschiedener Datentypen. Die in diesem Versuch amhaufigsten verwendeten Datentypen konnen Tabelle 2 entnommen werden. Bei der Dekla-ration einer Variablen ist es, im Gegensatz zu Programmiersprachen wie z.B. C++, nichtnotwendig den Datentyp der Variable zu definieren. Python kann dynamisch den Datentypeiner Variable erkennen und diesen im spateren Verlauf sogar andern.

Die folgenden Beispiele zeigen, worauf beim Arbeiten mit verschiedenen Datentypen zuachten ist:

Beispiel 1: Integer

>>> 7/2 #Division mit Datentyp integer3

Da es sich bei den Zahlen 7 und 2 um Zahlen des Typs Integer handelt, folgt auch eineAusgabe vom Typ Integer; d.h. die Zahl wird immer abgerundet.

Beispiel 2: Float und Integer

>>> 7./2 #Division mit Datentyp float und integer3.5>>> 7/2. #Division mit Datentyp integer und float3.5

Auch wenn nur eine Zahl vom Typ float ist, ist das Ergebnis mathematisch korrekt.

A.2 Bibliotheken und Hilfe

Fur das Arbeiten mit Grafiken, mathematischen Funktionen oder Matrizen kann auf ein brei-tes Spektrum an Bibliotheken zuruckgegriffen werden. In diesen Bibliotheken sind bereitsdiverse Funktionen definiert und konnen in Programme eingebunden werden.

Integer a = 1 Ganze ZahlenFloat b = 0.1 GleitkommazahlenString c = ’Hallo’ ZeichenketteList l = [1, 2, 3] Veranderbare Liste

Tabelle 2: Datentypen

F – 19

Page 20: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

A.2.1 Bibliotheken

Da es fur Python eine Vielzahl verschiedener Bibliotheken gibt, werden im Folgenden dieWichtigsten kurz vorgestellt.

numpy: Stellt Funktionen und Operatoren fur das Arbeiten mit Matrizen zur Verfugung.Haufig importierte Funktionen sind: array, cross, dot, empty, zeros, identity und diag.

math: Bietet ein breites Spektrum an mathematische Funktionen und Operatoren an. Haufigimportierte Funktionen sind: pi, atan, atan2, cos, sin, sqrt.

matplotlib: Ermoglicht das Erstellen von dynamischen Plots.

Beispiel: Importieren aus Bibliotheken

>>> from numpy import array, dot, cross>>> a = array([1,2,3]) #Vektor a>>> b = array([3,2,1]) #Vektor b>>> cross(a,b) #Vektorproduktarray([-4, 8, -4])>>> dot(a,b) #Skalarprodukt10

Mochte man alle Funktionen von z.B. NumPy importieren kann man auch from numpyimport * eingeben. Dies funktioniert analog fur andere Bibliotheken.

A.2.2 Python Hilfe

Um die Funktionsweise eines Befehls zu erfahren, kann zudem auf die Python Hilfe zuruck-gegriffen werden. Geben Sie hierfur help(Befehl) in die Python Konsole (offnet sichbeim Starten des Editors IDLE) ein. Sollte eine Fehlermeldung erscheinen z.B. Object‘atan2‘ not found muss die Funktion ggf. noch importiert werden.

Beispiel: Hilfe

>>> from math import atan2>>> help(atan2)Help on built-in function atan2 in module math:

atan2(...)atan2(y, x)

Return the arc tangent (measured in radians) of y/x.Unlike atan(y/x), the signs of both x and y are considered.

A.3 Ein- und Ausgabe

Fur die Ausgabe gibt es in Python den Befehl ”print“.

F – 20

Page 21: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

>>> a=2>>> print a2>>> a = "Hallo">>> print aHallo

Bei der Eingabe muss der Datentyp spezifiziert werden.

>>>a = raw_input() #Eingabe fur StringsHallo>>>b = int(raw_input()) #Eingabe fur integer2>>>print aHallo>>>print b2

A.4 Beispiele fur Verzweigungen und Schleifen

Beispiel: if Anweisung

>>> x = int(raw_input("Gib eine Zahl ein: "))>>> if x < 0:... x=0... print ("Negative Zahl zu Null geandert.")... elif x == 0:... print "Null!"... else:... print "Positive Zahl!"...

Beispiel: for Anweisung

>>> i = 0>>> for i in range(10):... i +=1... print i

Mit der Funktion range kann eine Sequenz von ganzen Zahlen erzeugt werden.

Beispiel: while Anweisung

>>> a, b = 0, 1>>> print a>>> while b < 10:... print b... a, b = b, a+b #Fibonacci Folge

F – 21

Page 22: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

A.5 Funktionen

Funktionen werden in Python durch das Schlusselwort ”def“ definiert. Wichtig: Alle Linieneiner Funktion mussen dieselbe Einruckung haben!

Beispiel: Funktionen

>>> def Skalarprodukt(a,b):... res = a[0]*b[0]+a[1]*b[1]+a[2]*b[2]... return res

>>> from numpy import array, dot>>> a = array([1,2,3])>>> b = array([1,2,3])>>> Skalarprodukt(a,b)14>>> dot(a,b)14

Fur die Definition kleiner Funktionen kann auch eine Closure (kurze, namenlose Funktion)eingesetzt werden. Diese werden in Python mit dem Schlusselwort lambda definiert. Wich-tig: Die Lambda-Closures beinhaltet, im Gegensatz zu gewohnlichen Funktionen keinen re-turn Aufruf

Beispiel: Lambda Closure

>>> addition = lambda a,b: a+b>>> addition(2,3)5>>> Skalarprodukt = lambda a, b: a[0]*b[0]+a[1]*b[1]+a[2]*b[2]>>> from numpy import array, dot>>> a = array([1,2,3])>>> b = array([1,2,3])>>> Skalarprodukt(a,b)14>>> dot(a,b)14

A.6 Vektoren und Matrizen

Mochte man Vektoren oder Matrizen darstellen, so mussen ggf. Bestandteile der numpyBibliothek importiert werden.

Beispiel: Erstellen von Vektoren und Matrizen

>>>from numpy import array>>>a = array([1,2,3]) #Vektor mit 3 Elemten

F – 22

Page 23: Dynamische Regelung eines Industrieroboters in Echtzeit · nem Kuka KR5 Sixx Roboter (Aktuator) und einem Rechner auf dem die Signalverarbeitung und Regelung stattfindet. Der Aufbau

>>>a[0] #Zugriff auf das 1. Element1>>> b = array([[1,2,3],[1,2,3],[1,2,3]]) #Matrix>>> barray([[1, 2, 3],

[1, 2, 3],[1, 2, 3]])

Beispiel: Transponierte Vektoren und Matrizen

>>>from numpy import array>>>b = array([[1,2,3],[1,2,3],[1,2,3]]) #Matrix>>>barray([[1, 2, 3],

[1, 2, 3],[1, 2, 3]])

>>>b.Tarray([[1, 1, 1],

[2, 2, 2],[3, 3, 3]])

Beispiel: Matrix Multiplikation

>>>from numpy import eye, dot, array>>>b = array([[1,2,3],[1,2,3],[1,2,3]])>>>c = eye(3) # erzeugt eine 3x3 Einheitsmatrix>>>dot(b,c)array([[ 1., 2., 3.],

[ 1., 2., 3.],[ 1., 2., 3.]])

>>>b*carray([[ 1., 0., 0.],

[ 0., 2., 0.],[ 0., 0., 3.]])

b*c ist die Hadamard (Elementweise) Multiplikation.

F – 23