+ Basis Szenario
Einfachster Fall: Roboter fährt nur herum
fahre / nach F 2 3 5
gehe < nach Raum 2 3 5
komme | zu Walter / Karin / mir
| zur Teeküche / zur Bibliothek / zum Konferenzraum
| in die Teeküche / die Bibliothek /
| in den Diplomandenraum / den Konferenzraum /
| in den Raum von Walter / ins Zimmer von Walter
| in Walters Raum/Zimmer
\
-> goto(AuftragsId,Raum)
<- acknowledge(AuftragsId)
<- success(AuftragsId)
<- failure(AuftragId,Fehlercode)
Wo bist Du gerade?
-> getlocation()
<- location(Relation,Raum) Relation={in,near}
Wohin fährst Du gerade?
intern: gettarget() wird nicht an die Robotersteuerung gesendet
Wo ist/sitzt Walter?
In welchem Raum sitzt Walther?
interne Anfragen
??? Ist Walter (noch/gerade) in Raum 235/seinem Raum/der Teeküche?
Halt an
Stop
Hör auf (damit)!
-> cancel
Fahre erst ... und dann ...
Fahre ..., ... und ...
-> goto(Auftragsnr1,Raum1)
<- acknowledge(Auftragsnr1)
<- success(Auftragsnr1)
-> goto(Auftragsnr2,Raum2)
...
Beispielanalyse
1. Fahre in die Teeküche
2. verb(imp,sg) pp
p n(akk)
oder
satz( verb(fahren, form(imp, sg)), pp(praep(in), np( , form(akk,sg) )) )
3. goto(Raum/Person)
4. goto(raum_x) in Plan einfügen, vorher Raumnamen auflösen (zu Walter -> Fxxx)
5. zur Robbi-Anbindung: goto raum_x
Bei nicht erkennbaren Dingen wird could_not_parse zur"uckgegeben:
<- kein gueltiger term fuer prolog
-> could_not_parse
-> irgendwas
<- could_not_parse
Wenn der Grammatikkomponente ein g&uul;ltiger Prolog-Term übergeben wird, mit dem
sie nichts anfangen kann, passiert nichts weiter, um Schleifen zu verhindern.
Nach einer failure()-Meldung wird im Moment einfach der nächste Auftrag ausgeführt.
--
StephanMahnkopf,
YannickVersley - 10 Jan 2003