tnikolla / robot-grasp-detection

Detecting robot grasping positions with deep neural networks. The model is trained on Cornell Grasping Dataset. This is an implementation mainly based on the paper 'Real-Time Grasp Detection Using Convolutional Neural Networks' from Redmon and Angelova.
Apache License 2.0
232 stars 84 forks source link

Converting grasping rectangle to grasp pose #6

Closed cyrilli closed 6 years ago

cyrilli commented 6 years ago

Hi, I wish to execute the proposed grasp using my own robot arm. I am wondering if you have implemented the code to convert the rectangle to the 6DOF grasp pose. I read on the Deep Learning for Detecting Robotic Grasps paper that the final pose is determined using the rectangle center as the grasping center, its surface normal as the approach vector and the angle of the rectangle is used to rotate the gripper around the approach vector but I don't know how to implement this.

tnikolla commented 6 years ago

Hi! I did not work with 6DOF grasp pose at all. My program can give you the grasping center and the angle but it does not give the normal surface. You need to find it somehow from a depth map of the object you are trying to grasp.

hqcn commented 6 years ago

The 6DOF grasp pose could be derived by computing the surface normal of the grasp center ? Ref: http://pointclouds.org/documentation/tutorials/normal_estimation.php#normal-estimation

tnikolla commented 6 years ago

In the dataset from Cornell, for every image there is also a point cloud. You can use that with the appropriate algo (not in this repository) to get the normal surface of the object.

cyrilli commented 6 years ago

Just for anyone who had the same problem, I implemented a ROS service to do the conversion from grasp rectangle to gripper pose according to the cornell paper. Code is here. Although I am using another grasp detection model, it should still work with any model that gives you a 2D position and an angle.

jinhuan-hit commented 5 years ago

@cyrilli Hi,I think if you do not want to use a point cloud,you can assume that the end effector is vertical to the surface.And then you can use a 2D position and an angle.