Last modified 5 years ago Last modified on 19.12.2013 12:37:10

Tabletop Objects Plugin

This plugin takes input from a Microsoft Kinect camera and finds a tabletop and objects on the tabletop.

The plugin first searches the input for a horizontal plane with a proper height (the tabletop). It then scans the space above the tabletop for objects. Optionally, the plugin then fits all found objects to cylinders and/or tracks the objects using the Hungarian Method such that the objects' IDs are consistent (i.e. the total distance all centroids moved is minimal).



The following plugins are required:

Plugins for Visualization

The following plugins are required to visualize Tabletop Objects:

Note: You must load ros-pcl? after tabletop-objects to visualize the point clouds. Otherwise, the point clouds won't be shown.

Config Values

/perception/tabletop-objects/depth_filter_min_xfloatmimimum distance to camera to consider a point; meter0.0
/perception/tabletop-objects/depth_filter_max_xfloatmaximum distance to camera to consider a point; meter3.0
/perception/tabletop-objects/voxel_leaf_sizefloatLeaf size for voxel grid downsampling; meter0.02
/perception/tabletop-objects/table_segmentation_max_iterationsuintMaximum number of iterations to perform for table segmentation1000
/perception/tabletop-objects/table_segmentation_distance_thresholdfloatSegmentation distance threshold; meter0.022
/perception/tabletop-objects/table_segmentation_inlier_quotafloatMinimum size of fraction of points that must be inliers to consider a table; [0.0,1.0]0.12
/perception/tabletop-objects/max_z_angle_deviationfloatMaximum angle between Z axis and table normal, takes normal direction into account; rad0.1
/perception/tabletop-objects/table_min_heightfloatMinimum required height of table; meter0.6
/perception/tabletop-objects/table_max_heightfloatMaximum height of table; meter0.9
/perception/tabletop-objects/table_model_widthfloatlength of the short edge of the table model0.8
/perception/tabletop-objects/table_model_lengthfloatlength of the long edge of the table model1.6
/perception/tabletop-objects/table_model_stepfloatInter_Point step size for creating the table model point cloud; meter0.05
/perception/tabletop-objects/table_model_enableboolFit table polygon to the table model, use table polygon if disabledfalse
/perception/tabletop-objects/cluster_tolerancefloatClustering inter-point distance tolerance; meter0.044
/perception/tabletop-objects/cluster_min_sizeuintMinimum number of points in cluster to consider20
/perception/tabletop-objects/cluster_max_sizeuintMaximum number of points in cluster to consider200
/perception/tabletop-objects/result_framestringThe frame in which the result should be published; frame/base_link
/perception/tabletop-objects/horizontal_viewing_anglefloatHorizontal viewing angle of the camera, used for frustrum; deg57.0
/perception/tabletop-objects/vertical_viewing_anglefloatVertical viewing angle of the camera, used for frustrum; deg43.0
/perception/tabletop-objects/centroid_max_ageuintMaximum number of loops a currently invisible centroid is remembered for50
/perception/tabletop-objects/centroid_max_distancefloatMaximum distance a centroid may have moved between two loops0.041
/perception/tabletop-objects/centroid_min_distancefloatMinimum distance between two centroids, closer centroids will be deleted0.01
/perception/tabletop-objects/centroid_max_heightfloatMaximum height of a centroid relative to the table, higher centroids will be deleted0.3
/perception/tabletop-objects/enable_cylinder_fittingboolFit clustered objects to cylinderstrue
/perception/tabletop-objects/enable_object_trackingbooltrack objects such that the centroid IDs are consistenttrue

Visualization Config Values

If visualization is enabled, the following config values can be set in addition to the values above; none of them are required.

/perception/tabletop-objects/visualization/show_frustrumboolShow the frustrum according to configured horizontal and vertical viewing anglefalse
/perception/tabletop-objects/visualization/show_convex_hull_verticesboolShow convex hull verticestrue
/perception/tabletop-objects/visualization/show_convex_hull_line_highlightingboolShow highlighted hull lines to understand edge selection? Otherwise plain hull is showntrue
/perception/tabletop-objects/visualization/show_convex_hull_vertex_idsboolShow text with convex hull vertex IDstrue
/perception/tabletop-objects/visualization/display_durationuintTime to show marker elements when not updated; sec120


Blackboard Interfaces

  • Position3DInterface::Tabletop: Position of the table (normal vector)
  • Position3DInterface::Tabletop Object [1..12]: position of the corresponding tabletop object.
  • SwitchInterface::tabletop-objects: turn the plugin on/off

Point Clouds

  • tabletop_object_clusters: cluster of the tabletop and objects
  • tabletop_table_model: the table model (rectangular)
  • tabletop_simplified_polygon: the table's (simplified) hull

Visualization Markers

If visualization is enabled, the plugin provides a ROS Marker for each tabletop object.