9.4.2 xNN - Roboter erkennt Farben


In der Entwicklungsumgebung Open Roberta Lab, die vom Fraunhofer-Institut für Intelligente Analyse- und Informationssysteme IAIS angeboten wird, gibt es die Erweiterung "Open Roberta xNN", mit welcher neuronale Netze in der Programmierung verwendet werden können.

Im Open Roberta Lab kann ein kleiner Roboter programmiert werden, der sich in einer Simulationsumgebung bewegt. Der Roboter kann mit Sensoren ausgestattet werden, so dass er bei geeigneter Programmierung auf die Umgebung reagieren kann.


Roboter erkennt Farben

In diesem Projekt soll einem Roboter folgendes beigebracht werden:

  • während er fährt, soll er mit Hilfe eines Farbsensors die Farbe erkennen, über welche er gerade fährt,

  • der Name der erkannten Farbe soll auf einem Display ausgeben werden.

Zur Lösung dieser Aufgabe soll ein denkbar einfachstes neuronales Netz verwendet werden, das aus nur einem Eingabe-Neuron (EN) und einem Ausgabe-Neuron (AN) besteht.


Programmierung ohne neuronales Netz

Der kleine Roboter soll sich bewegen und dabei Farben erkennen. Dazu muss er wie folgt konfiguriert werden:

  • er benötigt für die zwei Räder jeweils einen Motor,

  • er benötigt einen Farbsensor.

Das kann in der Roboterkonfiguration eingestellt werden:

  • Öffne folgenden Link: Open Roberta Lab

  • Klicke auf "ROBOTERKONFIGURATION XNNbasis". Du solltest folgendes sehen:

  • Verändere die Konfiguration des Roboters so, dass er nur noch die beiden Motoren und einen Farbsensor hat und der Farbsensor am Sensorport 1 angeschlossen ist:

  • Klicke auf "PROGRAMM NEPOprog", so dass der Programmiereditor geöffnet wird.

Damit der Roboter nach vorne fährt, muss ihm dazu eine Anweisung gegeben werden:

  • Klicke auf "Aktion", ziehe den Block "Fahre vorwärts Tempo 30%" in den Editor und setze diesen Block unter den Startblock.

  • Klicke rechts auf "SIM", so dass die Simulationsumgebung geöffnet wird. Du solltest folgendes sehen:

  • Klicke unten auf das Start-Symbol (Dreieck nach rechts).

Der Roboter fährt ein kleines Stück nach vorne, bleibt aber sofort wieder stehen. Damit er dauerhaft nach vorne fährt, muss eine Wiederholungsschleife in das Programm eingebaut werden:

  • Klicke auf "Kontrolle" und schiebe den Block "Wiederhole unendlich oft" in das Programm. Baue folgendes Programm:

Jetzt fährt der Roboter solange nach rechts, bis er den Rand der Simulationsfläche erreicht hat.

  • Baue folgendes Programm zusammen, damit die aktuelle Farbe auf dem Display angezeigt werden kann:

  • Klicke auf das Symbol rechts neben dem Startsymbol, damit das Display (Anzeige) geöffnet wird.

  • Setze den Roboter vor den blauen Block in der Simulationsumgebung und lasse ihn losfahren. Auf dem Display sollte die Farbe angezeigt werden, über welche der Roboter gerade fährt.

Nachdem das Programm gestartet wurde solltest du folgendes sehen:


Programmierung mit einem neuronalen Netz

Der Programmablauf soll jetzt mit Hilfe eines einfachen neuronalen Netzes gesteuert werden:

  • Der Farbsensor soll die Information, welche Farbe er erkannt hat, in einem Eingabe-Neuron (EN) speichern.

  • Diese Information soll unverändert an das Ausgabe-Neuron (AN) weitergegeben werden. Damit sich der Wert nicht ändert, wird ein Gewicht mit dem Wert 1 gewählt.

  • Aufgrund der Information, welche aus dem Ausgabe-Neuron ausgelesen werden kann, soll der Name der erkannten Farbe auf dem Display ausgegeben werden.

Damit kann ein geeignetes neuronales Netz wie folgt geplant werden:

  • Klicke im Open Roberta Lab auf "NEURONALES NETZ NEPOnn":

  • Klicke auf das Neuron n1, ändere den Namen in EN für Eingabe-Neuron und klicke auf den Haken.

  • Klicke auf das Neuron n2, ändere den Namen in AN für Ausgabe-Neuron und klicke auf den Haken.

  • Baue folgendes Programm:

Erklärung des Programms:

  • Verändere das Programm so, dass der kleine Roboter alle Farben erkennen und anzeigen kann.

  • Male eine eigene farbige Umgebung in der Simulation, in welcher der Roboter Farben erkennen und anzeigen kann. Beispiel:


Lösungsvorschlag

Hier kannst du einen Lösungsvorschlag für das Projekt öffnen.

Den Lösungvorschlag solltest du aber nur dann öffnen, wenn du bereits selbst eine eigene Lösung entwickelt hast.


Falls der gerade gegebene Link nicht funktioniert, kann das Programm manuell geladen werden:

  • Klicke auf folgenden Download-Link für den Quellcode: zwei_neuronen.xml

  • Klicke in Open-Roberta oben links auf "Bearbeiten", dann auf "importiere Programm ..." und lade das gerade heruntergeladene Programm "zwei_neuronen.xml", das sich im Donwload-Ordner befinden sollte.

  • Falls die Oberfläche des Open-Roberta-Editors nicht auf deutsch ist, klicke in Open Roberta oben auf das Symbol für die Erdkugel und wähle "Deutsch" als Sprache.

  • Klicke in Open Roberta oben auf den Tab "ROBOTERKONFIGURATION", damit sich das Roboter-Konfigurations-Fenster öffnet. Du solltest folgende Roboter-Konfiguration sehen - falls nicht, ändere den Roboter entsprechend:

Der simulierte Roboter hat zwei unabhängige Motoren für das rechte und das linke Rad und einen Farbsensor welcher die Farbe wahrnehmen kann, mit welcher die Fläche unter dem Farbsensor eingefärbt ist.

  • Klicke auf den Tab "PROGRAMM NEPOprog" und dann ganz rechts auf die Schaltfläche "SIM", damit sich das Simulator-Fenster öffnet.

  • Klicke im Simulationsfenster oben links solange auf das Bild-Symbol, bis der Simulationshintergrund weiß ist. Das blaue Hindernis kannst du löschen.

Du solltest folgendes sehen:

  • Klicke auf folgenden Link um die Simulationseinstellung herunterzuladen: zwei_neuronen.json

  • Klicke im Simulationsfenster in der Symbolleiste auf "Simulationseinstellungen hochladen", wechsle in den "Downloads-Ordner", wähle die heruntergeladene Datei "zwei_neuronen.json" und bestätige die Wahl.

  • Klicke im Simulationsfenster unten auf "Öffne/schließe die Ansicht deines Systems", damit die Anzeige des simulierten Roboters geöffnet wird.

  • Verschiebe die Anzeige des simulierten Roboters an eine geignete Stelle. Du solltest folgendes sehen:

  • Klicke in der Simulationsumgebung unten auf "Starte dein Programm in der Simulation".


Programmablauf:

  • Der Roboter fährt über die Farbstreifen nach rechts.

  • Der Lichtsensor erkennt die unter ihm liegende Farbe.

  • Die erkannte Farbe wird in der Anzeige ausgegeben.