From 6dcb25bc49d033b031d16bc6a9c2f0b056548ba3 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Fri, 13 Nov 2020 17:40:21 +0800 Subject: [PATCH 01/61] minor update --- docs/source/install.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/install.rst b/docs/source/install.rst index b673bfe..f98bc98 100644 --- a/docs/source/install.rst +++ b/docs/source/install.rst @@ -44,13 +44,13 @@ Dexnet Model Cache ------------------ Dexnet model cache is optional without which the evaluation will be much slower(about 10x time slower). -You can both download the file or generate it by yourself by running gen_pickle_dexmodel.py_. +You can both download the file or generate it by yourself by running gen_pickle_dexmodel.py_(recommended). .. _gen_pickle_dexmodel.py: https://github.com/graspnet/graspnetAPI/blob/master/gen_pickle_dexmodel.py Install API ^^^^^^^^^^^ -You may install usign pip:: +You may install using pip:: pip install graspnetAPI From 8ba87fa38821a3152eed580e180e97ba4707b858 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 16 Nov 2020 16:38:36 +0800 Subject: [PATCH 02/61] minor update --- graspnetAPI/graspnet.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index f63417a..260f933 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -435,7 +435,7 @@ def loadWorkSpace(self, sceneId, camera, annId): y2 = len(masky) - np.argmax(masky[::-1]) return (x1, y1, x2, y2) - def loadScenePointCloud(self, sceneId, camera, annId, align=False, format='open3d', use_workspace=False): + def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'open3d', use_workspace = False, use_mask = False): ''' **Input:** @@ -451,6 +451,7 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format='open3 - use_workspace: bool of whether crop the point cloud in the work space. + - use_mask: bool of thether crop the point cloud use mask(z>0). **Output:** @@ -487,8 +488,9 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format='open3 mask = (points_z > 0) points = np.stack([points_x, points_y, points_z], axis=-1) - points = points[mask] - colors = colors[mask] + if use_mask: + points = points[mask] + colors = colors[mask] if align: points = transform_points(points, camera_pose) if format == 'open3d': From 5e11498d650efa2c20e261ca126472904fed7831 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 16 Nov 2020 16:40:05 +0800 Subject: [PATCH 03/61] minor update --- docs/source/conf.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4243d3b..ef43911 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.1' +release = '1.2.2' # -- General configuration --------------------------------------------------- diff --git a/setup.py b/setup.py index 50a48ae..2c39005 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.1', + version='1.2.2', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From bbd629c99111f9ee90428e78d64fadc2a17c6c9f Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Fri, 20 Nov 2020 13:43:27 +0800 Subject: [PATCH 04/61] fix array error --- graspnetAPI/graspnet_eval.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index 4214d0a..7b5c615 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -107,6 +107,15 @@ def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): score_list = [x for x in score_list if len(x)!=0] collision_mask_list = [x for x in collision_mask_list if len(x)!=0] + if len(grasp_list) == 0: + grasp_accuracy = np.zeros((TOP_K,len(list_coe_of_friction))) + scene_accuracy.append(grasp_accuracy) + grasp_list_list.append([]) + score_list_list.append([]) + collision_list_list.append([]) + print('\rMean Accuracy for scene:{} ann:{}='.format(scene_id, ann_id),np.mean(grasp_accuracy[:,:]), end='') + continue + grasp_list, score_list, collision_mask_list = np.concatenate(grasp_list), np.concatenate(score_list), np.concatenate(collision_mask_list) # print(f'grasp list:{grasp_list}, len = {len(grasp_list)}') # print(f'score list:{score_list}, len = {len(score_list)}') @@ -165,7 +174,7 @@ def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): # print('Mean Accuracy for grasps under friction_coef {}'.format(list_coe_of_friction[4]), np.mean(grasp_accuracy[:,4])) # 0.5 # print('Mean Accuracy for grasps under friction_coef {}'.format(list_coe_of_friction[6]), np.mean(grasp_accuracy[:,6])) # 0.7 # print('Mean Accuracy for grasps under friction_coef {}'.format(list_coe_of_friction[8]), np.mean(grasp_accuracy[:,8])) # 0.9 - print('\rMean Accuracy for scene:{} ann:{}='.format(scene_id, ann_id),np.mean(grasp_accuracy[:,:]), end='') + print('\rMean Accuracy for scene:{} ann:{}='.format(scene_id, ann_id),np.mean(grasp_accuracy[:,:]), end='', flush=True) scene_accuracy.append(grasp_accuracy) if not return_list: return scene_accuracy @@ -188,7 +197,19 @@ def parallel_eval_scenes(self, scene_ids, dump_folder, proc = 2): def eval_seen(self, dump_folder, proc = 2): res = np.array(self.parallel_eval_scenes(scene_ids = list(range(100, 130)), dump_folder = dump_folder, proc = proc)) ap = np.mean(res) - print('\nEvaluation Result:\n----------\n{}, AP={}, AP Seen={}'.format(self.camera, ap, ap)) + print('\nEvaluation Result:\n----------\n{}, AP Seen={}'.format(self.camera, ap)) + return res, ap + + def eval_similar(self, dump_folder, proc = 2): + res = np.array(self.parallel_eval_scenes(scene_ids = list(range(130, 160)), dump_folder = dump_folder, proc = proc)) + ap = np.mean(res) + print('\nEvaluation Result:\n----------\n{}, AP Similar={}'.format(self.camera, ap)) + return res, ap + + def eval_novel(self, dump_folder, proc = 2): + res = np.array(self.parallel_eval_scenes(scene_ids = list(range(160, 190)), dump_folder = dump_folder, proc = proc)) + ap = np.mean(res) + print('\nEvaluation Result:\n----------\n{}, AP Novel={}'.format(self.camera, ap)) return res, ap def eval_all(self, dump_folder, proc = 2): From 09999891d78c224b595d0cc330dc6167b04470a2 Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Fri, 20 Nov 2020 14:38:17 +0800 Subject: [PATCH 05/61] remove comments --- graspnetAPI/utils/eval_utils.py | 84 ++++++++++----------------------- 1 file changed, 25 insertions(+), 59 deletions(-) diff --git a/graspnetAPI/utils/eval_utils.py b/graspnetAPI/utils/eval_utils.py index 7812b77..c373232 100644 --- a/graspnetAPI/utils/eval_utils.py +++ b/graspnetAPI/utils/eval_utils.py @@ -1,3 +1,6 @@ +__author__ = 'cxwang, mhgou' +__version__ = '1.0' + import os import time import numpy as np @@ -17,11 +20,9 @@ def get_scene_name(num): ''' **Input:** - - num: int of the scene number. **Output:** - - string of the scene name. ''' return ('scene_%04d' % (num,)) @@ -29,15 +30,10 @@ def get_scene_name(num): def create_table_points(lx, ly, lz, dx=0, dy=0, dz=0, grid_size=0.01): ''' **Input:** - - lx: - - ly: - - lz: - **Output:** - - numpy array of the points with shape (-1, 3). ''' xmap = np.linspace(0, lx, int(lx/grid_size)) @@ -54,13 +50,9 @@ def create_table_points(lx, ly, lz, dx=0, dy=0, dz=0, grid_size=0.01): def parse_posevector(posevector): ''' **Input:** - - posevector: list of pose - **Output:** - - obj_idx: int of the index of object. - - mat: numpy array of shape (4, 4) of the 6D pose of object. ''' mat = np.zeros([4,4],dtype=np.float32) @@ -81,7 +73,6 @@ def load_dexnet_model(data_path): - data_path: path to load .obj & .sdf files **Output:** - - obj: dexnet model ''' of = ObjFile('{}.obj'.format(data_path)) @@ -100,7 +91,6 @@ def transform_points(points, trans): - trans: (4, 4) **Output:** - - points_trans: (N, 3) ''' ones = np.ones([points.shape[0],1], dtype=points.dtype) @@ -112,13 +102,11 @@ def transform_points(points, trans): def compute_point_distance(A, B): ''' **Input:** - - A: (N, 3) - B: (M, 3) **Output:** - - dists: (N, M) ''' A = A[:, np.newaxis, :] @@ -182,15 +170,12 @@ def get_grasp_score(grasp, obj, fc_list, force_closure_quality_config): quality = -1 for ind_, value_fc in enumerate(fc_list): value_fc = round(value_fc, 2) - # print(value_fc) tmp = is_force_closure is_force_closure = PointGraspMetrics3D.grasp_quality(grasp, obj, force_closure_quality_config[value_fc]) if tmp and not is_force_closure: - # print(value_fc) quality = round(fc_list[ind_ - 1], 2) break elif is_force_closure and value_fc == fc_list[-1]: - # print(value_fc) quality = value_fc break elif value_fc == fc_list[0] and not is_force_closure: @@ -201,23 +186,29 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin ''' **Input:** - - grasp_list: [(k1,17), (k2,17), ..., (kn,17)] in camera coordinate + - grasp_list: [(k1, 17), (k2, 17), ..., (kn, 17)] in camera coordinate - model_list: [(N1, 3), (N2, 3), ..., (Nn, 3)] in camera coordinate - - dexnet_models: [GraspableObject3D,] in model coordinate + - dexnet_models: [GraspableObject3D,] in object coordinate - poses: [(4, 4),] from model coordinate to camera coordinate - scene_points: (Ns, 3) in camera coordinate + - outlier: float, used to compute workspace mask + - empty_thresh: int, 'num_inner_points < empty_thresh' means empty grasp + + - return_dexgrasps: bool, return grasps in dex-net format while True **Output:** - collsion_mask_list: [(k1,), (k2,), ..., (kn,)] + + - empty_mask_list: [(k1,), (k2,), ..., (kn,)] - - contact_list: [[[ParallelJawPtGrasp3D, Contact3D, Contact3D],],]in model coordinate + - dexgrasp_list: [[ParallelJawPtGrasp3D,],] in object coordinate ''' height = 0.02 depth_base = 0.02 @@ -228,27 +219,24 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin dexgrasp_list = list() for i in range(num_models): - if len(grasp_list[i][0]) == 0: + if len(grasp_list[i]) == 0: collision_mask_list.append(list()) empty_mask_list.append(list()) if return_dexgrasps: dexgrasp_list.append(list()) continue + ## parse grasp parameters model = model_list[i] obj_pose = poses[i] dexnet_model = dexnet_models[i] grasps = grasp_list[i] - # print('grasps shape: ', grasps.shape) grasp_points = grasps[:, 13:16] - # grasp_towards = grasps[:, 5:8] - # grasp_angles = grasps[:, 8] grasp_poses = grasps[:, 4:13].reshape([-1,3,3]) grasp_depths = grasps[:, 3] grasp_widths = grasps[:, 1] - # grasp_widths = np.ones(grasps.shape[0])*0.1 - # grasp_points = transform_points(grasp_points, obj_pose) - # crop scene, remove outlier + + ## crop scene, remove outlier xmin, xmax = model[:,0].min(), model[:,0].max() ymin, ymax = model[:,1].min(), model[:,1].max() zmin, zmax = model[:,2].min(), model[:,2].max() @@ -256,17 +244,12 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin ylim = ((scene_points[:,1] > ymin-outlier) & (scene_points[:,1] < ymax+outlier)) zlim = ((scene_points[:,2] > zmin-outlier) & (scene_points[:,2] < zmax+outlier)) workspace = scene_points[xlim & ylim & zlim] - # print('workspace shape: ', workspace.shape) - # print(xmin,xmax,ymin,ymax,zmin,zmax) - # print(grasp_points) + # transform scene to gripper frame target = (workspace[np.newaxis,:,:] - grasp_points[:,np.newaxis,:]) - #grasp_angles = grasp_angles.reshape(-1) - # grasp_poses = batch_viewpoint_params_to_matrix(grasp_towards, grasp_angles) # gripper to camera coordinate - # print('target shape 0: ', target.shape) target = np.matmul(target, grasp_poses) - # print('target shape: ', target.shape) - # collision detection + + # compute collision mask mask1 = ((target[:,:,2]>-height/2) & (target[:,:,2]-depth_base) & (target[:,:,0]-(grasp_widths[:,np.newaxis]/2+finger_width)) @@ -274,7 +257,7 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin mask5 = (target[:,:,1]<(grasp_widths[:,np.newaxis]/2+finger_width)) mask6 = (target[:,:,1]>grasp_widths[:,np.newaxis]/2) mask7 = ((target[:,:,0]>-(depth_base+finger_width)) & (target[:,:,0]<-depth_base)) - # print('single mask 1-7 sum:', np.sum(mask1), np.sum(mask2), np.sum(mask3), np.sum(mask4), np.sum(mask5), np.sum(mask6), np.sum(mask7)) + left_mask = (mask1 & mask2 & mask3 & mask4) right_mask = (mask1 & mask2 & mask5 & mask6) bottom_mask = (mask1 & mask3 & mask5 & mask7) @@ -285,43 +268,26 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin collision_mask_list.append(collision_mask) empty_mask_list.append(empty_mask) + ## generate grasps in dex-net format if return_dexgrasps: dexgrasps = list() - # points_in_gripper_mask = (mask1 & mask2 &(~mask4) & (~mask6)) - # print('mask sum ', np.sum(points_in_gripper_mask)) for grasp_id,_ in enumerate(grasps): grasp_point = grasp_points[grasp_id] R = grasp_poses[grasp_id] width = grasp_widths[grasp_id] depth = grasp_depths[grasp_id] points_in_gripper = target[grasp_id][inner_mask[grasp_id]] - # print('points in gripper: ', points_in_gripper.shape) - # if len(points_in_gripper) < 10: if empty_mask[grasp_id]: dexgrasps.append(None) continue - # c1_ind = np.argmin(points_in_gripper[:, 1]) - # c2_ind = np.argmax(points_in_gripper[:, 1]) - # c1 = points_in_gripper[c1_ind].reshape([3, 1]) # gripper coordinate - # c2 = points_in_gripper[c2_ind].reshape([3, 1]) - # # print('contacts before trans', c1, c2) - # c1 = np.dot(R, c1).reshape([3]) + grasp_point # camera coordinate - # c1 = transform_points(c1[np.newaxis,:], np.linalg.inv(obj_pose)).reshape([3]) # model coordinate - # c2 = np.dot(R, c2).reshape([3])+ grasp_point # camera coordinate - # c2 = transform_points(c2[np.newaxis,:], np.linalg.inv(obj_pose)).reshape([3]) # model coordinate - # print('contacts after trans', c1, c2) center = np.array([depth, 0, 0]).reshape([3, 1]) # gripper coordinate center = np.dot(grasp_poses[grasp_id], center).reshape([3]) center = (center + grasp_point).reshape([1,3]) # camera coordinate - center = transform_points(center, np.linalg.inv(obj_pose)).reshape([3]) # model coordinate + center = transform_points(center, np.linalg.inv(obj_pose)).reshape([3]) # object coordinate R = np.dot(obj_pose[:3,:3].T, R) binormal, approach_angle = matrix_to_dexnet_params(R) grasp = ParallelJawPtGrasp3D(ParallelJawPtGrasp3D.configuration_from_params( center, binormal, width, approach_angle), depth) - # contact1 = Contact3D(dexnet_model, c1, in_direction=binormal) - # contact2 = Contact3D(dexnet_model, c2, in_direction=-binormal) - # print((c2-c1)/np.linalg.norm((c2-c1)), binormal) - # contacts.append((grasp, contact1, contact2)) dexgrasps.append(grasp) dexgrasp_list.append(dexgrasps) @@ -334,9 +300,9 @@ def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, vo ''' **Input:** - - models: in model coordinate + - models: in object coordinate - - poses: from model to camera coordinate + - poses: from object to camera coordinate - table: in camera coordinate ''' @@ -402,4 +368,4 @@ def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, vo scores.append(score) score_list.append(np.array(scores)) - return grasp_list, score_list, collision_mask_list + return grasp_list, score_list, collision_mask_list \ No newline at end of file From fdcdad8146c0484aec97d05978a6147fd4bc9971 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Fri, 20 Nov 2020 22:31:49 +0800 Subject: [PATCH 06/61] update --- docs/source/conf.py | 2 +- graspnetAPI/graspnet_eval.py | 8 +++++--- graspnetAPI/utils/eval_utils.py | 35 +++++++++++++++++++++++++++++---- setup.py | 2 +- 4 files changed, 38 insertions(+), 9 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index ef43911..afc50e0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.2' +release = '1.2.3' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index ae2f81d..e046508 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -92,7 +92,7 @@ def get_model_poses(self, scene_id, ann_id): pose_list.append(mat) return obj_list, pose_list, camera_pose, align_mat - def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): + def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis = False): ''' **Input:** @@ -100,6 +100,8 @@ def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): - dump_folder: string of the folder that saves the dumped npy files. + - TOP_K: int of the top number of grasp to evaluate + - return_list: bool of whether to return the result list. - vis: bool of whether to show the result @@ -110,7 +112,7 @@ def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): ''' config = get_config() table = create_table_points(1.0, 1.0, 0.05, dx=-0.5, dy=-0.5, dz=-0.05, grid_size=0.008) - TOP_K = 50 + list_coe_of_friction = [0.2,0.4,0.6,0.8,1.0,1.2] model_list, dexmodel_list, _ = self.get_scene_models(scene_id, ann_id=0) @@ -130,7 +132,7 @@ def eval_scene(self, scene_id, dump_folder, return_list = False,vis = False): _, pose_list, camera_pose, align_mat = self.get_model_poses(scene_id, ann_id) table_trans = transform_points(table, np.linalg.inv(np.matmul(align_mat, camera_pose))) - grasp_list, score_list, collision_mask_list = eval_grasp(grasp_group, model_sampled_list, dexmodel_list, pose_list, config, table=table_trans, voxel_size=0.008) + grasp_list, score_list, collision_mask_list = eval_grasp(grasp_group, model_sampled_list, dexmodel_list, pose_list, config, table=table_trans, voxel_size=0.008, TOP_K = TOP_K) # concat into scene level # remove empty diff --git a/graspnetAPI/utils/eval_utils.py b/graspnetAPI/utils/eval_utils.py index 7812b77..d6d8c59 100644 --- a/graspnetAPI/utils/eval_utils.py +++ b/graspnetAPI/utils/eval_utils.py @@ -228,6 +228,8 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin dexgrasp_list = list() for i in range(num_models): + print(f'len grasp_list[{i}]:{len(grasp_list[i][0])}') + print(f'grasp_list[{i}][0]:{grasp_list[i][0]}') if len(grasp_list[i][0]) == 0: collision_mask_list.append(list()) empty_mask_list.append(list()) @@ -330,15 +332,25 @@ def collision_detection(grasp_list, model_list, dexnet_models, poses, scene_poin else: return collision_mask_list, empty_mask_list -def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, voxel_size=0.008): +def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, voxel_size=0.008, TOP_K = 50): ''' **Input:** + - grasp_group: GraspGroup instance for evaluation. + - models: in model coordinate + + - dexnet_models: models in dexnet format - poses: from model to camera coordinate + + - config: dexnet config. - table: in camera coordinate + + - voxel_size: float of the voxel size. + + - TOP_K: int of the number of top grasps to evaluate. ''' num_models = len(models) ## grasp nms @@ -360,12 +372,27 @@ def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, vo # assign grasps indices = compute_closest_points(grasp_group.translations, scene) model_to_grasp = seg_mask[indices] - grasp_list = list() + pre_grasp_list = list() for i in range(num_models): grasp_i = grasp_group[model_to_grasp==i] grasp_i.sort_by_score() - grasp_list.append(grasp_i[:10].grasp_group_array) - + pre_grasp_list.append(grasp_i[:10].grasp_group_array) + for i in range(num_models): + print(f'pre grasp len {i} = {len(pre_grasp_list[i])}') + all_grasp_list = np.vstack(pre_grasp_list) + # print(f'all_grasp_list:{all_grasp_list}') + remain_mask = np.argsort(all_grasp_list[:,0])[::-1] + min_score = all_grasp_list[remain_mask[50],0] + # print(f'min score:{min_score}') + grasp_list = [] + for i in range(num_models): + remain_mask_i = pre_grasp_list[i][:,0] > min_score + grasp_list.append(pre_grasp_list[i][remain_mask_i]) + # print(f'grasp list i:{pre_grasp_list[i]}') + # print(f'grasp list:{grasp_list}') + for i in range(num_models): + print(f'grasp len {i} = {len(grasp_list[i])}') + grasp_list = pre_grasp_list ## collision detection if table is not None: scene = np.concatenate([scene, table]) diff --git a/setup.py b/setup.py index 2c39005..7dc59fa 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.2', + version='1.2.3', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 052f2d81578e11bc5688318784110ccdd42b3a04 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sat, 21 Nov 2020 10:35:52 +0800 Subject: [PATCH 07/61] minor fix --- graspnetAPI/graspnet_eval.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index 8bf5f7d..f565749 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -136,8 +136,8 @@ def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis # concat into scene level # remove empty - grasp_list = [x for x in grasp_list if len(x)! = 0] - score_list = [x for x in score_list if len(x)! = 0] + grasp_list = [x for x in grasp_list if len(x) != 0] + score_list = [x for x in score_list if len(x) != 0] collision_mask_list = [x for x in collision_mask_list if len(x)!=0] if len(grasp_list) == 0: From 23507b2e9bd37a6574833d5688da9a5daa79032a Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sun, 22 Nov 2020 11:14:53 +0800 Subject: [PATCH 08/61] update eval --- graspnetAPI/utils/eval_utils.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/graspnetAPI/utils/eval_utils.py b/graspnetAPI/utils/eval_utils.py index 5c0d635..1ff4f46 100644 --- a/graspnetAPI/utils/eval_utils.py +++ b/graspnetAPI/utils/eval_utils.py @@ -342,11 +342,11 @@ def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, vo pre_grasp_list.append(grasp_i[:10].grasp_group_array) all_grasp_list = np.vstack(pre_grasp_list) remain_mask = np.argsort(all_grasp_list[:,0])[::-1] - min_score = all_grasp_list[remain_mask[50],0] + min_score = all_grasp_list[remain_mask[min(49,len(remain_mask) - 1)],0] grasp_list = [] for i in range(num_models): - remain_mask_i = pre_grasp_list[i][:,0] > min_score + remain_mask_i = pre_grasp_list[i][:,0] >= min_score grasp_list.append(pre_grasp_list[i][remain_mask_i]) # grasp_list = pre_grasp_list @@ -386,4 +386,4 @@ def eval_grasp(grasp_group, models, dexnet_models, poses, config, table=None, vo scores.append(score) score_list.append(np.array(scores)) - return grasp_list, score_list, collision_mask_list \ No newline at end of file + return grasp_list, score_list, collision_mask_list From fc5d83cd04bc319da171f330403c05be6d08fb16 Mon Sep 17 00:00:00 2001 From: Weiwen Chen Date: Fri, 27 Nov 2020 20:22:27 +0800 Subject: [PATCH 09/61] fix print 'realsense' (#2) --- examples/exam_check_data.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/exam_check_data.py b/examples/exam_check_data.py index ab42368..9fa0916 100644 --- a/examples/exam_check_data.py +++ b/examples/exam_check_data.py @@ -19,4 +19,4 @@ g = GraspNet(graspnet_root, 'realsense', 'all') if g.checkDataCompleteness(): - print('Check for kinect passed') \ No newline at end of file + print('Check for realsense passed') From e63923acf591d16b1df76c689a21b00e9fe3ee9c Mon Sep 17 00:00:00 2001 From: Fang-Haoshu <510641426@qq.com> Date: Fri, 27 Nov 2020 21:16:50 +0800 Subject: [PATCH 10/61] fix bug --- graspnetAPI/graspnet.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index 260f933..afcf6cc 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -435,7 +435,7 @@ def loadWorkSpace(self, sceneId, camera, annId): y2 = len(masky) - np.argmax(masky[::-1]) return (x1, y1, x2, y2) - def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'open3d', use_workspace = False, use_mask = False): + def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'open3d', use_workspace = False, use_mask = True): ''' **Input:** @@ -451,7 +451,8 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'ope - use_workspace: bool of whether crop the point cloud in the work space. - - use_mask: bool of thether crop the point cloud use mask(z>0). + - use_mask: bool of whether crop the point cloud use mask(z>0), only open3d 0.9.0 is supported for False option. + Only turn to False if you know what you are doing. **Output:** From 89294fc6cf07e952309d0049f3be05ec5ab4856b Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sat, 28 Nov 2020 09:14:02 +0800 Subject: [PATCH 11/61] remove useless --- graspnetAPI/graspnet_eval.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index 8bf5f7d..cd76d3f 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -239,18 +239,6 @@ def eval_seen(self, dump_folder, proc = 2): print('\nEvaluation Result:\n----------\n{}, AP Seen={}'.format(self.camera, ap)) return res, ap - def eval_similar(self, dump_folder, proc = 2): - res = np.array(self.parallel_eval_scenes(scene_ids = list(range(130, 160)), dump_folder = dump_folder, proc = proc)) - ap = np.mean(res) - print('\nEvaluation Result:\n----------\n{}, AP Similar={}'.format(self.camera, ap)) - return res, ap - - def eval_novel(self, dump_folder, proc = 2): - res = np.array(self.parallel_eval_scenes(scene_ids = list(range(160, 190)), dump_folder = dump_folder, proc = proc)) - ap = np.mean(res) - print('\nEvaluation Result:\n----------\n{}, AP Novel={}'.format(self.camera, ap)) - return res, ap - def eval_similar(self, dump_folder, proc = 2): ''' **Input:** From 2a445604c8acb76ec5c5bf4e5d6f1c2646a30b7c Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sat, 28 Nov 2020 09:17:45 +0800 Subject: [PATCH 12/61] update version --- docs/source/conf.py | 2 +- graspnetAPI/__init__.py | 2 +- graspnetAPI/grasp.py | 1 - graspnetAPI/graspnet.py | 1 - graspnetAPI/graspnet_eval.py | 1 - setup.py | 2 +- 6 files changed, 3 insertions(+), 6 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index afc50e0..30d937e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.3' +release = '1.2.4' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 4911dbc..75ba331 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.0' +__version__ = '1.2.4' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/grasp.py b/graspnetAPI/grasp.py index 042ab70..6c663e2 100644 --- a/graspnetAPI/grasp.py +++ b/graspnetAPI/grasp.py @@ -1,5 +1,4 @@ __author__ = 'mhgou' -__version__ = '1.0' import numpy as np import open3d as o3d diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index afcf6cc..dbc58e9 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -1,5 +1,4 @@ __author__ = 'hsfang, mhgou, cxwang' -__version__ = '1.0' # Interface for accessing the GraspNet-1Billion dataset. # Description and part of the codes modified from MSCOCO api diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index 67bc2bb..b79845c 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -1,5 +1,4 @@ __author__ = 'mhgou, cxwang and hsfang' -__version__ = '1.0' import numpy as np import os diff --git a/setup.py b/setup.py index 7dc59fa..98a717e 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.3', + version='1.2.4', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 12842a33bba31232eef1bf5f23056b9616f03d7f Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Sat, 28 Nov 2020 22:30:28 +0800 Subject: [PATCH 13/61] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 6a84cb1..cc4b684 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # graspnetAPI +[![PyPI version](https://badge.fury.io/py/graspnetAPI.svg)](https://badge.fury.io/py/graspnetAPI) ## Dataset From b34c54b60c32db064f42c7df46679e680cb1a447 Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Mon, 21 Dec 2020 16:09:25 +0800 Subject: [PATCH 14/61] add gripper width limitation --- graspnetAPI/graspnet_eval.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/graspnet_eval.py b/graspnetAPI/graspnet_eval.py index b79845c..a8880c9 100644 --- a/graspnetAPI/graspnet_eval.py +++ b/graspnetAPI/graspnet_eval.py @@ -91,7 +91,7 @@ def get_model_poses(self, scene_id, ann_id): pose_list.append(mat) return obj_list, pose_list, camera_pose, align_mat - def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis = False): + def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis = False, max_width = 0.1): ''' **Input:** @@ -105,6 +105,8 @@ def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis - vis: bool of whether to show the result + - max_width: float of the maximum gripper width in evaluation + **Output:** - scene_accuracy: np.array of shape (256, 50, 6) of the accuracy tensor. @@ -131,9 +133,16 @@ def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis _, pose_list, camera_pose, align_mat = self.get_model_poses(scene_id, ann_id) table_trans = transform_points(table, np.linalg.inv(np.matmul(align_mat, camera_pose))) + # clip width to [0,max_width] + gg_array = grasp_group.grasp_group_array + min_width_mask = (gg_array[:,1] < 0) + max_width_mask = (gg_array[:,1] > max_width) + gg_array[min_width_mask,1] = 0 + gg_array[max_width_mask,1] = max_width + grasp_group.grasp_group_array = gg_array + grasp_list, score_list, collision_mask_list = eval_grasp(grasp_group, model_sampled_list, dexmodel_list, pose_list, config, table=table_trans, voxel_size=0.008, TOP_K = TOP_K) - # concat into scene level # remove empty grasp_list = [x for x in grasp_list if len(x) != 0] score_list = [x for x in score_list if len(x) != 0] @@ -148,6 +157,7 @@ def eval_scene(self, scene_id, dump_folder, TOP_K = 50, return_list = False,vis print('\rMean Accuracy for scene:{} ann:{}='.format(scene_id, ann_id),np.mean(grasp_accuracy[:,:]), end='') continue + # concat into scene level grasp_list, score_list, collision_mask_list = np.concatenate(grasp_list), np.concatenate(score_list), np.concatenate(collision_mask_list) if vis: From 5d5c520ae93d9e02b435d662bf9c85e17cca930c Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Thu, 24 Dec 2020 09:56:08 +0800 Subject: [PATCH 15/61] fix index type error --- graspnetAPI/utils/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graspnetAPI/utils/utils.py b/graspnetAPI/utils/utils.py index 4168d0c..535d485 100755 --- a/graspnetAPI/utils/utils.py +++ b/graspnetAPI/utils/utils.py @@ -555,7 +555,7 @@ def center_depth(depths, center, open_point, upper_point): - depth: float of the grasp depth. ''' - return depths[round(center[1]), round(center[0])] + return depths[int(round(center[1])), int(round(center[0]))] def batch_center_depth(depths, centers, open_points, upper_points): ''' From dbfcbeba9c5b39f1d7808e10e2030c68b77f471e Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Fri, 25 Dec 2020 16:32:32 +0800 Subject: [PATCH 16/61] modify version --- docs/source/conf.py | 4 ++-- graspnetAPI/__init__.py | 4 ++-- setup.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 30d937e..ba020cc 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.4' +release = '1.2.5' # -- General configuration --------------------------------------------------- @@ -55,4 +55,4 @@ # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". html_static_path = ['_static'] -master_doc = 'index' \ No newline at end of file +master_doc = 'index' diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 75ba331..07f55b3 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,6 +1,6 @@ __author__ = 'mhgou' -__version__ = '1.2.4' +__version__ = '1.2.5' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval -from .grasp import Grasp, GraspGroup, RectGrasp, RectGraspGroup \ No newline at end of file +from .grasp import Grasp, GraspGroup, RectGrasp, RectGraspGroup diff --git a/setup.py b/setup.py index 98a717e..7b26006 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.4', + version='1.2.5', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', @@ -33,4 +33,4 @@ 'sklearn', 'grasp_nms' ] -) \ No newline at end of file +) From 534dcb55098adbc1a97b70e4d085af74c617e22f Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Thu, 7 Jan 2021 15:10:36 +0800 Subject: [PATCH 17/61] Delete grasp_definition.png --- grasp_definition.png | Bin 24698 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 grasp_definition.png diff --git a/grasp_definition.png b/grasp_definition.png deleted file mode 100644 index 27a56d69e071b36ab31523f206f34ddd1bc8b42f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24698 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 Date: Thu, 7 Jan 2021 15:11:14 +0800 Subject: [PATCH 18/61] Add files via upload --- grasp_definition.png | Bin 0 -> 53651 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 grasp_definition.png diff --git a/grasp_definition.png b/grasp_definition.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6e4f52f1988703568bb8c4dc9e2efceaf60edd GIT binary patch literal 53651 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 Ay8r+H literal 0 HcmV?d00001 From 3f640534e99a5639f80f925a42ca95ecafea82f0 Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Thu, 7 Jan 2021 15:13:01 +0800 Subject: [PATCH 19/61] Update README.md --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index cc4b684..9b9b44c 100644 --- a/README.md +++ b/README.md @@ -33,6 +33,12 @@ bash build_doc.sh LaTeX is required to build the pdf, but html can be built anyway. +## Grasp Definition +The frame of our gripper is defined as +
+ +
+ ## Examples ```bash From 518f3901488c5b02f98875a3fb81b366c8ed7115 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 7 Jan 2021 23:42:25 +0800 Subject: [PATCH 20/61] update exam --- examples/exam_grasp_format.py | 65 +++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 examples/exam_grasp_format.py diff --git a/examples/exam_grasp_format.py b/examples/exam_grasp_format.py new file mode 100644 index 0000000..cfedc8d --- /dev/null +++ b/examples/exam_grasp_format.py @@ -0,0 +1,65 @@ +__author__ = 'mhgou' +__version__ = '1.0' + +from graspnetAPI import GraspNet +import open3d as o3d +import cv2 +import numpy as np + +# GraspNetAPI example for loading grasp for a scene. +# change the graspnet_root path + +#################################################################### +graspnet_root = '/disk1/graspnet' # ROOT PATH FOR GRASPNET +#################################################################### + +sceneId = 1 +annId = 3 + +# initialize a GraspNet instance +g = GraspNet(graspnet_root, camera='kinect', split='train') + +# load grasps of scene 1 with annotation id = 3, camera = kinect and fric_coef_thresh = 0.2 +_6d_grasp = g.loadGrasp(sceneId = sceneId, annId = annId, format = '6d', camera = 'kinect', fric_coef_thresh = 0.2) +print('6d grasp:\n{}'.format(_6d_grasp)) + +# _6d_grasp is an GraspGroup instance defined in grasp.py +print('_6d_grasp:\n{}'.format(_6d_grasp)) + +# index +grasp = _6d_grasp[0] +print('_6d_grasp[0](grasp):\n{}'.format(grasp)) + +# slice +print('_6d_grasp[0:2]:\n{}'.format(_6d_grasp[0:2])) +print('_6d_grasp[[0,1]]:\n{}'.format(_6d_grasp[[0,1]])) + +# grasp is a Grasp instance defined in grasp.py +# access and set properties +print('grasp.translation={}'.format(grasp.translation)) +grasp.translation = np.array([1.0, 2.0, 3.0]) +print('After modification, grasp.translation={}'.format(grasp.translation)) +print('grasp.rotation_matrix={}'.format(grasp.rotation_matrix)) +grasp.rotation_matrix = np.eye(3).reshape((9)) +print('After modification, grasp.rotation_matrix={}'.format(grasp.rotation_matrix)) +print('grasp.width={}, height:{}, depth:{}, score:{}'.format(grasp.width, grasp.height, grasp.depth, grasp.score)) +print('More operation on Grasp and GraspGroup can be seen in the API document') + + +# load rectangle grasps of scene 1 with annotation id = 3, camera = realsense and fric_coef_thresh = 0.2 +rect_grasp_group = g.loadGrasp(sceneId = sceneId, annId = annId, format = 'rect', camera = 'realsense', fric_coef_thresh = 0.2) +print('rectangle grasp group:\n{}'.format(rect_grasp_group)) + +# rect_grasp is an RectGraspGroup instance defined in grasp.py +print('rect_grasp_group:\n{}'.format(rect_grasp_group)) + +# index +rect_grasp = rect_grasp_group[0] +print('rect_grasp_group[0](rect_grasp):\n{}'.format(rect_grasp)) + +# slice +print('rect_grasp_group[0:2]:\n{}'.format(rect_grasp_group[0:2])) +print('rect_grasp_group[[0,1]]:\n{}'.format(rect_grasp_group[[0,1]])) + +# properties of rect_grasp +print('rect_grasp.center_point:{}, open_point:{}, height:{}, score:{}'.format(rect_grasp.center_point, rect_grasp.open_point, rect_grasp.height, rect_grasp.score)) From e44c93130b0c68738887cc041de25a5ba833e8c9 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Fri, 8 Jan 2021 12:27:10 +0800 Subject: [PATCH 21/61] add docs --- docs/build_doc.sh | 3 --- docs/source/example_grasp_format.rst | 33 ++++++++++++++++++++++++++++ docs/source/index.rst | 1 + 3 files changed, 34 insertions(+), 3 deletions(-) create mode 100644 docs/source/example_grasp_format.rst diff --git a/docs/build_doc.sh b/docs/build_doc.sh index 84937aa..ebe6ad8 100755 --- a/docs/build_doc.sh +++ b/docs/build_doc.sh @@ -1,6 +1,3 @@ -cd .. -bash install.sh -cd docs rm source/graspnetAPI.* rm source/modules.rst sphinx-apidoc -o ./source ../graspnetAPI diff --git a/docs/source/example_grasp_format.rst b/docs/source/example_grasp_format.rst new file mode 100644 index 0000000..7e2c9a8 --- /dev/null +++ b/docs/source/example_grasp_format.rst @@ -0,0 +1,33 @@ +.. _example_grasp_format: + +Grasp Label Format +================== + +There are totally four kinds of data structures for grasp labels: Grasp, GraspGroup, RectGrasp and RectGraspGroup. +Their definitions can be found in grasp.py. The internal data format of each class is a numpy array. +Users can access or modify the value by provided functions. +Users can also manipulate the data directly but it is not recommended. +Please refer to the code for more details. + + +Loading a GraspGroup instance. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 1-27 + +Users can access elements by index or slice. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 29-35 + +Each element of GraspGroup is a Grasp instance. +The properties of Grasp can be accessed via provided methods. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 37-46 + +RectGrasp is the class for rectangle grasps. The format is different from Grasp. +But the provided APIs are similar. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 49-65 \ No newline at end of file diff --git a/docs/source/index.rst b/docs/source/index.rst index b143292..af4d915 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -23,6 +23,7 @@ Examples example_check_data example_generate_rectangle_labels example_loadGrasp + example_grasp_format example_vis example_nms example_convert From 4c3c9de4d99d5e0c9fd8fdfe321ea7ef8cefe00f Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Fri, 8 Jan 2021 12:34:08 +0800 Subject: [PATCH 22/61] update years --- docs/source/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index ba020cc..d3936c0 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -18,7 +18,7 @@ # -- Project information ----------------------------------------------------- project = 'graspnetAPI' -copyright = '2020, MVIG, Shanghai Jiao Tong University' +copyright = '2021, MVIG, Shanghai Jiao Tong University' author = 'graspnet' # The full version, including alpha/beta/rc tags From b5136d3c125c7424102d85c737d0f824d7762381 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sat, 9 Jan 2021 15:33:24 +0800 Subject: [PATCH 23/61] modify doc --- docs/source/_static/grasp_definition.png | Bin 0 -> 53651 bytes docs/source/example_grasp_format.rst | 33 ---- docs/source/grasp_format.rst | 166 ++++++++++++++++++ ...aspnetAPI.utils.dexnet.grasping.meshpy.rst | 54 ++++++ .../graspnetAPI.utils.dexnet.grasping.rst | 70 ++++++++ docs/source/graspnetAPI.utils.dexnet.rst | 38 ++++ docs/source/graspnetAPI.utils.rst | 8 + docs/source/index.rst | 2 +- 8 files changed, 337 insertions(+), 34 deletions(-) create mode 100644 docs/source/_static/grasp_definition.png delete mode 100644 docs/source/example_grasp_format.rst create mode 100644 docs/source/grasp_format.rst create mode 100644 docs/source/graspnetAPI.utils.dexnet.grasping.meshpy.rst create mode 100644 docs/source/graspnetAPI.utils.dexnet.grasping.rst create mode 100644 docs/source/graspnetAPI.utils.dexnet.rst diff --git a/docs/source/_static/grasp_definition.png b/docs/source/_static/grasp_definition.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6e4f52f1988703568bb8c4dc9e2efceaf60edd GIT binary patch literal 53651 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 Ay8r+H literal 0 HcmV?d00001 diff --git a/docs/source/example_grasp_format.rst b/docs/source/example_grasp_format.rst deleted file mode 100644 index 7e2c9a8..0000000 --- a/docs/source/example_grasp_format.rst +++ /dev/null @@ -1,33 +0,0 @@ -.. _example_grasp_format: - -Grasp Label Format -================== - -There are totally four kinds of data structures for grasp labels: Grasp, GraspGroup, RectGrasp and RectGraspGroup. -Their definitions can be found in grasp.py. The internal data format of each class is a numpy array. -Users can access or modify the value by provided functions. -Users can also manipulate the data directly but it is not recommended. -Please refer to the code for more details. - - -Loading a GraspGroup instance. - -.. literalinclude:: ../../examples/exam_grasp_format.py - :lines: 1-27 - -Users can access elements by index or slice. - -.. literalinclude:: ../../examples/exam_grasp_format.py - :lines: 29-35 - -Each element of GraspGroup is a Grasp instance. -The properties of Grasp can be accessed via provided methods. - -.. literalinclude:: ../../examples/exam_grasp_format.py - :lines: 37-46 - -RectGrasp is the class for rectangle grasps. The format is different from Grasp. -But the provided APIs are similar. - -.. literalinclude:: ../../examples/exam_grasp_format.py - :lines: 49-65 \ No newline at end of file diff --git a/docs/source/grasp_format.rst b/docs/source/grasp_format.rst new file mode 100644 index 0000000..11a7208 --- /dev/null +++ b/docs/source/grasp_format.rst @@ -0,0 +1,166 @@ +.. grasp_format: + +Grasp Label Format +================== + +Raw Label Format +---------------- +The raw label is composed of two parts, i.e. labels for all grasp candidates on each object and collision masks for each scene. + + + +Labels on Objects +^^^^^^^^^^^^^^^^^ +The raw label on each object is a list of numpy arrays. + +:: + + >>> import numpy as np + >>> l = np.load('000_labels.npz') # GRASPNET_ROOT/grasp_label/000_labels.npz + >>> l.files + ['points', 'offsets', 'collision', 'scores'] + >>> l['points'].shape + (3459, 3) + >>> l['offsets'].shape + (3459, 300, 12, 4, 3) + >>> l['collision'].shape + (3459, 300, 12, 4) + >>> l['collision'].dtype + dtype('bool') + >>> l['scores'].shape + (3459, 300, 12, 4) + >>> l['scores'][0][0][0][0] + -1.0 + +- 'points' records the grasp center point coordinates in model frame. + +- 'offsets' records the in-plane rotation, depth and width of the gripper respectively in the last dimension. + +- 'collision' records the bool mask for if the grasp pose is a collision with the model. + +- 'scores' records the minimum coefficient of friction between the gripper and object to achieve a stabel grasp. + +.. note:: + + In the raw label, the **lower** score the grasp has, the **better** it is. However, -1.0 score means the grasp pose is totally not acceptable. + +300, 12, 4 denote view id, in-plane rotation id and depth id respectively. The views are defined here in graspnetAPI/utils/utils.py. + +.. literalinclude:: ../../graspnetAPI/utils/utils.py + :lines: 51-58 + :linenos: + +Collision Masks on Each Scene +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Collision mask on each scene is a list of numpy arrays. + +:: + + >>> import numpy as np + >>> c = np.load('collision_labels.npz') # GRASPNET_ROOT/collision_label/scene_0000/collision_labels.npz + >>> c.files + ['arr_0', 'arr_4', 'arr_5', 'arr_2', 'arr_3', 'arr_7', 'arr_1', 'arr_8', 'arr_6'] + >>> c['arr_0'].shape + (487, 300, 12, 4) + >>> c['arr_0'].dtype + dtype('bool') + >>> c['arr_0'][10][20][3] + array([ True, True, True, True]) + +'arr_i' is the collision mask for the `i` th object in the `object_id_list.txt` for each scene whose shape is (num_points, 300, 12, 4). +num_points, 300, 12, 4 denote the number of points in the object, view id, in-plane rotation id and depth id respectively. + +Users can refer to :py:func:`graspnetAPI.GraspNet.loadGrasp` for more details of how to use the labels. + +API Loaded Labels +----------------- + +Dealing with the raw labels are time-consuming and need high familiarity with graspnet. +So the API also provides an easy access to the labels. + +By calling :py:func:`graspnetAPI.GraspNet.loadGrasp`, users can get all the positive grasp labels in a scene with their parameters and scores. + +There are totally four kinds of data structures for loaded grasp labels: **Grasp**, **GraspGroup**, **RectGrasp** and **RectGraspGroup**. +The internal data format of each class is a numpy array which is more efficient than the Python list. +Their definitions are given in grasp.py + +Example Labels +^^^^^^^^^^^^^^ + +Before looking into the details, an example is given below. + +Loading a GraspGroup instance. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 1-27 + +Users can access elements by index or slice. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 29-35 + +Each element of GraspGroup is a Grasp instance. +The properties of Grasp can be accessed via provided methods. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 37-46 + +RectGrasp is the class for rectangle grasps. The format is different from Grasp. +But the provided APIs are similar. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 49-65 + +6D Grasp +^^^^^^^^ +Actually, 17 float numbers are used to define a general 6d grasp. +The width, height, depth, score and attached object id are also part of the definition. + +.. note:: + + In the loaded label, the **higher** score the grasp has, the **better** it is which is different from raw labels. Actually, score = 1.1 - raw_score (which is the coefficient of friction) + +.. literalinclude:: ../../graspnetAPI/graspnet.py + :lines: 635-637 + :emphasize-lines: 2 + +The detailed defition of each parameter is shown in the figure. + +.. image:: _static/grasp_definition.png + +.. literalinclude:: ../../graspnetAPI/grasp.py + :lines: 14-36 + +6D Grasp Group +^^^^^^^^^^^^^^ + +Usually, there are a lot of grasps in a scene, :py:class:`GraspGroup` is a class for these grasps. +Compared with :py:class:`Grasp`, :py:class:`GraspGroup` contains a 2D numpy array, the additional dimension is the index for each grasp. + +.. literalinclude:: ../../graspnetAPI/grasp.py + :lines: 185-202 + +Common operations on a list such as indexing, slicing and sorting are implemented. +Besides, one important function is that users can **dump** a GraspGroup into a numpy file and **load** it in another program by calling :py:func:`GraspGroup.save_npy` and :py:func:`GraspGroup.from_npy`. + +Rectangle Grasp +^^^^^^^^^^^^^^^ +7 float numbers are used to define a general rectangle grasp, i.e. the center point, the open point, height, score and the attached object id. +The detailed defition of each parameter is shown in the figure above and the coordinates for center point and open point are in the pixel frame. + +.. literalinclude:: ../../graspnetAPI/grasp.py + :lines: 521-540 + +Rectangle Grasp Group +^^^^^^^^^^^^^^^^^^^^^ + +The format for :py:class:`RectGraspGroup` is similar to that of :py:class:`RectGrasp` and :py:class:`GraspGroup`. + +.. literalinclude:: ../../graspnetAPI/grasp.py + :lines: 720-737 + +.. note:: + + We recommend users to access and modify the labels by provided functions although users can also manipulate the data directly but it is **Not Recommended**. + Please refer to the Python API for more details. diff --git a/docs/source/graspnetAPI.utils.dexnet.grasping.meshpy.rst b/docs/source/graspnetAPI.utils.dexnet.grasping.meshpy.rst new file mode 100644 index 0000000..030be5e --- /dev/null +++ b/docs/source/graspnetAPI.utils.dexnet.grasping.meshpy.rst @@ -0,0 +1,54 @@ +graspnetAPI.utils.dexnet.grasping.meshpy package +================================================ + +Submodules +---------- + +graspnetAPI.utils.dexnet.grasping.meshpy.mesh module +---------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.mesh + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.meshpy.obj\_file module +--------------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.obj_file + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.meshpy.sdf module +--------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.sdf + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.meshpy.sdf\_file module +--------------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.sdf_file + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.meshpy.stable\_pose module +------------------------------------------------------------ + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy.stable_pose + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.meshpy + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/graspnetAPI.utils.dexnet.grasping.rst b/docs/source/graspnetAPI.utils.dexnet.grasping.rst new file mode 100644 index 0000000..8bb4be8 --- /dev/null +++ b/docs/source/graspnetAPI.utils.dexnet.grasping.rst @@ -0,0 +1,70 @@ +graspnetAPI.utils.dexnet.grasping package +========================================= + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + graspnetAPI.utils.dexnet.grasping.meshpy + +Submodules +---------- + +graspnetAPI.utils.dexnet.grasping.contacts module +------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.contacts + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.grasp module +---------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.grasp\_quality\_config module +--------------------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp_quality_config + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.grasp\_quality\_function module +----------------------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.grasp_quality_function + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.graspable\_object module +---------------------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping.graspable_object + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.grasping.quality module +------------------------------------------------ + +.. automodule:: graspnetAPI.utils.dexnet.grasping.quality + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: graspnetAPI.utils.dexnet.grasping + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/graspnetAPI.utils.dexnet.rst b/docs/source/graspnetAPI.utils.dexnet.rst new file mode 100644 index 0000000..f1f2883 --- /dev/null +++ b/docs/source/graspnetAPI.utils.dexnet.rst @@ -0,0 +1,38 @@ +graspnetAPI.utils.dexnet package +================================ + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + graspnetAPI.utils.dexnet.grasping + +Submodules +---------- + +graspnetAPI.utils.dexnet.abstractstatic module +---------------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.abstractstatic + :members: + :undoc-members: + :show-inheritance: + +graspnetAPI.utils.dexnet.constants module +----------------------------------------- + +.. automodule:: graspnetAPI.utils.dexnet.constants + :members: + :undoc-members: + :show-inheritance: + + +Module contents +--------------- + +.. automodule:: graspnetAPI.utils.dexnet + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/graspnetAPI.utils.rst b/docs/source/graspnetAPI.utils.rst index 7fba83f..f0bbcd9 100644 --- a/docs/source/graspnetAPI.utils.rst +++ b/docs/source/graspnetAPI.utils.rst @@ -1,6 +1,14 @@ graspnetAPI.utils package ========================= +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + graspnetAPI.utils.dexnet + Submodules ---------- diff --git a/docs/source/index.rst b/docs/source/index.rst index af4d915..befb5a4 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -12,6 +12,7 @@ Welcome to graspnetAPI's documentation! about install + grasp_format Examples ========= @@ -23,7 +24,6 @@ Examples example_check_data example_generate_rectangle_labels example_loadGrasp - example_grasp_format example_vis example_nms example_convert From afa52820f9734c373f938c8e4bc38fd4f015c85a Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Tue, 12 Jan 2021 13:03:53 +0800 Subject: [PATCH 24/61] modify spelling error --- docs/source/grasp_format.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/grasp_format.rst b/docs/source/grasp_format.rst index 11a7208..279bdb3 100644 --- a/docs/source/grasp_format.rst +++ b/docs/source/grasp_format.rst @@ -36,9 +36,9 @@ The raw label on each object is a list of numpy arrays. - 'offsets' records the in-plane rotation, depth and width of the gripper respectively in the last dimension. -- 'collision' records the bool mask for if the grasp pose is a collision with the model. +- 'collision' records the bool mask for if the grasp pose collides with the model. -- 'scores' records the minimum coefficient of friction between the gripper and object to achieve a stabel grasp. +- 'scores' records the minimum coefficient of friction between the gripper and object to achieve a stable grasp. .. note:: From f312d7e2a73ca97f9e791cf3f1ab3aeacebac3e9 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 25 Jan 2021 18:01:09 +0800 Subject: [PATCH 25/61] update to 1.2.6 and add transformation --- README.md | 6 +++++ docs/source/_static/transformation.png | Bin 0 -> 18742 bytes docs/source/conf.py | 2 +- docs/source/grasp_format.rst | 16 ++++++++--- examples/exam_grasp_format.py | 32 +++++++++++++++++++++- graspnetAPI/__init__.py | 2 +- graspnetAPI/grasp.py | 36 +++++++++++++++++++++++-- setup.py | 2 +- 8 files changed, 87 insertions(+), 9 deletions(-) create mode 100644 docs/source/_static/transformation.png diff --git a/README.md b/README.md index 9b9b44c..e2d19b7 100644 --- a/README.md +++ b/README.md @@ -71,3 +71,9 @@ Please cite these papers in your publications if it helps your research: year={2020} } ``` + +## Change Log + +#### 1.2.6 + +- Add transformation for Grasp and GraspGroup \ No newline at end of file diff --git a/docs/source/_static/transformation.png b/docs/source/_static/transformation.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e1823245b5caebf20d0a848d31ff0357a1b44c GIT binary patch literal 18742 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 literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py index d3936c0..4691fea 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.5' +release = '1.2.6' # -- General configuration --------------------------------------------------- diff --git a/docs/source/grasp_format.rst b/docs/source/grasp_format.rst index 279bdb3..4745d20 100644 --- a/docs/source/grasp_format.rst +++ b/docs/source/grasp_format.rst @@ -139,7 +139,7 @@ Usually, there are a lot of grasps in a scene, :py:class:`GraspGroup` is a class Compared with :py:class:`Grasp`, :py:class:`GraspGroup` contains a 2D numpy array, the additional dimension is the index for each grasp. .. literalinclude:: ../../graspnetAPI/grasp.py - :lines: 185-202 + :lines: 201-218 Common operations on a list such as indexing, slicing and sorting are implemented. Besides, one important function is that users can **dump** a GraspGroup into a numpy file and **load** it in another program by calling :py:func:`GraspGroup.save_npy` and :py:func:`GraspGroup.from_npy`. @@ -150,7 +150,7 @@ Rectangle Grasp The detailed defition of each parameter is shown in the figure above and the coordinates for center point and open point are in the pixel frame. .. literalinclude:: ../../graspnetAPI/grasp.py - :lines: 521-540 + :lines: 553-572 Rectangle Grasp Group ^^^^^^^^^^^^^^^^^^^^^ @@ -158,9 +158,19 @@ Rectangle Grasp Group The format for :py:class:`RectGraspGroup` is similar to that of :py:class:`RectGrasp` and :py:class:`GraspGroup`. .. literalinclude:: ../../graspnetAPI/grasp.py - :lines: 720-737 + :lines: 752-769 .. note:: We recommend users to access and modify the labels by provided functions although users can also manipulate the data directly but it is **Not Recommended**. Please refer to the Python API for more details. + +Grasp and GraspGroup Transformation +----------------------------------- + +Users can transform a Grasp or GraspGroup giving a 4x4 matrix. + +.. literalinclude:: ../../examples/exam_grasp_format.py + :lines: 67-95 + +.. image:: _static/transformation.png diff --git a/examples/exam_grasp_format.py b/examples/exam_grasp_format.py index cfedc8d..a3c72a3 100644 --- a/examples/exam_grasp_format.py +++ b/examples/exam_grasp_format.py @@ -1,7 +1,7 @@ __author__ = 'mhgou' __version__ = '1.0' -from graspnetAPI import GraspNet +from graspnetAPI import GraspNet, Grasp, GraspGroup import open3d as o3d import cv2 import numpy as np @@ -63,3 +63,33 @@ # properties of rect_grasp print('rect_grasp.center_point:{}, open_point:{}, height:{}, score:{}'.format(rect_grasp.center_point, rect_grasp.open_point, rect_grasp.height, rect_grasp.score)) + +# transform grasp +g = Grasp() # simple Grasp +frame = o3d.geometry.TriangleMesh.create_coordinate_frame(0.1) + +# Grasp before transformation +o3d.visualization.draw_geometries([g.to_open3d_geometry(), frame]) +g.translation = np.array((0,0,0.01)) + +# setup a transformation matrix +T = np.eye(4) +T[:3,3] = np.array((0.01, 0.02, 0.03)) +T[:3,:3] = np.array([[0,0,1.0],[1,0,0],[0,1,0]]) +g.transform(T) + +# Grasp after transformation +o3d.visualization.draw_geometries([g.to_open3d_geometry(), frame]) + +g1 = Grasp() +gg = GraspGroup() +gg.add(g) +gg.add(g1) + +# GraspGroup before transformation +o3d.visualization.draw_geometries([*gg.to_open3d_geometry_list(), frame]) + +gg.transform(T) + +# GraspGroup after transformation +o3d.visualization.draw_geometries([*gg.to_open3d_geometry_list(), frame]) \ No newline at end of file diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 07f55b3..b73299e 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.5' +__version__ = '1.2.6' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/grasp.py b/graspnetAPI/grasp.py index 6c663e2..25f806f 100644 --- a/graspnetAPI/grasp.py +++ b/graspnetAPI/grasp.py @@ -129,7 +129,7 @@ def rotation_matrix(self, *args): - len(args) == 9: float of matrix ''' if len(args) == 1: - self.grasp_array[4:13] = np.array(args[0],dtype = np.float64) + self.grasp_array[4:13] = np.array(args[0],dtype = np.float64).reshape(9) elif len(args) == 9: self.grasp_array[4:13] = np.array(args,dtype = np.float64) @@ -168,12 +168,28 @@ def object_id(self): @object_id.setter def object_id(self, object_id): ''' - **input:** + **Input:** - int of the object_id. ''' self.grasp_array[16] = object_id + def transform(self, T): + ''' + **Input:** + + - T: np.array of shape (4, 4) + + **Output:** + + - Grasp instance after transformation, the original Grasp will also be changed. + ''' + rotation = T[:3,:3] + translation = T[:3,3] + self.translation = np.dot(rotation, self.translation.reshape((3,1))).reshape(-1) + translation + self.rotation_matrix = np.dot(rotation, self.rotation_matrix) + return self + def to_open3d_geometry(self): ''' **Ouput:** @@ -380,6 +396,22 @@ def object_ids(self, object_ids): assert object_ids.size == len(self) self.grasp_group_array[:,16] = copy.deepcopy(object_ids) + def transform(self, T): + ''' + **Input:** + + - T: np.array of shape (4, 4) + + **Output:** + + - GraspGroup instance after transformation, the original GraspGroup will also be changed. + ''' + rotation = T[:3,:3] + translation = T[:3,3] + self.translations = np.dot(rotation, self.translations.reshape((3,-1))).reshape((-1,3)) + translation # (-1, 3) + self.rotation_matrices = np.matmul(rotation, self.rotation_matrices).reshape((-1, 3, 3)) # (-1, 9) + return self + def add(self, element): ''' **Input:** diff --git a/setup.py b/setup.py index 7b26006..11efdf8 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.5', + version='1.2.6', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 6262b0eae0bd086853c4aa2b3fead5b151b52f0d Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 8 Mar 2021 21:42:19 +0800 Subject: [PATCH 26/61] update 1.2.7 --- docs/source/conf.py | 2 +- graspnetAPI/__init__.py | 2 +- graspnetAPI/graspnet.py | 9 ++++++++- setup.py | 2 +- 4 files changed, 11 insertions(+), 4 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 4691fea..879516d 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.6' +release = '1.2.7' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index b73299e..14d20cd 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.6' +__version__ = '1.2.7' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index dbc58e9..7ae6b0a 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -434,7 +434,7 @@ def loadWorkSpace(self, sceneId, camera, annId): y2 = len(masky) - np.argmax(masky[::-1]) return (x1, y1, x2, y2) - def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'open3d', use_workspace = False, use_mask = True): + def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'open3d', use_workspace = False, use_mask = True, use_inpainting = False): ''' **Input:** @@ -453,6 +453,8 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'ope - use_mask: bool of whether crop the point cloud use mask(z>0), only open3d 0.9.0 is supported for False option. Only turn to False if you know what you are doing. + - use_inpainting: bool of whether inpaint the depth image for the missing information. + **Output:** - open3d.geometry.PointCloud instance of the scene point cloud. @@ -461,6 +463,11 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'ope ''' colors = self.loadRGB(sceneId = sceneId, camera = camera, annId = annId).astype(np.float32) / 255.0 depths = self.loadDepth(sceneId = sceneId, camera = camera, annId = annId) + if use_inpainting: + fault_mask = depths < 200 + depths[fault_mask] = 0 + inpainting_mask = (np.abs(depths) < 10).astype(np.uint8) + depths = cv2.inpaint(depths, inpainting_mask, 5, cv2.INPAINT_NS) intrinsics = np.load(os.path.join(self.root, 'scenes', 'scene_%04d' % sceneId, camera, 'camK.npy')) fx, fy = intrinsics[0,0], intrinsics[1,1] cx, cy = intrinsics[0,2], intrinsics[1,2] diff --git a/setup.py b/setup.py index 11efdf8..ae8e42e 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.6', + version='1.2.7', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 28bac76832e805a5cee04696c47194b2a8e445b3 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 8 Mar 2021 21:42:33 +0800 Subject: [PATCH 27/61] update 1.2.7 --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e2d19b7..f7545ae 100644 --- a/README.md +++ b/README.md @@ -76,4 +76,8 @@ Please cite these papers in your publications if it helps your research: #### 1.2.6 -- Add transformation for Grasp and GraspGroup \ No newline at end of file +- Add transformation for Grasp and GraspGroup. + +#### 1.2.7 + +- Add inpainting for depth image. \ No newline at end of file From ff2f34ecbaa3120692d2c88d5aa76e48e635548f Mon Sep 17 00:00:00 2001 From: cubercsl <2014cais01@gmail.com> Date: Tue, 9 Mar 2021 22:37:23 +0800 Subject: [PATCH 28/61] fix(grasp): some bug in transform the graspgroup When the group has two or more grasps, the `reshape` does not equal to `transpose`. --- graspnetAPI/grasp.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/grasp.py b/graspnetAPI/grasp.py index 25f806f..6099eb6 100644 --- a/graspnetAPI/grasp.py +++ b/graspnetAPI/grasp.py @@ -408,7 +408,7 @@ def transform(self, T): ''' rotation = T[:3,:3] translation = T[:3,3] - self.translations = np.dot(rotation, self.translations.reshape((3,-1))).reshape((-1,3)) + translation # (-1, 3) + self.translations = np.dot(rotation, self.translations.T).T + translation # (-1, 3) self.rotation_matrices = np.matmul(rotation, self.rotation_matrices).reshape((-1, 3, 3)) # (-1, 9) return self @@ -1073,4 +1073,4 @@ def random_sample(self, numGrasp = 20): np.random.shuffle(shuffled_rect_grasp_group_array) shuffled_rect_grasp_group = RectGraspGroup() shuffled_rect_grasp_group.rect_grasp_group_array = copy.deepcopy(shuffled_rect_grasp_group_array[:numGrasp]) - return shuffled_rect_grasp_group \ No newline at end of file + return shuffled_rect_grasp_group From 90a27f252a85f1529116a981c7ea834b3d6f0b89 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sat, 13 Mar 2021 13:40:15 +0800 Subject: [PATCH 29/61] fix bug on loadScenePointCloud --- README.md | 6 +++++- docs/source/conf.py | 2 +- graspnetAPI/__init__.py | 2 +- graspnetAPI/graspnet.py | 8 +++++++- setup.py | 2 +- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f7545ae..7f1a30c 100644 --- a/README.md +++ b/README.md @@ -80,4 +80,8 @@ Please cite these papers in your publications if it helps your research: #### 1.2.7 -- Add inpainting for depth image. \ No newline at end of file +- Add inpainting for depth image. + +#### 1.2.8 + +- Minor fix bug on loadScenePointCloud. \ No newline at end of file diff --git a/docs/source/conf.py b/docs/source/conf.py index 879516d..b850894 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.7' +release = '1.2.8' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 14d20cd..623d519 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.7' +__version__ = '1.2.8' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index 7ae6b0a..9e3e101 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -485,7 +485,9 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'ope points_z = depths / s points_x = (xmap - cx) / fx * points_z points_y = (ymap - cy) / fy * points_z - + # print(f'points_x.shape:{points_x.shape}') + # print(f'points_y.shape:{points_y.shape}') + # print(f'points_z.shape:{points_z.shape}') if use_workspace: (x1, y1, x2, y2) = self.loadWorkSpace(sceneId, camera, annId) points_z = points_z[y1:y2,x1:x2] @@ -495,9 +497,13 @@ def loadScenePointCloud(self, sceneId, camera, annId, align=False, format = 'ope mask = (points_z > 0) points = np.stack([points_x, points_y, points_z], axis=-1) + # print(f'points.shape:{points.shape}') if use_mask: points = points[mask] colors = colors[mask] + else: + points = points.reshape((-1, 3)) + colors = colors.reshape((-1, 3)) if align: points = transform_points(points, camera_pose) if format == 'open3d': diff --git a/setup.py b/setup.py index ae8e42e..9198683 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.7', + version='1.2.8', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 2c1e11c3a94326ed041b2cc1c8a64710813a254e Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Wed, 7 Apr 2021 20:37:32 +0800 Subject: [PATCH 30/61] add per_obj visualization of 6d pose; add comments --- graspnetAPI/graspnet.py | 8 +- graspnetAPI/utils/rotation.py | 4 + graspnetAPI/utils/utils.py | 178 +++++++++++++++++++++++++++++++++- graspnetAPI/utils/vis.py | 167 +++++++++++++++++++++++++------ 4 files changed, 320 insertions(+), 37 deletions(-) diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index 9e3e101..d6aa918 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -752,7 +752,7 @@ def showSceneGrasp(self, sceneId, camera = 'kinect', annId = 0, format = '6d', n - numGrasp: int of the displayed grasp number, grasps will be randomly sampled. - - coef_fric_thresh: float of the friction coefficient of grasps. + - coef_fric_thresh: float of the friction coefficient of grasps. ''' if format == '6d': geometries = [] @@ -774,7 +774,7 @@ def showSceneGrasp(self, sceneId, camera = 'kinect', annId = 0, format = '6d', n cv2.waitKey(0) cv2.destroyAllWindows() - def show6DPose(self, sceneIds, saveFolder='save_fig', show=False): + def show6DPose(self, sceneIds, saveFolder='save_fig', show=False, perObj=False): ''' **Input:** @@ -784,6 +784,8 @@ def show6DPose(self, sceneIds, saveFolder='save_fig', show=False): - show: bool of whether to show the image. + - perObj: bool, show grasps on each object + **Output:** - No output but to save the rendered image and maybe show the result. @@ -798,4 +800,4 @@ def show6DPose(self, sceneIds, saveFolder='save_fig', show=False): for scene_id in sceneIds: scene_name = 'scene_'+str(scene_id).zfill(4) vis6D(self.root, scene_name, 0, self.camera, - align_to_table=True, save_folder=saveFolder, show=show) + align_to_table=True, save_folder=saveFolder, show=show, per_obj=perObj) diff --git a/graspnetAPI/utils/rotation.py b/graspnetAPI/utils/rotation.py index 499a506..b465322 100644 --- a/graspnetAPI/utils/rotation.py +++ b/graspnetAPI/utils/rotation.py @@ -1,3 +1,7 @@ +""" Author: chenxi-wang + Transformation matrices from/to viewpoints and dexnet gripper params. +""" + import numpy as np from math import pi diff --git a/graspnetAPI/utils/utils.py b/graspnetAPI/utils/utils.py index 535d485..4a43921 100755 --- a/graspnetAPI/utils/utils.py +++ b/graspnetAPI/utils/utils.py @@ -8,6 +8,9 @@ from .xmlhandler import xmlReader class CameraInfo(): + ''' Author: chenxi-wang + Camera intrinsics for point cloud generation. + ''' def __init__(self, width, height, fx, fy, cx, cy, scale): self.width = width self.height = height @@ -49,6 +52,23 @@ def create_point_cloud_from_depth_image(depth, camera, organized=True): return cloud def generate_views(N, phi=(np.sqrt(5)-1)/2, center=np.zeros(3, dtype=np.float32), R=1): + ''' Author: chenxi-wang + View sampling on a sphere using Febonacci lattices. + + **Input:** + + - N: int, number of viewpoints. + + - phi: float, constant angle to sample views, usually 0.618. + + - center: numpy array of (3,), sphere center. + + - R: float, sphere radius. + + **Output:** + + - numpy array of (N, 3), coordinates of viewpoints. + ''' idxs = np.arange(N, dtype=np.float32) Z = (2 * idxs + 1) / N - 1 X = np.sqrt(1 - Z**2) * np.cos(2 * idxs * np.pi * phi) @@ -58,6 +78,27 @@ def generate_views(N, phi=(np.sqrt(5)-1)/2, center=np.zeros(3, dtype=np.float32) return views def generate_scene_model(dataset_root, scene_name, anno_idx, return_poses=False, align=False, camera='realsense'): + ''' + Author: chenxi-wang + + **Input:** + + - dataset_root: str, graspnet dataset root + + - scene_name: str, name of scene folder, e.g. scene_0000 + + - anno_idx: int, frame index from 0-255 + + - return_poses: bool, return object ids and 6D poses if set to True + + - align: bool, transform to table coordinates if set to True + + - camera: str, camera name (realsense or kinect) + + **Output:** + + - list of open3d.geometry.PointCloud. + ''' if align: camera_poses = np.load(os.path.join(dataset_root, 'scenes', scene_name, camera, 'camera_poses.npy')) camera_pose = camera_poses[anno_idx] @@ -92,6 +133,25 @@ def generate_scene_model(dataset_root, scene_name, anno_idx, return_poses=False, return model_list def generate_scene_pointcloud(dataset_root, scene_name, anno_idx, align=False, camera='kinect'): + ''' + Author: chenxi-wang + + **Input:** + + - dataset_root: str, graspnet dataset root + + - scene_name: str, name of scene folder, e.g. scene_0000 + + - anno_idx: int, frame index from 0-255 + + - align: bool, transform to table coordinates if set to True + + - camera: str, camera name (realsense or kinect) + + **Output:** + + - open3d.geometry.PointCloud. + ''' colors = np.array(Image.open(os.path.join(dataset_root, 'scenes', scene_name, camera, 'rgb', '%04d.png'%anno_idx)), dtype=np.float32) / 255.0 depths = np.array(Image.open(os.path.join(dataset_root, 'scenes', scene_name, camera, 'depth', '%04d.png'%anno_idx))) intrinsics = np.load(os.path.join(dataset_root, 'scenes', scene_name, camera, 'camK.npy')) @@ -126,6 +186,17 @@ def generate_scene_pointcloud(dataset_root, scene_name, anno_idx, align=False, c return cloud def rotation_matrix(rx, ry, rz): + ''' + Author: chenxi-wang + + **Input:** + + - rx/ry/rz: float, rotation angle along x/y/z-axis + + **Output:** + + - numpy array of (3, 3), rotation matrix. + ''' Rx = np.array([[1, 0, 0], [0, np.cos(rx), -np.sin(rx)], [0, np.sin(rx), np.cos(rx)]]) @@ -139,6 +210,19 @@ def rotation_matrix(rx, ry, rz): return R def transform_matrix(tx, ty, tz, rx, ry, rz): + ''' + Author: chenxi-wang + + **Input:** + + - tx/ty/tz: float, translation along x/y/z-axis + + - rx/ry/rz: float, rotation angle along x/y/z-axis + + **Output:** + + - numpy array of (4, 4), transformation matrix. + ''' trans = np.eye(4) trans[:3,3] = np.array([tx, ty, tz]) rot_x = np.array([[1, 0, 0], @@ -154,6 +238,19 @@ def transform_matrix(tx, ty, tz, rx, ry, rz): return trans def matrix_to_dexnet_params(matrix): + ''' + Author: chenxi-wang + + **Input:** + + - numpy array of shape (3, 3) of the rotation matrix. + + **Output:** + + - binormal: numpy array of shape (3,). + + - angle: float of the angle. + ''' approach = matrix[:, 0] binormal = matrix[:, 1] axis_y = binormal @@ -172,6 +269,19 @@ def matrix_to_dexnet_params(matrix): return binormal, angle def viewpoint_params_to_matrix(towards, angle): + ''' + Author: chenxi-wang + + **Input:** + + - towards: numpy array towards vector with shape (3,). + + - angle: float of in-plane rotation. + + **Output:** + + - numpy array of the rotation matrix with shape (3, 3). + ''' axis_x = towards axis_y = np.array([-axis_x[1], axis_x[0], 0]) if np.linalg.norm(axis_y) == 0: @@ -187,6 +297,19 @@ def viewpoint_params_to_matrix(towards, angle): return matrix def dexnet_params_to_matrix(binormal, angle): + ''' + Author: chenxi-wang + + **Input:** + + - binormal: numpy array of shape (3,). + + - angle: float of the angle. + + **Output:** + + - numpy array of shape (3, 3) of the rotation matrix. + ''' axis_y = binormal axis_x = np.array([axis_y[1], -axis_y[0], 0]) if np.linalg.norm(axis_x) == 0: @@ -202,12 +325,28 @@ def dexnet_params_to_matrix(binormal, angle): return matrix def transform_points(points, trans): + ''' + Author: chenxi-wang + + **Input:** + + - points: numpy array of (N,3), point cloud + + - trans: numpy array of (4,4), transformation matrix + + **Output:** + + - numpy array of (N,3), transformed points. + ''' ones = np.ones([points.shape[0],1], dtype=points.dtype) points_ = np.concatenate([points, ones], axis=-1) points_ = np.matmul(trans, points_.T).T return points_[:,:3] def get_model_grasps(datapath): + ''' Author: chenxi-wang + Load grasp labels from .npz files. + ''' label = np.load(datapath) points = label['points'] offsets = label['offsets'] @@ -216,6 +355,9 @@ def get_model_grasps(datapath): return points, offsets, scores, collision def parse_posevector(posevector): + ''' Author: chenxi-wang + Decode posevector to object id and transformation matrix. + ''' mat = np.zeros([4,4],dtype=np.float32) alpha, beta, gamma = posevector[4:7] alpha = alpha / 180.0 * np.pi @@ -228,6 +370,9 @@ def parse_posevector(posevector): return obj_idx, mat def create_mesh_box(width, height, depth, dx=0, dy=0, dz=0): + ''' Author: chenxi-wang + Create box instance with mesh representation. + ''' box = o3d.geometry.TriangleMesh() vertices = np.array([[0,0,0], [width,0,0], @@ -248,6 +393,21 @@ def create_mesh_box(width, height, depth, dx=0, dy=0, dz=0): return box def create_table_cloud(width, height, depth, dx=0, dy=0, dz=0, grid_size=0.01): + ''' + Author: chenxi-wang + + **Input:** + + - width/height/depth: float, table width/height/depth along x/z/y-axis in meters + + - dx/dy/dz: float, offset along x/y/z-axis in meters + + - grid_size: float, point distance along x/y/z-axis in meters + + **Output:** + + - open3d.geometry.PointCloud + ''' xmap = np.linspace(0, width, int(width/grid_size)) ymap = np.linspace(0, depth, int(depth/grid_size)) zmap = np.linspace(0, height, int(height/grid_size)) @@ -257,7 +417,6 @@ def create_table_cloud(width, height, depth, dx=0, dy=0, dz=0, grid_size=0.01): zmap += dz points = np.stack([xmap, ymap, zmap], axis=-1) points = points.reshape([-1, 3]) - # print('points',points.shape) cloud = o3d.geometry.PointCloud() cloud.points = o3d.utility.Vector3dVector(points) return cloud @@ -293,8 +452,21 @@ def plot_axis(R,center,length,grid_size = 0.01): def plot_gripper_pro_max(center, R, width, depth, score=1): ''' - center: target point - R: rotation matrix + Author: chenxi-wang + + **Input:** + + - center: numpy array of (3,), target point as gripper center + + - R: numpy array of (3,3), rotation matrix of gripper + + - width: float, gripper width + + - score: float, grasp quality score + + **Output:** + + - open3d.geometry.TriangleMesh ''' x, y, z = center height=0.004 diff --git a/graspnetAPI/utils/vis.py b/graspnetAPI/utils/vis.py index d730153..1e4157a 100644 --- a/graspnetAPI/utils/vis.py +++ b/graspnetAPI/utils/vis.py @@ -7,6 +7,21 @@ from .rotation import viewpoint_params_to_matrix, batch_viewpoint_params_to_matrix def create_table_cloud(width, height, depth, dx=0, dy=0, dz=0, grid_size=0.01): + ''' + Author: chenxi-wang + + **Input:** + + - width/height/depth: float, table width/height/depth along x/z/y-axis in meters + + - dx/dy/dz: float, offset along x/y/z-axis in meters + + - grid_size: float, point distance along x/y/z-axis in meters + + **Output:** + + - open3d.geometry.PointCloud + ''' xmap = np.linspace(0, width, int(width/grid_size)) ymap = np.linspace(0, depth, int(depth/grid_size)) zmap = np.linspace(0, height, int(height/grid_size)) @@ -43,7 +58,34 @@ def get_camera_parameters(camera='kinect'): param.intrinsic.set_intrinsics(1280,720,927.17,927.37,639.5,359.5) return param -def visAnno(dataset_root, scene_name, anno_idx, camera, num_grasp=10, th=0.3, align_to_table=True, max_width=0.08, save_folder='save_fig', show=False): +def visAnno(dataset_root, scene_name, anno_idx, camera, num_grasp=10, th=0.3, align_to_table=True, max_width=0.08, save_folder='save_fig', show=False, per_obj=False): + ''' + Author: chenxi-wang + + **Input:** + + - dataset_root: str, graspnet dataset root + + - scene_name: str, name of scene folder, e.g. scene_0000 + + - anno_idx: int, frame index from 0-255 + + - camera: str, camera name (realsense or kinect) + + - num_grasp: int, number of sampled grasps + + - th: float, threshold of friction coefficient + + - align_to_table: bool, transform to table coordinates if set to True + + - max_width: float, only visualize grasps with width<=max_width + + - save_folder: str, folder to save screen captures + + - show: bool, show visualization in open3d window if set to True + + - per_obj: bool, show grasps on each object + ''' model_list, obj_list, pose_list = generate_scene_model(dataset_root, scene_name, anno_idx, return_poses=True, align=align_to_table, camera=camera) point_cloud = generate_scene_pointcloud(dataset_root, scene_name, anno_idx, align=align_to_table, camera=camera) @@ -62,6 +104,7 @@ def visAnno(dataset_root, scene_name, anno_idx, camera, num_grasp=10, th=0.3, al param.extrinsic = np.linalg.inv(cam_pos).tolist() grippers = [] + vis.add_geometry(point_cloud) for i, (obj_idx, trans) in enumerate(zip(obj_list, pose_list)): sampled_points, offsets, scores, _ = get_model_grasps('%s/grasp_label/%03d_labels.npz'%(dataset_root, obj_idx)) collision = collision_label['arr_{}'.format(i)] @@ -106,32 +149,66 @@ def visAnno(dataset_root, scene_name, anno_idx, camera, num_grasp=10, th=0.3, al if cnt == num_grasp: break - vis.add_geometry(point_cloud) - for gripper in grippers: - vis.add_geometry(gripper) - ctr.convert_from_pinhole_camera_parameters(param) - vis.poll_events() - filename = os.path.join(save_folder, '{}_{}_pointcloud.png'.format(scene_name, camera)) - if not os.path.exists(save_folder): - os.mkdir(save_folder) - vis.capture_screen_image(filename, do_render=True) - if show: - o3d.visualization.draw_geometries([point_cloud, *grippers]) + if per_obj: + for gripper in grippers: + vis.add_geometry(gripper) + ctr.convert_from_pinhole_camera_parameters(param) + vis.poll_events() + filename = os.path.join(save_folder, '{}_{}_pointcloud_{}.png'.format(scene_name, camera, obj_idx)) + if not os.path.exists(save_folder): + os.mkdir(save_folder) + vis.capture_screen_image(filename, do_render=True) + if show: + o3d.visualization.draw_geometries([point_cloud, *grippers]) + + for gripper in grippers: + vis.remove_geometry(gripper) + grippers = [] + + if not per_obj: + for gripper in grippers: + vis.add_geometry(gripper) + ctr.convert_from_pinhole_camera_parameters(param) + vis.poll_events() + filename = os.path.join(save_folder, '{}_{}_pointcloud.png'.format(scene_name, camera)) + if not os.path.exists(save_folder): + os.mkdir(save_folder) + vis.capture_screen_image(filename, do_render=True) + if show: + o3d.visualization.draw_geometries([point_cloud, *grippers]) + + vis.remove_geometry(point_cloud) + vis.add_geometry(table) + for model in model_list: + vis.add_geometry(model) + ctr.convert_from_pinhole_camera_parameters(param) + vis.poll_events() + filename = os.path.join(save_folder, '{}_{}_model.png'.format(scene_name, camera)) + vis.capture_screen_image(filename, do_render=True) + if show: + o3d.visualization.draw_geometries([table, *model_list, *grippers]) + + +def vis6D(dataset_root, scene_name, anno_idx, camera, align_to_table=True, save_folder='save_fig', show=False, per_obj=False): + ''' + **Input:** + - dataset_root: str, graspnet dataset root - vis.remove_geometry(point_cloud) - vis.add_geometry(table) - for model in model_list: - vis.add_geometry(model) - ctr.convert_from_pinhole_camera_parameters(param) - vis.poll_events() - filename = os.path.join(save_folder, '{}_{}_model.png'.format(scene_name, camera)) - vis.capture_screen_image(filename, do_render=True) - if show: - o3d.visualization.draw_geometries([table, *model_list, *grippers]) + - scene_name: str, name of scene folder, e.g. scene_0000 + + - anno_idx: int, frame index from 0-255 + + - camera: str, camera name (realsense or kinect) + - align_to_table: bool, transform to table coordinates if set to True -def vis6D(dataset_root, scene_name, anno_idx, camera, align_to_table=True, save_folder='save_fig', show=False): + - save_folder: str, folder to save screen captures + + - show: bool, show visualization in open3d window if set to True + + - per_obj: bool, show pose of each object + ''' model_list, obj_list, pose_list = generate_scene_model(dataset_root, scene_name, anno_idx, return_poses=True, align=align_to_table, camera=camera) point_cloud = generate_scene_pointcloud(dataset_root, scene_name, anno_idx, align=align_to_table, camera=camera) point_cloud = point_cloud.voxel_down_sample(voxel_size=0.005) @@ -146,18 +223,46 @@ def vis6D(dataset_root, scene_name, anno_idx, camera, align_to_table=True, save_ param.extrinsic = np.linalg.inv(cam_pos).tolist() vis.add_geometry(point_cloud) - for model in model_list: - vis.add_geometry(model) - ctr.convert_from_pinhole_camera_parameters(param) - vis.poll_events() - filename = os.path.join(save_folder, '{}_{}_6d.png'.format(scene_name, camera)) - vis.capture_screen_image(filename, do_render=True) - if show: - o3d.visualization.draw_geometries([point_cloud, *model_list]) + if per_obj: + for i,model in zip(obj_list,model_list): + vis.add_geometry(model) + ctr.convert_from_pinhole_camera_parameters(param) + vis.poll_events() + filename = os.path.join(save_folder, '{}_{}_6d_{}.png'.format(scene_name, camera, i)) + vis.capture_screen_image(filename, do_render=True) + vis.remove_geometry(model) + if show: + o3d.visualization.draw_geometries([point_cloud, model]) + else: + for model in model_list: + vis.add_geometry(model) + ctr.convert_from_pinhole_camera_parameters(param) + vis.poll_events() + filename = os.path.join(save_folder, '{}_{}_6d.png'.format(scene_name, camera)) + vis.capture_screen_image(filename, do_render=True) + if show: + o3d.visualization.draw_geometries([point_cloud, *model_list]) def visObjGrasp(dataset_root, obj_idx, num_grasp=10, th=0.5, save_folder='save_fig', show=False): + ''' + Author: chenxi-wang + + **Input:** + + - dataset_root: str, graspnet dataset root + + - obj_idx: int, index of object model + + - num_grasp: int, number of sampled grasps + + - th: float, threshold of friction coefficient + + - save_folder: str, folder to save screen captures + + - show: bool, show visualization in open3d window if set to True + ''' plyfile = os.path.join(dataset_root, 'models', '%03d'%obj_idx, 'nontextured.ply') model = o3d.io.read_point_cloud(plyfile) From 4aba318cd34fcc3ee989def3418966c9c6406b3d Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Wed, 7 Apr 2021 20:58:19 +0800 Subject: [PATCH 31/61] fix minor bug --- graspnetAPI/utils/vis.py | 4 ---- 1 file changed, 4 deletions(-) diff --git a/graspnetAPI/utils/vis.py b/graspnetAPI/utils/vis.py index 1e4157a..cdf2e58 100644 --- a/graspnetAPI/utils/vis.py +++ b/graspnetAPI/utils/vis.py @@ -158,8 +158,6 @@ def visAnno(dataset_root, scene_name, anno_idx, camera, num_grasp=10, th=0.3, al if not os.path.exists(save_folder): os.mkdir(save_folder) vis.capture_screen_image(filename, do_render=True) - if show: - o3d.visualization.draw_geometries([point_cloud, *grippers]) for gripper in grippers: vis.remove_geometry(gripper) @@ -231,8 +229,6 @@ def vis6D(dataset_root, scene_name, anno_idx, camera, align_to_table=True, save_ filename = os.path.join(save_folder, '{}_{}_6d_{}.png'.format(scene_name, camera, i)) vis.capture_screen_image(filename, do_render=True) vis.remove_geometry(model) - if show: - o3d.visualization.draw_geometries([point_cloud, model]) else: for model in model_list: vis.add_geometry(model) From fc86b0eb1863fd7cc7edcc1eb7601fa330df9ab2 Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Wed, 7 Apr 2021 21:21:36 +0800 Subject: [PATCH 32/61] add width limitation in obj grasp viz --- graspnetAPI/graspnet.py | 6 ++++-- graspnetAPI/utils/vis.py | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index d6aa918..93e52b5 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -709,7 +709,7 @@ def loadData(self, ids=None, *extargs): scene_name = 'scene_'+str(sceneId).zfill(4) return (rgbPath, depthPath, segLabelPath, metaPath, rectLabelPath, scene_name,annId) - def showObjGrasp(self, objIds=[], numGrasp=10, th=0.5, saveFolder='save_fig', show=False): + def showObjGrasp(self, objIds=[], numGrasp=10, th=0.5, maxWidth=0.08, saveFolder='save_fig', show=False): ''' **Input:** @@ -719,6 +719,8 @@ def showObjGrasp(self, objIds=[], numGrasp=10, th=0.5, saveFolder='save_fig', sh - th: threshold of the coefficient of friction. + - maxWidth: float, only visualize grasps with width<=maxWidth + - saveFolder: string of the path to save the rendered image. - show: bool of whether to show the image. @@ -736,7 +738,7 @@ def showObjGrasp(self, objIds=[], numGrasp=10, th=0.5, saveFolder='save_fig', sh if not os.path.exists(saveFolder): os.mkdir(saveFolder) for obj_id in objIds: - visObjGrasp(self.root, obj_id, num_grasp=numGrasp,th=th, save_folder=saveFolder, show=show) + visObjGrasp(self.root, obj_id, num_grasp=numGrasp, th=th, max_width=maxWidth, save_folder=saveFolder, show=show) def showSceneGrasp(self, sceneId, camera = 'kinect', annId = 0, format = '6d', numGrasp = 20, show_object = True, coef_fric_thresh = 0.1): ''' diff --git a/graspnetAPI/utils/vis.py b/graspnetAPI/utils/vis.py index cdf2e58..62887f1 100644 --- a/graspnetAPI/utils/vis.py +++ b/graspnetAPI/utils/vis.py @@ -241,7 +241,7 @@ def vis6D(dataset_root, scene_name, anno_idx, camera, align_to_table=True, save_ -def visObjGrasp(dataset_root, obj_idx, num_grasp=10, th=0.5, save_folder='save_fig', show=False): +def visObjGrasp(dataset_root, obj_idx, num_grasp=10, th=0.5, max_width=0.08, save_folder='save_fig', show=False): ''' Author: chenxi-wang @@ -255,6 +255,8 @@ def visObjGrasp(dataset_root, obj_idx, num_grasp=10, th=0.5, save_folder='save_f - th: float, threshold of friction coefficient + - max_width: float, only visualize grasps with width<=max_width + - save_folder: str, folder to save screen captures - show: bool, show visualization in open3d window if set to True @@ -299,7 +301,7 @@ def visObjGrasp(dataset_root, obj_idx, num_grasp=10, th=0.5, save_folder='save_f for d in depth_inds: if flag: break angle, depth, width = offset[v, a, d] - if score[v, a, d] > th or score[v, a, d] < 0: + if score[v, a, d] > th or score[v, a, d] < 0 or width > max_width: continue R = viewpoint_params_to_matrix(-view, angle) t = target_point From 5cb08836d3a38b035b24c31cba6cc62f48ecae55 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 16:11:26 +0800 Subject: [PATCH 33/61] update to 1.2.9 --- docs/source/conf.py | 2 +- graspnetAPI/__init__.py | 2 +- setup.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index b850894..a7b1d9e 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.8' +release = '1.2.9' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 623d519..4ae40eb 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.8' +__version__ = '1.2.9' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/setup.py b/setup.py index 9198683..7cb90e9 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.8', + version='1.2.9', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From fac1108a1705bf3e4a9791d005c80ad34865ba40 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 16:26:42 +0800 Subject: [PATCH 34/61] update rtd python version --- .readthedocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index eed82cc..5826807 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -21,7 +21,7 @@ formats: # Optionally set the version of Python and requirements required to build your docs python: - version: 3.6 + version: 3.8 install: - requirements: docs/requirements.txt - method: pip From b15ce2ea9e97fc41a46e6920cf0e995917b519da Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 16:32:33 +0800 Subject: [PATCH 35/61] update rtd python version --- docs/requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index a8ce1e8..35d1c02 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,2 +1,3 @@ sphinx==3.0.3 -sphinx_rtd_theme \ No newline at end of file +sphinx_rtd_theme +open3d==0.8.0.0 \ No newline at end of file From 8e7c81c42ab26ad6e503952c06d477172e15d199 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 16:35:08 +0800 Subject: [PATCH 36/61] update rtd python version --- .readthedocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index 5826807..eed82cc 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -21,7 +21,7 @@ formats: # Optionally set the version of Python and requirements required to build your docs python: - version: 3.8 + version: 3.6 install: - requirements: docs/requirements.txt - method: pip From 8a920f581e8456bea18519c57fa9656b2af287ad Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 17:17:37 +0800 Subject: [PATCH 37/61] update rtd python version --- .readthedocs.yml | 3 ++- docs/requirements.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.readthedocs.yml b/.readthedocs.yml index eed82cc..9ab6142 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -12,7 +12,8 @@ sphinx: # Build documentation with MkDocs #mkdocs: # configuration: mkdocs.yml - +build: + image: stable # Optionally build your docs in additional formats such as PDF formats: - pdf diff --git a/docs/requirements.txt b/docs/requirements.txt index 35d1c02..c3a5492 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,3 @@ sphinx==3.0.3 sphinx_rtd_theme -open3d==0.8.0.0 \ No newline at end of file +open3d==0.11.0 \ No newline at end of file From 2f39a11d68cf513012248429802cd7a8717f0a4e Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 17:36:00 +0800 Subject: [PATCH 38/61] update doc --- docs/requirements.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index c3a5492..58f13d8 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,3 +1,4 @@ sphinx==3.0.3 sphinx_rtd_theme -open3d==0.11.0 \ No newline at end of file +open3d==0.11.0 +-e .. \ No newline at end of file From c644cf6ee97bc64cfd18a4746ae07550ab259973 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 17:37:34 +0800 Subject: [PATCH 39/61] update doc --- docs/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 58f13d8..235fc36 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,4 @@ sphinx==3.0.3 sphinx_rtd_theme open3d==0.11.0 --e .. \ No newline at end of file +-e . \ No newline at end of file From dd5d5cbbe566161e5f1bf7b4de0d7cee8bfedb21 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 17:40:21 +0800 Subject: [PATCH 40/61] update doc --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 7cb90e9..25d1699 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'numpy', 'scipy', 'transforms3d==0.3.1', - 'open3d>=0.8.0.0', + 'open3d==0.11.0', 'trimesh', 'tqdm', 'Pillow', From 8116ef91a2dc1a1e132ae2b3e4f5650df608b713 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 17:48:13 +0800 Subject: [PATCH 41/61] update doc --- docs/requirements.txt | 1 + setup.py | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index 235fc36..eefa438 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,4 +1,5 @@ sphinx==3.0.3 sphinx_rtd_theme open3d==0.11.0 +torch -e . \ No newline at end of file diff --git a/setup.py b/setup.py index 25d1699..a61bb2d 100644 --- a/setup.py +++ b/setup.py @@ -31,6 +31,7 @@ 'dill', 'h5py', 'sklearn', - 'grasp_nms' + 'grasp_nms', + 'torch', ] ) From d769be5be01767d2e0041b3b6388caef051238d7 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 18:43:23 +0800 Subject: [PATCH 42/61] update doc --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index a61bb2d..bc3d540 100644 --- a/setup.py +++ b/setup.py @@ -33,5 +33,6 @@ 'sklearn', 'grasp_nms', 'torch', + 'addict', ] ) From 4816275e0b374f98d62e339de6f138a267004343 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 15 Apr 2021 18:48:06 +0800 Subject: [PATCH 43/61] update doc --- setup.py | 1 + 1 file changed, 1 insertion(+) diff --git a/setup.py b/setup.py index bc3d540..52e063d 100644 --- a/setup.py +++ b/setup.py @@ -34,5 +34,6 @@ 'grasp_nms', 'torch', 'addict', + 'plyfile', ] ) From 335617e6aa966b1444a6a1675f648fd8b147515d Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 17 May 2021 10:39:21 +0800 Subject: [PATCH 44/61] update rect --- graspnetAPI/graspnet.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index 93e52b5..059b0d6 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -663,12 +663,12 @@ def loadGrasp(self, sceneId, annId=0, format = '6d', camera='kinect', grasp_labe # for rectangle grasp, collision labels and grasp labels are not necessray. ##################### OLD LABEL ################ ############### MODIFICATION NEEDED ############ - rect_grasp_label = np.load(os.path.join(self.root,'scenes','scene_%04d' % sceneId,camera,'rect','%04d.npy' % annId)) - mask = rect_grasp_label[:,5] >= (1.1 - fric_coef_thresh) - rect_grasp_label = rect_grasp_label[mask] - rect_grasp = RectGraspGroup() - rect_grasp.rect_grasp_group_array = copy.deepcopy(rect_grasp_label) - return rect_grasp + rect_grasps = RectGraspGroup(os.path.join(self.root,'scenes','scene_%04d' % sceneId,camera,'rect','%04d.npy' % annId)) + # mask = rect_grasp_label[:,5] >= (1.1 - fric_coef_thresh) + # rect_grasp_label = rect_grasp_label[mask] + # rect_grasp = RectGraspGroup() + # rect_grasp.rect_grasp_group_array = copy.deepcopy(rect_grasp_label) + return rect_grasps def loadData(self, ids=None, *extargs): ''' From 79aed05afdb079218ec3193c74d5a15a6032e3b2 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 17 May 2021 10:55:27 +0800 Subject: [PATCH 45/61] fix bugs --- graspnetAPI/__init__.py | 2 +- graspnetAPI/graspnet.py | 8 -------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 4ae40eb..82e1b08 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.9' +__version__ = '1.2.10' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index 059b0d6..ae8d7ed 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -658,16 +658,8 @@ def loadGrasp(self, sceneId, annId=0, format = '6d', camera='kinect', grasp_labe grasp_group.grasp_group_array = np.concatenate((grasp_group.grasp_group_array, obj_grasp_array)) return grasp_group else: - import copy # 'rect' - # for rectangle grasp, collision labels and grasp labels are not necessray. - ##################### OLD LABEL ################ - ############### MODIFICATION NEEDED ############ rect_grasps = RectGraspGroup(os.path.join(self.root,'scenes','scene_%04d' % sceneId,camera,'rect','%04d.npy' % annId)) - # mask = rect_grasp_label[:,5] >= (1.1 - fric_coef_thresh) - # rect_grasp_label = rect_grasp_label[mask] - # rect_grasp = RectGraspGroup() - # rect_grasp.rect_grasp_group_array = copy.deepcopy(rect_grasp_label) return rect_grasps def loadData(self, ids=None, *extargs): From 467e793e6d2a768abedee1037644490dba75c940 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Mon, 17 May 2021 10:55:42 +0800 Subject: [PATCH 46/61] fix bugs --- docs/source/conf.py | 2 +- setup.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index a7b1d9e..6dcad84 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.9' +release = '1.2.10' # -- General configuration --------------------------------------------------- diff --git a/setup.py b/setup.py index 7cb90e9..bd44e3a 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.9', + version='1.2.10', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From b296a42902b6f9e43e2f72926b53908e1a281fe2 Mon Sep 17 00:00:00 2001 From: Fang-Haoshu <510641426@qq.com> Date: Sat, 22 May 2021 23:05:21 +0800 Subject: [PATCH 47/61] small updates --- graspnetAPI/grasp.py | 10 +++++++--- graspnetAPI/utils/utils.py | 12 ++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/graspnetAPI/grasp.py b/graspnetAPI/grasp.py index 25f806f..0e0fb58 100644 --- a/graspnetAPI/grasp.py +++ b/graspnetAPI/grasp.py @@ -190,13 +190,17 @@ def transform(self, T): self.rotation_matrix = np.dot(rotation, self.rotation_matrix) return self - def to_open3d_geometry(self): + def to_open3d_geometry(self, color=None): ''' + **Input:** + + - color: optional, tuple of shape (3) denotes (r, g, b), e.g., (1,0,0) for red + **Ouput:** - list of open3d.geometry.Geometry of the gripper. ''' - return plot_gripper_pro_max(self.translation, self.rotation_matrix, self.width, self.depth, score = self.score) + return plot_gripper_pro_max(self.translation, self.rotation_matrix, self.width, self.depth, score = self.score, color = color) class GraspGroup(): def __init__(self, *args): @@ -384,7 +388,7 @@ def object_ids(self): - numpy array of shape (-1, ) of the object ids. ''' - return self.grasp_group_array[:,16].astype(np.int32) + return self.grasp_group_array[:,16] @object_ids.setter def object_ids(self, object_ids): diff --git a/graspnetAPI/utils/utils.py b/graspnetAPI/utils/utils.py index 4a43921..fae9f77 100755 --- a/graspnetAPI/utils/utils.py +++ b/graspnetAPI/utils/utils.py @@ -450,7 +450,7 @@ def plot_axis(R,center,length,grid_size = 0.01): cloud.points = o3d.utility.Vector3dVector(p) return cloud -def plot_gripper_pro_max(center, R, width, depth, score=1): +def plot_gripper_pro_max(center, R, width, depth, score=1, color=None): ''' Author: chenxi-wang @@ -474,9 +474,13 @@ def plot_gripper_pro_max(center, R, width, depth, score=1): tail_length = 0.04 depth_base = 0.02 - color_r = score # red for high score - color_b = 1 - score # blue for low score - color_g = 0 + if color is not None: + color_r, color_g, color_b = color + else: + color_r = score # red for high score + color_g = 0 + color_b = 1 - score # blue for low score + left = create_mesh_box(depth+depth_base+finger_width, finger_width, height) right = create_mesh_box(depth+depth_base+finger_width, finger_width, height) bottom = create_mesh_box(finger_width, width, height) From b77ae58c6b63ecd08a381f45a9569d2467ba73f2 Mon Sep 17 00:00:00 2001 From: chenxi-wang <295819109@qq.com> Date: Tue, 16 Nov 2021 14:49:29 +0800 Subject: [PATCH 48/61] minor update --- graspnetAPI/utils/rotation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graspnetAPI/utils/rotation.py b/graspnetAPI/utils/rotation.py index b465322..8e69db9 100644 --- a/graspnetAPI/utils/rotation.py +++ b/graspnetAPI/utils/rotation.py @@ -55,7 +55,7 @@ def matrix_to_dexnet_params(matrix): R = np.c_[axis_x, np.c_[axis_y, axis_z]] approach = R.T.dot(approach) cos_t, sin_t = approach[0], -approach[2] - angle = np.arccos(cos_t) + angle = np.arccos(max(min(cos_t,1),-1)) if sin_t < 0: angle = pi * 2 - angle return binormal, angle @@ -139,4 +139,4 @@ def dexnet_params_to_matrix(binormal, angle): [-np.sin(angle), 0, np.cos(angle)]]) R2 = np.c_[axis_x, np.c_[axis_y, axis_z]] matrix = R2.dot(R1) - return matrix \ No newline at end of file + return matrix From 9021d1a5cbd22ff6e49c0cf12056f8eab0f193a4 Mon Sep 17 00:00:00 2001 From: Gou Minghao Date: Sun, 26 Dec 2021 09:57:20 +0800 Subject: [PATCH 49/61] roll back setup.py --- setup.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/setup.py b/setup.py index e9edb01..bd44e3a 100644 --- a/setup.py +++ b/setup.py @@ -15,7 +15,7 @@ 'numpy', 'scipy', 'transforms3d==0.3.1', - 'open3d==0.11.0', + 'open3d>=0.8.0.0', 'trimesh', 'tqdm', 'Pillow', @@ -31,9 +31,6 @@ 'dill', 'h5py', 'sklearn', - 'grasp_nms', - 'torch', - 'addict', - 'plyfile', + 'grasp_nms' ] ) From e8b9c580cf8357fdde97c0c29d3560dfb97cb55b Mon Sep 17 00:00:00 2001 From: Gou Minghao Date: Sun, 26 Dec 2021 09:58:13 +0800 Subject: [PATCH 50/61] roll back --- docs/requirements.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/requirements.txt b/docs/requirements.txt index eefa438..9978f9a 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1,5 +1,3 @@ sphinx==3.0.3 sphinx_rtd_theme open3d==0.11.0 -torch --e . \ No newline at end of file From a5aca3cd138930a64bb3d6277ec119bc33faaccc Mon Sep 17 00:00:00 2001 From: qinr <37435944+qinr@users.noreply.github.com> Date: Wed, 26 Jan 2022 20:12:03 +0800 Subject: [PATCH 51/61] modify batch_get_key_points (#32) Co-authored-by: qinr --- graspnetAPI/grasp.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/graspnetAPI/grasp.py b/graspnetAPI/grasp.py index f9ad698..c385443 100644 --- a/graspnetAPI/grasp.py +++ b/graspnetAPI/grasp.py @@ -990,7 +990,8 @@ def batch_get_key_points(self): norm_open_point_vector = np.linalg.norm(open_point_vector, axis = 1).reshape(-1, 1) unit_open_point_vector = open_point_vector / np.hstack((norm_open_point_vector, norm_open_point_vector)) # (-1, 2) counter_clock_wise_rotation_matrix = np.array([[0,-1], [1, 0]]) - upper_points = np.dot(counter_clock_wise_rotation_matrix, unit_open_point_vector.reshape(-1, 2, 1)).reshape(-1, 2) * np.hstack([heights, heights]) / 2 + centers # (-1, 2) + # upper_points = np.dot(counter_clock_wise_rotation_matrix, unit_open_point_vector.reshape(-1, 2, 1)).reshape(-1, 2) * np.hstack([heights, heights]) / 2 + centers # (-1, 2) + upper_points = np.einsum('ij,njk->nik', counter_clock_wise_rotation_matrix, unit_open_point_vector.reshape(-1, 2, 1)).reshape(-1, 2) * np.hstack([heights, heights]) / 2 + centers # (-1, 2) return centers, open_points, upper_points def to_grasp_group(self, camera, depths, depth_method = batch_center_depth): From d073733bca729456f40544f032ad8539b56af0fe Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Fri, 25 Mar 2022 18:12:49 +0800 Subject: [PATCH 52/61] Add files via upload --- docs/source/_static/rect_grasp_definition.png | Bin 0 -> 315632 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/source/_static/rect_grasp_definition.png diff --git a/docs/source/_static/rect_grasp_definition.png b/docs/source/_static/rect_grasp_definition.png new file mode 100644 index 0000000000000000000000000000000000000000..c14d7bc44c0f8ad83169686b1e1e474068b97b01 GIT binary patch literal 315632 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
vPezqC; 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≈!QU3FP@#`S7$uTVI5UpAsy|#_$aQl4T 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πQ5?2jYLZp1)@^<#I-_Io*-Thy&P8wSC<|y z;#XxIlhrC8+w-bW{}JrXDuvCwPxnaSRbbb;yhZHXuIfXO&QATwGS{b()c2Pa-{TJf zSf~7HGFok$@^sIY1K)KPiTMsg>VzS3Y{Ktb0jZPkM~dm30#)bkN$PF-;^tju!5A$` ze#*QOtUZ^;D@KPxG-QX&V^+xJ^1+gB9%Fy`C)Xp2X$a*&vTM4%tLd?{c*k*moM=6y zx-y?gn*(D+Da{&J1|CS|u$ z+AoRwlwf>&`ET8?8-YxS+9*4L9CKLf2HhAnmI!NY_eI5Vt~{OEep0mysCd35RF6M7 z1?XwpPY!Hhfag6=p(rzce09sJKH#20#PRm->^yapD^H5UtC7!-EfsT+TXDYYcD=M| zGKfC@f|cw)=~u&{!VjvkaxfI#=rTwu9yav8JHK+OussC8k79k9Gn8tMKhB&0caxtS zhUOfkzk3N5F<=~eW#odUfp8o}EFSG}oon6ihPJVeoBc$w+CEFp?TnsEO>uldm3m8r zA}=Q{mza`6Y55g|K$Y+gxPD-O6lrKU*x}N(SuTzz13EeLWpnQ96>^@s)lWRxC_TC; z5;8aBCK5&5Q%B>di+59YLAzUpG%dsR(ESa|Q64Gko%rxB*v&Z^3=(VVa!EjY@hi#y zLfXbHeb$zKzYb=FHiw}c|LaVx*eY?}eAXd#Y__X5?j^b%qfYwzf)@j{7NP zKbXv1+L*q4Rz*jfZn0jx95b{?v)Fn{iq!+ySKH5qqL$u&UQ^ffN@>sqmF`8tW1~vb zLtn^_@2dgK2LWr-Uc77N|V^r0CL2t7Wi9|&wZ{r^w|$@M>fRsYAnX7SQr^ISL~R* zqDQuY2^UpyaWUN<+X2xC8VR~^yybWS1fpwFp9VhqC05%$C9pC$zc$<0^@e~F5Gb|^ zdK|AVj*oDgNPn=Sr#xK{xC2(x@vnAQOO2RxTFA~%{!kgGNk?Q3%W2MUGqkirsz4mX zhCgo$kGh5i2vEUYM7`ag&7agqXi9aV%x(Hm`(kTrYd#!Bq=`hv5B@BS+UY*XfriC$ zZgWs#{d`vC!SYJl=2@ny**<^?$OFrs&L2;27V1aHX)Sa3Zsy7&k{1v*&6wm)hHpMZiZYtBf;RUUva zAQm2+Bz>ShohBp|VQRd;Ua#;2PD51c-jc3z=FrD=Md3%=J}}Vs_Ka6_zh`ZT%weiF zr?m^AJaL`LD;oA>*{G05HaoD3XJ|~g*san{H`Jk5vrr!|+Q(z>;Aag7tNaZ#Nl!m! zZr%@L#MUik=t?R0-LbJMu;-{RUiMT5&XJ{~RewJZ-fLyC_f>ms6*JRp-k*_Fg>v^! zK3BEGr{N-~Ld7ONB`L{S=eLwYtW|a65^BgK#|0#d^hVz9e>J2N>PV4oo&LD5oseu2 z%~4?e&SoL$4IjEqXMR-)oM{euv*cC9;e;1uUOLt_}-W$Q6-FRN4 zT}A3%A@Rxrn<$PW|V1|KT->+#dU$DY8XlSRWxe$vt{l5MHRynGJ(b-Zv9pf zwtK~1bFFVDfx|m=3{p2o+!a|WFOxw_qHU3>C?6-ER7F~@ZOU1=l zu?CED_3FzADgEunZQMb=HG_uG!IFSO5=-lQ2kb@oqx_OB%!k3(cxt{D}}5baO~ zW*5oeZ=#?56$rMF#IZIM{&*`%ugn%VKb~yRibct+K;|RTTSSMHwwB=9?iV0o*NrEg z*SX;jLHkidBw&@`Q71+Rh2Nmr0GKMk2L&#&~mrZ)UNlT+*x!l)@FHNb&+VF!Vpw-HxXc4w+o$Nzflo))&m}iA`DsN?B4y4?H1Mj)qq6plENMGW)i2a~AfN(|RF52~y92^lxw06fDAPVK_{=*DoxraxKzulSr~ z2)sGM#jgT?Muf(DG2VB05O3bS*^ia}P1#5^dX-t8*Ag4no$^lZGf_gAFb<}M?H{IQ zPnF4Qi;`Yp9E{@PqR)T}C6bv@Y)pgtav1ZXR8gm_gs~_@@~vu#xem4}1dX1CSP4YA zgOmfmAD7bZ|MTiR6M;w(g6A0{_}hq=dKONRgKuKzVi}iZ&Q(QZn8LB&k$H{K43@mg3XD*(j$b%vB;r<`w?!n5NRmRtVSv$!f!I}W&}`Gsvx|aU zDiu=^RFD-h3>IX3e#odb;W*9`n>xvd)EFVbV+o4WsgwwDK6e+|ucip>k_m{O+<*rt-){UB zS9f-o&!E3;iA=oo>|~vp)i}Aqo#Xsqz#rGt1R*paC(i3>AK+p=oFjU< zB3V)j&)%4}I;nB4@i^kUMR3A-ccd`$#hY&+747VAh;0%{t+%=LMiaFc%^#za%&aw> zn@o@SjJRPhr@R+y>a%!X34%wKjERc&Ab*E?MDzFR{-Z@y8?%dV05A_&{P3OqJm8P> ztRW#a`nB7l{03d-O}V7EOT2s!d)qsu6yKL7boN&YQ%T(x;u`>Rl@+<=7_d8h0!+3# z6|x^n589S+#sdQVU{#IMV>bd0j@UJdROw$7C-QrFz(6gn*QTHw>^WdOSK6wfb^BVi zis@q>l+I>S&50*EZds11vUOcW010O27nd_V8PlDYN^2AMrql5`T@aYbDDr-`z#kcs zva+fq;^S|A5?atz6w|z?8w>+`LUm#<2eZ9{**=T6F113KDi8m6ML*#gAkECeYWHje zLRc-VOB09yX(CVi<+OnPnIn)-mk1E}B}}9;rh$nBn%!o)m~is_ln38W+Ne88Lf_@G zEw{-Z@}<v#cTLe|jl$|&tF79H)8@7dKZ{%m1w_F}? zifB_`F1E+h6eLSIutNqNc-#kI$Z}LFij3z~RAZXdX_LUoXv#=&I5SLIbXyE*rSTTD(7HLvEAgNcnl&uu6J6qohHG z-SAU-Tgx26er2KpFYCUnI`)bxs6@c#577d_voKN)Bd{H@kZl=hqH-~1qrpSlDXHb% z-hooFpAAaP^-E~0dEhh3#QkbGla>lXzNyT5FT6XB74q-obp1_sF@pE+&Gj59CkT5s z)9m*lLFcReXMO6yA!47{uUpBDHZ)0P$q8>Ys8A)amzyk_DB;Wb_e;DC>SZkV$>l*b zIt+7fHOm*Q(?2;Q=-~YN%;D^eELd2cANkkTu@h%@ngRJLaY++wo{Tk{1|$!*%$spr zAE*0AcVn{8X)=5$cB~Q~^X%W_Ck?5?d#Jia&R&auJytu(l72sF6rjpi+Wn<%_cw`P zp(TDQygdrJiL~=`c5_pQ2N#HMM^~R!j;0d8R!v1_ILoEuZopH&o#jzo*ui-2p5Yud-^`LL#}8NOi_!5XOvSS|-WxH>;^%p&EX?F|5r#RS18QL)}>kI$d*FxVr3aGvHE{dcDFfcrQ)E!WTz zXF?tKT>3GtH#E@=YVIUl#)eFR@TywqG%sx>771113>gbhP$>vMl=`-uxAy|`O5$;3 zM%pk<6C`+XTf~};C`&q>O4fm7JeNb3*0G|os(+|Jl6U1;^RfZM1e=KVMiFz?dr8ty zgx&cQf$Y|fA*@Td3*}E|GM%F2o~9{+cNWEysMo2);Wl2t6gDZY-%7V2zX%s$K()v| z_*xb5L4efh1n-?8A0KtpaHZLV96H36<(V z9t%`ND50Cv<0gecn~B;u>!4w9R{od!qG>N`63?=XGMcFf>N+4DksnY|A7)18rsqBj zqo~RWS^H?{)KS!A70M{HhFOXFu(_O+cF9Z($gO&uYLF<(lwg67VL4#4VUDQc%8-us zgQlcaro6dY27>+WTv!llfhw*7=xd9#INYkOtb|JBSTc{pjMWTgJ6Nxw3(o%3|AgHB zdyJTuN3Mnq#w}^jUrdRuPbgxrFX#aSY*g`OgSLn2cNGg4W3q~Qve0-c*B-iNwIatk zyA}Ux)`t0q=OQ)l5^xxuWQ8R|Wu&aG7p^e~&KJr9Ztv_Dd5y`BbPsJ01ChYlhd#uq zX1P!awTcNnU!tp^`_9GWORgVtHz}8Kd(WEBJT8PI}qwC?L5RR;viG7b+V_Uh&CWd5s*kV99bYy*ndqS6qn#{8)Q4J@F)_p zOd@FG+|60GJuy7t>2X;`*BPg*aDH#?XRSlzwL2|5^xa$JR-xAy3ZZZNdr%;(DPQOl zT8S~kg?y09{o@Em1j$4DE(Mg@1+b8T=Fv4k3uqRvBukN5Q9^1Y-=4nvl76>#3d|>h zFE-(^AnrAOf%9Dwt2|CM$6{Wvv#r;Zc5g0=%}lyMC$)u0q^B0IqwcUB=IH@Bn>V&553Wm4JImVO-)+<+G4WDZY)gr zUxw5Kx*D^i<@IRX$I9_Vt#2Oz`^hQ>#3R@TRk84w8H7*I6x;YnNKkpM5UQ_Ur`fkK z0Gmz(Y#Oz!H!#LMjEJqJPBt-rv0(VS@it^{4EhXgZZZfAP zCdE?MwNztZm&iHD_gc7u;@jBRC%|`aZe36bp`s>n!fDW=~Ga=ysh4$6$q|r ziv*%?xRslek47+7wQk))`gv7!X7x7c=W1-9MibkhTRxFXUH2!E-hd=^a${~MzhT$x z(htApUU>i2bZj)a2TOk`4Wv7572cU9ez5q1*7$ZlC5C(SjiJD3s89jrH2AZ%wS7cM z2&-n=#a!M?@VqgKb*3ZcjgWkgd?Gvnr{@NY2WEB5spa4ujpx#7DHtHra8|B=|NgF6 zXBdys91+XIw^R7sblyK91yaM`oJiNFX1L#_2+Vu)@Y!>K^DF=; zGz^0&I78sSN@12DNMt*s`e7&lWG1(ttR4bZBoqmt?+QyV-(YaC*bm7pp_pV;$fR{W zRXr~d==aSxAi9Glbf`BQBg5jiFDL3+%Y-v$7zV&$AYmKAYW2g?AX68ZT5Bt*qDG(= zySN7rqDIi*M#*-vnm;;c`~Dqs0hFk^*~ux%<6O)7A3Kg361!8Oa@iu*)IHsY;v2Kg zzXIi`X8_C)4tUSz4+mrb{QD311Bc?@V_9oo)*|vFd;MvE$?MmTmL7nmCEM|%x;zjK zvy%bXlW;BR%cFAnHJMwy-3p0baXf1!nlIhAmhFB#5omwye%t{Np=JO4=?l=_QuWWH zrui6`KVG|XU!C*+$p;H!oI`ZO8Oe$?-d}2g`8?fDkLNV>)tPCJ`)2VJWcja3q0+Jk z>_TSJ6^ZN58`c-S$cPuNZuMpn)Y$4$9iP=%Xg_L{U{8;@QR1i(gTY}`C+FDX6Z%K_ zdoG~wjTd36Q6WwQXp zXaj0w@_Te>#d>PEeAF#G2*nZydwQYVA#OGfsw_?OfrX%}aKpn|LTtDze+&UoNIl+Y zy7EyRz}f22Kob<8e#AEG(F$mcT5dPLBYuqN3_!eX4H z|7O&*F<$N4sTalrtVAg-|YTNjxF#Om2gl@0so~?(2pU_T(9bxDw#ArWP zV~)Z@U+@Sj#|fO3)B3Na18F$@zL!WOFhjYqmxVR%Wj|%6#H{Ev_>Pn}Y(vZ&p817} zD1{XxXg(t5Q-O@TOz|kC8iL;B{I43VzX7dUF`faT47(is$6`3#SM_G7M1;;d;wq0+ zn8F0-$8h!Pmf|MK$o`6l((0_AZCe}=db%j4lfAtqvX9ywvFAXM>wPZvASDyn$-Rsu zOj34Id_}9rGDcFGe=}2tc$7%#F}12Yuqd5JkuJ<)xp$!I;F~BDEn{PPlaVj+La>W4 zT;>!J0#85MB};zH1yyc`bb494?B*N+u?-e~=9)dC3=P{Csms{Ix_5`-=Qda!EUzwl z9a9}xc#hFXDXh^io*Oo9J33x*OzBS_q>e-nJ6q=+`%gk6&QGTn2>rois&VR^}n8x z>nsSUABU<5CY3=VyVxjFuc~%t8lpA(p5}G8WwPQOODg!^;pp_07;>@gHeT(g9Q<+$*eC-5bYOt$ z=wUZZqA_1AFSBBCXm2(em;W!dv#4lcAygO7ZspN*Jc;1~NNpPjyna}L@Vo*@T#MH- zK^`-p)+2Y>`6^R(7NnXluE}fm1U;8|KuH2^%p!I|96fx%h^h&3IzP}LP7sBP#NTGp zb)wT$ zzl7cUxzJuZcYE}9P(Q<(gj(pq=!f6&TlCHZeDW}>tZ&O% zhXl>hCJIV*8!;_7t4OHoVl?IZRnXhySPPQ`XdwoYEd)Mo&enQ0qeKcX+fMs5 z?eR-7*Bp0A`=a)hfzYyT^H`p`26B>eX>m!zu)fm5K}WM-KjB0v@Df3W1|`H)D6RV;tXtMv)E+|zBV-RCZM7p*mIJsd@*Q#5(H-# za^G(}&<#K^-ng$pUAG6~58uNFlmA&hvFliWVTSpou)}Ndlcm0S>_AL9vDVr`TBW5c zaPPUS_1T!WwMd&|^2Xt>{SFZZby~8F8qBY?^oQe+PYI2ba~!nh#7qMpI%KEtQ2ukWliH5&{!9i{5d5E^31ER?l- z()hqgCTB&&dr!Ub9@ahLaUF_u%S2ypv;!r%8TtCX1JCq?M9{v^C$^2bn{Vs7a%T-_ zocq|mOKF+@zsq?OuR9;D%gvb!3@e>k%$&gL$s&N$KS?AwE@#PIFVZ_(mB1$w(Lx&i zThdX{`AtX19-`~~HT-`^YWp|)DYuV7F|3u4+?N^hk)G#=Ou+Wx&jsL!Ywc&=)N{xT zj5uTebN>MZ^++06mUb5Y0or4(bsXLnDw&-5@9UQFeTC!AD6?;`zIW{2k%BDp zIyyUl0=C-uN6owB|M6Bp^*5>O)Tam+GTrGyk^;uFL%{B^;McKMDBqYG6*5(ZTM^9^ zodhy(lQn#0VQLk;EPXl~;ba({OcCPN(Q$wANKg8bQ%OS*WoDO$Pkb}lQC#qszm-if`ct$3?3WcGi}tqB5Z?Gtxxj=)Sp)3P z^LxqY_6Udr@X8Rg3^WP0t`k%O7JCdUUQ5~(Ib1p)sM0Tyh!*>nt(74qmlP2d8U@e_c2J8FVE2 zXzBz@7HHb)Qc^X$G29;=GF&_%_l#YsBkwOZD`*nUifNu`F$>B6ZBS>Xu2;`CQ)|{$ z5(`J}$Hv0bR+MSb71ouON8Ka>AWjV0Kf;^mvJX@M##y*2!}EbZU=MS^x!1r1!t%l>*iYGTxYb9|PH=sY^QP5}>g=nj~UP(z_0^%&x&@ zuLCnj-4`iFbVbK1YsJ^~>viZn*yY~`n{`{oNV4q>D$0C8!bFclnSA*3py%kaDkdjR8tDO}7 z{k*&RuJ>RtX)_nVgSx#7N<$PDzF2vcDOiJg2khPI?gK(;<4nk|O{`T5O zn2Z=~LGzb&v_vhnDJL>iiDWAsIM;$`{fM&@zw0{)ossBXfPIz8sr}l2=rD^B0nHuX z);ao)>i#dl|8P)9el!n7$iw1FImFW+UU6 zsT@CE@zvyn!umg?)4^sBHJk5XXRiHH>MgcJ@RwOp2@A>? z%vy%PR)RRo@gEU|{l8pC+EHEPBz%|%tbR=A3eKnTwa`mrjW(u!OG4^RaNvKsd2@jk zd$#wd@_Q0el3c9io740gB=mlS5e^eg>0=bbE>}tCAC@XeXUgM)9j!)p^ygDVrG;wr z??1-5oveeF3@us8D=Oj~d+z^4=_2_h@20_-f#!`&4ZOcda{W7TgzSg7T#SuO0FE+j z00a34ZhE{tg=oNExL~c*lf6|8^FF^=%QkRxt^Z)95Bl~M1G?O>$sBDrdP9ZNFvk$K za!65J;FN;gkBnPcYgyI6w#lrALiD|aqz@84qo}`4RWrin!x!X?Tcjg67y&n!V%|)& zEFPQ)PF#yaniNG4b0VjN40Gm!YZN&{c-h}^If@Xw0Ue}LBHm#k6BTG+lbO95QL%B9 z-7F-*fsQb)32Ge?C?QnxGs6(0DY$HS>fp16hwDe%5DozwvW|@kGY%ES*%C2jP~

t}Kiz#DfF)iJ`N_vR6 zA94ot$y_@>e(uReg;?!io=|;d`F(ubzkJP!GTrYZ*F@1D<=^rxNv8>KJ&~RnFL>FJ1SQy- z1^%FXLK}x`j}&e$D|4E5nazdMIG6_;?Z-jA>lYNtQwYePYoE^Ul~pe-#p(Qcbo`(0 z2#8+$ZrNW3D0Vtx{o_zJ6yx?2EyEU&iax6_#|In;?S~=EGoB7`G!+L~X?cUCbMqvd z?Lz?D=k!S7XA8<|u~@+hW;<|A{ zcAb)a`~1bdYZRzP^RizShc%|dtTN0O(ngB`@G z{(U=)2$V@MaS5~t`ADD`02@ij`-p8eTz}D6RHApU#rb~mBGQJDtJVu?z}NGcQFL1L z&nI=rX6C3MZWX<)=Zwxu1!=#H(c2nFuNgC6=Ih8WvfnlLXZGoiG;p|xnuOqU`qGfD zV=%E+NnWp3-*Acvz$qL!D8puPn><#-&(RkZNpo$!!L}~YV!=Mb;uNDqXVWbP_*13P zoIYMIV;(Y@qxsMIx0yf&r&3JS=3mm6H!K0*2Dr2E5k+gL2;=S4WEm zYi?9B+m~$iv+zuG`LQ?5mY%*pT|~9Ed79#tkzXQexDno^3O+Ic9YF1#i+zyye?JRx z2VU3&^b|~>Of85+?DQMVEwYmym(W&-%S!iTD-6=s2p$)|`Y4`sZaV<+-j0f&DykKC z9t8bl=Ep+1+9a9SPH9LSJLBzup!){s_|N2N`Gd8$&*B+k9`;x)ftJsB2AD~;tp%08 zkLGB{u_T5P%Bm9@ek2ufaH#@RSp#RDbaj#h3VP+#1S^%4ZxxYX)P*upUikt!J-Bex z!}=F)6|?JDsW%S;Z%^7LZHB@sJQj?8cHBf=l)kC_&TA1SUd#PYXSKop{ZiNIACy&r z=-(nu!~32SejNOVTM^bl9)Fh)yUGLGj4^-X%onvo#*LOl%93Q3A_#^Iie%$I{7vJw)$ zYEw}bZ?Puaaj>$9+(dNV_w$ygY17iitA<-2%F;KBC|JTc- zlS1Jbj^A}sFi+xq^lB(jny++`L7+AfogXnnko%YgWzTab`RPJAlcWKxX>CrrqeQ~m z%EnHrNHGz?nE-^*)B(@ozYTq}LpVur_j%~RED_@j0AM5lS8qDt1!fZt0AP7nx|~k_ zZ7HyI5Yuz)?ixVW@3N&x^9j;mXqvYiVoK2zlSsVP<+Ba4OIJ2y6GGBuCd@V%zh;UUhV-=9>jb6RGfSbAR*+Og6(1 z&}cLa7`9|p-^Mr5G@`5#*jQwvj-OXanhvSfn128*{jw=YYspkEQGr%1+;_bDBxF<7 zcFd7xjM^?03s6?`HDdJX>ncPKgZ_?;7WX*0l?io_!6S4Pv;BI-e89Em&AVDF`g4&B zW#)NnZSsxfR;uGK<_#tMGFh znAJoOQL4m-=XYmDgo!37G!m*pT}s0}x7ohWCp_$zvFYsgP=#dSDG@MVp){7RXbhKh$Q-Y~JSs0H_^m;?u7A20N+va`Q= z{00>b9 zwUT}3l1b>L&OBog1UsjnkxR3|`p@4phRG>HSkpq%@>l5=PL26k+kWl(C5>g)hRFu` zi2%Gu`A~EDBDLBWRTccjM+QIcO1F|ufuu$60ncM-$f1U2ABeN;SU8`#Kp5xxKgz-= z4*+aK!h)Kaubr(zF1Carq}O8UKYht!9z*VVx4n!9c9e^0HK~DC9jTY&{~%PTo`BFy zR~5jKn~(pk3E1^ky2sM;N-W!L%oZbV1J_tj@k?Naqd>2GR`ov~f^5p8#Vj3juImk< z*M6~9bL=5iX|{X8QTr}AqjGr^zEr6T(^Gcjo<73sdtcyM4lo&pFagE^z&yYJ+Vh%d zmDB&jZ}3H7l>XleN^Yd1i@;9?r zs}Qrgwh5y20D*-2jL%a37Heb7f2HOp?ZW|1f2=7|4Pu0%dt3aFd;K6ZLsQgHplhK~ zN~^!1BPZb2_cgbD(UhWM;kEIW;w*($%a844t;3ynzofhM(k!}PmV?-uv+%1VWq#CK z?EcXi!lm3cAHOXrl@l-ZBMkE`7ixeSD?zoB!K4TGVed#h4l5MwY$#CXkoyE)IK&=+6v zA>Fv|{OG@D&(?d*0Y}&9#pjQg6ZR$bHN+6UoXxF8GVPg$Hy4l0(vXk1{|J3}f@8V; zTZ(3?lV1@vO&iBZOhcPnM{X%ZsF2*?X6%i%oU0x?BLDa7C?GgG`!4A~DA zhl`dK1Aw+HV&?(WZ$8Co2aW-}`6FSTYjd^4fP59u#S5@PuA)v9WM zIpyK=CTYk;W*{aTTariAXe;KI3emMUO!EAJIy{f6-(5hN;9rTI6hZE7-Lhu=$U7WJ z7oGYI9yEtW-C?dmc9#}p1)sA(el3NOLJ+EWl-v~<7P$m3GTL_EhOhrg>kQ*z&^|=3 z-nuxZrcp&kE4hcr(hXcKVUQog+TC$1Ewk*&Z_hmPSTp3&1?w2R!Skb&;@w@qGco<= z#mF7c4`HQ`qIdhr4{`sXz&Wf#W^h&=kig@yQyF4bGM(3-OZYnAOGQ+U^n zcr^XOWGn}n0Hrb4%HsapMa8q!dV-rR(2fv6j$mmLZik>>_tB?fg)myH zSQ!7-mr^oeL9ZaaYPnhdPV!Jv{qL-;x$?rbmWLk>_YxZV^3fCtwWcWs@{w_T6h_;f zcpc-`ML5VIVnJ$RB(LYKC&NBHRz{tqY!Kmr*M}I(t$*-vtG{VE8>QMk-ij0?%KsSQ zUu(3+PAT_WQusSWU+=OB6}H4f>tJ;*zKp}TU*rxCKSmt>c6e6B(W<`2Sbkn5ccU?b zPJqCqwIaVV5viRZ$ETB&3aanAIn5O7SP@Gf7q$(>zj_7f@4%Ga)|#ieyR*_BlppNh zqAm~}>{a|7_dYZsHEq3%a94ilk!sBA|$88mhvBBXo4)Epf%S4Wo2#-6O5hRkqs z`pE!x_BE%q2R4&x8Sir7O}{d-3z=$lVfIN~wO=23H4|XllYhZCF#pA*0G3?L)IB(f zTHY22|8{MXpq6Io!nSQ#z5)9roNFML4l=JyV$=Jpvk6P_1!I2r#Y|756iC(`D}j=7 z!3=Jze{-qZuy|8t63gSyK+3tpsOHigmbi?ACQiPr&JGGRW)l;BFJwy9!KS$5#a@op zIeW8nv35c3yoj4~2|YZ|(yJYb-zAmeWVpqC&NUegZNQXRrEAxyLAMkq`qG_r+E&QK z2{+_0Q+;QaI~Ed|9fk+W6i4P^8Zy=DnDcz(Jh!CVl{D0D?_l% zlVrP8>pp+ScX+4{&-y!CuFM-8{=9BiRwz$qQ20$?Vr~d*l!#hFAC?gxaHrl*lCl+xv{}{E)V2xo*}N*5Tay zoc)ulx8FNbLA#_L=0WoGt=ULw^>xwAszehB(Laxd-bduy-X%CLiY70$pU1J+t|3Wt zo6Gu|iDdH9df%w{(5`f@8dQ@SM8BIi`IH$jFcif)Vk#{kX}9B8Y0xhGFl9XW%M)~$ z$qqhT{J!WI8XaPItAe1HDt3yx`m${-gQ=hqZ|Blr$ z%N-oPZc(zoXOs1(wMJxwZLn#R9SB?(Wum2ix zD}OoZu%iX@tv{!&uEsQVWM0V~<1VQ>%pUTc6k#$wyh_-`5=0O23*xpPN=mqdSGyk8 zo;fU}rKXt~MryntLbQ#Wn;T-Q$R=%Tnqg@DmvGzQvU6WJaYXxx?Erm=ffK!)!@VG; zt+OuPEllArANpDWfyo>X!;e1ph(C-e_*x&Dc0apq$}zkq0LE(uSG~sjRp$QnNhWsQ ziesr;R`48n6C9Urcx7mJ9Z(dFx&a^O?2*-|-Oc!dQz1wXp(p7j(_^}`L*=?*;I5Xr z)`^p}s;0*lG}V+>P*;PFv;p`?1viQFv`=o1Gm{BYR8D%c?aq=ZwYF!2?W}GiaLotu zn54YRz21o2XMP(&K1mx?F>|_f`|$FQ1oQ6=HSKD6XTV+f@ih&i3Y1cmjz8R+Dz4LN z2M*>^utII&!I0(kX{Va=bOCifYA3yn^6n<_|2xf ztq7})`Kkzc_dw}pWJEty{6su;b6>JhQJ=9 z;r3b@@sMaZIq+eg55jxSb(q+=LrF9)ONKOdsl#v|&?T$WI_CV9Q2v>#4)*1W3IY5e zmkviJ>Vh6hTg>uN=bcnP<*tP)6xI#12?w)?eQys{8`-UQ@`d}215Y!dVQ8RZSbr@% zABi}$GU4lgb7A72s?qMhh!gMgySoCnjXRQ7JciwEcta6i}FpMXSV)LcrbfmT09hux~)7dOi z)HK-jXlx259L^)U@lApgX8LcOLGbe5;aP&#Mof9-KS|_q4yWnbvL>P3GM8aDPB%86 zBE58Z;%T-?d2i>vejUQOT-?$vmFnSY5Pjjt*}*H)gwuN1NDK50<*fEwnBP&I2?XMRkLn|`5N zOW&N7&SG&^n|HFadkpI;(E^EpfMeU$igrk)_vM&QtX?tlw1VR*(Im;P3-~Lm8^F|&_V%(jksm_tcbB=wh-XRIK-nnTA#JN#ir}h3&OEBX>A%>AJ{e^8 z!{wVs7;6jr%5$9z0j#f0t^NaJ3;$Svv&Xqx3@dSn+rgX^*_L69KGEi~(IiF9T*jmR zpI_yWpZ4#=vp;vr&5!bgg`!xnd)@2l_BC`OV5I(=+vD7#$dcgZ2yEgCH2x6IK-gz# z`i{iqqMu*p7we`B`O<@Jfkf(i8KimDEkv;>1qV7P@o$~?@n-~zlX20wS8=0$d{sK1 zTqfX+C})PZOz-TH+SkXpEzSgMv{YI&_&wWq#HOo_W48dp{PwR+n!}d9Fo^ukn3Nr4 z)V03f@@JACzmImZ#p1l?+Dg@w>m3D&<;r`u(qA1oHJ73#UQ~Ew`PAjhho+zlB$6b{ z;;bf`?{&9oTvsY?RYIxsYb15`Sy*BcG>PBr5M9EWcHWQaEV`c6&5_rP;`Bwn?UJ32S4Oqj1>LsAN^vRfPN8VA;O+f{c-&KPn~(QfU_pCny_F&H z;oC%TbSj*J-)!~x)IVK*$Q|_*^AKwB2Pv_kdjl|LzmP#|7cJ7~a`oo@psI?>q#o&A zqMhjKL*$niQ;PNv*D<4Mmg|aIDab?j_uv0@+v~`Gv2p2W9nDxQ6LcHBPthluK)Xbx zocWYYEMrq$nL(sq9bL@=!>ds&Z^WItxB~d&!jp>LXN3H6z^c#v=jhsdYZSISbHa*xv?n;H*@$%|gYSd7U z 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¬mOue!9w+h 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�W?VWuUf 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 Axc~qF literal 0 HcmV?d00001 From ad8349a0cfbedb460e8140b7b0a4785961b9b6ce Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Fri, 25 Mar 2022 18:16:00 +0800 Subject: [PATCH 53/61] Update grasp_format.rst --- docs/source/grasp_format.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/source/grasp_format.rst b/docs/source/grasp_format.rst index 4745d20..8f4d9fe 100644 --- a/docs/source/grasp_format.rst +++ b/docs/source/grasp_format.rst @@ -147,7 +147,9 @@ Besides, one important function is that users can **dump** a GraspGroup into a n Rectangle Grasp ^^^^^^^^^^^^^^^ 7 float numbers are used to define a general rectangle grasp, i.e. the center point, the open point, height, score and the attached object id. -The detailed defition of each parameter is shown in the figure above and the coordinates for center point and open point are in the pixel frame. +The detailed definition of each parameter is shown in the figure above and below and the coordinates for center point and open point are in the pixel frame. + +.. image:: _static/rect_grasp_definition.png .. literalinclude:: ../../graspnetAPI/grasp.py :lines: 553-572 From bbb463b676d1d158905d4fe149ee2d058f7d05a4 Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Fri, 25 Mar 2022 20:38:03 +0800 Subject: [PATCH 54/61] Update example_eval.rst --- docs/source/example_eval.rst | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/docs/source/example_eval.rst b/docs/source/example_eval.rst index 148d3ec..5287af5 100644 --- a/docs/source/example_eval.rst +++ b/docs/source/example_eval.rst @@ -6,10 +6,22 @@ Evaluation Data Preparation ^^^^^^^^^^^^^^^^ -The first step of evaluation is to prepare your own data. +The first step of evaluation is to prepare your own results. You need to run your code and generate a `GraspGroup` for each image in each scene. Then call the `save_npy` function of `GraspGroup` to dump the results. +To generate a `GraspGroup` and save it, you can directly input a 2D numpy array for the `GraspGroup` class: +:: + + gg=GraspGroup(np.array([[score_1, width_1, height_1, depth_1, rotation_matrix_1(9), translation_1(3), object_id_1], + [score_2, width_2, height_2, depth_2, rotation_matrix_2(9), translation_2(3), object_id_2], + ..., + [score_N, width_N, height_N, depth_N, rotation_matrix_N(9), translation_N(3), object_id_N]] + )) + gg.save_npy(save_path) + +where your algorithm predicts N grasp poses for an image. For the meaning of each entry, you should refer to the doc for Grasp Label Format-API Loaded Labels + The file structure of dump folder should be as follows: :: @@ -30,7 +42,7 @@ The file structure of dump folder should be as follows: | --- scene_0189 -You can only generate dump for one camera, there will be no error for doing that. +You can choose to generate dump files for only one camera, there will be no error for doing that. Evaluation API ^^^^^^^^^^^^^^ From ca350fcce8663b197cd7b50f41d7087b6b08f65a Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Fri, 25 Mar 2022 20:41:43 +0800 Subject: [PATCH 55/61] Update example_eval.rst --- docs/source/example_eval.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/source/example_eval.rst b/docs/source/example_eval.rst index 5287af5..0b29e7f 100644 --- a/docs/source/example_eval.rst +++ b/docs/source/example_eval.rst @@ -20,7 +20,7 @@ To generate a `GraspGroup` and save it, you can directly input a 2D numpy array )) gg.save_npy(save_path) -where your algorithm predicts N grasp poses for an image. For the meaning of each entry, you should refer to the doc for Grasp Label Format-API Loaded Labels +where your algorithm predicts N grasp poses for an image. For the `object_id`, you can simply input `0`. For the meaning of other entries, you should refer to the doc for Grasp Label Format-API Loaded Labels The file structure of dump folder should be as follows: From 02dbe2d4093b90245905b758a1f25b49456c6c5a Mon Sep 17 00:00:00 2001 From: Fred Fang <510641426@qq.com> Date: Tue, 22 Aug 2023 21:43:28 +0800 Subject: [PATCH 56/61] add IJRR bibtex --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 7f1a30c..fba96f3 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,14 @@ Please refer to our document for more examples. ## Citation Please cite these papers in your publications if it helps your research: ``` +@article{fang2023robust, + title={Robust grasping across diverse sensor qualities: The GraspNet-1Billion dataset}, + author={Fang, Hao-Shu and Gou, Minghao and Wang, Chenxi and Lu, Cewu}, + journal={The International Journal of Robotics Research}, + year={2023}, + publisher={SAGE Publications Sage UK: London, England} +} + @inproceedings{fang2020graspnet, title={GraspNet-1Billion: A Large-Scale Benchmark for General Object Grasping}, author={Fang, Hao-Shu and Wang, Chenxi and Gou, Minghao and Lu, Cewu}, @@ -84,4 +92,4 @@ Please cite these papers in your publications if it helps your research: #### 1.2.8 -- Minor fix bug on loadScenePointCloud. \ No newline at end of file +- Minor fix bug on loadScenePointCloud. From 1523ad4d4ab0623d49b91ad972ffcb879ae61206 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Thu, 28 Dec 2023 10:08:29 +0800 Subject: [PATCH 57/61] fix: fix dependency problems --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index bd44e3a..e4fc75c 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ url='https://graspnet.net', packages=find_packages(), install_requires=[ - 'numpy', + 'numpy==1.20.3', 'scipy', 'transforms3d==0.3.1', 'open3d>=0.8.0.0', @@ -30,7 +30,7 @@ 'cvxopt', 'dill', 'h5py', - 'sklearn', + 'scikit-learn', 'grasp_nms' ] ) From a2d688e16ddee474a07645641040b2f9f0d6c115 Mon Sep 17 00:00:00 2001 From: GouMinghao Date: Sun, 31 Dec 2023 11:50:11 +0800 Subject: [PATCH 58/61] NEW: update to 1.2.11, add custom split --- docs/source/conf.py | 2 +- graspnetAPI/__init__.py | 2 +- graspnetAPI/graspnet.py | 10 +++++++--- setup.py | 2 +- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/source/conf.py b/docs/source/conf.py index 6dcad84..8be07ed 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'graspnet' # The full version, including alpha/beta/rc tags -release = '1.2.10' +release = '1.2.11' # -- General configuration --------------------------------------------------- diff --git a/graspnetAPI/__init__.py b/graspnetAPI/__init__.py index 82e1b08..b33e391 100644 --- a/graspnetAPI/__init__.py +++ b/graspnetAPI/__init__.py @@ -1,5 +1,5 @@ __author__ = 'mhgou' -__version__ = '1.2.10' +__version__ = '1.2.11' from .graspnet import GraspNet from .graspnet_eval import GraspNetEval diff --git a/graspnetAPI/graspnet.py b/graspnetAPI/graspnet.py index ae8d7ed..a9cebc0 100755 --- a/graspnetAPI/graspnet.py +++ b/graspnetAPI/graspnet.py @@ -67,7 +67,7 @@ def _isArrayLike(obj): class GraspNet(): - def __init__(self, root, camera='kinect', split='train'): + def __init__(self, root, camera='kinect', split='train', sceneIds=[]): ''' graspnetAPI main class. @@ -76,10 +76,12 @@ def __init__(self, root, camera='kinect', split='train'): - camera: string of type of camera: "kinect" or "realsense" - - split: string of type of split of dataset: "all", "train", "test", "test_seen", "test_similar" or "test_novel" + - split: string of type of split of dataset: "all", "train", "test", "test_seen", "test_similar", "test_novel" or "custom" + + - sceneIds: list of custom scene ids. ''' assert camera in ['kinect', 'realsense'], 'camera should be kinect or realsense' - assert split in ['all', 'train', 'test', 'test_seen', 'test_similar', 'test_novel'], 'split should be all/train/test/test_seen/test_similar/test_novel' + assert split in ['all', 'train', 'test', 'test_seen', 'test_similar', 'test_novel', "custom"], 'split should be all/train/test/test_seen/test_similar/test_novel' self.root = root self.camera = camera self.split = split @@ -97,6 +99,8 @@ def __init__(self, root, camera='kinect', split='train'): self.sceneIds = list(range(130, 160)) elif split == 'test_novel': self.sceneIds = list(range(160, 190)) + elif split == "custom": + self.sceneIds = sceneIds self.rgbPath = [] self.depthPath = [] diff --git a/setup.py b/setup.py index e4fc75c..d2d7a56 100644 --- a/setup.py +++ b/setup.py @@ -5,7 +5,7 @@ setup( name='graspnetAPI', - version='1.2.10', + version='1.2.11', description='graspnet API', author='Hao-Shu Fang, Chenxi Wang, Minghao Gou', author_email='gouminghao@gmail.com', From 4357b4e74fa771fd9a85a7f086f7bcbd5ef011cb Mon Sep 17 00:00:00 2001 From: Fred Fang Date: Mon, 17 Feb 2025 12:46:56 -0500 Subject: [PATCH 59/61] Update environment --- setup.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/setup.py b/setup.py index d2d7a56..d973936 100644 --- a/setup.py +++ b/setup.py @@ -12,7 +12,7 @@ url='https://graspnet.net', packages=find_packages(), install_requires=[ - 'numpy==1.20.3', + 'numpy==1.23.4', 'scipy', 'transforms3d==0.3.1', 'open3d>=0.8.0.0', @@ -30,7 +30,7 @@ 'cvxopt', 'dill', 'h5py', - 'scikit-learn', + 'sklearn', 'grasp_nms' ] ) From d931564a816aa6bc1e5e53932a1dc66e1d656113 Mon Sep 17 00:00:00 2001 From: Fred Fang Date: Mon, 17 Feb 2025 12:48:21 -0500 Subject: [PATCH 60/61] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fba96f3..1713992 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Visit the [GraspNet Website](http://graspnet.net) to get the dataset. ## Install -You can install using pip. +You can install using pip. (Note: The pip version might be old, install from the source is recommended.) ```bash pip install graspnetAPI ``` From bd6783c3effdebd895abfba8b96dc22a42ec3b5a Mon Sep 17 00:00:00 2001 From: Fred Fang Date: Mon, 16 Jun 2025 00:34:46 -0400 Subject: [PATCH 61/61] Create LICENSE --- LICENSE | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dd43581 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 GraspNet + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.