[Documentation] [TitleIndex] [WordIndex


This package localizes antipodal grasps in 3D point clouds. AGILE stands for Antipodal Grasp Identification and LEarning. The reference for this package is: Using Geometry to Detect Grasps.

The package already comes with pre-trained machine learning classifiers and can be used (almost) out-of-the-box, in particular with an Asus Xtion Pro range sensor.

For a complete grasping demo on a Baxter robot, check out our grasp_selection package.

The package contains two command line tools and one ROS node:

  1. train_svm: (command line tool) Train an SVM to localize grasps in point clouds.

  2. test_svm: (command line tool) Localize grasps in a .pcd file using a trained SVM.

  3. find_grasps: (ROS node) Localize grasps in a point cloud obtained from a range sensor.


  1. Lapack (install in Ubuntu: $ sudo apt-get install liblapack-dev)

  2. OpenNI or a similar range sensor driver


From Source, ROS Indigo

  1. Open a terminal
  2. Navigate to the *src* folder of your ROS workspace: $ cd location_of_workspace/src

  3. Clone the repository: $ git clone https://github.com/atenpas/agile_grasp.git

  4. Navigate back to the root of your ROS workspace: $ cd ..

  5. Recompile your ROS workspace: $ catkin_make

From Source, ROS Hydro

Follow the instructions for ROS Indigo, except for Step (3):

$ git clone https://github.com/atenpas/agile_grasp.git -b hydro

Localize Grasps with a Robot

Localize grasps on a robot using a range sensor, such as a Kinect:

$ roslaunch agile_grasp single_camera_grasps.launch

Localize grasps on a robot

Two example ROS launch files, single_camera_grasps.launch and baxter_grasps.launch, are provided that illustrate how to use the find_grasps ROS node to localize grasps in a point cloud obtained from one or two range sensors.

Instructions for Asus Xtion Pro

  1. Start roscore: $ roscore

  2. Connect an Asus Xtion Pro range sensor
  3. Launch the Asus ROS driver: $ roslaunch openni2_launch openni2.launch

  4. Detect grasps: $ roslaunch agile_grasp single_camera_grasps.launch

  5. Start Rviz for visualization: $ rosrun rviz rviz

  6. Open the config file agile_grasp/rviz/single_camera.rviz in Rviz to visualize the grasps.

Launch File Parameters

The most important parameters to increase the number of grasps found are num_samples and workspace. A higher sample number means that a larger subset of points in the point cloud will be considered. A smaller workspace means that less samples are required to find grasps.

The most important parameters are listed below.

Remark: If you want to adjust the grasp parameters, you can do this from the launch file. For the available parameters, see src/nodes/find_grasps.cpp.

Localize Grasps in a Point Cloud File

Localize grasps in a point cloud stored in a .pcd file:

$ rosrun agile_grasp test_svm /home/userABC/data/input.pcd /home/userABC/ros_ws/src/agile_grasp/svm_032015_20_20_same

input output


$ rosrun agile_grasp test_svm pcd_filename svm_filename [num_samples] [num_threads] [min_handle_inliers]

This localizes grasps in the point cloud file pcd_filename using the SVM stored in the file svm_filename. The last three parameters are optional. num_samples sets the number of samples, num_threads sets the number of CPU threads used, and min_handle_inliers sets the minimum number of grasps required to have a cluster of grasps.

Notice: When no handles or not enough antipodal grasps are found, please increase the num_samples parameter. Another option is to modify the workspace limits in src/nodes/test.cpp (this requires recompiling the code).



Training the SVM

To train the SVM to predict grasps, first create a directory that contains the .pcd files used for training.

Method A



$ rosrun agile_grasp train_svm num_files pcd_directory/obj svm_filename [plots_hands] [num_samples] [num_threads]

Method B


Example: files.txt


Example: workspace.txt



$ rosrun agile_grasp train_svm num_files pcd_directory svm_filename [plots_hands] [num_samples] [num_threads]



If you like this package and use it in your own work, please cite our ISRR2015 paper:

Andreas ten Pas and Robert Platt. Using Geometry to Detect Grasp Poses in 3D Point Clouds. International Symposium on Robotics Research (ISRR), Italy, September 2015.

2024-07-13 12:37