Universität Bremen  
  FB3 DFKI Kontakt  
  AG BKB > Thomas Röfer > Kognitive Robotik II > Übungszettel > Deutsch
English
 

2. Übungszettel: Kognitive Architekturen

 

Ausgabe: 2. Mail 2001
Abgabe: 16. Mai 2001

1. Begriffe (30%)

Erläutert die Grundideen hinter folgenden Begriffen:

  • Sense-Think-Act-Zyklus
  • Subsumption Architecture
  • Drei-Schichten-Architektur
  • Blackboard-System

2. Blackboard-Architektur (30%)

Teilaufgabe 1. Es soll ein Blackboard-System erstellt werden, das aus folgenden Komponenten besteht:

  • Ein Interface BlackboardIDs, das Konstanten für die IDs der Einträge im Blackboard definiert. Diese sollen mit 0 beginnen und in aufsteigender Reihenfolge abgelegt sein. Eine Konstante ID_MAX gibt die Anzahl der IDs an.
  • Die Klasse, die das Blackboard implementiert. Sie soll dafür Sorge tragen, dass die gelieferten Daten stets konsistent sind. Abweichend von der Vorlesung soll dieses durch die Verwendung der Java-Bordmittel zur Synchronisation von Zugriffen geschehen.
  • Eine Klasse Sender, deren Instanzen mit einer ID aus BlackboardIDs initialisiert werden und die mit einer Funktion send(...) Daten unter dieser ID ins Blackboard schreiben.
  • Eine Klasse Receiver, deren Instanzen ebenfalls mit einer ID aus BlackboardIDs initialisiert werden und die mit einer Funktion receive() das jeweils aktuellste Datum mit dieser ID aus dem Blackboard auslesen. Jede Instanz von Receiver soll ein bestimmtes Datum nur einmal ausliefern. Steht im Blackboard bei einem weiteren Aufruf von receive() immer noch dasselbe Datum, soll null zurückgeliefert werden. Dies gilt auch für den Fall, dass im Blackboard noch kein Datum unter der jeweiligen ID abgelegt wurde.

Teilaufgabe 2. Welche Anforderungen stellt ihr an die im Blackboard abzulegenden Daten, z.B. um ihre Konsistenz sicherzustellen? Könnt ihr das durch ein Java-Interface beschreiben?

Teilaufgabe 3. Schreibt ein einfaches Programm, um euer Blackboard-System zu testen.

3. Pufferung (20%)

Die Klassen Sender und Receiver puffern die Daten nicht, d.h. im Blackboard steht immer nur die aktuellste Version eines Datenpakets. Dies ist für manche Informationen unzureichend, z.B. für Tastenanschläge.

Teilaufgabe 1. Erstellt daher zwei weitere Klassen:

  • Die Klasse BufferedSender hatte dieselbe Signatur wie Sender (bis auf den Konstruktor) und verwaltet einen Puffer fester Länge (analog zur Vorlesung). Die Größe des Puffers wird im Konstruktor festgelegt. BufferedSender soll Sender verwenden, um den Puffer im Blackboard abzulegen.
  • Die Klasse BufferedReceiver hatte dieselbe Signatur wie Receiver und entnimmt die Daten einem Puffer fester Länge (analog zur Vorlesung). BufferedReceiver soll Receiver verwenden, um den Puffer aus dem Blackboard auszulesen. BufferedReceiver.receive() soll null zurückliefern, wenn bereits alle Pakete des Puffers ausgelesen wurden.

Teilaufgabe 2. Erstellt ein einfaches Testprogramm.

4. Selbstlokalisation mit dem Blackboard (20%)

Stellt euch folgendes Blackboard-System vor: Im Steuerungsprogramm eines mobilen Roboters gibt es zwei parallel laufende Module für die Selbstlokalisation. Das eine führt eine Odometrie-Rechnung mit hoher Geschwindigkeit durch und legt das jeweilige Ergebnis im Blackboard ab. Das andere bestimmt, z.B. mit Methoden der Bildverarbeitung, die globale Position des Roboters, ist aber viel langsamer als das Odometriemodul und kann daher viel seltener eine aktuelle Position liefern. Diese ist beim Beenden der Berechnung bereits veraltet.

Welche Informationen muss das langsame Selbstlokalisationsmodul im Blackboard ablegen, damit weitere Module jederzeit (d.h. maximal mit dem Takt des Odometriemoduls) eine gute Schätzung der aktuellen Position in x, y und Rotation berechnen können? Wie sieht die Berechnung aus?
 

 
   
Autor: Dr. Thomas Röfer
 
  Kognitive Robotik II 
Zuletzt geändert am: 7. August 2002   impressum