def pile_scenario(n, vis, output, debug): objects = YcbObjects('objects/ycb_objects', mod_orn=['ChipsCan', 'MustardBottle', 'TomatoSoupCan'], mod_stiffness=['Strawberry'], exclude=['CrackerBox', 'Hammer']) center_x, center_y = 0.05, -0.52 network_path = 'network/trained-models/cornell-randsplit-rgbd-grconvnet3-drop1-ch32/epoch_19_iou_0.98' camera = Camera((center_x, center_y, 1.9), (center_x, center_y, 0.785), 0.2, 2.0, (224, 224), 40) env = Environment(camera, vis=vis, debug=debug, finger_length=0.06) generator = GraspGenerator(network_path, camera, 5) for i in range(n): print(f'Trial {i}') straight_fails = 0 objects.shuffle_objects() env.move_away_arm() info = objects.get_n_first_obj_info(5) env.create_pile(info) straight_fails = 0 while len(env.obj_ids) != 0 and straight_fails < 3: env.move_away_arm() env.reset_all_obj() rgb, depth, _ = camera.get_cam_img() grasps, save_name = generator.predict_grasp( rgb, depth, n_grasps=3, show_output=output) for i, grasp in enumerate(grasps): x, y, z, roll, opening_len, obj_height = grasp if vis: debugID = p.addUserDebugLine( [x, y, z], [x, y, 1.2], [0, 0, 1], lineWidth=3) succes_grasp, succes_target = env.grasp( (x, y, z), roll, opening_len, obj_height) if vis: p.removeUserDebugItem(debugID) if succes_target: straight_fails = 0 if save_name is not None: os.rename(save_name + '.png', save_name + f'_SUCCESS_grasp{i}.png') break else: straight_fails += 1 if straight_fails == 3 or len(env.obj_ids) == 0: break env.reset_all_obj() env.remove_all_obj()
def isolated_obj_scenario(n, vis, output, debug): objects = YcbObjects( 'objects/ycb_objects', mod_orn=['ChipsCan', 'MustardBottle', 'TomatoSoupCan'], mod_stiffness=['Strawberry']) data = IsolatedObjData(objects.obj_names, n, 'results') center_x, center_y = 0.05, -0.52 network_path = 'network/trained-models/cornell-randsplit-rgbd-grconvnet3-drop1-ch32/epoch_19_iou_0.98' camera = Camera((center_x, center_y, 1.9), (center_x, center_y, 0.785), 0.2, 2.0, (224, 224), 40) env = Environment(camera, vis=vis, debug=debug) generator = GraspGenerator(network_path, camera, 5) for obj_name in objects.obj_names: print(obj_name) for _ in range(n): path, mod_orn, mod_stiffness = objects.get_obj_info(obj_name) env.load_isolated_obj(path, mod_orn, mod_stiffness) env.move_away_arm() rgb, depth, _ = camera.get_cam_img() grasps, save_name = generator.predict_grasp(rgb, depth, n_grasps=3, show_output=output) for i, grasp in enumerate(grasps): data.add_try(obj_name) x, y, z, roll, opening_len, obj_height = grasp if vis: debug_id = p.addUserDebugLine([x, y, z], [x, y, 1.2], [0, 0, 1]) succes_grasp, succes_target = env.grasp( (x, y, z), roll, opening_len, obj_height) if vis: p.removeUserDebugItem(debug_id) if succes_grasp: data.add_succes_grasp(obj_name) if succes_target: data.add_succes_target(obj_name) if save_name is not None: os.rename(save_name + '.png', save_name + f'_SUCCESS_grasp{i}.png') break env.reset_all_obj() env.remove_all_obj() data.write_json() summarize(data.save_dir, n)