Interpretationsszenarien
Grundlegende Arbeitsweise
Einfachster Fall
- Eingabe
- Eingabesatz als Wortliste
- Verarbeitung
- Syntaxbaum aufbauen
- Interpretieren
- etc.
- Ausgabe
- Eintrag für die Auftrags-Queue
- evtl. Rückfragen
Grundlegende Anfragetypen
- Direkt beantwortbare Anfrage (Raumplan o.Ä.)
- Einfacher Arbeitsauftrag (1 Eintrag in Auftragsqueue)
- Komplexer Auftrag (mehr als 1 Einzelaktion oder Bedingungen)
Parsing-Ansatz
- Pattern-Matching nach Wortgruppen ("in die Küche")
- begrenzter Wortschatz (Namen, Raumnummern, Imperativformen)
- sehr viele Patterns bei wachsendem Wortschatz
- Problematisch: Komplexe Anfragen
- "richtige" Syntaxanalyse mit DCG-Grammatik
- mächtiger
- Problematisch: Unvollständige/nicht erwartete Anfragen
- Entscheidung: Erst einmal richtige DCG benutzen
- ggf. später schauen, ob sich Pattern Matching sinnvoll einbauen lässt
Anbindung zur Robotersteuerung
- Kommunikationskanal
- Sockets
- Datei-basiert (z.B. zeilenweise Auftragsliste)
- Prolog -> C-Funktion -> JNI -> Java-Backend
- Abgrenzung zur Steuerung
- Wer übersetzt Namen in Raumnummern?
- Arbeitsweise der Steuerung
- Grundlage: Auftrags-Queue
- Wir verwalten die Queue (Eintrag hinzufügen, löschen, ändern, abfragen)
- Befehlssatz ("was rauskommt")
- Gehe zu Raum X
- Gib Objekt ab
- Nimm Bild auf
- Sag: "bla bla"
- Möglichkeit, Anfragen an das Weltwissen etc. zu stellen
Beispiele
- Was machst du?
- Queue abfragen
- Queue-Einträge umschreiben und sammeln
- Auftrag -> Sag: "Ich mache das-und-das"
- Wo bist du gerade?
- Anfrage an Weltwissen: Gib aktuelle Region
- Anfrage an Auftragsliste: Gib nächsten Auftrag
- Auftrag -> Sag: "Ich bin da-und-da und will das-und-das machen"
- Wie sieht es bei Walter aus?
- Anfrage: Wo ist Walter?
- Einzelaufträge
- Gehe zu [Ort von Walter]
- Nimm Bild auf
- Gehe zu [Ort der Auftragserteilung]
- Zeige Bild
- Hast du Walter das Buch gebracht?
- Analyse: Auf welchen Auftrag wird Bezug genommen?
- Einzelaufträge erzeugen, als wäre ein direkte Befehl gestellt worden
- Vergleich: Kommen die generierten Aufträge so in der Liste der abgearbeiteten Aufträge vor
- Auftrag -> Sag: "ja" oder "nein"
--
AlexGrupe - 20 Dec 2002