Leistungsnachweis der Fächer Neuronale Netze und Genetische Algorithmen erstellt von Maik Büttner ([email protected]) Peter Magyar ([email protected]) 0. Inhaltsverzeichnis Leistungsnachweis der Fächer Neuronale Netze und Genetische Algorithmen .............................. 1 0. Inhaltsverzeichnis ..................................................................................................................... 2 1. Für wen dieses Programm und die Dokumentation erstellt wurde .......................................... 3 2. Problembeschreibung ............................................................................................................... 3 3. Herangehensweise und Probleme............................................................................................. 3 3.1. Das Robotermodell ............................................................................................................ 3 3.2. Die Trajektorie .................................................................................................................. 3 3.3. Definition der Hindernisse ................................................................................................ 3 3.4. Die Kollisionserkennung ................................................................................................... 4 4. Konkretisierung und Einschränkungen des verwendeten Modells .......................................... 4 4.1. Das Robotermodell ............................................................................................................ 4 4.2. Definition der Hindernisse ................................................................................................ 5 4.3. Die Kollisionserkennung ................................................................................................... 5 5. Die Trajektorienermittlung ....................................................................................................... 6 5.1. Der genetische Algorithmus .............................................................................................. 7 5.1.1. Die Wegfindung ......................................................................................................... 7 5.1.2. Der Hauptzyklus der Wegfindung............................................................................ 10 5.1.3. Der Hauptzyklus der Wegoptimierung..................................................................... 11 5.1.4. Grenzen des Verfahrens ........................................................................................... 12 5.2. Das neuronale Netz ......................................................................................................... 14 5.2.1. Die Netzarchitektur .................................................................................................. 14 5.2.2. Der Aufbau des Netzes und der Lernalgorithmus .................................................... 15 6. Benutzerdokumentation ......................................................................................................... 18 6.1. Vorbemerkung über den Unterschied zwischen Hindernisdatei und Szenariodatei ....... 18 6.2. Das Programm ................................................................................................................. 18 6.2.1. Wegfindung .............................................................................................................. 18 6.2.2. 3D Darstellung ......................................................................................................... 18 6.2.3. Szenarioeditor........................................................................................................... 19 6.3. Systemvoraussetzungen .................................................................................................. 19 7. Entwicklerdokumentation ...................................................................................................... 19 8. Begriffserklärungen ................................................................................................................ 25 9. Quellen ................................................................................................................................... 25 2 1. Für wen dieses Programm und die Dokumentation erstellt wurde Dieses Programm wurde im Rahmen eines Leistungsnachweises für die Fächer Neuronale Netze und Genetische Algorithmen erstellt. Zum Verständnis sind grundlegende Kenntnisse in diesen beiden Fachgebieten notwendig. Dieses Dokument, sowie das Programm stellen keinen Anspruch auf eine professionelle und korrekte Lösung, sondern sollen einen möglichen Lösungsansatz beschreiben. 2. Problembeschreibung Ein Industrieroboter soll selbstständig den Weg von einer Stellung A in eine Stellung B finden. Dabei sollen im Raum befindliche Hindernisse beachtet und ohne Kollisionen umgangen werden. Für die dafür notwendige Trajektorienplanung sollen zum einen die Möglichkeiten des genetischen Algorithmus, zum anderen die eines neuronalen Netzes untersucht werden. 3. Herangehensweise und Probleme 3.1. Das Robotermodell Da in diesem Projekt nicht an einem realen Roboter gearbeitet werden konnte, war der erste Schritt der Entwurf eines mathematischen Modells eines Roboters. Ein Industrieroboter besteht in der Regel aus Segmenten die durch N Gelenke miteinander verbunden sind. Die Anzahl seiner Gelenke bestimmt seinen Umfang an Möglichkeiten sich im Raum zu bewegen und damit auch die Fähigkeit Hindernissen auszuweichen. Eine große Anzahl an Gelenken erhöht die Bewegungsfreiheit erheblich. Allerdings erhöht sich mit jedem zusätzlichen Gelenk auch der Aufwand zur Berechnung von Trajektorien erheblich, da sich der Konfigurationraum mit jedem Gelenk um eine Dimension vergrößert. Der Bereich zwischen minimalem und maximalem Gelenkwinkel stellt ein analoges Intervall dar. Dieses kann auf einem Computer nicht verlustfrei abgebildet werden. Es ist notwendig dieses Intervall auf ein definiertes Intervall 0...M zu skalieren. Ein hoher Wert von M ermöglicht eine exaktere Konfiguration des Roboterarmes. Dies benötigt aber auch mehr Speicherplatz und Rechenleistung, da jeder diskrete Wert aus diesem Intervall einen möglichen Punkt der zugehörigen Dimension im Konfigurationsraum darstellt. Der analoge Ndimensionale Konfigurationsraum wird somit auf einen diskreten N-dimensionalen Konfigurationsraum der N Größe M abgebildet. 3.2. Die Trajektorie Eine Trajektorie von einem Start- zu einem Zielpunkt wird aus oben genannter Betrachtungsweise heraus als eine Folge von benachbarten Punkten im Konfigurationsraum verstanden. 3.3. Definition der Hindernisse Soweit sie sich mathematisch erfassen lassen, sind hier alle möglichen Arten von Hindernissen vorstellbar. Allerdings lassen sich selbst extrem komplexe Hindernisse leicht durch eine Zusammensetzung von primitiven Grundkörpern wie Kugel, Würfel oder Quader darstellen. 3 3.4. Die Kollisionserkennung Für jede Stellung des Roboterarmes muss festgestellt werden können, ob es in dieser Lage eine Kollision mit einem Hindernis geben würde. Für die Kollisionsdetektion müssen nun entweder die Hindernisse in den Winkelraum, oder der Roboter in den Ortsraum übertragen werden. Das Übertragen von Hindernissen in den Winkelraum erweist sich bei näherer Betrachtung schon bei eindimensionalen Objekten als äußerst aufwendig und komplex. Deshalb erscheint es einfacher, über die Winkelkonfiguration des Roboters seine Lage im Ortsraum zu ermitteln und dort auf Kollisionen mit den Hindernissen zu testen. 4. Konkretisierung und Einschränkungen des verwendeten Modells 4.1. Das Robotermodell Um möglichst reale Probleme lösen zu können, ist es sinnvoll einen Roboter mit wenigstens drei Gelenken zu verwenden, der sich im dreidimensionalen Ortsraum bewegt. Die Bewegungsfreiheit des Roboterarmes wird durch folgende Gelenke gewährleistet: ein Torsions- und ein Rotationsgelenk am Fußpunkt, sowie ein Rotationsgelenk zwischen den beiden Armsegmenten. Um das Robotermodell realistischer zu gestalten, wurde die Bewegungsfreiheit der Gelenke willkürlich eingeschränkt. So kann sich das Torsionsgelenk im Bereich von 0 bis 360 Grad bewegen. Das Rotationsgelenk am Fußpunkt kann Stellungen zwischen 10 und 170 Grad gegenüber der Bodenebene einnehmen. Beim Rotationsgelenk zwischen den Segmenten sind Winkel zwischen 20 und 180 Grad gegenüber dem ersten Segment möglich. Durch die Verwendung von acht Bit zur Kodierung eines Winkels ergibt sich ein Konfigurationsraum von 256³ Punkten. Eine Suche von Trajektorien in diesem Raum kann mit einem normalen PC noch durchgeführt werden, falls das Szenario nicht zu komplex ist. Eine Stellung bzw. Konfiguration des Roboterarmes ergibt sich somit aus einem Tripel von Winkeln im Bereich 0 bis 255. Die Auflösung des ersten Winkels beträgt dadurch 1,40625 Grad, des zweiten und dritten 0,625 Grad. y l2 β2 x z l1 β1 α dreidimensionale Veranschaulichung des Roboters: l1, l2 Armsegmente des Roboters α Torsionswinkel am Fußpunkt β1, β2 Rotationswinkel am Fußpunkt und zwischen den Armsegmenten 4 4.2. Definition der Hindernisse Die Hindernisse bestehen ausschließlich aus Quadern, deren Begrenzungsflächen parallel zu den Raumebenen liegen. Da sich jeder komplexe Körper zumindest näherungsweise auch aus Quadern aufbauen lässt, stellt dies keine zu große Einschränkung dar, vereinfacht aber die Implementierung erheblich. 4.3. Die Kollisionserkennung Durch die für die Hindernisse und den Roboterarm vorgenommenen Einschränkungen ergibt sich eine recht einfache Kollisionserkennung, die in folgender Grafik dargestellt ist. Dabei wird jedes der Armsegmente des Roboters einzeln betrachtet. Die Hindernisse bestehen aus einzelnen Flächen, die zur Kollisionserkennung verwendet werden. Es wird also für jedes Armsegment einzeln jede einzelne Begrenzungsfläche jedes Hindernisses betrachtet. Nachfolgend ist der schematische Ablauf der Kollisionserkennung für ein Armsegment mit dessen beiden Endpunkten dargestellt. Dieser wird für jede Begrenzungsfläche jedes Hindernisses durchlaufen. Mit unendlicher Ebene ist die betrachtete Begrenzungsebene des Hindernisses ohne deren räumliche Einschränkungen gemeint. Beide Punkte auf gleicher Seite der unendlichen Ebene? 1 keine Kollision 0 Beide Punkte außerhalb der unendlichen Ebene? 1 Durchstoßpunkt der Verbindungsgerade der Punkte innerhalb begrenzter Ebene? 1 0 Kollision keine Kollision 0 Beide Punkte innerhalb der unendlichen Ebene? 1 Schneidet die Verbindungsgerade der Punkte die begrenzte Ebene? 1 0 Kollision keine Kollision 0 Ein Punkt innerhalb der unendlichen Ebene? 1 Liegt der Punkt innerhalb begrenzter Ebene? 1 0 0 keine Kollision 5 Kollision keine Kollision Nachfolgend noch eine kurze schematische Darstellung über die mathematischen Grundlagen der Kollisionserkennung. Endpunkte eines Armsegmentes unendliche Ebene Liegen beide Endpunkte eines Armsegmentes auf der gleichen Seite der unendlichen Ebene, ist keine Kollision möglich. begrenzte Ebene Liegen Anfangs- und Endpunkt auf unterschiedlicher Seite der unendlichen Ebene, kann eine Kollision auftreten. Kollision? B P1 A C P2 Liegt ein Durchstoßpunkt innerhalb der unendlichen Ebene, kann eine Kollision auftreten. Dafür wird mit Hilfe eines beliebigen Punktes A außerhalb der unendlichen Ebene eine Pyramide aufgespannt, deren Grundfläche die begrenzte Ebene ist. Links ist die Seitenansicht zu sehen. Der Durchstoßpunkt P1 liegt innerhalb der Begrenzungsebene, da die Normalenvektoren der Seitenflächen in die Pyramide zeigen. Der Punkt P2 liegt außerhalb, da nicht alle Vektoren nach innen zeigen. Dies muss für jede der vier Pyramidenseitenflächen durchgeführt werden. Somit kann für jede Winkelstellung, die der Roboter einnimmt, berechnet werden ob eine Kollision auftritt. Führt man diese Kollisionsdetektion für jeden Punkt des Konfigurationsraumes aus und weist jedem Punkt noch die Information hinzu ob es eine Kollision gibt, erhält man den eindeutigen Kollisionsraum für dieses Szenario. 5. Die Trajektorienermittlung Das Ergebnis der Trajektorienermittlung soll eine Folge von kollisionsfreien Winkelstellungen sein, die die Start- und Zielkonfiguration verbindet. Dabei muss natürlich auch gewährleistet werden, dass der Übergang zwischen zwei aufeinander folgenden Winkelstellungen ebenfalls kollisionsfrei ist. Da die Kollisionsprüfung 6 aber nur statisch für eine einzelne Konfiguration vorgenommen werden kann, sollten aufeinander folgende Punkte der Trajektorie, benachbarte Punkte im Konfigurationsraum darstellen. Benachbart heißt hier, dass sie einen euklidischen Abstand von einer Einheit im orthogonalen Kollisionsraum haben. 5.1. Der genetische Algorithmus Für die Wegfindung mittels eines genetischen Algorithmus werden die Winkelstellungen als Bitfolge kodiert. Für die Kodierung der Winkelstellungen wird Gray-Code benutzt, dabei ist aber jeder Winkel einzeln kodiert. Somit ergibt sich als Gen ein 24 Bit großer Vektor, der die drei Winkel und damit einen Stützpunkt repräsentiert. Die Gründe für die Verwendung eines mehrparametrigen Genes sind in der Implementierung zu suchen, da sich so die drei Winkel in einer einzigen Variablen darstellen lassen. Dadurch sind Crossover und Mutation einfacher zu implementieren. Das Chromosom besteht aus einer Sequenz von Genen und stellt die Trajektorie von A nach B dar. Die Sequenzlänge kann dabei für jedes Individum verschieden sein und sich auch im Laufe der Generationen durch Mutation verändern. Die Punkte A und B werden nicht mit kodiert, weil diese sich nicht ändern. Da eine Trajektorie aus benachbarten Punkten bestehen soll, würde sich für weit entfernte Start- und Zielpunkte ein extrem langes Chromosom ergeben. Dies würde den Suchraum stark vergrößern und wäre auf einem realen Computer nicht mehr zu berechnen. Deshalb werden mit jedem Gen nur Stützpunkte kodiert, der Weg dazwischen interpoliert und ebenfalls auf Kollisionen überprüft. Die Wegfindung erfolgt in zwei Schritten, dem Finden eines kollisionsfreien Weges und der Optimierung dieses Weges bezüglich dessen Länge. Prinzipiell könnten beide Schritte in einem Algorithmus kombiniert werden. Allerdings beeinflusst die Zielsetzung der Optimierung die Konvergenzgeschwindigkeit der Wegfindung negativ. Um ein Hindernis umgehen zu können, ist es meist erforderlich, die Pfadlänge zu erhöhen. Dem steht aber die Minimierung der Länge bei der Optimierung entgegen. Somit würde die Konvergenz der Wegfindung in ungünstigen Situationen eventuell sogar verhindert. 5.1.1. Die Wegfindung 5.1.1.1. Das Problem der Bewertung kollisionsbehafteter Wege Die Wegfindung beginnt mit einem Pool von Individuen, die wahrscheinlich nur kollisionsbehaftete Wege darstellen. Die Aufgabe der Bewertung besteht darin, diejenigen Individuen zu finden, welche mit der größten Wahrscheinlichkeit in einer der nächsten Generationen zu Individuen führen, die einen kollisionsfreien Weg darstellen. Das Ziel der Evaluierung ist es, den Grad der Kollisionsfreiheit für jedes Individuum festzulegen um zu entscheiden, welches am ehesten geeignet ist, durch dessen Nachfahren der Lösung näher zu kommen. Der Grad der Kollisionsfreiheit ist ein Indiz dafür, wie groß die notwendige Änderung ist, um einen kollisionsbehafteten Weg in einen kollisionsfreien Weg zu überführen. Für die Bestimmung des Grades der Kollisionsfreiheit existiert kein Standardverfahren. Demzufolge musste ein eigenes Verfahren entwickelt werden. Dafür wird für jede interpolierte Zwischenstellung (nicht nur Stützstellen) auf dem Weg von der Start- zur Zielstellung festgestellt, ob Kollisionen vorhanden sind. In der folgenden Grafik ist dies noch einmal veranschaulicht. Der Übersichtlichkeit wegen wurden hier und in den folgenden Grafiken nur zwei Dimensionen (Winkel) des Kollisionsraumes und die Hindernisse nur als einfache geometrische Formen dargestellt. 7 β α Stützstelle Zwischenstelle Veranschaulichung der Stütz- und Zwischenstellen Falls eine Kollision an einer Zwischenstelle i vorliegt, wird für diese der kürzeste Abstand absti zu einer kollisionsfreien Stelle im Winkelraum berechnet. β α Änderungsvektor mit Abstand abst möglicher Änderungsvektor an einer Zwischenstelle Zur Bewertung der Individuen gibt es nun verschiedene Möglichkeiten: n - Aufsummierung der einzelnen Abstände abst i i=0 - Maximum der einzelnen Abstände max (abst 0 ,...,abst n ) - Durchschnitt der Abstände n i= 0 abst i n 8 Ein geringer Wert bedeutet also einen hohen Grad an Kollisionsfreiheit. Leider ist keines dieser Kriterien allgemein anwendbar, da es Situationen gibt, in denen die Beurteilung des Grades der Kollisionsfreiheit anhand dieser Kriterien zum falschen Ergebnis führt. Dies zeigen folgende Grafiken: - Aufsummierung der einzelnen Abstände β α Der gepunktete Weg müsste besser bewertet werden, wird bei Aufsummierung aber schlechter bewertet. - Maximum der einzelnen Abstände β α Der gepunktete Weg müsste besser bewertet werden, wird bei Beurteilung nach dem Maximum aber schlechter bewertet. 9 - Durchschnitt der Abstände β α Der gepunktete Weg müsste besser bewertet werden, wird beim Durchschnitt aber schlechter bewertet. Testreihen haben ergeben, dass die Aufsummierung der einzelnen Abstände die besten Ergebnisse erbracht hat. 5.1.2. Der Hauptzyklus der Wegfindung 5.1.2.1. Die Initialpopulation Die Initialpopulation mit N Individuen wird durch einen Zufallsgenerator erstellt. Die Länge eines Chromosoms, d.h. die Anzahl der Stützstellen ergibt sich ebenfalls aus einem Zufallswert, der zwischen der festgelegten minimalen und maximalen Chromosomlänge liegt. 5.1.2.2. Die Evaluierung Für die Evaluierung wird jedes Chromosom in den Phänoraum übertragen. Zusammen mit Start- und Zielpunkt bildet jedes Individuum eine Trajektorie. Für jede dieser Trajektorien wird nun der Grad der Kollisionsfreiheit mittels der Aufsummierung der Abstände bestimmt. 5.1.2.3. Die Abbruchbedingung Die Abbruchbedingung ist gegeben, wenn für eines der Individuen die Kollisionsfreiheit gegeben, oder die maximale Anzahl an Generationen erreicht wurde. 5.1.2.4. Reproduktion Zuerst muss die Auswahl der Individuen für die Reproduktion erfolgen. Dazu werden zufällig Kandidaten aus dem Pool ausgewählt. Da die Wahrscheinlichkeit ausgewählt zu werden für ein Individuum mit größerer Güte höher sein sollte, wird die Auswahlwahrscheinlichkeit für ein Individuum mittels der nichtlinearen Funktion 10 q1 q i 1 pi 1 1 q N bestimmt. Dabei bestimmt der Parameter q, die Bevorzugung von Individuen höherer Güte. Ein größerer Wert für q führt zu einer steigenden Bevorzugung dieser Individuen. Aus dem aus diesen Kandidaten erstellten Heiratspool werden zufällig Paare gewählt, die zur Erzeugung der Nachkommen herangezogen werden. Für jedes Paar wird wiederum zufällig eines der folgenden Verfahren ausgewählt, um ein Paar von Kindern zu erzeugen, welche in den Pool der Nachfahren eingefügt werden: - Ein Punkt Crossover Zwei Punkt Crossover Uniform Crossover Das Crossover zweier unterschiedlich langer Chromosome stellt kein Problem dar, wenn gewährleistet ist, dass der Crossover-Punkt innerhalb der Länge des kürzeren Chromosoms liegt. Zusätzlich zum Crossover, gibt es noch die Mutation, bei der jedes Bit eines Chromosomes mit einer festgelegten Wahrscheinlichkeit negiert wird. Dabei wird zwischen zwei Fällen unterschieden, die mit unterschiedlicher Wahrscheinlichkeit auftreten können: - Mutation der Nachfahren, Mutation der Elite der alten Generation Zusätzlich gibt es noch eine dritte Art der Mutation, welche aber nicht einfach die Negation einzelner Bits bewirkt: - Mutation der Chromosomlänge Die Mutation der Chromosomlänge erfolgt über eine Erhöhung bzw. Kürzung der Sequenzlänge um ein Gen. Zur Reduzierung wird einfach ein zufälliges Gen aus der Sequenz entfernt. Zur Erhöhung der Chromosomlänge wird ein zufällig ausgewähltes Gen dieser Sequenz geklont und hinter dem geklonten Gen in die Sequenz eingefügt. Durch das Klonen wird verhindert, dass sich die Bewertung des Individuums verschlechtert, da weder die Kollisionsfreiheit verringert, noch die Pfadlänge erhöht wird. 5.1.2.5. Die Selektion Die Individuen des alten Pools werden zuerst auf das Erreichen ihres maximalen Alters hin überprüft. Ist dies der Fall, so werden diese entfernt. Die neue Population wird dann durch eine Auswahl von N-n Individuen aus dem Pool der Nachfahren und n Individuen der alten Population erstellt. 5.1.3. Der Hauptzyklus der Wegoptimierung Das Ziel dieses Schrittes ist die Optimierung der Weglänge der im vorhergehenden Schritt gefunden Lösung. Die Anfangspopulation besteht also nur aus dem Gewinnerindividuum der Wegfindung. Da mit nur einem Individuum ein Crossover nicht sinnvoll ist, wird hier statt eines klassischen genetischen Algorithmus eine 1.N - Evolutionsstrategie verwendet. Nachfahren werden also nur durch Klonen und Mutieren erzeugt. Der Hauptzyklus bleibt der gleiche. 5.1.3.1. Die Initialpopulation 11 Die Anfangspopulation besteht nur aus dem Gewinnerindividuum der Wegfindung. 5.1.3.2. Die Evaluierung Zusammen mit Start- und Zielpunkt bildet auch hier jedes Individuum eine Trajektorie. Für jede dieser Trajektorien wird nun wieder der Grad der Kollisionsfreiheit mittels der Aufsummierung der Abstände bestimmt. Zusätzlich wird noch die Weglänge für jedes Chromosom ermittelt. Die Weglänge ist definiert als die Summe der euklidischen Abstände der aufeinander folgenden Stützstellen im Kollisionsraum. 5.1.3.3. Die Abbruchbedingung Es existiert kein Kriterium, welches das Erreichen der minimalen Pfadlänge anzeigt. Deshalb wird eine maximale Anzahl von Generationen angeben, deren Verstreichen ohne Verringerung der Pfadlänge zum Abbruch der Optimierung führt. Natürlich führt auch das Erreichen der maximalen Anzahl von Generationen zum Abbruch. 5.1.3.4. Reproduktion Die Reproduktion ist hier sehr einfach, da das Chromosom mit der höchsten Fitness nur N mal geklont und mutiert wird. 5.1.3.5. Die Selektion Eine Altersbegrenzung wird in diesem Fall nicht verwendet, um sicherzustellen, dass ein kollisionsfreies Individuum erhalten bleibt. Die neue Population besteht aus dem besten Individuum aus der Vereinigung von Kinderpool und Pool der alten Population. 5.1.4. Grenzen des Verfahrens Eine Schwachstelle dieses Verfahrens ist das Finden von Trajektorien in komplexen oder engen Räumen, wenn die Stützpunkte nur innerhalb sehr kleiner Toleranzgrenzen liegen dürfen, um eine Lösung zu repräsentieren. Daraus folgt, dass die Mutationsrate sehr klein sein muss, um ein sehr gutes Individuum bis hin zur Lösung zu verändern. 12 β α Verdeutlichung der geringen Toleranzgrenzen der Lösung. Eine weitere Schwachstelle ergibt sich durch sehr schmale, aber ausgedehnte Hindernisse wie zum Beispiel Ebenen. An diesen treten nur sehr wenige Kollisionen auf, wodurch sich ein Pfad mitten durch das Hindernis kaum von einem unterscheidet, der das Hindernis nur am Rand streift. Durch die große Ausdehnung, aber schmale Silhouette der Hindernisse ergeben sich im Suchraum große Plateaus, die Suboptima darstellen. Um ein solches Plateau verlassen zu können, ist eine hohe Mutationsrate notwendig. Dies widerspricht aber der vorher genannten Forderung nach einer niedrigen Mutationsrate. β α Der Unterschied bei der Bewertung des Weges mit durchgezogener und Strichlinie ist nur sehr gering oder gar nicht feststellbar große Mutationsrate notwendig. 13 5.2. Das neuronale Netz 5.2.1. Die Netzarchitektur Die Aufgabe besteht darin, ein neuronales Netz zu entwickeln, welches als Ausgabe die Trajektorie vom Startzum Zielpunkt enthält. Prinzipiell gibt es nur zwei Arten von Netzen, Netze mit überwachtem Lernen und SelfOrganizing-Maps. Die Netze mit überwachtem Lernen bestehen aus einer Eingabeschicht, einer Menge von Hiddenschichten und einer Ausgabeschicht. Damit ergibt sich bereits ein Problem – die Größe des Ausgabevektors wird durch die Architektur des Netzes fest vorgegeben. Somit wird die Anzahl der Stützpunkte festgelegt. Ein weiteres Problem stellt das Aufstellen der Lernmenge für das Netz dar. Die erforderliche Trainingsmenge müsste repräsentativ für das gesamte Szenario sein, um sicherzustellen, dass die unbekannten Eingabevektoren auch zu kollisionsfreien Trajektorien führen. Die Trainingsmenge ist somit, wenn überhaupt, nur manuell und mit erheblichem Aufwand zu erstellen. Hinzu kommt, dass bei komplexen Szenarien ein funktionaler Zusammenhang zwischen Ein- und Ausgabevektoren nicht unbedingt gegeben ist, so dass selbst bei einer sehr großen Trainingsmenge nicht auf die Menge der restlichen möglichen Tupel von kollisionsfreien Ein- und Ausgabevektoren geschlossen werden kann. Deshalb ist diese Art von Netz unserer Meinung nach nicht zur Lösung dieses Problems geeignet. Eine zweite Netzarchitektur sind die Self-Organizing-Maps. Diese Netze sind in erster Linie Klassifizierer, d.h. die Eingabevektoren werden aufgrund ihrer Ähnlichkeit Musterklassen zugeordnet. Es erfolgt also eine Reduzierung der Dimensionalität. Das von uns benötigte Netz soll aber eine Zuordnung von einem 6-parametrischen Eingabevektor (Start- und Zielpunkt) zu einem 3*S -parametrischen Ausgabevektor realisieren. Die Variable S steht hier für die Anzahl der Stützstellen. Da S für nicht-trivale Problem größer als zwei sein sollte, handelt es sich hierbei um eine Erhöhung der Dimensionalität, also nicht um eine Klassifikation! Das Problem scheint also auch mit einem SOM nicht lösbar. Ein sehr bekanntes Problem für welches mit SOM’s gute Näherungslösungen gefunden werden können, ist das Problem des Handlungsreisenden, bei dem der kürzeste Rundweg durch Städte (durch Lage im Raum definiert) gesucht wird. Hierbei bilden die Neuronen der SOM eine, anfangs kreisförmige, beliebig im Raum liegende Trajektorie. Durch wiederholtes Anlegen der Punkte, welche die Städte definieren, wird diese so verformt, dass sie nach n Schritten einen Weg beschreibt, der alle Punkte verbindet. Über die genaue Funktionsweise dieser SOM kann man sich beispielsweise über den folgenden Link informieren: http://www.htw-dresden.de/~iwe/Belege/Boerner/index.html Dieses Prinzip könnte man evtl. auch zur Lösung der Trajektorienplanung des Roboterarmes benutzen, mit der Änderung, dass die Neuronen anfangs keinen Kreis, sondern eine Interpolation zwischen dem Start- und Zielpunkt darstellt. Allerdings sind die Vektoren, welche eine kollisionsfreie Trajektorie beschreiben würden, nicht bekannt. Selbst wenn die Hindernisse in diesem Raum mathematisch erfassbare Objekte darstellen würden, gibt es scheinbar keinen Algorithmus der diese notwendigen Vektoren erzeugt. Die folgende Grafik verdeutlicht das Problem anschaulich. Die großen Punkte stellen die notwendigen Eingabevektoren dar, welche die interpolierte Anfangstrajektorie (schwarz) zu der kollisionsfreien Trajektorie (gestrichelt) verformen. 14 β α Um diesen Mangel zu kompensieren, wird für jeden Lernschritt ein Eingabevektor in Abhängigkeit vom Zustand des Netzes gewählt. Dies widerspricht der grundlegenden Idee einer Self-Organizing-Map, ist unserer Meinung nach aber die einzige Möglichkeit das Problem der Trajektorienplanung für den Roboterarm mit neuronalen Netzen zu lösen. 5.2.2. Der Aufbau des Netzes und der Lernalgorithmus Das neuronale Netz ist aus einer Kette von Neuronen aufgebaut, d.h. jedes Neuron ist nur mit seinem Vorgänger und Nachfolger verbunden. Zu Beginn bilden die Gewichte der Neuronen einen interpolierten Weg vom Start- zum Zielpunkt. Dann wird für jedes Neuron, welches eine Position in einem Hindernis repräsentiert, ein Vektor berechnet, welcher den Weg aus dem Hindernis auf eine kollisionsfreie Position beschreibt. β α Beispiel für Vektoren, die den Weg auf eine kollisionsfreie Position beschreiben 15 Da es sinnvoll ist, die Trajektorie an der Stelle zu ändern, an der die größte Änderung notwendig ist, wird die Position dieses Neurons und der zugehörige Änderungsvektor zur Berechnung des Eingabevektors genutzt. Der Eingabevektor E wird somit durch die Vektoraddition der Gewichte G des Neurons mit der größten notwendigen Änderung, sowie einem Teil des Änderungsvektors D nach E G x D bestimmt. Dieser Vektor wird an das Netz angelegt, welches sich dadurch verformt. Dieser Vorgang wird so lange wiederholt, bis die Trajektorie kollisionsfrei ist oder die maximale Anzahl an Lernschritten erreicht wurde. 5.2.2.1. Probleme und deren Lösungsansätze bei der Umsetzung Ein erstes Problem bei der Wahl des richtigen Eingabevektors sind die möglichen Richtungen in die der Änderungsvektor zeigen kann. So ist die Richtung zum Vorgänger und Nachfolger nicht zulässig, um überhaupt eine Veränderung des Netzes zu erreichen. Da es nicht einfach ist, diese und ähnliche Richtungen auszuschließen, sind für den Änderungsvektor grundsätzlich nur die drei Hauptrichtungen parallel zu den Raumachsen zulässig. Zusammen mit der vorher genannten Einschränkung bleiben somit nur noch zwei mögliche Richtungen, in die der Änderungsvektor zeigen kann. y x z erlaubte und verbotene Suchrichtungen Das zweite Problem besteht darin, sicherzustellen, dass die Trajektorie sich in der gewünschten Art ändert. Befindet sich ein Neuron näher am Eingabevektor als das mit dem größten Änderungsvektor, so besteht die Möglichkeit, dass sich das Netz nicht an der gewünschten, sondern an einer ganz anderen Stelle verändert (siehe folgende Grafik). Dadurch können im schlimmsten Fall weitere Neuronen in ein Hindernis gezogen werden, die vorher keine Kollisionen aufwiesen. 16 β α ungewünschte Veränderung des Netzes bei schlechtem Eingabevektor Das dritte Problem sind eventuell auftretende Schwingungen. D.h. das Netz konvergiert nicht, sondern befindet sich nach einer gewissen Anzahl von Schritten wieder im gleichen Zustand. Um dies möglichst zu verhindern, werden die Gewinnerneuronen und deren Änderungsvektor der letzten Lernschritte gespeichert. Tritt sehr häufig die gleiche Kombination aus Neuronengewicht und Änderungsvektor auf, so weist dies auf eine Schwingung hin. Ist dies der Fall, so wird als erste Maßnahme für dieses Neuron ein neuer Änderungsvektor unter Ausschluss der Richtung des bisherigen Änderungsvektors berechnet. Bringt das keine Erfolge, so wird die eben gestattete, sowie eine weitere zufällig ausgewählte Hauptrichtung verboten und damit der Eingabevektor neu berechnet. β α unerwünschte Schwingungen 17 6. Benutzerdokumentation 6.1. Vorbemerkung über den Unterschied zwischen Hindernisdatei und Szenariodatei Eine Hindernisdatei enthält nur die Koordinaten und Ausdehnungen von Hindernissen im Ortsraum, keinerlei weitere Informationen. Ein Szenario dagegen enthält sowohl die Koordinaten und Ausdehnungen von Hindernissen, als auch den sich dadurch im Zusammenhang mit dem Roboterarm und dessen Abmessungen ergebenden Winkelraum. Dieser ist für die Wegfindung notwendig. Eine Hindernisdatei kann also nur im Szenarioeditor geladen werden. Eine Szenariodatei kann dagegen auch verwendet werden, um Trajektorien zu erstellen. 6.2. Das Programm Das Programm enthält zwei Menüs, „Scene“ und „AI type“. In „Scene“ besteht die Möglichkeit mittels „Load Scenario“ ein Szenario zu laden. Mittels „Start Scenario Editor“ kann ein neues Szenario erstellt werden. Das zweite Menü „AI type“ gibt die Möglichkeit zwischen einem neuronalen Netz und einem genetischen Algorithmus als Verfahren zur Wegfindung zu wechseln. 6.2.1. Wegfindung Um nach dem Start des Programms einen Weg berechnen zu können, muss als erstes ein Szenario geladen werden. Wurde dieses geladen, so können über die Eingabefelder oberhalb des Statusfensters die Startparameter für das Wegfindungsverfahren festgelegt werden. Das Wegfindungsverfahren kann jederzeit über das Menü „AI type“ gewechselt werden. Über die Eingabefelder „Current Pos“, „Start Pos“ und „Target Pos“ kann die aktuelle (im Grafikfenster angezeigte), die Start- und die Zielposition des Roboterarmes eingestellt werden. Die drei Werte jeder Position stellen die drei Winkel des Roboterarmes im Wertebereich 0 bis 255 dar. Dabei repräsentiert der erste Wert den Winkel für das Torsionsgelenk am Boden, der zweite für das Rotationsgelenk am Boden und der dritte für das Rotationsgelenk zwischen den beiden Armsegmenten. Mit den Schaltflächen „get cur“ kann die aktuell im Grafikfenster angezeigte Armstellung als Start- bzw. Zielposition übernommen werden. Nachdem Start- und Zielstellung festgelegt wurden, kann über die Schaltfläche „start search“ die Wegfindung gestartet werden. Dabei werden Informationen im Statusfenster angezeigt. Wurde vor dem Beginn der Suche die Schaltfläche „show diagram“ aktiviert, wird während der Suche ein Diagramm angezeigt, welches zusätzliche Informationen zum Verlauf der Wegfindung enthält. 6.2.2. 3D Darstellung Ist die Suche abgeschlossen worden, kann das Ergebnis durch klicken auf „show path in 3D“ im Grafikfenster angezeigt werden. Die 3D-Grafik im Grafikfenster kann durch anklicken und ziehen mit der Maus gedreht werden. Durch Klicken mit der mittleren Maustaste und Auf- und Abbewegen der Maus im Grafikfenster kann die Darstellung gezoomt werden. 18 6.2.3. Szenarioeditor Im Szenarieneditor kann ein neues Szenario erstellt werden. Dazu wird über die Eingabefelder „Position“ die linke, hintere, untere Ecke und über „Dimension“ die Ausdehnung des neuen Hindernisses mit x-y-z Koordinaten im Ortsraum angegeben. Mittels der Schaltfläche „insert obstacle“ kann das neue Hindernis zur Szene hinzugefügt werden. Es wird dann im Grafikfenster und in der Liste der Hindernisse angezeigt. Wird in der Hindernisliste ein Hindernis durch anklicken ausgewählt, so kann es über „remove obstacle“ wieder entfernt werden. Über „load obstacles“ bzw. „save obstacles“ kann die Liste der Hindernisse geladen bzw. gespeichert werden. Wurde die Liste der Hindernisse erstellt, so kann daraus das Szenario berechnet werden. Dies erfolgt durch klicken auf „create map“ und kann je nach Rechenleistung des Computers einige Zeit (bis zu mehreren Stunden) in Anspruch nehmen. Die Berechnung eines Szenarios kann jederzeit mittels „cancel creation“ abgebrochen werden. 6.3. Systemvoraussetzungen Zum Erstellen und Betrieb der Software sind folgende Voraussetzungen zu erfüllen: - Java SDK ab Version 1.4 OpenGL Version von Java 3D ab Version 1.3.1 JChart 2D ab Version 1.03 für die Compilierung und Ausführung mit Ant: Apache Ant Version 1.6.5 - x86 Architektur mindestens 32 MB Grafikspeicher ausreichend CPU-Leistung ;) 7. Entwicklerdokumentation Während der Wegfindung muss sehr oft auf Kollisionen mit Hindernissen getestet werden. Würde dazu jedes Mal, über die Winkelkonfiguration des Roboters seine Lage im Ortsraum ermittelt und damit auf Kollisionen mit Hindernissen getestet, so wäre dies eine enorme Verlangsamung des Wegfindungsprozesses. Aus diesem Grund werden vorher für alle möglichen Konfigurationen des Roboters die Kollisionen eines Szenarios in einer binären Matrix verzeichnet und diese in einer Szenariodatei abgelegt. Die Klassen des Programms lassen sich bezüglich ihrer Aufgabe zu Gruppen zusammenfassen. Diese Packages sind: - show, alles was zur Interaktion mit dem Benutzer notwendig ist ea, Wegfindung mittels des EA nn, Wegfindung mittels des EA collision, zur Bestimmung von Kollisionen notwendige Klassen main, die Hauptklasse und der Hauptthread 19 Übersicht der Klassen des Packages show und deren Zusammenhang mit anderen Klassen: 20 Übersicht der Klassen des Packages ea und deren Zusammenhang mit anderen Klassen: 21 Übersicht der Klassen des Packages nn: 22 Übersicht der Klassen des Packages collision: 23 Übersicht der Klassen des Packages main und deren Zusammenhang mit anderen Klassen: 24 8. Begriffserklärungen Ortsraum Der Fußpunkt des Roboters bildet den Ursprung eines orthogonalen Koordinatensystems, mit den drei Dimensionen X, Y, Z. Ein Tripel o=(x, y, z) mit x X, y Y und z Z beschreibt damit die Lage des Manipulators relativ zum Fußpunkt des Roboters. Die Menge aller dieser Tripel beschreibt den Ortsraum des Roboters. Konfigurationsraum Für einen Roboter mit N Gelenken kann durch Angabe der momentanen Winkelstellung wi, i (1 … N), eines jeden Gelenkes, seine Konfiguration eindeutig beschrieben werden. Die Menge alle dieser n-Tupel eines konkreten Roboters beschreiben den Konfigurationsraum des Roboters. Winkelraum Der Begriff Winkelraum wird äquivalent zum Begriff Konfigurationsraum verwendet. Kollisionsraum Für jede Konfiguration w=(w1 … wN), kann festgestellt werden, ob eine Kollision in dieser Stellung vorliegt. fk(w) =0 wenn in Konfiguration w keine Kollision auftritt =1 wenn in Konfiguration w eine Kollision auftritt Es entsteht damit ein Tupel k=(w, fk(w)). Die Menge aller dieser Tupel beschreibt den Kollisionsraum des Roboters. 9. Quellen Vorlesungsskript Genetische Algorithmen und die Aufzeichnungen Neuronale Netze von Prof. Dr. rer. nat. habil. Iwe. Vorlesungsmitschriften der Lehrveranstaltung Mathematik von Prof. Dr. rer. nat. habil. Neumann. 25