kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz
80 Vorlesung_2014_10_01
81 Vorlesung_2014_10_08
82 Vorlesung_2014_10_15
83 Vorlesung_2014_10_22
84 Vorlesung_2014_10_29
kramann.info
© Guido Kramann

Login: Passwort:




Aufbau eines Neuronalen Netzes zum Erkennen des Differenzwinkels bei einer Linienverfolgung

(EN google-translate)

(PL google-translate)

Ziel der Umsetzung

  • Ein autonomes Vehikel soll sich entlang einer bandförmigen Bodenmarkierung fortbewegen.
  • Das vom Boden aufgezeichnete Kamerabild soll auf ein grobes Raster von 5x5 Quadraten reduziert werden.
  • Dabei wird einem Quadrat der mittlere Grauwert der darunterliegenden Pixel zugewiesen.

Belernen

  • Belernt soll das Fahrzeug zunächst testweise mit eindeutigen Mustern, die einen Winkel von 0o, +/-45o und +/-90o repräsentieren:
  • Am Ausgang des Neuronalen Netzes soll ein Winkel als analoges Ausgangssignal eines einzelnen Neurons abgerufen werden können.
  • Da die sigmoide Funktion Werte im Intervall [0,1] liefert und die Extremwerte weit im Sättigungsbereich liegen, soll der Winkelbereich [-90o,90o] durch ein Ausgangssignal von [0.25,0.75] abgebidet werden.
Lernpattern für die Erkennung der Linienführung.

Bild 0-1: Lernpattern für die Erkennung der Linienführung.

  • Es soll ein Neuronales Netz mit vier Schichten realisiert werden.
  • Dabei bestehen die Eingangsschicht I und die Zwischenschichten II und III jeweils aus 25 Neuronen.
  • Die Ausgangsschicht IV besteht aus einem Neuron.
  • Die Implementierung soll in Java erfolgen.
  • Die Schichten I, II und III sollen jeweils als ein Objekte der Klasse "Schicht" in Java realisiert werden.
  • Alles andere soll über statische Methoden in einer main-Methode umgesetzt werden.
  • Objekte der Klasse "Schicht" besitzen folgende Arrays:
  1. w[25][25] doppletes Array mit allen Gewichten.
  2. u[25] Array mit allen gewichtet aufsummierten Eingangsaktivitäten der 25 Neuronen.
  3. n[25] Aktivität der 25 Neuronen.
  4. in[25] Aktivitäten, die am Eingang anliegen, also die Ausgangsaktivität der vorangehenden Schicht.
  • Weitere Arrays sind Hilfsvariablen für den Backpropagation Algorithmus:
  1. Q[25] Q-Werte - Diese werden von der vorangehenden Schicht gebraucht.
  • Ob es nun 25, mehr oder weniger Neuronen in der Schicht geben soll, wird über einen dem Konstruktor übergebenen Wert n_anzahl festgelegt.
Darstellung einer Neuronenschicht mit allen zugehörigen Variablen.

Bild 0-2: Darstellung einer Neuronenschicht mit allen zugehörigen Variablen.

  • Die 25 Bildquadrate sind in folgender Weise den Eingängen der ersten Schicht zugeordnet:
Zuordnung zwischen Bildquadraten und Netzeingängen.

Bild 0-3: Zuordnung zwischen Bildquadraten und Netzeingängen.

Vereinerung des Klassenentwurfs

  • Aus folgendem UML-Diagramm können die zu implementierenden Attribute und Methoden für die Klasse Schicht abgelesen werden.
  • Mit setInput() werden alle Werte des übergebenen Arrays in das innere Array in[] hineinkopiert, also keinesfalls einfach die Referenz zugewiesen.
UML-Diagramm der Klasse Schicht.

Bild 0-4: UML-Diagramm der Klasse Schicht.

  • Bei berechneQ() wird angegeben, das Q für welches Gewicht berechnet werden soll.
  • Dabei ist "neuron" die Nummer des Neurons, zu dem das Gewicht hinläuft.
  • wnr ist die Gewichtsnummer von den 5, die zu dem Neuron hinlaufen.
  • outprop ist der zurückpropagierte Wert der Nachfolgeschicht, also entweder die Differenz zwischen Soll- und Ist-Ausgang, oder die Summe der gewichteten Q-Werte der Neuronen, zu denen die Verbindungen hinlaufen, die von dem Neuron abgehen, auf die die aktuell betrachtete Verbindung hinläuft.
  • outprop muß also mit Hilfe der Nachfolgeschicht berechnet werden.
Übung
  • Vorbereitend auf die Umsetzung des Richtungserkenners, soll die Klasse Schicht implementiert und in das vorangehende Beispiel in Kapitel 8.3 als Zwischenschicht mit vier Neuronen eingefügt werden.
  • Ein Objekt der Klasse Schicht soll also die vorhandene Implementierung der Zwischenschicht ersetzen.
  • Erst nach erfolgreichem Test am Antivalenz-Netz soll der Richtungserkenner umgesetzt und mit den vorgegebenen Pattern belernt werden.