graspnet / graspnetAPI

Toolbox for our GraspNet-1Billion dataset.
https://graspnet.net/index.html
203 stars 52 forks source link

convert rect -> 6d faild #12

Closed cww97 closed 3 years ago

cww97 commented 3 years ago

first, my dataset is downloaded completely

$ python exam_check_data.py
WARNING:root:Failed to import geometry msgs in rigid_transformations.py.
WARNING:root:Failed to import ros dependencies in rigid_transforms.py
WARNING:root:autolab_core not installed as catkin package, RigidTransform ros methods will be unavailable
Loading data path...: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:00<00:00, 271.81it/s]
Checking Models: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:00<00:00, 6797.40it/s]
Checking Grasp Labels: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:00<00:00, 28521.66it/s]
Checking Collosion Labels: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:00<00:00, 18873.57it/s]
Checking Scene Datas: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:08<00:00, 21.89it/s]
Check for kinect passed
Loading data path...: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:00<00:00, 271.39it/s]
Checking Models: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:00<00:00, 6914.94it/s]
Checking Grasp Labels: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 88/88 [00:00<00:00, 28199.16it/s]
Checking Collosion Labels: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:00<00:00, 15353.10it/s]
Checking Scene Datas: 100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:08<00:00, 22.52it/s]
Check for realsense passed

then I try the example of convert

import numpy as np
from graspnetAPI import GraspNet
import cv2
import open3d as o3d

rect_grasp_path = '../predicted_rectangle_grasp'
graspnet_root = '/home/weiwen/mnt0/mail2020/graspDL/rectMM/graspnet_dataset'
camera = 'kinect'
sceneId = 5
annId = 3

g = GraspNet(graspnet_root, camera = camera, split = 'all')

bgr = g.loadBGR(sceneId = sceneId, camera = camera, annId = annId)
depth = g.loadDepth(sceneId = sceneId, camera = camera, annId = annId)

rect_grasp_group = g.loadGrasp(sceneId=sceneId, camera=camera, annId=annId,
                               fric_coef_thresh=0.2, format='rect')

# RectGrasp to Grasp
rect_grasp = rect_grasp_group.random_sample(1)[0]
print(rect_grasp)
img = rect_grasp.to_opencv_image(bgr)

cv2.imwrite('exam_imgs/rua.png', img)

print(camera, depth)
grasp = rect_grasp.to_grasp(camera, depth)
if grasp is not None:
    geometry = []
    geometry.append(g.loadScenePointCloud(sceneId, camera, annId))
    geometry.append(grasp.to_open3d_geometry())
    o3d.visualization.draw_geometries(geometry)
else:
    print('No result because the depth is invalid, please try again!')

the code above is copied from the example/doc,

then I get

$ python convert_grasp.py
WARNING:root:Failed to import geometry msgs in rigid_transformations.py.
WARNING:root:Failed to import ros dependencies in rigid_transforms.py
WARNING:root:autolab_core not installed as catkin package, RigidTransform ros methods will be unavailable
Loading data path...: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 190/190 [00:00<00:00, 274.32it/s]
Rectangle Grasp: score:1.0, height:30.647785186767578, open point:(838.07336, 563.3613), center point:(776.25494, 552.6008), object id:2
kinect [[ 381  381  381 ...    0    0    0]
 [ 382  382  382 ...    0    0    0]
 [ 382  382  383 ...    0    0    0]
 ...
 [1677 1677 1677 ...    0    0    0]
 [   0    0    0 ...    0    0    0]
 [   0    0    0 ...    0    0    0]]
Traceback (most recent call last):
  File "convert_grasp.py", line 29, in <module>
    grasp = rect_grasp.to_grasp(camera, depth)
  File "/home/weiwen/anaconda3/envs/grasp/lib/python3.6/site-packages/graspnetAPI/grasp.py", line 701, in to_grasp
    depth_2d = depth_method(depths, center, open_point, upper_point) / 1000.0
  File "/home/weiwen/anaconda3/envs/grasp/lib/python3.6/site-packages/graspnetAPI/utils/utils.py", line 558, in center_depth
    return depths[round(center[1]), round(center[0])]
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

I notice there is this in doc

This conversion may fail due to invalid depth information.

why my depth infomation is invalid.

Fang-Haoshu commented 3 years ago

fixed