Institut
für Informatik, Universität Freiburg
|
Institut für
Informatik |
Grundlagen der Künstlichen Intelligenz |
Abgabe/Vorführung: 22.11.2000
Die Problematik der Steuerung eines autonomen Roboters läßt sich häufig
in mehrere Teilprobleme aufteilen. Eine komplexe Aufgabe ist z. B. die Anfahrt von
Zielpunkten in einem Bürogebäude oder Museum, während gleichzeitigem Ausweichens
von statischen und dynamischen Hindernissen.
Grundsätzlich bestehen zwei verschiedene Vorgehensweisen in der Robotik, welche man als reaktiv
und deliberative bezeichen kann. Reaktives Verhalten basiert meistens auf einer Überlagerung mehrerer
primitiver Verhalten, die unmittelbar auf Sensoreingaben reagieren. Typischerweise bestehen direkte
Verbindungen zwischen Sensoren und Aktoren, die je nach Aufgabe gewichtet sind.
Bei deliberatives Verhalten, auf der anderen Seite, wird eine Modellierung der Welt durchgeführt
und anschließend ein optimales Verhalten durch Planen oder Schlussfolgern ermittelt.
Beide Vorgehensweisen haben ihre Vor- und Nachteile, weshalb
Heutzutage meist eine Vermischung beider vorgenommen wird. Diese Übung soll einen
Einblick in beide Vorgehensweisen geben, wobei es den Gruppen freigestellt ist eine Lösung basierend
auf dem Weltmodell oder basierend auf Sensordaten zu entwickeln.
Schreiben Sie eine Funktion die bei gegebenem Modell des Feldes oder bei gegebenen
Rohdaten des LRF einen von der Bande wegführenden Drehwinkel berechnet. Der Winkel
sollte möglichst so gewählt werden, dass der Roboter eine minimale Korrektur
seiner Orientierung auszuführen hat. Zusätzlich soll die Funktion einen Wert
zwischen 0 und 1 ausgeben, welcher aussagt wie kritisch die Nähe zu der Umrandung des Feldes ist.
Bei Abständen über 500mm sollte die Ausgabe 0 sein.
Für die "deliberative" Lösung kann der Simulator zur
schnelleren Entwicklung verwendet werden. Für die "reaktive" Lösung ist es ausreichend einen Geschwindigkeitsvektor
für eine spätere Überlagerung auszugeben.
Schreiben Sie ein Verhalten, welches den Roboter das Feld explorieren lässt. Dabei sollte der Roboter in möglichst verschiedene Bereiche vorstoßen und nicht zwischen vorprogrammierten Positionen wechseln! Verwenden Sie die "Bandenvermeidung" aus Aufgabe 1 um unnötige Kollisionen zu vermeiden.
Erweitern Sie das Verhalten von Aufgabe 2 derart, dass der Roboter Objekte auf dem Feld
ansteuert, vor diesen stoppt und mit dem Hinterteil wedelt. Nach einer kurzzeitigen Pause sollte der Roboter
dann die entgegengesetzte Richtung einschlagen. Zur Lösung dieser Aufgabe können entweder erkannte Objekte
(Übung 2) oder die Rohdaten des LRF verwendet werden.