Einleitung
Das Programm "TCCSimulator" (Tennis Court Cleaning Simulator entstand im Rahmen
der Lehrveranstaltung Wissensbasierte Fuzzy-Systeme.
Die Applikation wurde ausschließlich in der Programmiersprache Java (Release 1.3.1
von Sun) geschrieben und sollte
somit ohne Probleme unter den Betriebssystemen Windows 95/98/ME, Windows NT/2000, Linux
und Unix lauffähig sein.
Für die Implementierung des Wissensbasierten Fuzzy-Systems habe ich das
NRC FuzzyJ Toolkit verwendet. Diese Bibliothek bietet bereits die grundlegende
Funktionalität, um solche Fuzzy-Systeme in der Programmiersprache Java zu
realisieren. Dieses Toolkit ist ausgesprochen leistungsfähig und hat sich
wunderbar in meine Applikation einbinden lassen. Außerdem stand dazu eine
wirklich ungemein detailierte und ausgezeichnete Dokumentation (sowohl
Java-Documentation als auch allgemeine Dokumentationen) zur Verfügung.
Weitere Informationen zum FuzzyJ Toolkit finden sie unter der folgenden Adresse:
FuzzyJ Toolkit.
Autor:
|
Jörg Hentschel (htw9928)
|
eMail
|
Aufgabe des Programms
Die Vision
Mit Hilfe dieser Applikation soll es (zur Zeit natürlich
nur rein virtuell) einem autonomen Roboter möglich sein, die Linien
eines Sandtennisplatzes zu finden, zu verfolgen und in einem möglichst kurzem
Weg alle Linien mindestens einmal abzufahren, um somit diese Linien zu reinigen.
>>>
Die Herangehensweise
Dieses Programm wird diese Aufgabe lösen, indem es
versucht den Roboter mit Hilfe eines Wissensbasierten Fuzzy-Systems steuert. Der
Hauptsensor soll dabei eine Kamera Darstellen (in diesem Fall mit einer Auflösung
von 15x15 Pixeln). Weiter Sensoren könnten Infrarot-Sensoren sein, um Kollisionen
mit Wönden oder anderen Gegenständen (z.B. Tennisnetz) zu vermeiden - dies
ist hier aber außer Acht gelassen worden, da es in erster Linie um die Steuerung
des autonomen Roboters mit einem Fuzzy-System ging.
Die Voraussetzungen
-
Ein Roboter, an dessen zentraler Unterseite eine Kamera installiert ist, die
eine Auflösung von 15x15 Pixeln wiedergibt.
-
Damit der Roboter nicht eine total verunreinigte Aufnahme bekommt, ist hier
ein Säuberungsakt angedacht, der stattfindet, noch bevor die Kamera eine
Aufnahme macht ("cleaning before viewing"). Dies ist aber keine perfekte
Reinigung, sondern nur 76% der Verunreinigungen werden beseitigt, denn man
kann davon ausgehen, daß eine solche Reinigung niemals 100% erreichen wird.
-
Außerdem bin ich davon ausgegangen, daß das Tennisnetz nicht gespannt
ist, und somit nicht als Hindernis auftritt.
Arbeitsweise
Die Augen des Roboters
Wie schon oben erwähnt wird der Roboter seine Informationen von einem Kamerabild
der Größe 15x15 Pixel erhalten. Dabei unterteilt sie diese Kamerabild
nochmals in 9 Abschnitte, die jeweils 5x5 Pixel groß sind. Aus diesen
Abschnitten, kann man dann mit Hilfe des Fuzzy-Systems eine relativ genaue Aussage
über die Position des Roboters und dessen nächsten Schritt machen.
Diese 9 Abschnitte werden zu 9 linguistischen Inputvariablen für das Fuzzy-System.
Hier ein Bild:
Arbeitsweise
Die Fuzzy-Variablen
Zur Lösung des Problems habe ich folgende Fuzzy-Variablen verwendet:
- 1 Status Variable (Input mm_st[0])
- 9 Kameraauschnitts Variablen (Input mm_xx[0..8])
- 1 Status Variable (Output mm_status)
- 1 Geschwindigkeits Variable in X-Richting (Output mm_xDir)
- 1 Geschwindigkeits Variable in Y-Richting (Output mm_yDir)
Hier das Diagramm mit den Ausprägungen (Zugehörigkeitsfunktionen) der
Fuzzy-Variablen mm_xx[0..8]:
Die einzelnen Ausprägungen bedeuten im einzelnen:
- S = small (kaum oder keine weißen Pixel gefunden)
- M = medium (wenige weiße Pixel gefunden)
- L = large (viele oder sehr viele weiße Pixel gefunden)
Hier das Diagramm mit den Ausprägungen (Zugehörigkeitsfunktionen) der
Fuzzy-Variablen mm_xDir und mm_yDir:
Die einzelnen Ausprägungen bedeuten im einzelnen:
- NF = negative fast (schnelle negative Geschwindigkeit)
- NM = negative medium (mittlere negative Geschwindigkeit)
- NS = negative slow (langsame negative Geschwindigkeit)
- Null = null (keine Fortbewegung)
- PS = positive slow (langsame positive Geschwindigkeit)
- PM = positive medium (mittlere positive Geschwindigkeit)
- PF = positive fast (schnelle positive Geschwindigkeit)
Hier das Diagramm mit den Ausprägungen (Zugehörigkeitsfunktionen) der
Fuzzy-Variablen mm_st[0] und mm_status:
Die einzelnen Ausprägungen bedeuten im einzelnen:
- find-line = erste Tennisplatzlinie finden
- clean-xp = säubern in positiver X-Richtung
- clean-xn = säubern in negativer X-Richtung
- clean-yp = säubern in positiver Y-Richtung
- clean-yn = säubern in negativer Y-Richtung
- leaving = Säuberung des Tennisplatzes erledigt
Arbeitsweise
Algorithmus des Fuzzy-Systems
Mit Hilfe der erstellten Fuzzy-Variable, dessen Ausprägungen und den
erstellten Regeln kann nun folgender Algorithmus durchlaufen werden:
- (1) Übergabe, teilweise Reinigung und Aktualisierung der Pixelwerte
- (2) Scharfe Werte fuzzyfizieren
- (3) )Regeln feuern
- (4) Regelergebnisse vereinigen
- (5) Unscharfe Werte defuzzyfizieren
- (6) Neue Geschwindigkeit in X- und Y-Richtung sowie Status anpassen
- (7) Bei Punkt 1) fortfahren
Download
|
TCCSimulator
|
download
|
TCCSimulator.zip (ca. 1,08 MB)
|
|
TCCSimulator Quellcodes
|
download
|
TCCSimulator-Src.zip (ca. 1,07 MB)
|