Benutzer-Werkzeuge

Webseiten-Werkzeuge


ein_neuronales_netz_fuer_den_nxt_roboter

Dies ist eine alte Version des Dokuments!


Ein neuronales Netz für den NXT Roboter

Dieser Artikel verwendet Methoden der künstlichen Intelligenz, um einen Lego NXT Roboter lernfählig zu machen. Der Roboter wird mit Java programmiert und verwendet Neuronale Netze. Künstliche neuronale Netze haben ihr Vorbild in dem vielleicht größten komplexen System was wir derzeit kennen, dem menschliche Gehirn. Dieser Abschnitt basiert auf einem engl. Artikel aus dem Jahre 2005 (weiter unten Downloadbar). Der Quellcode wurde der neuesten Lego Mindstorm NXT Generation angepasst.

Geschrieben von: Leander Cascorbi, Lukas Immertreu


Java bietet ideale Voraussetzungen zum Programmieren eines Roboters. Mit Java ist es möglich hörende, sehende, sprechende und sich bewegende Roboter zu programmieren. Benutzt man neuronale Netze, kann man noch einen Schritt weiter gehen, denn dann werden die Roboter lernfähig.

Dieser Artikel zeigt, wie man einen sogenannten Backpropagation-Algorithmus, ein grundlegendes neuronales Netz, programmiert, und auf einem Lego-NXT-Roboter implementiert. Mithilfe des Algorithmus und Java kann der Roboter grundlegende Bewegungsregeln erlernen.

LeJOS

LeJOS ist ein kleines Java-basiertes Betriebssystem für LEGO-NXT-Roboter. Menü Download gibt es eine Anleitung die zeigt, wie LeJOS auf dem LEGO Roboter installiert werden kann. Desweiteren wird gezeigt, wie LeJOS auf einem Linux-System zusammen mit Eclipse konfiguriert werden kann, so dass dem Programmieren nichts mehr im Wege steht.

Neural Networks

Um intelligente Roboter zu programmieren, orientiert man sich an der Struktur des menschlichen Gehirns. Anfang der 1940er begannen der Neurophysiologe Warren McCulloch und der Mathematiker Walter Pitts an der Idee intelligenter Roboter auf Basis künstlicher Neuronen zu arbeiten. Eines der ersten Modelle neuronaler Netze war das Perzeptron, eine Erfindung F. Rosenblats 1962. Das Perzeptron ist lernfähig! Aus der Summe gewichteter Input-SIgnale wird über eine Aktivierungsfunktion und einen festgesetzten Grenzwert ein Output generiert, der entweder den Wert 1 oder den Wert 0 annimmt, je nach Größe der Input-Summe. Abbildung 1 zeigt ein Neuron, Abbildung 2 ein Perzeptron.

Abb. 1: Ein Neuron
Abb. 2: Das Perzeptron mit einfacher Aktivierungsfunktion

Die Inputwerte ($x_1$, $x_2$, $x_3$, …, $x_n$) und die Verbindungsgewichte ($w_1$,$w_2$,$w_3$, …,$w_n$) in der Grafik sind normalerweise reelle Werte. Beispiel: Wenn xi das Perzeptron zum feuern anregt (Aktivierungsfunktion gibt den Wert 1 aus), muss das Gewicht $w_i$ folglich einen positiven Wert gehabt haben. Ist das Gewicht $w_i$ allerdings negativ, so wird das Neuron hingegen nicht feuern (Aktivierungsfunktion nimmt den Wert 0 an). Wie Elaine Rich und Kevon Knight in ihrem Buch Artificial Intelligence (McGraw-Hill, 1990) schreiben: „Das Perzeptron selbst besteht aus Gewichten, einem Summierungsprozessor und dem feszulegenden Grenzwert. Das Lernen ist der Prozess des Modifizierens der Gewichtswerte und des Grenzwertes“

Backpropagation-Netzwerke

Der Backpropagation-Algorithmus

Das Backpropagation-Netzwerk für den NXT

Quellcode

Quellen

ein_neuronales_netz_fuer_den_nxt_roboter.1706264836.txt.gz · Zuletzt geändert: 2024/01/26 10:27 von torsten.roehl