|
||||||
|
FB3 |
||||||
| AG BKB > Thomas Röfer > Kognitive Robotik II > Übungszettel > | ||||||
2. Übungszettel: Verhaltensmodellierung und Bildverarbeitung |
||||||
Ausgabe: 26. Mai 2003 1. Verhaltensmodellierung (20%)Beschreibt das Prinzip der Verhaltensmodellierung mit hierarchischen Zustandsmaschinen. Erklärt in diesem Zusammenhang folgende Begriffe:
2. Wettbewerb, nochmal mit Cabsl (30%)Die Datei Cabsl.h definiert eine einfache Sprache zur Verhaltensmodellierung mit hierarchischen Zustandsmaschinen (Beispiel aus dem Praktikum): behavior = BEGIN_OPTIONS declarations END_OPTIONS options <optionName>, <stateName> und <initialState> sind Bezeichner entsprechend der normalen C++-Namenskonventionen. In der <C++ boolean expression> können die beiden vordefinierten Symbole timeInOption und timeInState (in ms) sowie globale Variablen und Funktionen verwendet werden. <C++ statement>s können auf globale Variablen und Funktionen zugreifen. Ein Durchlauf durch das Modell wird durch folgenden Aufruf gestartet: DO_ROOT(<optionName>) Modelliert eure Implementierung für den Wettbewerb Ende des letzten Semesters noch einmal neu mit Cabsl. Falls ihr nicht teilgenommen habt, könnt ihr alternativ auf die damalige Musterlösung zurückgreifen. Versucht, die Möglichkeiten der Modellierungsprache auszunutzen. Welche Grundverhalten braucht ihr und welche Symbole? Stellt den Optionenbaum in eurer Dokumentation auch grafisch dar. 3. Farbräume (20%)Teilaufgabe 1. Erläutert die drei Farbräume YUV, RGB und HSI. Wie rechnet man Farben von YUV nach RGB und von RGB nach HSI um? Teilaufgabe 2. Überlegt euch, wie man die Umrechnung von YUV nach HSI effizient gestalten kann. 4. Segmentierung (30%)Teilaufgabe 1. Schreibt eine Funktion colorClass getColorClass(unsigned char y, unsigned char u, unsigned char v), die die Farbklassen skyblue, orange und noColor zurückliefert. Dazu soll sie die YUV-Pixel des von der Kamera gelieferten Bildes in den HSI-Raum transformieren und dort auf von euch zu ermittelnde Grenzen testen. Für Pixel des blauen Tores soll die Funktion skyblue liefern und für den Ball orange. Für jede andere Farbe soll noColor geliefert werden. Füllt ein Feld colorClass segmentedImage[144][176] mit den Farbklassen. Teilaufgabe 2. Erweitert euer Programm so, dass es zusammenhängende Bereiche gleicher Farbe erkennt. Dazu durchlauft ihr das segmentierte Bild Pixel für Pixel. Bei jedem Pixel, das nicht der Klasse noColor angehört, soll ein Füllalgorithmus gestartet werden, der Breite und Höhe des zusammenhängenden Bereichs ermittelt, zu dem das gefundene Pixel gehört. Während des Füllens sollen alle Pixel dieses Bereichs auf noColor gesetzt werden, damit sie nur einmal durchlaufen werden. Am Ende jedes Füllvorgangs soll die Mitte der gerade ermittelten Fläche dargestellt werden, falls die Fläche eine von euch festzulegende Mindestgröße hat. Tipp. Um das segmentierte Bild darzustellen, könnt ihr euch mit folgender Funktion behelfen: void MyController::drawSegmentedImage() Beachtet, dass ihr die aktualisierte Fassung der Datei RobotConsole.cpp in AiboControl2 einspielen müsst, damit die Darstellung funktioniert. |
||||||
| Autor: Dr. Thomas Röfer |
||||||
| Kognitive Robotik II |
|
|||||