def load_scene(file, normalize=False): jtoclass = { u'Box': ObjectClass.BOX, u'Cylinder': ObjectClass.CYLINDER, u'Sphere': ObjectClass.SPHERE, } jtocolor = { u'yellow': Color.YELLOW, u'orange': Color.ORANGE, u'red': Color.RED, u'green': Color.GREEN, u'purple': Color.PURPLE, u'blue': Color.BLUE, u'pink': Color.PINK, } json_data=open(file) data = json.load(json_data) json_data.close() #pprint(data) scene = Scene(3) table_spec = data[u'table'] t_min = Vec2(table_spec[u'aabb'][u'min'][2], table_spec[u'aabb'][u'min'][0]) t_max = Vec2(table_spec[u'aabb'][u'max'][2], table_spec[u'aabb'][u'max'][0]) width = t_max.x - t_min.x height = t_max.y - t_min.y if normalize: norm_factor = width if width >= height else height t_min = Vec2(t_min.x / norm_factor, t_min.y / norm_factor) t_max = Vec2(t_max.x / norm_factor, t_max.y / norm_factor) table = Landmark('table', RectangleRepresentation(rect=BoundingBox([t_min, t_max])), None, ObjectClass.TABLE) scene.add_landmark(table) object_specs = data[u'objects'] print 'there are', len(object_specs), 'objects on the table' for i,obj_spec in enumerate(object_specs): o_min = Vec2(obj_spec[u'aabb'][u'min'][2], obj_spec[u'aabb'][u'min'][0]) o_max = Vec2(obj_spec[u'aabb'][u'max'][2], obj_spec[u'aabb'][u'max'][0]) width = o_max.x - o_min.x height = o_max.y - o_min.y o_min = Vec2(o_min.x / norm_factor, o_min.y / norm_factor) o_max = Vec2(o_max.x / norm_factor, o_max.y / norm_factor) obj = Landmark('object_%s' % obj_spec[u'name'], RectangleRepresentation(rect=BoundingBox([o_min, o_max]), landmarks_to_get=[]), None, jtoclass[obj_spec[u'type']], jtocolor[obj_spec[u'color-name']]) obj.representation.alt_representations = [] scene.add_landmark(obj) camera_spec = data[u'cam'] speaker = Speaker(Vec2(camera_spec[u'loc'][2] / norm_factor, camera_spec[u'loc'][0] / norm_factor)) # speaker.visualize(scene, obj, Vec2(0,0), None, None, '') return scene, speaker
def load_scene(file, normalize=False): jtoclass = { u'Box': ObjectClass.BOX, u'Cylinder': ObjectClass.CYLINDER, u'Sphere': ObjectClass.SPHERE, } jtocolor = { u'yellow': Color.YELLOW, u'orange': Color.ORANGE, u'red': Color.RED, u'green': Color.GREEN, u'purple': Color.PURPLE, u'blue': Color.BLUE, u'pink': Color.PINK, } json_data = open(file) data = json.load(json_data) json_data.close() #pprint(data) scene = Scene(3) table_spec = data[u'table'] t_min = Vec2(table_spec[u'aabb'][u'min'][2], table_spec[u'aabb'][u'min'][0]) t_max = Vec2(table_spec[u'aabb'][u'max'][2], table_spec[u'aabb'][u'max'][0]) width = t_max.x - t_min.x height = t_max.y - t_min.y if normalize: norm_factor = width if width >= height else height t_min = Vec2(t_min.x / norm_factor, t_min.y / norm_factor) t_max = Vec2(t_max.x / norm_factor, t_max.y / norm_factor) table = Landmark('table', RectangleRepresentation(rect=BoundingBox([t_min, t_max])), None, ObjectClass.TABLE) scene.add_landmark(table) object_specs = data[u'objects'] print 'there are', len(object_specs), 'objects on the table' for i, obj_spec in enumerate(object_specs): o_min = Vec2(obj_spec[u'aabb'][u'min'][2], obj_spec[u'aabb'][u'min'][0]) o_max = Vec2(obj_spec[u'aabb'][u'max'][2], obj_spec[u'aabb'][u'max'][0]) width = o_max.x - o_min.x height = o_max.y - o_min.y o_min = Vec2(o_min.x / norm_factor, o_min.y / norm_factor) o_max = Vec2(o_max.x / norm_factor, o_max.y / norm_factor) obj = Landmark( 'object_%s' % obj_spec[u'name'], RectangleRepresentation(rect=BoundingBox([o_min, o_max]), landmarks_to_get=[]), None, jtoclass[obj_spec[u'type']], jtocolor[obj_spec[u'color-name']]) obj.representation.alt_representations = [] scene.add_landmark(obj) camera_spec = data[u'cam'] speaker = Speaker( Vec2(camera_spec[u'loc'][2] / norm_factor, camera_spec[u'loc'][0] / norm_factor)) # speaker.visualize(scene, obj, Vec2(0,0), None, None, '') return scene, speaker
def construct_training_scene(random=False): speaker = Speaker(Vec2(0,0)) scene = Scene(3) table_ll = (-0.4,0.4) table_ur = (0.4,1.6) if random: x_range = (table_ll[0]+0.035, table_ur[0]-0.035) y_range = (table_ll[1]+0.045, table_ur[1]-0.045) centers = [] for _ in range(5): condition = True while condition: new_point = (randrange(*x_range),randrange(*y_range)) condition = (sum( [too_close(new_point,p) for p in centers] ) > 0) centers.append( new_point ) else: centers = [(0.05, 0.9), (0.05, 0.7), (0, 0.55), (-0.3,0.7), (0.3,0.7)] table = Landmark('table', RectangleRepresentation(rect=BoundingBox([Vec2(*table_ll), Vec2(*table_ur)])), None, ObjectClass.TABLE) obj1 = Landmark('green_cup', RectangleRepresentation(rect=BoundingBox([Vec2(centers[0][0]-0.035,centers[0][1]-0.035), Vec2(centers[0][0]+0.035,centers[0][1]+0.035)]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.GREEN) obj2 = Landmark('blue_cup', RectangleRepresentation(rect=BoundingBox([Vec2(centers[1][0]-0.035,centers[1][1]-0.035), Vec2(centers[1][0]+0.035,centers[1][1]+0.035)]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.BLUE) obj3 = Landmark('pink_cup', RectangleRepresentation(rect=BoundingBox([Vec2(centers[2][0]-0.035,centers[2][1]-0.035), Vec2(centers[2][0]+0.035,centers[2][1]+0.035)]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.PINK) obj4 = Landmark('purple_prism', RectangleRepresentation(rect=BoundingBox([Vec2(centers[3][0]-0.035,centers[3][1]-0.045), Vec2(centers[3][0]+0.035,centers[3][1]+0.045)]), landmarks_to_get=[]), None, ObjectClass.PRISM, Color.PURPLE) obj5 = Landmark('orange_prism', RectangleRepresentation(rect=BoundingBox([Vec2(centers[4][0]-0.035,centers[4][1]-0.045), Vec2(centers[4][0]+0.035,centers[4][1]+0.045)]), landmarks_to_get=[]), None, ObjectClass.PRISM, Color.ORANGE) # t_rep = table.to_dict() scene.add_landmark(table) # scene.add_landmark(serialize.landmark_from_dict(t_rep)) for obj in (obj1, obj2, obj3, obj4, obj5): # o_rep = obj.to_dict() obj.representation.alt_representations = [] scene.add_landmark(obj) # scene.add_landmark(serialize.landmark_from_dict(o_rep)) return scene, speaker
def construct_training_scene(random=False): speaker = Speaker(Vec2(0, 0)) scene = Scene(3) table_ll = (-0.4, 0.4) table_ur = (0.4, 1.6) if random: x_range = (table_ll[0] + 0.035, table_ur[0] - 0.035) y_range = (table_ll[1] + 0.045, table_ur[1] - 0.045) centers = [] for _ in range(5): condition = True while condition: new_point = (randrange(*x_range), randrange(*y_range)) condition = (sum([too_close(new_point, p) for p in centers]) > 0) centers.append(new_point) else: centers = [(0.05, 0.9), (0.05, 0.7), (0, 0.55), (-0.3, 0.7), (0.3, 0.7)] table = Landmark( 'table', RectangleRepresentation( rect=BoundingBox([Vec2( *table_ll), Vec2(*table_ur)])), None, ObjectClass.TABLE) obj1 = Landmark( 'green_cup', RectangleRepresentation(rect=BoundingBox([ Vec2(centers[0][0] - 0.035, centers[0][1] - 0.035), Vec2(centers[0][0] + 0.035, centers[0][1] + 0.035) ]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.GREEN) obj2 = Landmark( 'blue_cup', RectangleRepresentation(rect=BoundingBox([ Vec2(centers[1][0] - 0.035, centers[1][1] - 0.035), Vec2(centers[1][0] + 0.035, centers[1][1] + 0.035) ]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.BLUE) obj3 = Landmark( 'pink_cup', RectangleRepresentation(rect=BoundingBox([ Vec2(centers[2][0] - 0.035, centers[2][1] - 0.035), Vec2(centers[2][0] + 0.035, centers[2][1] + 0.035) ]), landmarks_to_get=[]), None, ObjectClass.CUP, Color.PINK) obj4 = Landmark( 'purple_prism', RectangleRepresentation(rect=BoundingBox([ Vec2(centers[3][0] - 0.035, centers[3][1] - 0.045), Vec2(centers[3][0] + 0.035, centers[3][1] + 0.045) ]), landmarks_to_get=[]), None, ObjectClass.PRISM, Color.PURPLE) obj5 = Landmark( 'orange_prism', RectangleRepresentation(rect=BoundingBox([ Vec2(centers[4][0] - 0.035, centers[4][1] - 0.045), Vec2(centers[4][0] + 0.035, centers[4][1] + 0.045) ]), landmarks_to_get=[]), None, ObjectClass.PRISM, Color.ORANGE) # t_rep = table.to_dict() scene.add_landmark(table) # scene.add_landmark(serialize.landmark_from_dict(t_rep)) for obj in (obj1, obj2, obj3, obj4, obj5): # o_rep = obj.to_dict() obj.representation.alt_representations = [] scene.add_landmark(obj) # scene.add_landmark(serialize.landmark_from_dict(o_rep)) return scene, speaker