Metapackage for the heuristic-based AGILE grasp detector and classifier. Includes the original AGILE package, the heuristic classifier package, and other supporting functionality.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
agile_grasp_base
rail_agile_grasp
rail_agile_grasp_msgs
rail_agile_nodes
README.md

README.md

Deprecation Warning

This package is no longer under active development. For updated and supported versions of this package, please see:

  • rail_grasp_calculation: Standalone meta-package for grasp pose clustering and heuristic calculation, as well as messages for connecting to grasp samplers and other grasp ranking methods (the package itself is agnostic to where the source of the grasp poses)
  • rail_agile: adapted AGILE_grasp package exposing some functionality as ROS action servers, for use with rail_grasp_calculation

rail_agile_grasp

Metapackage for the heuristic-based AGILE grasp detector and classifier. Includes the original AGILE package, the heuristic classifier package, and other supporting functionality. This metapackage includes the grasp calculator for the Point-and-Click method for 6-DoF end-effector positioning described in A Comparison of Remote Robot Teleoperation Interfaces for General Object Manipulation, published in HRI 2017.

Description

This metapackage extends AGILE grasp to use heuristic-based grasp evaluation in place of AGILE's grasp classifier. Development of this package included adding extra ROS messages, services, and actionlib to the original AGILE code to facilitate communication with the heurist-based evaluator. Also included are additional packages potentially useful for testing and deployment.

Menu

agile_grasp_base

This is the original agile grasp package, modified with an action server to allow grasps to be found on demand. More details on the functionality of this package can be found in the main AGILE_grasp, on which this was based.

rail_agile_grasp_msgs

This package contains action definitions, messages, and services used throughout the metapackage. For more details, check the message definitions themselves.

rail_agile_nodes

The primary node of this package, grasp_sampler, implements grasp clustering and rating based on a set of heuristics designed to select effective grasps for man-made objects. More details on the heuristics can be found in our paper, A Comparison of Remote Robot Teleoperation Interfaces for General Object Manipulation, to be published in HRI2017.

The package also includes optional supporting nodes for filtering point clouds, creating clickable point clouds via interactive marker server, and interleaving point clouds from multiple sources. Details of each node can be found below.

grasp_sampler

This node performs grasp candidate evaluation by evaluating a set of heuristics on grasp poses sampled from the grasp hypotheses determined by the AGILE_grasp base package. Relevant parameters, action servers, topics, and services are as follows:

  • Subscribed Topics
    • /camera/depth_registered/points(sensor_msgs/PointCloud2)
             point cloud subscriber; the topic can be set by changing the parameter cloud_topic or by calling the change_point_cloud_topic service.
    • /find_grasps/grasps_with_workspace(rail_agile_grasp_msgs/GraspsWithWorkspace)
             the set of grasp hypothese calculated by AGILE grasp, to be sampled from and evaluated by this node
  • Published Topics
  • Services
  • Parameters
    • cloud_topic(string, "/camera/depth_registered/points")
             initial point cloud topic to subscribe to
    • neighborhood_radius(double, 0.02)
             radius defining the sphere of a grasp's neighborhood, in meters, used for clustering grasp hypotheses
    • orientation_threshold(double, 0.1)
             maximum difference, in radians, between two grasps' orientations to be clustered
    • cluster_size(int, 5)
             maximum number of grasp hypotheses that can compose one cluster
    • remove_table(boolean, false)
             option to remove the dominant plane from the point cloud within the given workspace before calculating the object orientaion heuristic; it's recommended to set this to true if the grasps are being used for tabletop pick-and-place applications.

point_cloud_clicker

This node facilitates clicking on point clouds by either creating an interactive marker server with a clickable point cloud, or by running action servers that take clicked point information and return points in 3D space. Relevant parameters, action servers, topics, and services are as follows:

  • Action Servers
  • Subscribed Topics
    • /camera/depth_registered/points(sensor_msgs/PointCloud2)
             point cloud subscriber; the topic can be set by changing the parameter cloud_topic or by calling the change_point_cloud_topic service.
  • Services
  • Parameters
    • cloud_topic(string, "/camera/depth_registered/points")
             initial point cloud topic to subscribe to

point_cloud_filter

This node performs voxel grid filtering on a given input point cloud. Relevant parameters, action servers, topics, and services are as follows:

  • Subscribed Topics
    • /camera/depth_registered/points(sensor_msgs/PointCloud2)
             point cloud subscriber; the topic can be set by changing the parameter cloud_topic
  • Published Topics
  • Parameters
    • cloud_topic(string, "/camera/depth_registered/points")
             initial point cloud topic to subscribe to

point_cloud_interleaver

This node subscribes to two point cloud sources and combines them into a single point cloud with a common frame of reference. Relevant parameters, action servers, topics, and services are as follows:

  • Subscribed Topics
    • /camera1/depth_registered/points(sensor_msgs/PointCloud2)
             point cloud subscriber; the topic can be set by changing the parameter cloud1_topic
    • /camera2/depth_registered/points(sensor_msgs/PointCloud2)
             point cloud subscriber; the topic can be set by changing the parameter cloud2_topic
  • Published Topics
  • Parameters
    • cloud1_topic(string, "/camera1/depth_registered/points")
             initial point cloud topic to subscribe to
    • cloud2_topic(string, "/camera2/depth_registered/points")
             initial point cloud topic to subscribe to

Installation

Clone the package into your catkin workspace and build it as follows:

cd (your catkin workspace)/src
git clone https://github.com/GT-RAIL/rail_agile_grasp.git
cd ..
catkin_make

Startup

The rail_agile_nodes package contains two launch files that will bring up the main functionality of the package. find_grasps.launch will run the base AGILE code and the grasp_sampler node for sampling and ranking the AGILE hypotheses by heuristics. It is run as follows:

roslaunch rail_agile_nodes find_grasps.launch

two_cameras.launch will run the same thing, but will launch two depth cameras and add the intermediate step of point cloud interleaving.

roslaunch rail_agile_nodes two_cameras.launch

Supporting nodes can be run individually using rosrun.