diff --git a/robocup_knowledge/src/robocup_knowledge/environments/demo/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/demo/challenge_gpsr.py index 184d61e8d6..a2d54dbc94 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/demo/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/demo/challenge_gpsr.py @@ -1,7 +1,5 @@ from __future__ import print_function - -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -38,19 +36,21 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for loc in common.get_locations(): - grammar += '\nLOCATION[%s] -> %s' % (loc, loc) +# object_names = knowledge_functions.get_object_names() + +# for loc in knowledge_functions.get_locations(): +# grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for obj in common.object_names: - grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) +# for obj in object_names: +# grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): - grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) +# for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): +# grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### @@ -151,7 +151,7 @@ VP["action": "bring", "source-location": {"id": X}, "target-location": {"type": "person", "id": Y}, "object": {"type": Z}] -> V_BRING BRING_NAME[Y] OBJECT_TO_BE_BROUGHT[Z] from the LOCATION[X] """ -for name in common.names: +for name in knowledge_functions.names: grammar += '\nBRING_PERSON[%s] -> %s' % (name, name) ############################################################################## @@ -193,11 +193,15 @@ from grammar_parser.cfgparser import CFGParser import sys - if sys.argv[1] == "object": - grammar_parser = CFGParser.fromstring(obj_grammar) - elif sys.argv[1] == "location": - grammar_parser = CFGParser.fromstring(loc_grammar) - elif sys.argv[1] == "full": + if len(sys.argv) > 1: + if sys.argv[1] == "object": + grammar_parser = CFGParser.fromstring(obj_grammar) + elif sys.argv[1] == "location": + grammar_parser = CFGParser.fromstring(loc_grammar) + elif sys.argv[1] == "full": + grammar_parser = CFGParser.fromstring(grammar) + + else: grammar_parser = CFGParser.fromstring(grammar) if len(sys.argv) > 2: diff --git a/robocup_knowledge/src/robocup_knowledge/environments/demo/common.py b/robocup_knowledge/src/robocup_knowledge/environments/demo/common.py index b44d14fefd..bddf89c67b 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/demo/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/demo/common.py @@ -72,107 +72,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - if location in location_rooms: - return location - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - - -def get_object_category_location(obj_cat): - # Returns (location, area_name) - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_carry_my_luggage.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_carry_my_luggage.py index c91e76db69..a38503c672 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_carry_my_luggage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_carry_my_luggage.py @@ -1,4 +1,3 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "starting_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_demo.py index 22d5ff4668..f15d736bd7 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_demo.py @@ -1,7 +1,7 @@ from __future__ import print_function +from robocup_knowledge.knowledge_functions import KnowledgeFunctions -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +kf = KnowledgeFunctions() not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -35,19 +35,19 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for loc in common.get_locations(): +for loc in kf.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for obj in common.object_names: +for obj in kf.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in kf.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in kf.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in kf.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_find_my_mates.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_find_my_mates.py index 6bb91c8d45..6e492492b7 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_find_my_mates.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_find_my_mates.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" room = "dining_room" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_gpsr.py index 810ce84b3c..0ea8a00e70 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_gpsr.py @@ -1,7 +1,5 @@ from __future__ import print_function - -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -48,26 +46,26 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_hand_me_that.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_hand_me_that.py index b55ece1db8..31700e2d9a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_hand_me_that.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_hand_me_that.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" home_location = "rips_point_1" room = "dining_room" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_receptionist.py index 9a2ee8c6e0..b68e1da8ba 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_receptionist.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "john" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_restaurant.py index 768e01303c..eabd3df209 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_restaurant.py @@ -1,8 +1,6 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions -# Common knowledge -common = knowledge_loader.load_knowledge("common") order_grammar = """ 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] @@ -20,7 +18,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_rips.py index c29b05ca73..1bcbe74ae6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "rips_point_1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_stickler_for_the_rules.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_stickler_for_the_rules.py index 16fb805a25..2fa4952c8c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_stickler_for_the_rules.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_stickler_for_the_rules.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # General starting_point = "initial_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_storing_groceries.py index 024920a0fb..5d0b61dd4e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_storing_groceries.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # General starting_point = 'initial_pose' @@ -12,8 +9,8 @@ default_area = "shelf4" inspect_area = "in_front_of" object_shelves = ["shelf3", "shelf4", "shelf5"] # TODO unused variable? -object_types = [obj["name"] for obj in common.objects] # TODO unused variable? +object_types = [obj["name"] for obj in knowledge_functions.objects] # TODO unused variable? # Grasping table = "dinner_table" -room = common.get_room(table) +room = knowledge_functions.get_room(table) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_take_out_the_garbage.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_take_out_the_garbage.py index b0725d2fc1..eb6bb15481 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_take_out_the_garbage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_take_out_the_garbage.py @@ -1,9 +1,6 @@ # TAKE OUT THE GARBAGE KNOWLEDGE FILE IMPULS # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" trashbin_id = "trashbin" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_where_is_this.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_where_is_this.py index 80d804e4a7..eaf07e71e5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_where_is_this.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/challenge_where_is_this.py @@ -6,7 +6,7 @@ from collections import namedtuple # TU/e Robotics -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions BackupScenario = namedtuple("BackupScenario", ["entity_id", "sentence"]) @@ -19,8 +19,7 @@ information_point_id = "where_is_this_information_point" initial_pose_id = "initial_pose" -# Common knowledge -common = knowledge_loader.load_knowledge("common") + grammar_target = "T" @@ -28,7 +27,7 @@ T[A] -> LOCATION[A] """ -for loc in common.location_names: +for loc in knowledge_functions.location_names: starting_point_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) location_grammar = """ @@ -37,18 +36,18 @@ COURTESY_PREFIX -> robot please | could you | could you please | please """ -for loc in common.location_rooms: +for loc in knowledge_functions.location_rooms: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.location_names: +for loc in knowledge_functions.location_names: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.object_names: - category = common.get_object_category(loc) - if category not in common.category_locations: +for loc in knowledge_functions.object_names: + category = knowledge_functions.get_object_category(loc) + if category not in knowledge_functions.category_locations: continue - entity_id = common.get_object_category_location(category)[0] + entity_id = knowledge_functions.get_object_category_location(category)[0] location_grammar += '\nLOCATION[%s] -> %s' % (entity_id, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/impuls/common.py b/robocup_knowledge/src/robocup_knowledge/environments/impuls/common.py index e370975281..4cf91698c5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/impuls/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/impuls/common.py @@ -153,128 +153,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return entity_id in location_rooms - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - -def is_known_object(obj): - for o in objects: - if o["name"] == obj: - return True - return False - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_eegpsr.py index f149110f77..a46a1394c9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_eegpsr.py @@ -1,12 +1,11 @@ from itertools import groupby -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose_door_B" # initial pose starting_pose = "eegpsr_starting_pose" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit"] +rooms = knowledge_functions.rooms + ["entrance", "exit"] translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_final.py index 2ed3a201ee..ba2093f671 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_final.py @@ -1,6 +1,5 @@ from itertools import groupby -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # initial pose starting_point = "initial_pose_door_A" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_following_and_guiding.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_following_and_guiding.py index 5f9fbebe8b..987cdab2a0 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_following_and_guiding.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_following_and_guiding.py @@ -1,4 +1,4 @@ -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "Guide me back" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_gpsr.py index e54b0334ec..9136a442d8 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_gpsr.py @@ -1,12 +1,11 @@ from itertools import groupby -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # initial pose starting_point = "initial_pose_door_A" exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit"] +rooms = knowledge_functions.rooms + ["entrance", "exit"] translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_manipulation.py index ed1c24a5a9..6ab3934092 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_manipulation.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions ''' Cabinet used for the challenge ''' cabinet = "bookcase" @@ -17,7 +16,7 @@ room = "livingroom" '''Object types that can be recognized''' -object_types = [o["name"] for o in common.objects if o["category"] != "container"] +object_types = [o["name"] for o in knowledge_functions.objects if o["category"] != "container"] # ToDo: make nice min_grasp_height = 0.73 # area_bottom_height - 4 cm diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_navigation.py index 108cf5c9a5..5d656e6375 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_navigation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + target1 = "navigation_waypoint_1" target1_radius1 = 0.1 target1_radius2 = 0.3 diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_open.py index 2ed3a201ee..ba2093f671 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_open.py @@ -1,6 +1,5 @@ from itertools import groupby -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # initial pose starting_point = "initial_pose_door_A" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_person_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_person_recognition.py index f2b094ecd5..674de890a5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_person_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_person_recognition.py @@ -1,6 +1,6 @@ ''' colors from printing on screen ''' from __future__ import print_function - +from robocup_knowledge import knowledge_functions class bcolors: HEADER = '\033[95m' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_restaurant.py index 5bb78da6b7..b015684a49 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_restaurant.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "( |)" @@ -19,6 +18,6 @@ order_spec = "(| and [(a|an)] )" # Do not alter keys or side values -drinks = [ o["name"] for o in common.objects if o["category"] == "drink" ] -foods = [ o["name"] for o in common.objects if o["category"] == "food" ] -order_choices = {"beverage": drinks, "food1": foods, "food2": foods } \ No newline at end of file +drinks = [ o["name"] for o in knowledge_functions.objects if o["category"] == "drink" ] +foods = [ o["name"] for o in knowledge_functions.objects if o["category"] == "food" ] +order_choices = {"beverage": drinks, "food1": foods, "food2": foods } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_rips.py index ce6b9a22d2..864a36e33e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_rips.py @@ -1,3 +1,4 @@ +from robocup_knowledge import knowledge_functions starting_point = "initial_pose_door_B" intermediate_1 = "rips1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_robonurse.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_robonurse.py index e69de29bb2..e6093354db 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_robonurse.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_robonurse.py @@ -0,0 +1 @@ +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_speech_recognition.py index ac13f586fb..48428ebda7 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_speech_recognition.py @@ -1,3 +1,6 @@ +from robocup_knowledge import knowledge_functions + + choice_answer_mapping = { "What shape is this building" : " UFO", "Who was beaten by AlphaGo" : " Lee Sedol", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_wakemeup.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_wakemeup.py index e69de29bb2..e6093354db 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_wakemeup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/challenge_wakemeup.py @@ -0,0 +1 @@ +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/common.py b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/common.py index 3372dfbdd3..c7f7ee7264 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/reo2016/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/reo2016/common.py @@ -90,93 +90,3 @@ def get_object_names(category=None): "left_of_sink" : "in_front_of_left_sink" } } - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or is_pick_location(loc["name"])) and \ - (place_location == None or is_place_location(loc["name"]))] - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -# Returns (location, area_name) -def get_object_category_location( obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_final.py index f322e911ad..1e9bdbf86e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_final.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + initial_pose_sergio = "initial_pose_door_B" initial_pose_amigo = "initial_pose_door_B" @@ -21,4 +23,4 @@ explore_location_12 = "final_right_bedside_table" explore_locations_part_2 = [explore_location_4, explore_location_5, explore_location_6, explore_location_7, explore_location_8, explore_location_9, explore_location_10, explore_location_11, explore_location_12] -end_location_sergio = "final_last_position_sergio" \ No newline at end of file +end_location_sergio = "final_last_position_sergio" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_gpsr.py index e8444c7e70..265661c354 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_gpsr.py @@ -1,4 +1,5 @@ # GERMAN OPEN 2015 +from robocup_knowledge import knowledge_functions #locations: starting_point = "initial_pose_door_A" @@ -19,7 +20,7 @@ 'bed', 'sink', 'desk', 'small table', 'kitchencounter', 'cabinet', 'couchtable', 'right bedside table', 'right bookcase'] -##NEW, location_types: +##NEW, location_types: location_types = ['', 'shelf', 'appliance', 'seat', 'table', 'utility'] rooms = ["kitchen", "livingroom", "hall", "bedroom", "office"] @@ -39,7 +40,7 @@ #spec = spec_get_deliver choices = {'1_location':location_placement, -'2_vb_take':['take', 'grasp', 'get'], +'2_vb_take':['take', 'grasp', 'get'], '2_object':objects_known, '3_vb_deliver': ['bring', 'carry', 'deliver', 'take'], '3_person_me':['me'], @@ -52,4 +53,4 @@ '2_vb_find':['find', 'look for'], '3_question':['question'], '3_vb_speak':['tell', 'say', 'speak'], -'3_name_time_date':['your name', 'the name of your team', 'the time', 'what time is it', 'tell the date', 'what day is today', 'what day is today', 'what day is tomorrow', 'tell the day of the month', ' tell the day of the week']} \ No newline at end of file +'3_name_time_date':['your name', 'the name of your team', 'the time', 'what time is it', 'tell the date', 'what day is today', 'what day is today', 'what day is tomorrow', 'tell the day of the month', ' tell the day of the week']} diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_manipulation.py index 93e7ec82c3..f5c05791df 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_manipulation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + ''' Shelves where objects might be ''' object_shelves=["right_bookcase/shelf3","right_bookcase/shelf4","right_bookcase/shelf5"] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_navigation.py index a2ed4c940c..30788d3703 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_navigation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + target1 = { 'near' : 'small_table', 'in' : 'hall', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_open.py index f89db06dd2..96e2953c53 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_open.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + cabinet = "right_bookcase" table1 = "dinnertable" table2 = "bookcase" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_person_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_person_recognition.py index d3d850c73b..d326065280 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_person_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_person_recognition.py @@ -1,5 +1,6 @@ # PERSON RECOGNITION RGO2015 from __future__ import print_function +from robocup_knowledge import knowledge_functions names = ["Anna","Beth","Carmen","Jennifer","Jessica","Kimberly","Kristina","Laura","Mary","Sarah","Alfred","Charles","Daniel","James","John","Luis","Paul","Richard","Robert","Steve"] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_restaurant.py index 755976b403..5b97e02cf9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_restaurant.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "( |)" @@ -15,6 +14,6 @@ order_spec = "(| and [(a|an)] )" # Do not alter keys or side values -drinks = [ o["name"] for o in common.objects if o["category"] == "drink" ] -foods = [ o["name"] for o in common.objects if o["category"] == "food" ] -order_choices = {"beverage": drinks, "food1": foods, "food2": foods } \ No newline at end of file +drinks = [ o["name"] for o in knowledge_functions.objects if o["category"] == "drink" ] +foods = [ o["name"] for o in knowledge_functions.objects if o["category"] == "food" ] +order_choices = {"beverage": drinks, "food1": foods, "food2": foods } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_rips.py index 337c86d390..abe81d7209 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_rips.py @@ -1,4 +1,6 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose_door_B" exit_1 = "exit_1_A" exit_2 = "exit_2_A" -exit_3 = "exit_3_A" \ No newline at end of file +exit_3 = "exit_3_A" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_robonurse.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_robonurse.py index 2af70d25a1..4887b2bdb9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_robonurse.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_robonurse.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + room = "livingroom" grannies_table = "couchtable" bottle_shelf = "cupboard" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_speech_recognition.py index 2f3f8fc242..65e6b7bf4a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015/challenge_speech_recognition.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + choice_answer_mapping = { "Which American state is nearest to the former Soviet Union ":"ALASKA", "How many tentacles does a squid have ":"TEN", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015_final/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015_final/challenge_final.py index 2be9f4793b..e56cdc3783 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2015_final/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2015_final/challenge_final.py @@ -1,3 +1,4 @@ +from robocup_knowledge import knowledge_functions initial_pose_sergio = "initial_pose_door_B" initial_pose_amigo = "initial_pose_door_B" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_final.py index 70531e7be3..9a6c10bceb 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_final.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Load the common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose" meeting_point = "final_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_gpsr.py index e0a5e8d7af..e4ae3279ed 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -47,16 +46,16 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_NAMES[%s] -> %s' % (cat, cat) ############################################################################### @@ -77,7 +76,7 @@ grammar += '\nFIND_PERSONS -> DET person' grammar += '\nFIND_PERSONS -> DET women' grammar += '\nFIND_PERSONS -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nFIND_PERSONS -> %s' % name ############################################################################### @@ -145,7 +144,7 @@ grammar += '\nFOLLOW_PERSONS[the person] -> DET person' grammar += '\nFOLLOW_PERSONS[the woman] -> DET woman' grammar += '\nFOLLOW_PERSONS[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nFOLLOW_PERSONS[%s] -> %s' % (name, name) ############################################################################### @@ -169,7 +168,7 @@ VP["action": "bring", "object": {"type": Z}] -> V_BRING DET OBJECT_NAMES[Z] | V_BRING OBJECT_NAMES[Z] """ -for name in common.names: +for name in knowledge_functions.names: grammar += '\nBRING_PERSONS -> %s' % name ############################################################################## @@ -212,7 +211,7 @@ grammar += '\nMEET_PERSON[the person] -> DET person' grammar += '\nMEET_PERSON[the woman] -> DET woman' grammar += '\nMEET_PERSON[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nMEET_PERSON[%s] -> %s' % (name, name) # FOLLOW PERSON : (PERSON is at the BEACON) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_help_me_carry.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_help_me_carry.py index 07d6acb553..074317162c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_help_me_carry.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_help_me_carry.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + default_item = "coke" default_place = "couch_table" default_area = "on_top_of" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_open.py index ca8c4106f6..40864c1bff 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_open.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" ask_waypoint = "challenge_open_ask_waypoint" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_restaurant.py index 768e01303c..425a85d76a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_restaurant.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -20,7 +17,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_rips.py index bbae40eb45..3937f8a542 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_spr.py index 76396d5d06..8ccbb0dd3d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_spr.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -36,16 +35,16 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_storing_groceries.py index ac7d30db58..c3a683b261 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/challenge_storing_groceries.py @@ -6,10 +6,7 @@ # TU/e Robotics from robot_skills.util.kdl_conversions import FrameStamped -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Detection cabinet_amcl = "bookshelf" # "cabinet" @@ -17,7 +14,7 @@ FrameStamped(frame=kdl.Frame(kdl.Rotation.RPY(0.0, 0.0, 1.570796), kdl.Vector(2.271, -1.258, 0.0)), frame_id="map")] object_shelves = ["shelf2", "shelf3", "shelf4", "shelf5"] -object_types = [obj["name"] for obj in common.objects] +object_types = [obj["name"] for obj in knowledge_functions.objects] # Grasping grasp_surface = "side_table" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/common.py index 7e091a87e3..f5f9648f27 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2017/common.py @@ -149,105 +149,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - if location in location_rooms: - return location - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - - -def get_object_category_location(obj_cat): - # Returns (location, area_name) - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_demo.py index f657842634..d867225c9f 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_demo.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -38,19 +37,19 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_eegpsr.py index f34e8acd84..27d15f1224 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_eegpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -47,24 +46,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' @@ -185,7 +184,7 @@ grammar += '\nFOLLOW_PERSONS[the person] -> DET person' grammar += '\nFOLLOW_PERSONS[the woman] -> DET woman' grammar += '\nFOLLOW_PERSONS[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nFOLLOW_PERSONS[%s] -> %s' % (name, name) ############################################################################### @@ -216,9 +215,9 @@ VP[{"action": "hand-over", "target-location": X, "object": {"type": "reference"}}] -> V_BRING PPN_OBJECT to BRING_PERSON[X] """ -for name in common.names: +for name in knowledge_functions.names: grammar += '\nBRING_PERSON[{"type": "person", "id": "%s"}] -> %s' % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += '\nBRING_PERSON[{"type": "person", "id": "%s", "location": %s}] -> %s MANIPULATION_AREA_DESCRIPTION the %s' % (name, loc, name, loc) ############################################################################## @@ -286,7 +285,7 @@ grammar += '\nMEET_PERSON[the person] -> DET person' grammar += '\nMEET_PERSON[the woman] -> DET woman' grammar += '\nMEET_PERSON[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nMEET_PERSON[%s] -> %s' % (name, name) # FOLLOW PERSON : (PERSON is at the BEACON) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_final.py index bd90073c82..c841f58e6e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_final.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Load the common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose" meeting_point = "gpsr_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_gpsr.py index 63ac4abd57..9f97c2a7bb 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -47,24 +46,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' @@ -184,7 +183,7 @@ grammar += '\nFOLLOW_PERSONS[the person] -> DET person' grammar += '\nFOLLOW_PERSONS[the woman] -> DET woman' grammar += '\nFOLLOW_PERSONS[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nFOLLOW_PERSONS[%s] -> %s' % (name, name) ############################################################################### @@ -216,9 +215,9 @@ VP[{"action": "hand-over", "target-location": X, "object": Z}] -> V_BRING OBJECT_TO_BE_BROUGHT[Z] to BRING_PERSON[X] """ -for name in common.names: +for name in knowledge_functions.names: grammar += '\nBRING_PERSON[{"type": "person", "id": "%s"}] -> %s' % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += '\nBRING_PERSON[{"type": "person", "id": "%s", "location": %s}] -> %s MANIPULATION_AREA_DESCRIPTION the %s' % (name, loc, name, loc) ############################################################################## @@ -286,7 +285,7 @@ grammar += '\nMEET_PERSON[the person] -> DET person' grammar += '\nMEET_PERSON[the woman] -> DET woman' grammar += '\nMEET_PERSON[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nMEET_PERSON[%s] -> %s' % (name, name) # FOLLOW PERSON : (PERSON is at the BEACON) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_help_me_carry.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_help_me_carry.py index 6a37dd8aab..9979f9f391 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_help_me_carry.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_help_me_carry.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" #'help_me_carry_starting_point' rotation = 0 @@ -14,7 +13,7 @@ 'stop following', # 'Stop following me' 'stop following me']} -destinations = common.location_rooms + common.location_names +destinations = knowledge_functions.location_rooms + knowledge_functions.location_names # add or get from ~/ros/kinetic/system/src/ed_object_models/models/robotics_testlabs/model.yaml waypoint_car = {'id': 'car', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_open.py index 20402b15b7..4678bb74b0 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_open.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions names = ['josja', 'lars', 'janno', 'loy', 'rein', 'kevin', 'ramon', 'max', 'matthijs', 'raphael'] @@ -48,21 +47,21 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) for name in names: @@ -223,7 +222,7 @@ for name in names: grammar += '\nBRING_PERSON[{"type": "person", "id": "%s"}] -> %s' % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += '\nBRING_PERSON[{"type": "person", "id": "%s", "location": %s}] -> %s MANIPULATION_AREA_DESCRIPTION the %s' % (name, loc, name, loc) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_restaurant.py index 461066ae88..54470ea25a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_restaurant.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -20,7 +17,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drinks": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_rips.py index bbae40eb45..3937f8a542 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_set_a_table.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_set_a_table.py index 5d85d64cf7..9e7070837e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_set_a_table.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_set_a_table.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_spr.py index 619bde01df..71578ff428 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_spr.py @@ -1,8 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") - +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", "I am deeply sorry. Please try again, but wait for the ping!", @@ -35,18 +33,18 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_storing_groceries.py index 8dcb2ba83d..c9207706ab 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/challenge_storing_groceries.py @@ -6,12 +6,9 @@ # TU/e Robotics from robot_skills.util.kdl_conversions import FrameStamped -from robocup_knowledge import knowledge_loader from collections import namedtuple -# Common knowledge -common = knowledge_loader.load_knowledge("common") - +from robocup_knowledge import knowledge_functions # Detection cabinet_amcl = ["cabinet", "storage_shelf"] cabinet_poses = [FrameStamped(frame=kdl.Frame(kdl.Rotation.RPY(0.0, 0.0, 0), kdl.Vector(0.144, 3.274, 0.0)), @@ -19,14 +16,14 @@ FrameStamped(frame=kdl.Frame(kdl.Rotation.RPY(0.0, 0.0, math.pi), kdl.Vector(4.8, 2.5, 0.0)), frame_id="map")] object_shelves = ["shelf3", "shelf4", "shelf5"] -object_types = [obj["name"] for obj in common.objects] +object_types = [obj["name"] for obj in knowledge_functions.objects] # Placing default_place_entity = cabinet_amcl """ -EntityConfiguration defines a name, an pose estimate for the Entity and which volumes of that entity to use for +EntityConfiguration defines a name, an pose estimate for the Entity and which volumes of that entity to use for manipulation """ EntityConfiguration = namedtuple("EntityConfiguration", ["entity_id", "pose_estimate", "manipulation_volumes"]) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/common.py index 6f257e452a..2b9f1e4a63 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2018/common.py @@ -142,111 +142,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_cleanup.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_cleanup.py index 1626467720..267a706444 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_cleanup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_cleanup.py @@ -1,7 +1,5 @@ # CLEAN UP KNOWLEDGE FILE RGO2019 - -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions """ Local knowledge info needed: diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_eegpsr.py index 1fb97271b7..40771a8197 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_eegpsr.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak clearly and fluently? And wait for the ping!", @@ -50,28 +49,28 @@ MANIPULATION_PP -> on | to """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_entrance', 'type': 'waypoint'}}] -> %s at the entrance" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_entrance", "type": "waypoint"}] -> entrance' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_find_my_mates.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_find_my_mates.py index e193f50410..011873e5b2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_find_my_mates.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_find_my_mates.py @@ -1,4 +1,5 @@ # FIND MY MATES KNOWLEDGE FILE RGO2019 +from robocup_knowledge import knowledge_functions starting_point = "find_my_mates_initial" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_gpsr.py index 7857b48613..4e9225e862 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_gpsr.py @@ -1,8 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") -spr = knowledge_loader.load_knowledge("challenge_spr") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak clearly and fluently? And wait for the ping!", @@ -54,28 +52,28 @@ MANIPULATION_PP -> on | to """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_entrance', 'type': 'waypoint'}}] -> %s at the entrance" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_entrance", "type": "waypoint"}] -> entrance' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_receptionist.py index 5d959b85c5..094fa1ca96 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_receptionist.py @@ -1,7 +1,6 @@ # RECEPTIONIST KNOWLEDGE FILE RGO2019 -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "john" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_restaurant.py index 6577dbfac0..7ec2815b91 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_restaurant.py @@ -1,10 +1,6 @@ # RESTAURANT KNOWLEDGE FILE RGO2019 -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -22,7 +18,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food" or d["category"] == "snack": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_rips.py index 4035fe9f6a..e3a68aefa4 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_rips.py @@ -1,4 +1,5 @@ # RIPS KNOWLEDGE FILE RGO2019 +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_serving_drinks.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_serving_drinks.py index bec75dbad7..a8e631716a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_serving_drinks.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_serving_drinks.py @@ -1,4 +1,5 @@ # SERVING DRINKS KNOWLEDGE FILE RGO2019 +from robocup_knowledge import knowledge_functions # Bar where the drinks are located bar_id = "bar_table" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_spr.py index ee011bee41..c073ac56ab 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_spr.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -41,18 +40,18 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_take_out_the_garbage.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_take_out_the_garbage.py index 2a7a88336c..64267da453 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_take_out_the_garbage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_take_out_the_garbage.py @@ -1,9 +1,6 @@ # TAKE OUT THE GARBAGE KNOWLEDGE FILE RGO2019 -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" trashbin_id = "trash_bin" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_where_is_this.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_where_is_this.py index 7c32ebfe5f..d3e36e0659 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_where_is_this.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/challenge_where_is_this.py @@ -3,10 +3,7 @@ from __future__ import print_function # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions grammar_target = "T" @@ -16,18 +13,18 @@ COURTESY_PREFIX -> robot please | could you | could you please | please """ -for loc in common.location_rooms: +for loc in knowledge_functions.location_rooms: location_grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) -for loc in common.location_names: +for loc in knowledge_functions.location_names: location_grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) -for loc in common.object_names: - category = common.get_object_category(loc) - if category not in common.category_locations: +for loc in knowledge_functions.object_names: + category = knowledge_functions.get_object_category(loc) + if category not in knowledge_functions.category_locations: continue - entity_id = common.get_object_category_location(category)[0] + entity_id = knowledge_functions.get_object_category_location(category)[0] location_grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (entity_id, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/common.py index 33fb74db7a..6ae4f586ab 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rgo2019/common.py @@ -180,123 +180,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_cleanup.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_cleanup.py index 98055cd5ef..f4746be604 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_cleanup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_cleanup.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions """ Local knowledge info needed: @@ -26,13 +25,13 @@ grammar_target = "T" grammar = "" -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nT[{0}] -> {0}".format(room) category_grammar = """ T[P] -> CATEGORY[P] | it is a CATEGORY[P] | the category is CATEGORY[P] """ -for l in common.category_locations: +for l in knowledge_functions.category_locations: category_grammar += "\nCATEGORY[{}] -> {}".format(l, l.replace('_', ' ')) category_grammar += "\nCATEGORY[{}] -> {}".format("trash", "trash".replace('_', ' ')) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_demo.py index 22d5ff4668..491efac25a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_demo.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -35,19 +34,19 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_eegpsr.py index c70dcb0fad..ea1f0d8a40 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_eegpsr.py @@ -1,10 +1,9 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "gpsr_meeting_point" # initial pose starting_pose = "gpsr_meeting_point" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit"] +rooms = knowledge_functions.rooms + ["entrance", "exit"] translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_final.py index bd90073c82..c841f58e6e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_final.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Load the common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose" meeting_point = "gpsr_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_find_my_mates.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_find_my_mates.py index f8fc901462..12031dd2aa 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_find_my_mates.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_find_my_mates.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" room = "livingroom" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_following_and_guiding.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_following_and_guiding.py index 5f9fbebe8b..987cdab2a0 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_following_and_guiding.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_following_and_guiding.py @@ -1,4 +1,4 @@ -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "Guide me back" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_gpsr.py index 810ce84b3c..853929b07d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -48,26 +47,26 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_hand_me_that.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_hand_me_that.py index 40cadb851e..e264eb46fb 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_hand_me_that.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_hand_me_that.py @@ -1,2 +1,4 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" home_location = "hand_that_home_location" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_help_me_carry.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_help_me_carry.py index b3849ac572..4f6174e502 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_help_me_carry.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_help_me_carry.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = 'help_me_carry_starting_point' rotation = 0 @@ -14,7 +13,7 @@ 'stop following', # 'Stop following me' 'stop following me']} -destinations = common.location_rooms + common.location_names +destinations = knowledge_functions.location_rooms + knowledge_functions.location_names # add or get from ~/ros/kinetic/system/src/ed_object_models/models/robotics_testlabs/model.yaml waypoint_car = {'id': 'car', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_manipulation.py index 867700583f..cbe5015c0d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_manipulation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + # Entity where the shelves are part of cabinet_slam = "bookcase" cabinet_amcl = "bookcase" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_navigation.py index d0f863991d..2be9d7c0fa 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_navigation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + target1 = "livingroom" target1_radius1 = 0.1 target1_radius2 = 0.7 diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_open.py index f34703e069..f5dc9cd5de 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_open.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" ask_waypoint = "gpsr_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_person_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_person_recognition.py index 72418adfe1..d7c10056b6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_person_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_person_recognition.py @@ -1,4 +1,5 @@ from __future__ import print_function +from robocup_knowledge import knowledge_functions ''' colors from printing on screen ''' class bcolors: diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_receptionist.py index 179454cf3b..09ebf3a922 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_receptionist.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "john" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_restaurant.py index 768e01303c..425a85d76a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_restaurant.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -20,7 +17,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_rips.py index bbae40eb45..3937f8a542 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_robonurse.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_robonurse.py index 6e63e6873b..84e4d698f7 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_robonurse.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_robonurse.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + room = "living_room" grannies_table = "dinnertable" bottle_shelf = "bookcase/shelf2" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_serving_drinks.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_serving_drinks.py index e0f11bd6db..22fbc18a06 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_serving_drinks.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_serving_drinks.py @@ -1,4 +1,5 @@ # SERVING DRINKS KNOWLEDGE FILE ROBOTICS_TESTLABS +from robocup_knowledge import knowledge_functions # Bar where the drinks are located bar_id = "bar" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_set_a_table.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_set_a_table.py index 3cfe77c095..ad51492dc1 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_set_a_table.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_set_a_table.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose" starting_pose = "gpsr_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_speech_recognition.py index 903d5f7bb9..25f69a53e3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_speech_recognition.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + choice_answer_mapping = { "What shape is this building" : " UFO", "Who was beaten by AlphaGo" : " Lee Sedol", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_spr.py index ebe685c0f6..d1e041d82f 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_spr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -39,18 +38,18 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_storing_groceries.py index dd9272fce6..189ceaac62 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_storing_groceries.py @@ -6,10 +6,7 @@ # TU/e Robotics from robot_skills.util.kdl_conversions import FrameStamped -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Detection cabinet_amcl = ["bookcase", "bookcase"] @@ -18,7 +15,7 @@ FrameStamped(frame=kdl.Frame(kdl.Rotation.RPY(0.0, 0.0, math.pi), kdl.Vector(3.18, 2.713, 0.0)), frame_id="map")] object_shelves = ["shelf3", "shelf4", "shelf5"] -object_types = [obj["name"] for obj in common.objects] +object_types = [obj["name"] for obj in knowledge_functions.objects] # Grasping grasp_surface = ["dinner_table", "dinner_table"] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_take_out_the_garbage.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_take_out_the_garbage.py index 600a18b287..e18b04e041 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_take_out_the_garbage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_take_out_the_garbage.py @@ -1,9 +1,6 @@ # TAKE OUT THE GARBAGE KNOWLEDGE FILE ROBOTICS_TESTLABS # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" trashbin_id = "trashbin" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_test.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_test.py index b0570897f8..dccbc97881 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_test.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_test.py @@ -1,4 +1,5 @@ from __future__ import print_function +from robocup_knowledge import knowledge_functions ''' printing shortcuts ''' def printOk(sentence): diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_wakemeup.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_wakemeup.py index 127f12a32c..012857a56e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_wakemeup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_wakemeup.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + # Tunable params find_person = { # This needs to be updated according to the environment 'within_range' : 2.0, @@ -25,7 +27,7 @@ bed = 'bed' # This needs to be updated according to the environment matress_height = 0.70 #TODO: Set matress height or even better: get from models -bed_nav_goal = { +bed_nav_goal = { 'near' : bed, 'in' : 'bedroom', 'lookat' : 'bed', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_where_is_this.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_where_is_this.py index 80d804e4a7..ab4f40e813 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_where_is_this.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/challenge_where_is_this.py @@ -5,8 +5,7 @@ # System from collections import namedtuple -# TU/e Robotics -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions BackupScenario = namedtuple("BackupScenario", ["entity_id", "sentence"]) @@ -19,16 +18,13 @@ information_point_id = "where_is_this_information_point" initial_pose_id = "initial_pose" -# Common knowledge -common = knowledge_loader.load_knowledge("common") - grammar_target = "T" starting_point_grammar = """ T[A] -> LOCATION[A] """ -for loc in common.location_names: +for loc in knowledge_functions.location_names: starting_point_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) location_grammar = """ @@ -37,18 +33,18 @@ COURTESY_PREFIX -> robot please | could you | could you please | please """ -for loc in common.location_rooms: +for loc in knowledge_functions.location_rooms: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.location_names: +for loc in knowledge_functions.location_names: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.object_names: - category = common.get_object_category(loc) - if category not in common.category_locations: +for loc in knowledge_functions.object_names: + category = knowledge_functions.get_object_category(loc) + if category not in knowledge_functions.category_locations: continue - entity_id = common.get_object_category_location(category)[0] + entity_id = knowledge_functions.get_object_category_location(category)[0] location_grammar += '\nLOCATION[%s] -> %s' % (entity_id, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/common.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/common.py index b564acdadd..ab6e6f826a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/common.py @@ -157,128 +157,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - -def is_known_object(obj): - for o in objects: - if o["name"] == obj: - return True - return False - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/r5cop_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/r5cop_demo.py index e8a6ad793a..81f70efa8a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/r5cop_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/robotics_testlabs/r5cop_demo.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" # required keys: entity_id (str), room_id (str), navigation_area (str), segment_areas (list) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_carry_my_luggage.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_carry_my_luggage.py index 65e0b0e17a..3e91c92c2d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_carry_my_luggage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_carry_my_luggage.py @@ -1,4 +1,3 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "carry_my_luggage_starting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_receptionist.py index 1731ea05b9..75c182e764 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_receptionist.py @@ -1,7 +1,4 @@ -from robocup_knowledge import knowledge_loader - - -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "charlie" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_restaurant.py index f2d4089d20..0a633affa2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_restaurant.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ O[P] -> ORDER[P] @@ -13,7 +10,7 @@ """ # Create grammar -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] in ["drink", "fruit", "snack", "pantry_item"]: name = d["name"] order_grammar += f"\nITEM['{name}'] -> {name}" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_rips.py index c29b05ca73..1bcbe74ae6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "rips_point_1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_storing_groceries.py index 065f1ae657..32c41ec499 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/challenge_storing_groceries.py @@ -1,8 +1,4 @@ -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # General starting_point = 'initial_pose' @@ -12,8 +8,8 @@ default_area = "shelf4" inspect_area = "inspect_area" object_shelves = ["shelf3", "shelf4", "shelf5"] #TODO unused variable? -object_types = [obj["name"] for obj in common.objects] #TODO unused variable? +object_types = [obj["name"] for obj in knowledge_functions.objects] #TODO unused variable? # Grasping table = "side_board" -room = common.get_room(table) +room = knowledge_functions.get_room(table) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/common.py index 225c54844e..a426bc57a5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rpo2023/common.py @@ -179,128 +179,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return entity_id in location_rooms - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - -def is_known_object(obj): - for o in objects: - if o["name"] == obj: - return True - return False - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_final.py index 1641636d90..9cfe5fcdd1 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_final.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + initial_pose_amigo = "initial_pose_amigo" operator_id = "operator" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_gpsr.py index 3017db2cbb..e174716924 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_gpsr.py @@ -1,9 +1,11 @@ -# RWC2015 +# RWC2015 +from robocup_knowledge import knowledge_functions + from robocup_knowledge import knowledge_loader challenge_speech_recognition_data = knowledge_loader.load_knowledge("challenge_speech_recognition") -spec_questions = challenge_speech_recognition_data.spec -choices_questions = challenge_speech_recognition_data.choices +spec_questions = challenge_speech_recognition_data.spec +choices_questions = challenge_speech_recognition_data.choices #locations: # TO BE DEFINED IN model.yaml! starting_point = "initial_pose_door_A" @@ -16,9 +18,9 @@ 'bedroom':['left_bedside_table','right_bedside_table','desk','bed'],# bed has two spots 'hallway':['hallwaytable', 'bookcase/shelf1','bookcase/shelf2','bookcase/shelf3','bookcase/shelf4','bookcase/shelf5','bookcase/shelf6','bookcase/shelf7','bookcase/shelf8']} #,'bookcase']} # both locations have multiple spots. -objects_known_recognize = ['pure_milk', 'orange_juice', 'sponge', 'papaya_milk', 'apple', 'tomato_chips', 'lemon', 'toothpaste', - 'chocolates', 'bowl', 'beer', 'toilet_paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', - 'green_tea', 'gram_soup', 'bubble_gum', 'bean_sauce', 'barbecue_chips', 'tray', 'coconut_cereals', +objects_known_recognize = ['pure_milk', 'orange_juice', 'sponge', 'papaya_milk', 'apple', 'tomato_chips', 'lemon', 'toothpaste', + 'chocolates', 'bowl', 'beer', 'toilet_paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', + 'green_tea', 'gram_soup', 'bubble_gum', 'bean_sauce', 'barbecue_chips', 'tray', 'coconut_cereals', 'egg_stars', 'honey_chips', 'coco_balls', 'biscuits'] ############################################### @@ -27,12 +29,12 @@ #data for speech recognition -objects_known = ['pure milk', 'orange juice', 'sponge', 'papaya milk', 'apple', 'tomato chips', 'lemon', 'toothpaste', - 'chocolates', 'bowl', 'beer', 'toilet paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', - 'green tea', 'gram soup', 'bubble gum', 'bean sauce', 'barbecue chips', 'tray', 'coconut cereals', +objects_known = ['pure milk', 'orange juice', 'sponge', 'papaya milk', 'apple', 'tomato chips', 'lemon', 'toothpaste', + 'chocolates', 'bowl', 'beer', 'toilet paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', + 'green tea', 'gram soup', 'bubble gum', 'bean sauce', 'barbecue chips', 'tray', 'coconut cereals', 'egg stars', 'honey chips', 'coco balls', 'biscuits'] -location_placement = ['kitchentable', 'kitchencounter', 'cupboard', 'bar', 'couchtable', 'dinnertable', 'sofa', +location_placement = ['kitchentable', 'kitchencounter', 'cupboard', 'bar', 'couchtable', 'dinnertable', 'sofa', 'left bedside table', 'right bedside table', 'desk', 'bed', 'bookcase', 'hallwaytable'] #location_placement = ['kitchentable','dinnertable'] @@ -40,8 +42,8 @@ rooms = ["kitchen", "hallway", "livingroom", "bedroom"] #rooms = ["hallway"] -persons_women = ["Alex","Angel","Eve","Jamie","Jane","Liza","Melissa","Tracy","Robin","Sophia"] -persons_men = ["Alex","Angel","Edward","Homer","Jamie","John","Kevin","Kurt","Tracy","Robin"] +persons_women = ["Alex","Angel","Eve","Jamie","Jane","Liza","Melissa","Tracy","Robin","Sophia"] +persons_men = ["Alex","Angel","Edward","Homer","Jamie","John","Kevin","Kurt","Tracy","Robin"] #spec_get_and_deliver spec_get_deliver = "(<2_vb_take> the <2_object> from the <1_location> and <3_vb_deliver> it to (<3_person_me>|(the <3_place_location>)|(<3_person> (at|in|(which is in)) the <3_room>)))" @@ -57,7 +59,7 @@ #spec = spec_get_deliver choices = {'1_location':location_placement, -'2_vb_take':['take', 'grasp', 'get'], +'2_vb_take':['take', 'grasp', 'get'], '2_object':objects_known, '3_vb_deliver': ['bring', 'carry', 'deliver', 'take'], '3_person_me':['me'], diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_manipulation.py index 8c5c3fe768..286257ec8e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_manipulation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + ''' Cabinet used for the challenge ''' cabinet = "bookcase" @@ -14,7 +16,7 @@ room = "hallway" '''Object types that can be recognized''' -object_types = ['pure_milk', 'orange_juice', 'sponge', 'papaya_milk', 'apple', 'tomato_chips', 'lemon', 'toothpaste', - 'chocolates', 'bowl', 'beer', 'toilet_paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', - 'green_tea', 'gram_soup', 'bubble_gum', 'bean_sauce', 'barbecue_chips', 'tray', 'coconut_cereals', +object_types = ['pure_milk', 'orange_juice', 'sponge', 'papaya_milk', 'apple', 'tomato_chips', 'lemon', 'toothpaste', + 'chocolates', 'bowl', 'beer', 'toilet_paper', 'soap', 'plate', 'pear', 'lotion', 'water', 'cloth', + 'green_tea', 'gram_soup', 'bubble_gum', 'bean_sauce', 'barbecue_chips', 'tray', 'coconut_cereals', 'egg_stars', 'honey_chips', 'coco_balls', 'biscuits'] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_navigation.py index 222b921654..86ed202eb6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_navigation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + target1 = "navigation1" target2 = { 'in_front_of_pos2' : 'dinnertable', @@ -16,4 +18,4 @@ exit4 = "exit_door_A2" starting_point = "initial_pose_door_A" -rotation = 0 \ No newline at end of file +rotation = 0 diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_open.py index f047729148..a2b250101c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_open.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + ''' Hardcoded exploration targets ''' exploration_targets=["explore1", "explore2", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_person_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_person_recognition.py index 2032db1af5..264e2ef29d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_person_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_person_recognition.py @@ -1,3 +1,4 @@ +from robocup_knowledge import knowledge_functions from __future__ import print_function ''' colors from printing on screen ''' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_restaurant.py index ba563765b9..c51ff8c74e 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_restaurant.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "( |)" @@ -15,6 +14,6 @@ order_spec = "(| and [(a|an)] )" # Do not alter keys or side values -drinks = [ o["name"] for o in common.objects if o["category"] == "drinks" ] -foods = [ o["name"] for o in common.objects if o["category"] == "food" ] +drinks = [ o["name"] for o in knowledge_functions.objects if o["category"] == "drinks" ] +foods = [ o["name"] for o in knowledge_functions.objects if o["category"] == "food" ] order_choices = {"beverage": drinks, "food1": foods, "food2": foods } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_rips.py index baad1b174f..1d6dc69780 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_rips.py @@ -1,4 +1,6 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose_door_A" exit_1 = "exit_door_B1" exit_2 = "exit_door_B2" -exit_3 = "exit_door_B3" \ No newline at end of file +exit_3 = "exit_door_B3" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_robonurse.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_robonurse.py index b7f3525ff5..22ac8e8f3d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_robonurse.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_robonurse.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + room = "hallway" grannies_table = "hallwaytable" bottle_shelves = "bookcase" # not used yet diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_speech_recognition.py index f21aa423cb..00ac914cb2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_speech_recognition.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + choice_answer_mapping = { "Which German Count invented the zeppelin":"Count von Zeppelin", "Who was the first president of the USA":"George Washington", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_wakemeup.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_wakemeup.py index 07fe263a8b..043651ac8d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_wakemeup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2015/challenge_wakemeup.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + # Tunable params find_person = { 'within_range' : 2.0, @@ -23,9 +25,9 @@ initial_pose = "initial_pose_door_A" bed = 'bed' -matress_height = 0.51 +mattress_height = 0.51 -bed_nav_goal = { +bed_nav_goal = { 'near' : bed, 'at_bedside' : bed, 'in' : 'bedroom', # Maybe define a bedside to get a good vantage point and position for handing over the newspaper @@ -45,7 +47,7 @@ } # This also defines the order in which to pick the items!!! -generic_items = [ "milk", "fruit", "cereal"] +generic_items = [ "milk", "fruit", "cereal"] # TODO: Pour Cereal milk_shelf = "kitchentable" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_final.py index 8eed4c84fd..e640c0c2fa 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_final.py @@ -1,4 +1,5 @@ from robocup_knowledge.environments.rwc2016a.common import * +from robocup_knowledge import knowledge_functions del locations[:] locations += [ diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_following_and_guiding.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_following_and_guiding.py index 5f9fbebe8b..987cdab2a0 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_following_and_guiding.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_following_and_guiding.py @@ -1,4 +1,4 @@ -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "Guide me back" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_manipulation.py index 16aaf98413..fdfb663f77 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_manipulation.py @@ -1,8 +1,6 @@ import copy -# Common knowledge -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Entity where the shelves are part of cabinet_slam = "bookcase_noback1" # In case of slam @@ -23,7 +21,7 @@ room = "livingroom" # ToDo: update!!! # Object types that can be recognized -object_types = copy.copy(common.object_names) +object_types = copy.copy(knowledge_functions.object_names) # object_types = ['beer', 'bifrutas', 'coffee_pads', 'coke', # 'deodorant', 'fanta', 'ice_tea', 'mentos', # 'sprite', 'tea', 'teddy_bear', 'water', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_navigation.py index 049e259095..cadcd6b3e3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_navigation.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + target1 = "navigation_target1" target1_radius1 = 0.1 target1_radius2 = 0.7 diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_open.py index 081a7dd107..b0d2fa0574 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_open.py @@ -1,4 +1,5 @@ from robocup_knowledge.environments.rwc2016a.common import * +from robocup_knowledge import knowledge_functions # During the open challenge, we have no rooms rooms = [] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_restaurant.py index 0b0a3047c3..6923e7225c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_restaurant.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Do not alter the keys please :) guiding_spec = "( |)" @@ -19,6 +18,6 @@ order_spec = "(| and [(a|an)] )" # Do not alter keys or side values -drinks = [ o["name"] for o in common.objects if o["category"] == "drinks" ] -foods = [ o["name"] for o in common.objects if o["category"] == "food" ] +drinks = [ o["name"] for o in knowledge_functions.objects if o["category"] == "drinks" ] +foods = [ o["name"] for o in knowledge_functions.objects if o["category"] == "food" ] order_choices = {"beverage": drinks, "food1": foods, "food2": foods } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_rips.py index efd2ada283..8089505273 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose_door_a" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_speech_recognition.py index 231c0f159b..52e8118100 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/challenge_speech_recognition.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + choice_answer_mapping = { "Who are the inventors of the C programming language":"Ken Thompson and Dennis Ritchie ", "Who is the inventor of the Python programming language":"Guido van Rossum", diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/common.py index 551dca8768..a0b7f20045 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016_common/common.py @@ -41,102 +41,3 @@ object_names = list(set([ o["name"] for o in objects ])) object_categories = list(set([ o["category"] for o in objects ])) - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations if (room is None or loc["room"] == room) and - (pick_location is None or pick_location == is_pick_location(loc["name"])) and - (place_location is None or place_location == is_place_location(loc["name"]))] - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def test_knowledge(): - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - (location, area_name) = get_object_category_location(cat) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_eegpsr.py index 6ca27dfb4b..cd7b135d1b 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_eegpsr.py @@ -1,10 +1,9 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose_door_c" # initial pose starting_pose = "gpsr_meeting_point" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit", "office"] +rooms = knowledge_functions.rooms + ["entrance", "exit", "office"] -translations = { "bookcase" : "bocase" } \ No newline at end of file +translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_gpsr.py index 6ca27dfb4b..cd7b135d1b 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_gpsr.py @@ -1,10 +1,9 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose_door_c" # initial pose starting_pose = "gpsr_meeting_point" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit", "office"] +rooms = knowledge_functions.rooms + ["entrance", "exit", "office"] -translations = { "bookcase" : "bocase" } \ No newline at end of file +translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_manipulation.py index 379126c315..3689616139 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_manipulation.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_manipulation import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_navigation.py index b4ec35060b..971cb252ae 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_navigation.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_navigation import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_rips.py index 6e4d04e045..6c2fefc88a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_rips.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_rips import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_speech_recognition.py index d84e33f778..5b3d5616f3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016a/challenge_speech_recognition.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_speech_recognition import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_eegpsr.py index 6ca27dfb4b..cd7b135d1b 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_eegpsr.py @@ -1,10 +1,9 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose_door_c" # initial pose starting_pose = "gpsr_meeting_point" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit", "office"] +rooms = knowledge_functions.rooms + ["entrance", "exit", "office"] -translations = { "bookcase" : "bocase" } \ No newline at end of file +translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_gpsr.py index fb7c426baa..08a0d5c06d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_gpsr.py @@ -1,10 +1,9 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose_door_a" # initial pose starting_pose = "gpsr_meeting_point" # Designated pose to wait for commands exit_waypoint = "exit_door_B1" -rooms = common.rooms + ["entrance", "exit", "office"] +rooms = knowledge_functions.rooms + ["entrance", "exit", "office"] -translations = { "bookcase" : "bocase" } \ No newline at end of file +translations = { "bookcase" : "bocase" } diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_manipulation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_manipulation.py index 379126c315..3689616139 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_manipulation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_manipulation.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_manipulation import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_navigation.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_navigation.py index b4ec35060b..971cb252ae 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_navigation.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_navigation.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_navigation import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_rips.py index 6e4d04e045..6c2fefc88a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_rips.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_rips import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_speech_recognition.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_speech_recognition.py index d84e33f778..5b3d5616f3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_speech_recognition.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2016b/challenge_speech_recognition.py @@ -1 +1,2 @@ from robocup_knowledge.environments.rwc2016_common.challenge_speech_recognition import * +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_eegpsr.py index f748e30efc..56960c76fe 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_eegpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -49,24 +48,24 @@ ROOM["exit_area"] -> exit """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOM[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) @@ -152,10 +151,10 @@ # ############################################################################### -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nBRING_ROOM[{"type": room, "id": %s}] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nBRING_LOCATION[{"type": furniture, "id": %s}] -> %s' % (loc, loc) grammar += '\n BRING_ROOM_OR_LOCATION[X] -> BRING_ROOM[X] | BRING_LOCATION[X]' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_gpsr.py index 7c7b25e344..e66d59bab2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -45,24 +44,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOM[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### @@ -131,10 +130,10 @@ # ############################################################################### -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nBRING_ROOM[{"type": room, "id": %s}] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nBRING_LOCATION[{"type": furniture, "id": %s}] -> %s' % (loc, loc) grammar += '\n BRING_ROOM_OR_LOCATION[X] -> BRING_ROOM[X] | BRING_LOCATION[X]' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_help_me_carry.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_help_me_carry.py index 6a369ea6a4..8ca91742af 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_help_me_carry.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_help_me_carry.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + commands = { 'follow': ["follow"], # 'Robot, follow me' 'follow_or_remember': ["follow", # 'Robot, follow me' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_open.py index 77ebfaf7a4..931eb0ce6c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_open.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + # Initial pose initial_pose = "initial_pose_exit" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_restaurant.py index 768e01303c..425a85d76a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_restaurant.py @@ -1,8 +1,5 @@ # TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -20,7 +17,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_rips.py index bbae40eb45..3937f8a542 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_set_a_table.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_set_a_table.py index 6c1bc38406..13dba3db8d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_set_a_table.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_set_a_table.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions initial_pose = "initial_pose" starting_pose = "gpsr_meeting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_spr.py index 2e10f8a342..56c3ce6e34 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_spr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -39,19 +38,19 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) grammar += '\nOBJECT_CATEGORIES[objects] -> objects' -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_storing_groceries.py index b29604a0d6..0a0cda9933 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/challenge_storing_groceries.py @@ -6,10 +6,7 @@ # TU/e Robotics from robot_skills.util.kdl_conversions import FrameStamped -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # Detection cabinet_amcl = ["kitchen_shelf", "kitchen_shelf"] @@ -20,7 +17,7 @@ kdl.Vector(-2.27, -7.55, 0.0)), frame_id="map")] object_shelves = ["shelf2", "shelf3", "shelf4", "shelf5"] -object_types = [obj["name"] for obj in common.objects] +object_types = [obj["name"] for obj in knowledge_functions.objects] # Grasping grasp_surface = ["kitchen_table", "bistro_table"] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/common.py index 702d096bf4..b3eaaa5a5a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2017/common.py @@ -149,105 +149,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - if location in location_rooms: - return location - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - - -def get_object_category_location(obj_cat): - # Returns (location, area_name) - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_demo.py index 2a10f6a39b..26b7c61958 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_demo.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -40,19 +39,19 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_eegpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_eegpsr.py index 175220bd73..6feea8d6a9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_eegpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_eegpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak clearly and fluently? And wait for the ping!", @@ -48,28 +47,28 @@ MANIPULATION_PP -> on | to """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_entrance', 'type': 'waypoint'}}] -> %s at the entrance" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_entrance", "type": "waypoint"}] -> entrance' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_final.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_final.py index c94c38249e..2d8a04aea1 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_final.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_final.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions grammar_target = "T" @@ -43,21 +42,21 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) for name in names: @@ -66,7 +65,7 @@ name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_exit_door', 'type': 'waypoint'}}] -> %s at the exit" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % ( name, loc, name, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_gpsr.py index bd85d18719..ab399e3e0c 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -48,30 +47,30 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_entrance', 'type': 'waypoint'}}] -> %s at the entrance" % ( name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_exit_door', 'type': 'waypoint'}}] -> %s at the exit" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_exit_door", "type": "waypoint"}] -> exit' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_help_me_carry.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_help_me_carry.py index 4a3d3ea96e..3b3ed3b55a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_help_me_carry.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_help_me_carry.py @@ -1,7 +1,6 @@ # HELP ME CARRY KNOWLEDGE FILE RWC2018 -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = 'help_me_carry_starting_point' rotation = 0 @@ -16,7 +15,7 @@ 'stop following', # 'Stop following me' 'stop following me']} -destinations = common.location_rooms + common.location_names +destinations = knowledge_functions.location_rooms + knowledge_functions.location_names # add or get from ~/ros/kinetic/system/src/ed_object_models/models/robotics_testlabs/model.yaml waypoint_car = {'id': 'car', diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_open.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_open.py index 10fde62fa0..ca61e3c8c5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_open.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_open.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions grammar_target = "T" @@ -46,21 +45,21 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) for name in names: @@ -69,7 +68,7 @@ name, name) grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': 'gpsr_exit_door', 'type': 'waypoint'}}] -> %s at the exit" % ( name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % ( name, loc, name, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_restaurant.py index d01f219114..e12709b65a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_restaurant.py @@ -1,10 +1,6 @@ # RESTAURANT KNOWLEDGE FILE RWC2018 -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] @@ -22,7 +18,7 @@ # BEVERAGE[{"beverage": B}] -> DET BEV[B] # Add drinks -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] == "drink": order_grammar += "\nBEV['{}'] -> {}[B]".format(d["name"], d["name"].replace('_', ' ')) elif d["category"] == "food" or d["category"] == "snack": diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_rips.py index 2614361807..4653323888 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_rips.py @@ -1,4 +1,5 @@ -# RIPS KNOWLEDGE FILE RWC2018 +#RIPS KNOWLEDGE FILE RWC2018 +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_spr.py index ee011bee41..c073ac56ab 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/challenge_spr.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -41,18 +40,18 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/common.py index 6e91c05329..11ce50d7ba 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2018/common.py @@ -147,123 +147,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_cleanup.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_cleanup.py index 7a3cf5846b..f95dd154d6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_cleanup.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_cleanup.py @@ -2,8 +2,7 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions """ Local knowledge info needed: @@ -48,13 +47,13 @@ grammar_target = "T" grammar = "" -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nT[{0}] -> {0}".format(room) category_grammar = """ T[P] -> CATEGORY[P] | it is a CATEGORY[P] | the category is CATEGORY[P] """ -for l in common.category_locations: +for l in knowledge_functions.category_locations: category_grammar += "\nCATEGORY[{}] -> {}".format(l, l.replace('_', ' ')) category_grammar += "\nCATEGORY[{}] -> {}".format("trash", "trash".replace('_', ' ')) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_find_my_mates.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_find_my_mates.py index cb48a228f7..fa2dff200d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_find_my_mates.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_find_my_mates.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" room = "living_room" search_point = "find_mates_search" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_hand_me_that.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_hand_me_that.py index 40cadb851e..e264eb46fb 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_hand_me_that.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_hand_me_that.py @@ -1,2 +1,4 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" home_location = "hand_that_home_location" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_receptionist.py index a8241f7b44..7fe327c8c5 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_receptionist.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "john" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_restaurant.py index 4f495a340f..01397ca1d9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_restaurant.py @@ -1,10 +1,6 @@ # RESTAURANT KNOWLEDGE FILE RWC2018 -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ 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] diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_rips.py index 0b28047af2..9cda66c3da 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_rips.py @@ -1,4 +1,5 @@ # RIPS KNOWLEDGE FILE RWC2019 +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_serving_drinks.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_serving_drinks.py index ac015f6eee..addaadcbf1 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_serving_drinks.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_serving_drinks.py @@ -1,4 +1,5 @@ # SERVING DRINKS KNOWLEDGE FILE ROBOTICS_TESTLABS +from robocup_knowledge import knowledge_functions # Bar where the drinks are located #TODO:Check diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_spr.py index e69de29bb2..e6093354db 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_spr.py @@ -0,0 +1 @@ +from robocup_knowledge import knowledge_functions diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_take_out_the_garbage.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_take_out_the_garbage.py index 3d40490640..f3c6e0c52d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_take_out_the_garbage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_take_out_the_garbage.py @@ -1,9 +1,5 @@ # TAKE OUT THE GARBAGE KNOWLEDGE FILE RWC2019 -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose" trashbin_id = "trash_bin" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_where_is_this.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_where_is_this.py index 20b9c329d1..389685c863 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_where_is_this.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2019/challenge_where_is_this.py @@ -2,9 +2,7 @@ # System from collections import namedtuple - -# TU/e Robotics -from robocup_knowledge import knowledge_loader +from robocup_knowledge import knowledge_functions BackupScenario = namedtuple("BackupScenario", ["entity_id", "sentence"]) @@ -17,16 +15,13 @@ information_point_id = "where_is_this_information_point" initial_pose_id = "initial_pose" -# Common knowledge -common = knowledge_loader.load_knowledge("common") - grammar_target = "T" starting_point_grammar = """ T[A] -> LOCATION[A] """ -for loc in common.location_names: +for loc in knowledge_functions.location_names: starting_point_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) location_grammar = """ @@ -35,18 +30,18 @@ COURTESY_PREFIX -> robot please | could you | could you please | please """ -for loc in common.location_rooms: +for loc in knowledge_functions.location_rooms: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.location_names: +for loc in knowledge_functions.location_names: location_grammar += '\nLOCATION[%s] -> %s' % (loc, loc) -for loc in common.object_names: - category = common.get_object_category(loc) - if category not in common.category_locations: +for loc in knowledge_functions.object_names: + category = knowledge_functions.get_object_category(loc) + if category not in knowledge_functions.category_locations: continue - entity_id = common.get_object_category_location(category)[0] + entity_id = knowledge_functions.get_object_category_location(category)[0] location_grammar += '\nLOCATION[%s] -> %s' % (entity_id, loc) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_carry_my_luggage.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_carry_my_luggage.py index 65e0b0e17a..3e91c92c2d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_carry_my_luggage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_carry_my_luggage.py @@ -1,4 +1,3 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "carry_my_luggage_starting_point" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_find_my_mates.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_find_my_mates.py index 814f458e87..5e90dbca2f 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_find_my_mates.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_find_my_mates.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" room = "living_room" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_gpsr.py index 810ce84b3c..853929b07d 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -48,26 +47,26 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_hand_me_that.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_hand_me_that.py index 735e45e287..e64e5f1e4b 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_hand_me_that.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_hand_me_that.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" home_location = "hand_me_that_kitchen" room = "kitchen" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_receptionist.py index aa3929b415..886bc772b4 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_receptionist.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "charlie" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_restaurant.py index 3073569de0..413afab6b9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_restaurant.py @@ -1,8 +1,4 @@ -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ O[P] -> ORDER[P] @@ -13,7 +9,7 @@ """ # Create grammar -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] in ["drink", "fruit", "snack"] or d["name"] == "corn_flakes": name = d["name"] order_grammar += f"\nITEM['{name}'] -> {name}" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_rips.py index c29b05ca73..1bcbe74ae6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "rips_point_1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_take_out_the_garbage.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_take_out_the_garbage.py index 1ec3545a7a..f7d78a7ab0 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_take_out_the_garbage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/challenge_take_out_the_garbage.py @@ -1,9 +1,5 @@ # TAKE OUT THE GARBAGE KNOWLEDGE FILE RWC2022 -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "initial_pose_take_out_the_garbage" trashbin_id = "bin" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/common.py index 80da164499..59cbebb5e2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2022/common.py @@ -99,98 +99,3 @@ drink_spec = "T['drink': O] -> OPTIONS[O]\n\n" for drink in [obj["name"] for obj in objects if obj["category"] == "drink"]: drink_spec += "OPTIONS['{drink}'] -> {drink}\n".format(drink=drink) - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def is_known_object(obj): - for o in objects: - if o["name"] == obj: - return True - return False - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_carry_my_luggage.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_carry_my_luggage.py index c91e76db69..a38503c672 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_carry_my_luggage.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_carry_my_luggage.py @@ -1,4 +1,3 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions starting_point = "starting_pose" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_gpsr.py index 9e9a1d34a4..2221e00731 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_gpsr.py @@ -1,5 +1,4 @@ -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -46,26 +45,26 @@ MANIPULATION_PP -> on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(manipulation_location=True): +for loc in knowledge_functions.get_locations(manipulation_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_PP the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += "\nPERSON_AT_LOCATION[{'type': 'person', 'id': '%s', 'location': {'id': %s}}] -> %s at the %s" % (name, loc, name, loc) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_receptionist.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_receptionist.py index 20da99ff48..20d605d6aa 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_receptionist.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_receptionist.py @@ -1,6 +1,4 @@ -from robocup_knowledge import knowledge_loader - -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions operator_name = "john" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_restaurant.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_restaurant.py index d02fb280e1..a5a54738b9 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_restaurant.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_restaurant.py @@ -1,8 +1,4 @@ -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions order_grammar = """ O[P] -> ORDER[P] @@ -13,7 +9,7 @@ """ # Create grammar -for d in common.objects: +for d in knowledge_functions.objects: if d["category"] in ["drinks", "foods", "fruits", "snacks"]: name = d["name"] order_grammar += f"\nITEM['{name}'] -> {name}" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_rips.py index c29b05ca73..1bcbe74ae6 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "rips_point_1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_stickler_for_the_rules.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_stickler_for_the_rules.py index 67188fdfa5..23c29956b2 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_stickler_for_the_rules.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_stickler_for_the_rules.py @@ -1,8 +1,4 @@ -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # General starting_point = 'stickler_for_rules_starting_point' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_storing_groceries.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_storing_groceries.py index 23e813fd8c..df787ee9d4 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_storing_groceries.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/challenge_storing_groceries.py @@ -1,8 +1,4 @@ -# TU/e Robotics -from robocup_knowledge import knowledge_loader - -# Common knowledge -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions # General starting_point = 'initial_pose' diff --git a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/common.py b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/common.py index fe9b243eaa..a9d64be2b3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/rwc2023/common.py @@ -112,90 +112,3 @@ drink_spec = "T['drink': O] -> OPTIONS[O]\n\n" for drink in [obj["name"] for obj in objects if obj["category"] == "drinks"]: drink_spec += "OPTIONS['{drink}'] -> {drink}\n".format(drink=drink) - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return entity_id in location_rooms - - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_manipulation_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == True: - return True - return False - - -def get_locations(room=None, manipulation_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (manipulation_location == None or manipulation_location == is_manipulation_location(loc["name"]))] - - -def is_known_object(obj): - for o in objects: - if o["name"] == obj: - return True - return False - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -def get_object_size(obj): - for o in objects: - if o["name"] == obj: - return o["volume"] - return None - -def get_object_weight(obj): - for o in objects: - if o["name"] == obj: - return o["weight"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_demo.py index 5dfe69a40a..c7c87863a3 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_demo.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -42,24 +41,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nNAMED_OBJECT[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[%s] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORY[%s] -> %s' % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += '\nNAMED_PERSON[%s] -> %s' % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_gpsr.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_gpsr.py index 8e0a159731..697056dc59 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_gpsr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_gpsr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -47,24 +46,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) grammar += '\nLOCATION[{"id": "gpsr_exit_door_1", "type": "waypoint"}] -> exit' @@ -184,7 +183,7 @@ grammar += '\nFOLLOW_PERSONS[the person] -> DET person' grammar += '\nFOLLOW_PERSONS[the woman] -> DET woman' grammar += '\nFOLLOW_PERSONS[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nFOLLOW_PERSONS[%s] -> %s' % (name, name) ############################################################################### @@ -216,9 +215,9 @@ VP[{"action": "hand-over", "target-location": X, "object": Z}] -> V_BRING OBJECT_TO_BE_BROUGHT[Z] to BRING_PERSON[X] """ -for name in common.names: +for name in knowledge_functions.names: grammar += '\nBRING_PERSON[{"type": "person", "id": "%s"}] -> %s' % (name, name) - for loc in common.get_locations(): + for loc in knowledge_functions.get_locations(): grammar += '\nBRING_PERSON[{"type": "person", "id": "%s", "location": %s}] -> %s MANIPULATION_AREA_DESCRIPTION the %s' % (name, loc, name, loc) ############################################################################## @@ -286,7 +285,7 @@ grammar += '\nMEET_PERSON[the person] -> DET person' grammar += '\nMEET_PERSON[the woman] -> DET woman' grammar += '\nMEET_PERSON[the man] -> DET man' -for name in common.names: +for name in knowledge_functions.names: grammar += '\nMEET_PERSON[%s] -> %s' % (name, name) # FOLLOW PERSON : (PERSON is at the BEACON) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_rips.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_rips.py index bbae40eb45..3937f8a542 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_rips.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_rips.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" intermediate_1 = "registration_table1" diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_spr.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_spr.py index 8b2b379cb8..c164fdfefc 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_spr.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/challenge_spr.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -39,18 +38,18 @@ MANIPULATION_AREA_DESCRIPTIONS -> on top of | at | in | on """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += '\nROOMS[%s] -> %s' % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATIONS[%s] -> %s' % (loc, loc) grammar += '\n ROOMS_AND_LOCATIONS[X] -> ROOMS[X] | LOCATIONS[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += '\nOBJECT_NAMES[%s] -> %s' % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATIONS[%s] -> MANIPULATION_AREA_DESCRIPTIONS the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += '\nOBJECT_CATEGORIES[%s] -> %s' % (cat, cat) -for place in common.location_names: +for place in knowledge_functions.location_names: grammar += '\n PLACEMENTS_AND_BEACONS[%s] -> %s' % (place, place) ############################################################################## diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/common.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/common.py index a958488cfe..a079dc6098 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/common.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/common.py @@ -97,114 +97,3 @@ def printWarning(sentence): print(prefix + bcolors.WARNING + sentence + bcolors.ENDC) return printOk, printError, printWarning - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -def is_location(location): - for loc in locations: - if loc["name"] == location: - return True - return False - - -def get_room(location): - for loc in locations: - if loc["name"] == location: - return loc["room"] - return None - - -def is_room(entity_id): - return (entity_id in rooms) - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - - -def is_pick_location(location): - for loc in locations: - if loc["name"] == location and loc["manipulation"] == "yes": - return True - return False - -def get_inspect_areas(location): - if location in inspect_areas: - return inspect_areas[location] - else: - return ["on_top_of"] - -def get_inspect_position(location, area=""): - if location in inspect_positions and area in inspect_positions[location]: - return inspect_positions[location][area] - else: - return "in_front_of" - -def is_place_location(location): - for loc in locations: - if loc["name"] == location and (loc["manipulation"] == "yes" or loc["manipulation"] == "only_putting"): - return True - return False - - -def get_locations(room=None, pick_location=None, place_location=None): - return [loc["name"] for loc in locations - if (room == None or loc["room"] == room) and \ - (pick_location == None or pick_location == is_pick_location(loc["name"])) and \ - (place_location == None or place_location == is_place_location(loc["name"]))] - - -def get_objects(category=None): - return [obj["name"] for obj in objects - if category == None or category == obj["category"]] - - -def get_object_category(obj): - for o in objects: - if o["name"] == obj: - return o["category"] - return None - -def get_object_color(obj): - for o in objects: - if o["name"] == obj: - return o["color"] - return None - -# Returns (location, area_name) -def get_object_category_location(obj_cat): - location, area_name = next(iter(category_locations[obj_cat].items())) - return location, area_name - -# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -if __name__ == "__main__": - print("\n-----------------------------------------------------------------------------") - for obj in get_objects(): - cat = get_object_category(obj) - (location, area_name) = get_object_category_location(cat) - print("object '{}'".format(obj)) - print(" category: '{}'".format(cat)) - print(" found '{} {}'".format(area_name, location)) - - print("\n-----------------------------------------------------------------------------") - for loc in get_locations(): - print("location '{}', room: '{}'".format(loc, get_room(loc))) - - print("\n-----------------------------------------------------------------------------") - print("Pick locations:") - for loc in get_locations(pick_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("Place locations:") - for loc in get_locations(place_location=True): - print(" {}".format(loc)) - - print("\n-----------------------------------------------------------------------------") - print("None-manipulation locations:") - for loc in get_locations(pick_location=False, place_location=False): - print(" {}".format(loc)) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/r5cop_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/r5cop_demo.py index e8a6ad793a..81f70efa8a 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/r5cop_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/r5cop_demo.py @@ -1,3 +1,5 @@ +from robocup_knowledge import knowledge_functions + starting_point = "initial_pose" # required keys: entity_id (str), room_id (str), navigation_area (str), segment_areas (list) diff --git a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/siza_demo.py b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/siza_demo.py index d2012d6a33..e41a9d0e28 100644 --- a/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/siza_demo.py +++ b/robocup_knowledge/src/robocup_knowledge/environments/siza_demo/siza_demo.py @@ -1,7 +1,6 @@ from __future__ import print_function -from robocup_knowledge import knowledge_loader -common = knowledge_loader.load_knowledge("common") +from robocup_knowledge import knowledge_functions not_understood_sentences = [ "I'm so sorry! Can you please speak louder and slower? And wait for the ping!", @@ -44,24 +43,24 @@ MANIPULATION_AREA_DESCRIPTION -> on top of | at | in | on | from """ -for room in common.location_rooms: +for room in knowledge_functions.location_rooms: grammar += "\nROOM[{'type': 'room', 'id': '%s'}] -> %s" % (room, room) -for loc in common.get_locations(): +for loc in knowledge_functions.get_locations(): grammar += '\nLOCATION[{"id": "%s"}] -> %s' % (loc, loc) grammar += '\n ROOM_OR_LOCATION[X] -> ROOM[X] | LOCATION[X]' -for obj in common.object_names: +for obj in knowledge_functions.object_names: grammar += "\nNAMED_OBJECT[{'type': '%s'}] -> %s" % (obj, obj) -for loc in common.get_locations(pick_location=True, place_location=True): +for loc in knowledge_functions.get_locations(pick_location=True, place_location=True): grammar += '\nMANIPULATION_AREA_LOCATION[{"id": "%s"}] -> MANIPULATION_AREA_DESCRIPTION the %s' % (loc, loc) -for cat in common.object_categories: +for cat in knowledge_functions.object_categories: grammar += "\nOBJECT_CATEGORY[{'category': '%s'}] -> %s" % (cat, cat) -for name in common.names: +for name in knowledge_functions.names: grammar += "\nNAMED_PERSON[{'type': 'person', 'id': '%s'}] -> %s" % (name, name) ############################################################################### diff --git a/robocup_knowledge/src/robocup_knowledge/knowledge_functions.py b/robocup_knowledge/src/robocup_knowledge/knowledge_functions.py new file mode 100644 index 0000000000..3c60d27701 --- /dev/null +++ b/robocup_knowledge/src/robocup_knowledge/knowledge_functions.py @@ -0,0 +1,160 @@ +# Inspired by https://stackoverflow.com/questions/9937279/can-modules-have-properties +# and https://stackoverflow.com/questions/880530/can-modules-have-properties-the-same-way-that-objects-can + +import importlib +import os +import sys +from collections.abc import Iterable + +# ToDo: add typing + +EXPECTED_KNOWLEDGE = [ + "female_names", + "male_names", + "locations", + "objects", + "category_locations", + "inspect_areas", + "inspect_positions", + "default_target_radius", + "most_probable_location_in_room_map", +] + + +class KnowledgeFunctions(sys.__class__): + def __init__(self): + # ToDo: no hardcoding. + + robot_env = os.environ.get('ROBOT_ENV') + common = importlib.import_module(".common", f"robocup_knowledge.environments.{robot_env}") + + # Add expected knowledge to self + for key in EXPECTED_KNOWLEDGE: + setattr(self, key, getattr(common, key)) + + @property + def names(self) -> Iterable: + return self.female_names + self.male_names + + @property + def location_rooms(self): + return list(set([o["room"] for o in self.locations])) + + @property + def rooms(self): # Workshop is added in impuls/common.py + return self.location_rooms + + @property + def location_categories(self): + return list(set([o["category"] for o in self.locations])) + + @property + def location_names(self): + return list(set([o["name"] for o in self.locations])) + + @property + def object_names(self): + return list(set([o["name"] for o in self.objects])) + + @property + def object_categories(self): + return list(set([o["category"] for o in self.objects])) + + @property + def object_colors(self): # This is present as "object_color" (singular) in impuls/common.py + return list(set([o["color"] for o in self.objects])) + + @property + def object_sizes(self): # This is present as "object_size" (singular) in impuls/common + return list(set([o["volume"] for o in self.objects])) + + @property + def object_weights(self): # This is present as "object_weight" (singular in impuls/common + return list(set([o["weight"] for o in self.objects])) + + def get_location_from_room(self, room_id): + if room_id in self.most_probable_location_in_room_map: + return self.most_probable_location_in_room_map[room_id] + return None + + def object_names_of_category(self, category): + return [obj['name'] for obj in self.objects if obj['category'] == category] + + @property + def drink_names(self): + return self.object_names_of_category("drink") + + @property + def drink_spec(self): + result = "T['drink': O] -> OPTIONS[O]\n\n" + for dn in self.drink_names: + result += "OPTIONS['{drink}'] -> {drink}\n".format(drink=dn) + return result + + def is_location(self, location): + return any([loc["name"] == location for loc in self.locations]) + + def get_room(self, location): + for loc in self.locations: + if loc["name"] == location: + return loc["room"] + return None + + def is_room(self, entity_id): + return entity_id in self.rooms + + def get_inspect_areas(self, location): + if location in self.inspect_areas: + return self.inspect_areas[location] + else: + return ["on_top_of"] + + def get_inspect_position(self, location, area=""): # Does this default argument make sense? + if location in self.inspect_positions and area in self.inspect_positions[location]: + return self.inspect_positions[location][area] # Is this a list or a string? + return "in_front_of" + + def is_pick_location(self, location): + return any([l["name"] == location and l["manipulation"] == "yes" for l in self.locations]) + + def is_place_location(self, location): + return any([l["name"] == location and l["manipulation"] in ["yes", "only_putting"] for l in self.locations]) + + def get_locations(self, room=None, pick_location=None, place_location=None): + raise AssertionError("This doesn't make any sense") # I don't know what this is supposed to do + + def is_known_object(self, obj): + return any([o["name"] == obj for o in self.objects]) + + def get_objects(self, category=None): + return [o["name"] for o in self.objects if category is None or o["category"] == category] + + def get_object_category(self, obj): + for o in self.objects: + if o["name"] == obj: + return o["category"] + return None + + def get_object_color(self, obj): + for o in self.objects: + if o["name"] == obj: + return o["color"] + return None + + def get_object_size(self, obj): + for o in self.objects: + if o["name"] == obj: + return o["volume"] + return None + + def get_object_weight(self, obj): + for o in self.objects: + if o["name"] == obj: + return o["weight"] + return None + + def get_object_category_location(self, obj_cat): + return next(iter(self.category_locations[obj_cat].items())) + + +sys.modules[__name__] = KnowledgeFunctions() diff --git a/robocup_knowledge/test/__init__.py b/robocup_knowledge/test/__init__.py new file mode 100644 index 0000000000..e69de29bb2 diff --git a/robocup_knowledge/test/test_knowledge_functions.py b/robocup_knowledge/test/test_knowledge_functions.py new file mode 100644 index 0000000000..ad16903797 --- /dev/null +++ b/robocup_knowledge/test/test_knowledge_functions.py @@ -0,0 +1,63 @@ +# System +import unittest + +# RoboCup Knowledge +from robocup_knowledge import knowledge_functions + + +class TestKnowledgeFunctions(unittest.TestCase): + # N.B.: test cases based on current impuls common knowledge. Needs to be copied to a separate location + def test_knowledge_functions(self) -> None: + print("Hello World!") + print(f"Names: {knowledge_functions.names}") + print(f"Locations: {knowledge_functions.locations}") + print(f"Location_rooms: {knowledge_functions.location_rooms}") + print(f"Location_categories: {knowledge_functions.location_categories}") + print(f"Location_names: {knowledge_functions.location_names}") + print(f"Object_names: {knowledge_functions.object_names}") + print(f"Object_categories: {knowledge_functions.object_categories}") + print(f"Object_colors: {knowledge_functions.object_colors}") + print(f"Object_sizes: {knowledge_functions.object_sizes}") + print(f"Object_weights: {knowledge_functions.object_weights}") + + self.assertEqual(knowledge_functions.get_location_from_room("kitchen"), "salon_table") + print(f"Object names of category: {knowledge_functions.object_names_of_category('food')}") + + print(f"Drinks: {knowledge_functions.drink_names}") + print(f"Drink spec: {knowledge_functions.drink_spec}") + + self.assertTrue(knowledge_functions.is_location("dinner_table")) + self.assertEqual(knowledge_functions.get_room("dinner_table"), "livingroom") + self.assertTrue(knowledge_functions.is_room("livingroom")) + self.assertEqual(len(knowledge_functions.get_inspect_areas("closet")), 5) + salon_table_inspect_areas = knowledge_functions.get_inspect_areas("salon_table") + self.assertEqual(len(salon_table_inspect_areas), 1) + self.assertEqual(salon_table_inspect_areas[0], "on_top_of") + self.assertEqual(knowledge_functions.get_inspect_position("salon_table"), "in_front_of") + self.assertTrue(knowledge_functions.is_pick_location("dinner_table")) + self.assertFalse(knowledge_functions.is_pick_location("fridge")) + self.assertTrue(knowledge_functions.is_place_location("dinner_table")) + self.assertFalse(knowledge_functions.is_place_location("fridge")) + self.assertTrue(knowledge_functions.is_known_object("mango")) + self.assertFalse(knowledge_functions.is_known_object("foo")) + container_objects = knowledge_functions.get_objects("container") + self.assertEqual(len(container_objects), 4) + self.assertIn("cup", container_objects) + self.assertEqual(len(knowledge_functions.get_objects("foo")), 0) + self.assertEqual(knowledge_functions.get_object_category("cup"), "container") + self.assertEqual(knowledge_functions.get_object_category("foo"), None) + self.assertEqual(knowledge_functions.get_object_color("banana"), "yellow") + self.assertEqual(knowledge_functions.get_object_color("foo"), None) + self.assertEqual(knowledge_functions.get_object_size("banana"), 320) + self.assertEqual(knowledge_functions.get_object_size("foo"), None) + self.assertEqual(knowledge_functions.get_object_weight("banana"), 100) + self.assertEqual(knowledge_functions.get_object_weight("foo"), None) + location, area_name = knowledge_functions.get_object_category_location("container") + self.assertEqual(location, "cabinet") + self.assertEqual(area_name, "on_top_of") + + + + +if __name__ == "__main__": + unittest.main() diff --git a/robocup_knowledge/test/test_knowledge_loader.py b/robocup_knowledge/test/test_knowledge_loader.py new file mode 100644 index 0000000000..b7dad15bfb --- /dev/null +++ b/robocup_knowledge/test/test_knowledge_loader.py @@ -0,0 +1,30 @@ +import sys +import unittest + +from robocup_knowledge.knowledge_loader import load_knowledge + + +class TestKnowledgeLoader(unittest.TestCase): + def test_load_knowledge(self): + knowledge = load_knowledge("challenge_stickler_for_the_rules") + required_keys = ["common", "starting_point", "waypoint_ids", "forbidden_room", "forbidden_room_waypoint", + "drinks_entity_id"] + required_common_keys = ["female_names", "male_names", "names", "locations", "location_rooms", + "location_categories", "location_names", "manipulation_locations", "objects", + "object_names", "object_categories", "object_color", "object_size", "object_weight", + "category_locations", "inspect_areas", "inspect_positions", "default_target_radius", + "most_probable_location_in_room_map", "get_location_from_room", + "object_names_of_category", "drink_names", "dn", "drink_spec", "bcolors", "make_prints", + "is_location", "get_room", "is_room", "get_inspect_areas", "get_inspect_position", + "is_pick_location", "is_place_location", "get_locations", "is_known_object", + "get_objects", "get_object_category", "get_object_color", "get_object_size", + "get_object_weight", "get_object_category_location"] + + for key in required_keys: + self.assertIn(key, knowledge.__dict__, msg=f"{key} is not in knowledge: {knowledge}") + + for key in required_common_keys: + self.assertIn(key, knowledge.common.__dict__, msg=f"{key} is not in the common knowledge {knowledge.common}") + +if __name__ == "__main__": + unittest.main()