robocup_knowledge
rwc2018/challenge_gpsr.py
Go to the documentation of this file.
1 from __future__ import print_function
2 
3 from robocup_knowledge import knowledge_loader
4 common = knowledge_loader.load_knowledge("common")
5 
6 not_understood_sentences = [
7  "I'm so sorry! Can you please speak louder and slower? And wait for the ping!",
8  "I am deeply sorry. Please try again, but wait for the ping!",
9  "You and I have communication issues. Speak up!",
10  "All this noise is messing with my audio. Try again"
11  ]
12 
13 initial_pose = "initial_pose"
14 starting_pose = "gpsr_meeting_point"
15 exit_waypoint = "gpsr_exit_door"
16 
17 grammar_target = "T"
18 
19 
24 
25 grammar = """
26 T[A] -> C[A]
27 
28 C[{"actions": <A1>}] -> VP[A1]
29 C[{"actions": <A1, A2>}] -> VP[A1] and VP[A2]
30 C[{"actions": <A1, A2, A3>}] -> VP[A1] VP[A2] and VP[A3]
31 """
32 
33 
38 
39 grammar += """
40 V_GUIDE -> guide | escort | take | lead | accompany | conduct
41 
42 PPN_OBJECT -> it | them
43 PPN_PERSON -> him | her | them
44 
45 DET -> the
46 NUMBER -> one | two | three
47 MEETING_PP -> at | in
48 MANIPULATION_PP -> on
49 """
50 
51 for room in common.location_rooms:
52  grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room)
53 
54 for loc in common.get_locations():
55  grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc)
56 
57 grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]'
58 
59 for obj in common.object_names:
60  grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj)
61 
62 for loc in common.get_locations(pick_location=True, place_location=True):
63  grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc)
64 
65 for cat in common.object_categories:
66  grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat)
67 
68 for name in common.names:
69  grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name)
70  grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_entrance', 'type': 'waypoint'}}] -> %s at the entrance" % (
71  name, name)
72  grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_exit_door', 'type': 'waypoint'}}] -> %s at the exit" % (
73  name, name)
74  for loc in common.get_locations():
75  grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc)
76 
77 grammar += '\nLOCATION[{"id": "gpsr_exit_door", "type": "waypoint"}] -> exit'
78 grammar += '\nLOCATION[{"id": "gpsr_entrance", "type": "waypoint"}] -> entrance'
79 
80 
85 
86 grammar += """
87 V_FIND -> find | locate | look for
88 
89 OBJECT_TO_BE_FOUND -> NAMED_OBJECT | OBJECT_CATEGORY
90 UNNAMED_PERSON -> a person | someone
91 
92 VP[{"action": "find", "object": {'type': 'person'}}] -> V_FIND UNNAMED_PERSON
93 VP[{"action": "find", "object": {'type': 'person'}, "source-location": Y}] -> V_FIND UNNAMED_PERSON in the ROOM[Y]
94 VP[{"action": "find", "object": X}] -> V_FIND NAMED_PERSON[X]
95 VP[{"action": "find", "object": X, "source-location": Y}] -> V_FIND NAMED_PERSON[X] in the ROOM[Y]
96 
97 VP[{"action": "find", "object": X, "source-location": Y}] -> V_FIND DET OBJECT_TO_BE_FOUND[X] in the ROOM[Y]
98 
99 VP[{"action": "find", "object": X}] -> V_FIND DET OBJECT_TO_BE_FOUND[X]
100 """
101 
102 
103 
104 
109 
110 grammar += """
111 V_GOTO -> go to | navigate to
112 
113 VP[{"action": "navigate-to", "target-location": X}] -> V_GOTO the ROOM_OR_LOCATION[X]
114 """
115 
116 
121 
122 grammar += """
123 V_INSPECT -> inspect
124 
125 VP[{"action": "inspect", "object": X}] -> V_INSPECT the LOCATION[X]
126 """
127 
128 
133 
134 grammar += """
135 V_PICKUP -> get | grasp | take | pick up | grab
136 
137 VP[{"action": "pick-up", "object": X, "source-location": Y}] -> V_PICKUP DET NAMED_OBJECT[X] from the LOCATION[Y]
138 """
139 
140 
145 
146 grammar += """
147 V_PLACE -> put | place
148 
149 VP[{"action": "place", "object": X, "target-location": Y}] -> V_PLACE DET NAMED_OBJECT[X] MANIPULATION_AREA_LOCATION[Y]
150 VP[{"action": "place", "target-location": X, "object": {"type": "reference"}}] -> V_PLACE PPN_OBJECT MANIPULATION_PP the LOCATION[X]
151 """
152 
153 
158 
159 grammar += """
160 OPERATOR[{"type": "person", "id": "operator"}] -> me
161 BRING_NAME -> OPERATOR | NAMED_PERSON
162 
163 OBJECT_TO_BE_BROUGHT -> NAMED_OBJECT | DET NAMED_OBJECT
164 
165 V_BRING -> bring | deliver | take | give | V_PICKUP
166 """
167 
168 # HAND OVER
169 
170 grammar += """
171 VP[{"action": "hand-over", "target-location": Y, "object": Z}] -> V_BRING OPERATOR[Y] DET NAMED_OBJECT[Z]
172 VP[{"action": "hand-over", "source-location": X, "target-location": Y, "object": Z}] -> V_BRING OPERATOR[Y] DET NAMED_OBJECT[Z] from the LOCATION[X]
173 VP[{"action": "hand-over", "source-location": X, "target-location": Y, "object": Z}] -> V_BRING to PERSON_AT_LOCATION[Y] DET NAMED_OBJECT[Z] from the LOCATION[X]
174 
175 VP[{"action": "hand-over", "target-location": Y, "object": Z}] -> V_BRING DET NAMED_OBJECT[Z] to PERSON_AT_LOCATION[Y]
176 VP[{"action": "hand-over", "target-location": Y, "object": Z}] -> V_BRING DET NAMED_OBJECT[Z] to OPERATOR[Y]
177 
178 
179 VP[{"action": "hand-over", "target-location": X, "object": {"type": "reference"}}] -> V_BRING PPN_OBJECT to PERSON_AT_LOCATION[X]
180 VP[{"action": "hand-over", "target-location": X, "object": {"type": "reference"}}] -> V_BRING PPN_OBJECT to OPERATOR[X]
181 """
182 
183 # PLACE
184 
185 grammar += """
186 VP[{"action": "place", "target-location": Y, "object": Z}] -> V_BRING DET NAMED_OBJECT[Z] to the LOCATION[Y]
187 VP[{"action": "place", "source-location": X, "target-location": Y, "object": Z}] -> V_BRING DET NAMED_OBJECT[Z] from the LOCATION[X] to the LOCATION[Y]
188 """
189 
190 
195 
196 grammar += """
197 V_SAY -> tell | say
198 
199 VP[{"action": "say", "sentence": X}] -> V_SAY SAY_SENTENCE[X]
200 VP[{"action": "say", "sentence": X, "object": Y}] -> V_SAY SAY_SENTENCE[X] to PERSON_AT_LOCATION[Y]
201 """
202 
203 grammar += '\nSAY_SENTENCE["time"] -> the time'
204 grammar += '\nSAY_SENTENCE["team_name"] -> your teams name'
205 grammar += '\nSAY_SENTENCE["country"] -> your teams country'
206 grammar += '\nSAY_SENTENCE["team_affiliation"] -> your teams affiliation'
207 grammar += '\nSAY_SENTENCE["day_of_month"] -> the day of the month'
208 grammar += '\nSAY_SENTENCE["day_of_week"] -> the day of the week'
209 grammar += '\nSAY_SENTENCE["today"] -> what day is today'
210 grammar += '\nSAY_SENTENCE["tomorrow"] -> what day is tomorrow'
211 grammar += '\nSAY_SENTENCE["joke"] -> a joke'
212 grammar += '\nSAY_SENTENCE["something_about_self"] -> something about yourself'
213 
214 
219 
220 grammar += """
221 V_ANSWER_QUESTION -> answer a question
222 VP[{"action": "answer-question"}] -> V_ANSWER_QUESTION
223 VP[{"action": "answer-question", "target-person": X}] -> V_ANSWER_QUESTION to NAMED_PERSON[X]
224 VP[{"action": "answer-question", "target-person": X}] -> V_ANSWER_QUESTION to PERSON_AT_LOCATION[X]
225 """
226 
227 
232 
233 grammar += """
234 VP[{"action": "tell-name-of-person", "location": X}] -> tell me the name of the person MEETING_PP the ROOM_OR_LOCATION[X]
235 VP[{"action": "count-and-tell", "object": X, "location": Y}] -> tell me how many NAMED_OBJECT[X] there are on the LOCATION[Y]
236 """
237 
238 
239 if __name__ == "__main__":
240  print("GPSR Grammar:\n\n{}\n\n".format(grammar))
241 
242  from grammar_parser.cfgparser import CFGParser
243 
244  import sys
245  grammar_parser = CFGParser.fromstring(grammar)
246 
247  if len(sys.argv) > 2:
248  sentence = " ".join(sys.argv[2:])
249  else:
250  sentence = grammar_parser.get_random_sentence("T")
251 
252  print("Parsing sentence:\n\n{}\n\n".format(sentence))
253 
254  result = grammar_parser.parse("T", sentence)
255 
256  print("Result:\n\n{}".format(result))
common.get_locations
def get_locations(room=None, manipulation_location=None)
Definition: rwc2023/common.py:156