3 from __future__
import print_function
5 from robocup_knowledge
import knowledge_loader
6 common = knowledge_loader.load_knowledge(
"common")
8 not_understood_sentences = [
9 "I'm so sorry! Can you please speak louder and slower? And wait for the ping!",
10 "I am deeply sorry. Please try again, but wait for the ping!",
11 "You and I have communication issues. Speak up!",
12 "All this noise is messing with my audio. Try again"
24 T[{actions : <A1>}] -> C[A1]
36 V_GUIDE -> guide | escort | take | lead | accompany
38 DET -> the | a | an | some
39 NUMBER -> one | two | three
40 MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from
44 grammar +=
'\nLOCATION[%s] -> %s' % (loc, loc)
46 for obj
in common.object_names:
47 grammar +=
'\nNAMED_OBJECT[%s] -> %s' % (obj, obj)
50 grammar +=
'\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc)
52 for cat
in common.object_categories:
53 grammar +=
'\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat)
55 for name
in common.names:
56 grammar +=
'\nNAMED_PERSON[%s] -> %s' % (name, name)
65 V_PRESENT -> introduce yourself | present yourself | perform a demonstration | give a presentation
66 ENGLISH['en'] -> english
68 LANGUAGE[X] -> ENGLISH[X] | DUTCH[X]
69 VP["action": "demo-presentation", 'language': 'en'] -> V_PRESENT
70 VP["action": "demo-presentation", "language": X] -> V_PRESENT in LANGUAGE[X]
80 V_FIND -> find | locate | look for
82 VP["action": "find", "object": {"type": X}, "location": {"id": Y}] -> V_FIND DET NAMED_OBJECT[X] MANIPULATION_AREA_LOCATION[Y]
83 VP["action": "find", "object": {"type": X}] -> V_FIND DET NAMED_OBJECT[X]
93 V_GOPL -> go to | navigate to | drive to
95 VP["action": "navigate-to", "object": {"id": X}] -> V_GOPL the LOCATION[X]
106 VP["action": "inspect", "entity": {"id": X}] -> inspect the LOCATION[X]
116 OBJECT_TO_BE_BROUGHT -> NAMED_OBJECT | DET NAMED_OBJECT
118 V_BRING -> bring | deliver | take | carry | transport | give | hand | hand over
120 VP["action": "bring", "source-location": {"id": X}, "target-location": {"id": Y}, "object": {"type": Z}] -> V_BRING OBJECT_TO_BE_BROUGHT[Z] from the LOCATION[X] to the LOCATION[Y]
121 VP["action": "bring", "source-location": {"id": X}, "target-location": {"type": "person", "id": "operator"}, "object": {"type": Z}] -> V_BRING me OBJECT_TO_BE_BROUGHT[Z] from the LOCATION[X] | V_BRING OBJECT_TO_BE_BROUGHT[Z] from the LOCATION[X] to me
133 VP["action": "say", "sentence": X] -> V_SAY SAY_SENTENCE[X]
136 grammar +=
'\nSAY_SENTENCE["ROBOT_NAME"] -> your name'
137 grammar +=
'\nSAY_SENTENCE["TIME"] -> the time | what time it is | what time is it'
138 grammar +=
'\nSAY_SENTENCE["my team is tech united"] -> the name of your team'
139 grammar +=
'\nSAY_SENTENCE["DAY_OF_MONTH"] -> the day of the month'
140 grammar +=
'\nSAY_SENTENCE["DAY_OF_WEEK"] -> the day of the week'
141 grammar +=
'\nSAY_SENTENCE["TODAY"] -> what day is today | me what day it is | the date'
142 grammar +=
'\nSAY_SENTENCE["JOKE"] -> a joke'
151 VP["action": "turn-toward-sound", "duration": "30"] -> show your sound source localization | look at me when i am talking to you
160 if __name__ ==
"__main__":
161 print(
"GPSR Grammar:\n\n{}\n\n".format(grammar))
163 from grammar_parser.cfgparser
import CFGParser
166 if sys.argv[1] ==
"object":
167 grammar_parser = CFGParser.fromstring(obj_grammar)
168 elif sys.argv[1] ==
"location":
169 grammar_parser = CFGParser.fromstring(loc_grammar)
170 elif sys.argv[1] ==
"full":
171 grammar_parser = CFGParser.fromstring(grammar)
173 if len(sys.argv) > 2:
174 sentence =
" ".join(sys.argv[2:])
176 sentence = grammar_parser.get_random_sentence(
"T")
178 print(
"Parsing sentence:\n\n{}\n\n".format(sentence))
180 result = grammar_parser.parse(
"T", sentence)
182 print(
"Result:\n\n{}".format(result))