Roboterarmsteuerung mittels SOMBeleg - Neuronale NetzeAutor: Dirk VoigtBetreuer: Prof. Dr. rer. nat. habil. H. IweInhalt
AufgabeZu betrachten ist ein Roboterarm im zweidimensionalen Raum. Dabei kann der Roboterarm mittels zweier Gelenke bewegt werden. Die Bewegungen des Armes können in einem definierten Bereich, der sogenannten Arbeitsfläche erfolgen. Auf dieser Grundlage ist ein neuronales Netz, in diesem Fall ein SOM, zu entwicklen, welches dem Roboter ein Lernen ermöglicht. Ziel ist es, durch das angelernte neuronale Netz, den Roboterarm möglichst genau zu den geforderten Koordinaten zu bewegen.Die Lösung sollte variabel gestaltet werden. Aus diesem Grund, sind die Längen der Roboterarmsegmente als auch die Arbeitsfläche veränderlich zu erstellen. Die nachfolgende Abbildung zeigt einen solchen Roboterarm. ![]() Abbildung 1: Roboterarm Die Berechnung der Winkel und der zugehöhrigen Punkte kann mittels der folgenden Formeln erfolgen: BenutzerhinweiseVorgehensweiseDas Programm ist als Java-Applet realisiert. Um es zu benutzen, sollte es mit einem entsprechendem Applet-viewer oder mittels eines Browser geöffnet werden. Das prinzipielle Vorgehen wird nachfolgend erläutert.Nach betätigen des Testbuttons wird der Roboterarm auf Grundlage des neuronalen Netzes an die errechnete Position bewegt. Das wird im unteren Programmteil visualisiert. Zusätzlich werden die errechneten Koordintaten unter der Marke » Istwert der Position « dargestellt. Falls der Punkt nicht erreichbar ist, wird eine enstprechende Meldung in der Textbox angezeigt. Durch Veränderungen in den Lerneigenschaften kann die Genauigkeit verbessert werden. ArbeitsflächeneinstellungenDie Arbeitsflächengröße ist variabel und kann über das Feld » Laenge der Ebene « verkleinert als auch vergrößert werden. Ebenfalls sind die zwei Längen des Roboterarmes veränderbar und können mittels der Felder » Laenge Armsegment 1 « bzw. « Laenge Armsegment 2 « angepasst werden.Soll eine neue Arbeitsfläche erstellt werden, so muss nach Anpassung der Einstellungen der Button » Arbeitsflaeche erstellen « betätigt werden. Diese Änderungen werden im unteren Teil des Programms, auf der Arbeitsfäche, sichtbar. Außerdem werden die Anzahl der erreichbaren und nicht erreichbaren Punkte in der Textbox angezeigt. Durch intelligente Einstellung der Roboterarmsegmentlängen kann die Anzahl der erreichbaren Punkte beeinflußt werden. ![]() Abbildung 2: Arbeitsflächeneinstellungen LerneinstellungenIn diesem Teil kann das Lernverhalten des Roboterarmes verändert werden. So ist es möglich die Anzahl der Neuroen über das Feld » Neuronenanzahl « nach vorgegebenen Werten zu bestimmen. Außerdem kann hier der Anfangsradius, über das entsprechende Feld » Anfangsradius «, gewählt werden. Ergänzend ist es weiter möglich, die Lernrate mittels des Feldes » Lernrate « und die Anzahl der Lernzyklen über das gleichnamige Feld, » Lernzyklen « anzupassen.Sind alle Werte wie gewünscht eingestellt, so ist um den Lernvorgang zu starten, der Button » Neuron anlernen « zu betätigen. Der Lernfortschritt wird mittels eines Fortschrittsbalken im oberen Teil angezeigt. ![]() Abbildung 3: Lerneinstellungen Test des neuronalen NetzesIst der Lernvorgang abgeschlossen, so kann das Netz getestet werden. Hierzu werden die gewünschten Punkte unter der Marke » Teste auf Position « eingestellt und anschließend kann mittels des Buttons » Test « das neuronale Netz abgefragt werden. Die Ergebnisse eines solchen Testes werden auf der Arbeitsfläche mit der entsprechenden Stellung des Roboterarmes gezeichnet. Außerdem werden, zur Kontrolle, auf der linken Seite unter der Marke » Istwert der Position « die berechneten Werte des Punktes angezeigt.![]() Abbildung 4: Testen des Netzes Die Arbeitsfläche und das TextfeldMit Arbeitsfläche ist die Ebene gemeint, in welcher sich der Roboterarm bewegen kann. Diese wird in der unteren Hälfte des Programmes angezeigt. Das Textfeld befindet sich unmittelbar über der Arbeitsfläche.Die Arbeitfläche dient der Visualisierung des Roboterarmes in der gewünschten Ebene sowie der Überprüfung des Lernverhaltens. In dem Textfeld werden verschiedene nützliche Statusinformationen angezeigt. Die rot gezeichneten Radien zeigen den Bereich der von dem Roboterarm nicht erreicht werden kann. Dieser Bereich kann durch Veränderung der Roboterarmlängen beeinflußt werden. ![]() Abbildung 5: Roboterarm auf Arbeitsfläche Erreichbare und nicht erreichbare PunkteWie schon weiter oben erwähnt, können nicht alle Punkte auf der Arbeitsfläche erreicht werden. Punkte die nicht erreicht werden können, weil der Roboterarm zu kurz ist oder weil das zweite Armsegment länger als das erste ist, werden mittels der rot gezeichneten Radien kenntlich gemacht.Es gibt allerdings noch weitere Punkte die nicht erreicht werden können. Zum Beispiel, wenn ein Punkt auf einer Koordinaten liegt, bei der das erste Roboterarmsegment über 90 Grad bewegen müsste um diesen Punkt zu erreichen. Da sich der Arm nur auf der Arbeitsfläche bewegen darf, ist ein solcher Punkt ebenfalls nicht erreichbar. Desweiteren werden viele nicht erreichbare Punkte erzeugt, wenn die Länge des ersten Armsegmentes größer ist, als die Höhe der Arbeitsfläche. Bei der Erstellung der Arbeitsfläche sollte daher die Anzahl der nicht erreichbaren Punkte mittels der Textbox überprüft werden. EntwicklerhinweiseEinleitungSelbstorganisierende Eigenschaftskarten werden nach ihrem Entwickler, dem finischen Ingenieur Teuvo Kohonen, auch Kohonen-Netzwerke bzw. Self Organizing Maps genannt. Sie sind in der Lage mehrdimensionale Eingabemuster auf einer zweidimensionalen Struktur abzubilden. Diese Struktur bildet sich dabei durch Wettbewerbslernen (competitive learning) in einen unüberwachten Lernprozess von selbst aus, weswegen man bei diesem Netzwerktyp auch von selbstorganisierenden Eigenschaftskarten spricht.Diese Art von neuronalem Netz, bildet Nachbarschaftsbeziehungen im Eingaberaum durch Nachbarschaften in den Neuronenbeziehungen nach. Das heisst, werden ähnliche Eingaben an das Netz gestellt, reagieren benachbarte Neuronen auf diese Eingaben. Dies ist der natürlichen Arbeitsweise des Gehirns nachempfunden. SOM werden besonders bei der Klassifizierung von Eingaben eingesetzt. So kann man sie bei der Spracherkennung, Dokument-Klassifikation oder auch Datenanalyse einsetzen. Mehr zu Self Organizizing Maps kann hier nachgelesen werden. Das neuronale NetzIn diesem Beleg wurde ein zweidimensionales SOM benutzt, wobei die Ebenenkanten nicht verbunden sind. Die Anzahl der Neuronen ist variabel einstellbar und hat somit großen Einfluß auf den Lernerfolg.![]() Abbildung 6: Self Organizing Map Diese SOM-Netzwerke bestehen aus mindestens zwei Schichten, der Eingabeschicht und der Ausgabeschicht. Die Ausgabeschicht wird auch Kohonenschicht genannt. Jedes Neuron der Eingabeschicht (Pattern) ist mit jedem Neuron der Kohonenschicht verbunden. Jedes dieser Kohonen-Neuronen hat einen Gewichtsvektor. Die Neuronen der Eingabeschicht sind über diesen Gewichtsvektor mit den Neuronen der Kohonenschicht verbunden. Das Prinzip der SOM besteht nun darin, dass die Neuronen der Kohonen-Schicht ihre Gewichte so anpassen, dass charakteristische Eingabemerkmale auf einem bestimmten Bereich der Kohonenschicht abgebildet werden. NeuronenDie Neuron der Kohonenschicht, in diesem Beleg, werden durch eine zweidimensionale Ebene repräsentiert. Zwischen den Neuroen der Eingabeschicht und den Neuronen der Kohonenschicht befindet sich ein Gewichtsvektor mit 2 Werten für jedes Neuron der Kohonenschicht. Diese Gewichte werden während des Lernvorganges verändert. Somit kann das neuronale Netz trainiert werden.StartzustandZu Beginn werden alle Neuronen erstellt und die Gewichte der Kohonen-Neuronen mit einem zufälligen Wert initialisiert. In diesem Stadium ist das Netz nicht ausgebildet und repräsentiert sich damit als ungelerntes Netz.LernenDas Lernen in einem SOM funktioniert unüberwacht. Das heißt, es wird ein zufälliger Lerndatensatz ausgewählt und anschließend an das Netz angelegt. Nun ist das Gewinner-Neuron der Kohonenschicht zu suchen. Ist ein Gewinner ermittelt beginnt das Lernen dieses Datensatzes. Dazu werden alle Nachbar-Neuronen, die sich im Nachbarschaftsradius befinden, gesucht und es wird eine Anpassung der Gewichte vorgenommen. Dabei hat der Abstand vom Erregungszentrum als auch die Lernrate einen entscheidenten Einfluß auf die Berechnung.Im Verlaufe des Lernvorganges werden die Lernrate sowie auch der Nachbarschaftsradius verrringert. Dazu wird in diesem Beleg die Gauss-Funktion benutzt. Diese Funktion garaniert ein sanftes Anpassen der Gewichte. Das Verhalten, was dadurch entsteht, dient der Herausbildung der Grobstruktur des SOM am Anfang sowie der Feinabstimmung des Netzes zum Ende des Lernens hin. Das Lernen ist beendet, wenn die geforderte Anzahl von Lernzyklen durchlaufen wurde. Ablauf des Lernens Formeln
c ... Erregungszentrum z ... Abstand vom Erregungszentrum d ... Nachbarschaftsradius w ... Gewicht 10.04.2005, Dirk Voigt |