# filter the objects which have been generated grasps file_list = [] for file in file_list_tmp: grasp_file_name = os.path.join(file, "grasps.pickle") if not os.path.exists(grasp_file_name): file_list.append(file) if len(file_list) == 0: # all objects have generated grasps print("[INFO] All objects have been generated grasps!") exit(0) object_numbers = len(file_list) print("[file_list]:", file_list, "obj_num:", object_numbers, "\n") sample_config = YamlConfig("./config/sample_config.yaml") gripper = RobotGripper.load("./config/gripper_params.yaml") fc_list = [ 3.0, 2.0, 1.7, 1.4, 1.3, 1.2, 1.1, 1.0, 0.9, 0.8, 0.7, 0.6, 0.5, 0.4, 0.3 ] # 15 # | | | print("[fc_list]", fc_list, "len:", len(fc_list)) # test a worker # good_grasp = [] # worker(1, 1, good_grasp) # exit() start_time = time.time() job_list = np.arange(object_numbers)
from foxarm.common.keys import * from foxarm.common.sdf_file import SdfFile from foxarm.common.obj_file import ObjFile from foxarm.common.database import Hdf5Database def prn_obj(obj): print('\n'.join(['*** %s ***\n%s\n' % item for item in obj.__dict__.items()])) CONFIG = YamlConfig(TEST_CONFIG_NAME) of = ObjFile(OBJ_FILENAME) sf = SdfFile(SDF_FILENAME) mesh = of.read() sdf = sf.read() obj = GraspableObject3D(sdf, mesh) gripper = RobotGripper.load(GRIPPER_NAME, os.path.join(WORK_DIR, "foxarm/common")) ags = AntipodalGraspSampler(gripper, CONFIG) database = Hdf5Database(TEST_DB_NAME, access_level=READ_WRITE_ACCESS) dataset = database.dataset(TEST_DS_NAME) ##### Generate Grasps ##### print('\n\n*****\tObject: %s\t*****' % dataset.object_keys[0]) unaligned_grasps = ags.generate_grasps(obj, target_num_grasps=100) print('### Generated %d unaligned grasps! ###' % len(unaligned_grasps)) grasps = {} stps = dataset.stable_poses(dataset.object_keys[0]) print('### Generated %d stable poses! ###' % len(stps)) for stp in stps: