robocup_knowledge
impuls/challenge_restaurant.py
Go to the documentation of this file.
1 # TU/e Robotics
2 from robocup_knowledge import knowledge_loader
3 
4 # Common knowledge
5 common = knowledge_loader.load_knowledge("common")
6 
7 order_grammar = """
8 O[P] -> ORDER[P] | can i have a ORDER[P] | i would like ORDER[P] | can i get ORDER[P] | could i have ORDER[P] | may i get ORDER[P] | bring me ORDER[P]
9 ORDER[OO] -> COMBO[OO] | BEVERAGE[OO]
10 BEVERAGE[{"beverage": B}] -> BEV[B]
11 BEVERAGE[{"beverage": B}] -> DET BEV[B]
12 COMBO[{"food1": F1, "food2": F2}] -> FOOD[F1] and FOOD[F2] | FOOD[F1] with FOOD[F2]
13 COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and FOOD[F2] | DET FOOD[F1] with FOOD[F2]
14 COMBO[{"food1": F1, "food2": F2}] -> FOOD[F1] and DET FOOD[F2] | FOOD[F1] with DET FOOD[F2]
15 COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and DET FOOD[F2] | DET FOOD[F1] with DET FOOD[F2]
16 DET -> a | an
17 """
18 
19 # COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and DET FOOD[F2] | DET FOOD[F1] with DET FOOD[F2]
20 # BEVERAGE[{"beverage": B}] -> DET BEV[B]
21 
22 # Add drinks
23 for d in common.objects:
24  if d["category"] == "drink":
25  order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' '))
26  elif d["category"] == "food":
27  order_grammar += "\nFOOD['{}'] -> {}".format(d["name"], d["name"].replace('_', ' '))
28 
29 if __name__ == "__main__":
30  import rospy
31  from robot_skills.api import Api
32  rospy.init_node('blaat')
33  a = Api("", None)
34  rospy.sleep(rospy.Duration(0.5))
35  while True:
36  result = a.query("blaat", order_grammar, "O")
37  import ipdb;ipdb.set_trace()