GrabNet icon indicating copy to clipboard operation
GrabNet copied to clipboard

Please enter either pointcloud or meshes to compute bps

Open antonagafonov opened this issue 2 years ago • 3 comments

Hi, While running grab_new_objects.py encountering following issue:

python grabnet/tests/grab_new_objects.py --obj-path contact_meshes/camera.ply --rhm-path mano_v1_2/

2022-10-19 16:56:41,969 - root - INFO - Restored CoarseNet model from grabnet/models/coarsenet.pt 2022-10-19 16:56:41,975 - root - INFO - Restored RefineNet model from grabnet/models/refinenet.pt 2022-10-19 16:56:41,984 - root - INFO - ################# Colors Guide:
Gray ---> GrabNet generated grasp

Traceback (most recent call last): File "/home/aa/Documents/GitHub/GrabNet/grabnet/tests/grab_new_objects.py", line 235, in grab_new_objs(grabnet,obj_path, rot=True, n_samples=10) File "/home/aa/Documents/GitHub/GrabNet/grabnet/tests/grab_new_objects.py", line 129, in grab_new_objs bps_object = bps.encode(verts_obj, feature_type='dists')['dists'] File "/home/aa/miniconda3/envs/Pytorch3D/lib/python3.9/site-packages/bps_torch/bps.py", line 163, in encode raise ('Please enter either pointcloud or meshes to compute bps!') TypeError: exceptions must derive from BaseException

Can somebody please help me to solve this one?

Thanks

antonagafonov avatar Oct 19 '22 14:10 antonagafonov

I also have a same issue, could you please tell me the solution?

GentlesJan avatar Nov 18 '22 10:11 GentlesJan

Hi @antonagafonov @GentlesJan ,

I ran into similar problems recently and I have figured it out. I think this was caused by the PyTorch version change. In grab_new_objects.py, before passing verts_obj to bps.encode, you need to first transform it into torch.tensor. After calculating bps, you need to change it back to numpy array. I am not sure whether this is elegant but this is a fast solution.

In summary, find

bps_object = bps.encode(verts_obj, feature_type='dists')['dists']

in function grab_new_objs(grabnet, objs_path, rot=True, n_samples=10, scale=1.) in grab_new_objects.py and replace it by

verts_obj = torch.from_numpy(verts_obj)
bps_object = bps.encode(verts_obj, feature_type='dists')['dists']
verts_obj = verts_obj.numpy()

waqc avatar Nov 29 '22 02:11 waqc

Hi @waqc, thanks for the quick fix. Indeed, this is the source of the error. I updated the bps package but didnt notice that it will break this script. I updated this script accordingly, it should be working now. Let me know if you face any other issues.

otaheri avatar Nov 29 '22 12:11 otaheri