Nächste Seite: Der mobile Roboter CARL
Aufwärts: Die Planungsebene
Vorherige Seite: Die Programmiersprache indiGOLOG
  Inhalt
Beispiel eines indiGOLOG-Programms
In [31] wird eine reaktive Fahrstuhl-Kontrollstruktur vorgestellt.
Dieses Beispiel spiegelt die volle Ausdrucksstärke der Sprache GOLOG und seiner
Erweiterungen zu indiGOLOG wider. Die im folgenden verwendete Variable
steht für einen Aufzug. Zunächst müssen Aktionen, Fluenten, die Vorbedingungen,
Nachfolgeaxiome und der Anfangszustand definiert werden.
1) Term-Definitionen:
- einfache primitive Aktionen
|
goDown(e) |
Aufzug fährt eine Etage runter |
|
goUp(e) |
Aufzug fährt eine Etage rauf |
|
buttonReset(n) |
Rufknopf der Etage wird deaktiviert |
|
toggleFan(e) |
Status des Ventilators umstellen (on/off) |
|
ringAlarm |
Alarm auslösen |
- exogene primitive Aktionen
reqElevator(n) |
Rufknopf der Etage aktivieren |
changeTemp(e) |
Temperatur im Aufzug verändert sich |
detectSmoke |
Rauchsensor bemerkt Rauch |
resetAlarm |
Zurücksetzen des Rauch-Alarms |
floor(e, s) = n |
Aufzug ist in Etage , mit |
temp(e, s) = t |
Temperatur des Aufzugs ist |
FanOn(e, s) |
Ventilator in ist an |
ButtonOn(n, s) |
Rufknopf der -ten Etage ist aktiviert |
Smoke(s) |
Es wurde Rauch bemerkt |
- Zusammengesetzte Fluenten
|
TooHot(e, s) |
:= |
temp(e, s) > 1 |
|
TooCold(e, s) |
:= |
temp(e, s) < -1 |
2) Umsetzung einer Aktionstheorie mit obigen Termen:
floor(e, ) = 1 |
|
|
temp(e, ) = 0 |
|
|
3) Kontrollstrukturen:
-
- Es handelt sich um eine vereinfachte Implementierung, bei der zum Beispiel die
Modellierung der Fahrstuhltüren und Menschen nicht beachtet wurde.
|
proc |
|
(1) |
|
|
|
|
|
|
|
(2) |
|
|
|
(3) |
|
|
|
|
|
|
|
(4) |
|
|
|
end |
|
|
|
|
|
proc
|
|
|
while do ; |
|
|
while do ; |
|
|
|
|
end |
-
- Auf der obersten Ebene (1) wird darauf geachtet, ob die Temperatur im Fahrstuhl
richtig ist und dementsprechend auf die Ventilation eingewirkt. Wenn der Rauchmelder
anschlägt (2), wird der Alarm angeschaltet, aber nur wenn der Ventilator nicht
umgeschaltet werden muß. Wenn keine der bisherigen Ebenen aktiv ist, können
die gewünschten Etagen (3) abgearbeitet werden. zeichnet
dabei die nach einer Strategie günstigste Etage aus. Eine solche Strategie könnte
''der am längsten gedrückte Knopf'' oder ''die nach Abstand geringste Etage''
sein. Wenn keine Rufknöpfe mehr aktiv sind, fährt der Fahrstuhl auf die unterste
Etage (4). Wenn während der Fahrt nach unten ein Knopf angeschaltet wird, wird
auch dieser abgearbeitet. Erst wenn der Fahrstuhl unten angekommen ist, wird
beendet. Durch eine einfache -Schleife mit
als Rumpf könnte der Aufzug dauerhaft betrieben werden. Würden
die Bedingungen der Ebenen (3) und (4) mit -Schleifen modelliert,
so würde ein Rufknopf, der während der Fahrt nach unten gedrückt wird, nicht
mehr bearbeitet werden. Wenn der Controller von einem übergeordneten Programm
aus mit verschiedenen Parametern aufgerufen wird (zum Beispiel
),
können mehrere Aufzüge parallel betrieben werden.
Nächste Seite: Der mobile Roboter CARL
Aufwärts: Die Planungsebene
Vorherige Seite: Die Programmiersprache indiGOLOG
  Inhalt
2001-01-04