def create_meshes(ty, draw=False, visualize=False): assert not (visualize and draw) # Incompatible? suffix = SUFFIX_TEMPLATE.format(ty) models_path = os.path.join(get_models_path(), MODELS_TEMPLATE.format(ty)) ensure_dir(models_path) for prefix, properties in OBJECT_PROPERTIES[ty].items(): color = normalize_rgb(properties.color) side = approximate_bowl(properties, d=2) # 1 doesn't seem to really work name = prefix + suffix print(name, color) print(side) if draw: draw_curvature(side, name=name) chunks = make_revolute_chunks(side, n_theta=60, n_chunks=10, in_off=properties.thickness/4., scale=SCALE) obj_path = os.path.join(models_path, OBJ_TEMPLATE.format(name)) write_obj(chunks, obj_path) if visualize: body = create_obj(obj_path, color=color) _, dims = approximate_as_cylinder(body) print(dims) wait_for_user() remove_body(body) pcd_path = os.path.join(models_path, PCD_TEMPLATE.format(name)) pcd_from_mesh(obj_path, pcd_path)
def __init__(self, task, use_robot=True, visualize=False, **kwargs): self.task = task self.real_world = None self.visualize = visualize self.client_saver = None self.client = connect(use_gui=visualize, **kwargs) print('Planner connected to client {}.'.format(self.client)) self.robot = None with ClientSaver(self.client): with HideOutput(): if use_robot: self.robot = load_pybullet(os.path.join( get_models_path(), PR2_URDF), fixed_base=True) #dump_body(self.robot) #compute_joint_weights(self.robot) self.world_name = 'world' self.world_pose = Pose(unit_pose()) self.bodies = {} self.fixed = [] self.surfaces = [] self.items = [] #self.holding_liquid = [] self.initial_config = None self.initial_poses = {} self.body_mapping = {}
def get_body_obj(name, visual=False): regex = r'mesh filename="(\w+.obj)"' obj_filenames = re.findall(regex, read(get_body_urdf(name))) assert obj_filenames visual_filename = obj_filenames[0] collision_filename = obj_filenames[-1] filename = visual_filename if visual else collision_filename return os.path.join(get_models_path(), filename)
def _create_robot(self): with ClientSaver(self.client): with HideOutput(): pr2_path = os.path.join(get_models_path(), PR2_URDF) self.pr2 = load_pybullet(pr2_path, fixed_base=True) # Base link is the origin base_pose = get_link_pose(self.robot, link_from_name(self.robot, BASE_FRAME)) set_pose(self.robot, invert(base_pose)) return self.pr2
def load_cup_bowl_obj(bowl): for ty in OBJECT_PROPERTIES: if not bowl.endswith(SUFFIX_TEMPLATE.format(ty)): continue obj_path = os.path.join(get_models_path(), MODELS_TEMPLATE.format(ty), OBJ_TEMPLATE.format(bowl)) properties = get_properties(bowl) assert properties is not None color = normalize_rgb(properties.color) return obj_path, color return None, None