robocup_knowledge
rwc2019/challenge_restaurant.py
Go to the documentation of this file.
1 # RESTAURANT KNOWLEDGE FILE RWC2018
2 
3 # TU/e Robotics
4 from robocup_knowledge import knowledge_loader
5 
6 # Common knowledge
7 common = knowledge_loader.load_knowledge("common")
8 
9 order_grammar = """
10 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]
11 ORDER[<A1>] -> ITEMS[A1] | DET ITEMS[A1]
12 ORDER[<A1, A2>] -> ITEMS[A1] ITEMS[A2] | DET ITEMS[A1] DET ITEMS[A2] | DET ITEMS[A1] and DET ITEMS[A2] | ITEMS[A1] and ITEMS[A2]
13 ORDER[<A1, A2, A3>] -> ITEMS[A1] ITEMS[A2] ITEMS[A3] | ITEMS[A1] ITEMS[A2] and ITEMS[A3] |DET ITEMS[A1] DET ITEMS[A2] DET ITEMS[A3] | DET ITEMS[A1] and DET ITEMS[A2] and DET ITEMS[A3] | DET ITEMS[A1] DET ITEMS[A2] and DET ITEMS[A3]
14 DET -> a | an
15 """
16 
17 # ORDER[OO] -> COMBO[OO] | BEVERAGE[OO]
18 # BEVERAGE[{"beverage": B}] -> BEV[B]
19 # BEVERAGE[{"beverage": B}] -> DET BEV[B]
20 # COMBO[{"food1": F1, "food2": F2}] -> FOOD[F1] and FOOD[F2] | FOOD[F1] with FOOD[F2]
21 # COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and FOOD[F2] | DET FOOD[F1] with FOOD[F2]
22 # COMBO[{"food1": F1, "food2": F2}] -> FOOD[F1] and DET FOOD[F2] | FOOD[F1] with DET FOOD[F2]
23 # COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and DET FOOD[F2] | DET FOOD[F1] with DET FOOD[F2]
24 
25 # COMBO[{"food1": F1, "food2": F2}] -> DET FOOD[F1] and DET FOOD[F2] | DET FOOD[F1] with DET FOOD[F2]
26 # BEVERAGE[{"beverage": B}] -> DET BEV[B]
27 
28 candies = ["biscuit", "frosty_fruits", "snakes"]
29 drinks = ["beer", "chocolate_milk", "coke", "juice", "lemonade", "water"] #"tea bag"
30 food = ["carrot", "cereals", "noodles", "onion", "vegemite"]
31 fruits = ["apple", "kiwi", "lemon", "orange", "pear"]
32 snacks = ["cheetos", "doritos", "shapes_chicken", "shapes_pizza", "twisties"]
33 
34 # Add drinks
35 # for d in common.objects:
36  # if d["category"] == "drink":
37  # order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' '))
38  # elif d["category"] == "food" or d["category"] == "snack":
39  # order_grammar += "\nFOOD['{}'] -> {}".format(d["name"], d["name"].replace('_', ' '))
40 
41 for item in candies + drinks + food + fruits + snacks:
42  order_grammar += "\nITEMS['{}'] -> {}[B]".format(item, item.replace('_', ' '))
43 
44 if __name__ == "__main__":
45  import rospy
46  from robot_skills.api import Api
47  rospy.init_node('blaat')
48  a = Api("", None)
49  rospy.sleep(rospy.Duration(0.5))
50  while True:
51  result = a.query("blaat", order_grammar, "O")
52  import ipdb;ipdb.set_trace()