Durch den Subsumtions-Ansatz kann ein Roboter auch mit kleiner Rechenleistung interessante Fähigkeiten entwickeln. Subsumtion kombiniert einzelne Verhaltensweisen wie Herumfahren, Ausweichen, Greifen, Licht folgen oder Flucht. Einzelne Verhalten werden durch entsprechende aktuelle Sensorsignale ausgelöst. Ändern sich die Sensordaten, ändert sich entsprechend das Verhalten. Alle Verhalten werden ständig parallel berechnet. Ein Verhalten hat allerdings einen festgelegten Vorrang und unterdrückt alle Verhalten, die weniger "wichtig" sind.
Rodney A. Brooks (http://www.ai.mit.edu/people/brooks/) entwickelte die Subsumtions-Robotik in den 1980er Jahren (A Robust Layered Control System for a Mobile Robot, IEEE Journal of Robotics and Automation, Vol. 2, No. 1, March 1986) Er ist heute u. a. Direktor des MIT Computer Science and Artificial Intelligence Laboratory (http://www.csail.mit.edu).
Als Standardverhalten Herumfahren könnte ein Roboter beispielsweise auf einem zufällig gewählten Kurs den Teppichboden saugen. Seine Entfernungssensoren messen ständig die Distanzen zu seiner Umgebung. Wenn die Sensoren vorne rechts ein Hindernis registrieren, indem sie dort einen zu kleinen Distanzwert liefern, wird das Verhalten Herumfahren unterdrückt. Nun kann das "wichtigere" Verhalten Ausweichen aktiv werden, den Roboter nach links fahren lassen, bis die Distanz groß genug ist, und dann die Unterdrückung von Herumfahren beenden. In einer Zwischenebene könnte das Verhalten Steckdose suchen angesiedelt sein. Dieses Verhalten würde bei fast leeren Akkus Herumfahren unterdrücken und die Stromquelle suchen. Steckdose suchen wiederum würde bei Kollisionsgefahr von Ausweichen unterdrückt.
Einfaches Beispiel zur Subsumtion: Die Verhalten (grün) werden durch entsprechende Messwerte (Reize) der Sensoren (blau) ausgelöst und erzeugen Steuersignale für die Motoren. Übergeordnete Verhalten unterdrücken (rot, Subpression) untergeordnete Verhalten und schalten ihre Steuersignale durch. Die Steuersignale nur eines Verhaltens gelangen zu den Motoren.
Aus einer geschickten Kombination einzelner Verhaltensweisen kann ein komplexes Gesamtverhalten hervorgehen, wobei einige Verhalten wie oben beschrieben miteinander konkurrieren und andere hintereinander ausgeführt werden müssen. Beispiel: Das Verhalten Greifen kann daraus bestehen, 1. einen Greifer an ein Objekt heranzuführen, 2. wenn das Objekt zwischen den Fingern des Greifer eine Lichtschranke unterbricht, den Greifer zu schließen, und 3. das Objekt anzuheben.
Wie programmiert man Verhalten?
Die einzelnen Verhalten werden als Unterprogramme entsprechend ihrer Einsatzbedingungen sowie der Sensor- und Mikrocontroller-Hardware programmiert. (Verhalten lässt sich auch in Form einer logischer Schaltung "fest verdrahten".) Jedes dieser Verhalten wertet die Messdaten seines Sensors oder seiner Sensoren aus. Wenn das Verhalten (z. B. Ausweichen) durch einen gewissen "Reiz" ausgelöst wird (z. B. zu kleiner Abstand zum Hindernis), werden entsprechende Steuersignale erzeugt (z. B. für die Antriebsmotoren).
In einer Programmschleife werden nacheinander alle Unterprogramme der Verhalten aufgerufen. Danach wird entsprechend dem Unterdrückungsmechanismus ein Verhalten ausgewählt und dessen Steuersignale zu den Motoren oder anderen Aktoren durchgeschaltet. Das Zusammenspiel mehrerer Verhalten lässt sich sich unter anderem durch so genannte endliche Zustandsautomaten realisieren.
| Endlicher Zustandsautomat für unseren Saugroboter | ||
| aktueller Zustand | Sensor- Input | Zustand ändern nach |
| Startzustand = Herumfahren | ||
| Herumfahren | kurze Distanz | Ausweichen |
| Herumfahren | große Distanz | Herumfahren |
| Herumfahren | Akku fast leer | Steckdose suchen |
| Steckdose suchen | kurze Distanz | Ausweichen |
| Steckdose suchen | große Distanz | Steckdose suchen |
| Ausweichen | kurze Distanz | Ausweichen |
| Ausweichen | große Distanz | Herumfahren |
Der endliche Zustandsautomat unseres Beispielroboters, der den Teppichboden saugt, lässt sich durch eine Tabelle darstellen. Linke Spalte: aktueller Zustand des Roboters oder sein aktuelles Verhalten. Mittlere Spalte: Messwerte der Sensoren. Rechte Spalte: gibt an, welcher neue Zustand eingenommen werden soll in Abhängigkeit vom aktuellen Zustand und vom Sensor-Input. Der Roboter startet immer im Zustand Herumfahren. Beispiel: Wenn der Roboter herumfährt und der Distanzsensor eine zu kurze Entfernung misst, dann soll der Roboter ausweichen. Wenn er ausweicht und eine kurze Distanz misst, dann soll er weiterhin ausweichen. In einem Programm lässt sich solch eine Tabelle zum Beispiel durch bedingte Sprunganweisen realisieren.
Links
Website von Rodney A. Brooks (inklusive Veröffentlichungen)
http://www.ai.mit.edu/people/brooks/
Der Subsumtions-Ansatz im Überblick
http://ai.eecs.umich.edu/cogarch0/subsump/index.html
Beschreibung verschiedener Ansätze der Robotik
http://ai.eecs.umich.edu/cogarch0/index.html




