Only released in EOL distros:  

Running

The easiest way to run the interface is alongside the projector calibration node. This can be done with

roslaunch projector_interface calibrate_and_circle.launch

This will start both the calibration node and interface node. The interface node will wait to display anything until a homography is available on the /homography parameter. After calibration, the calibration node will exit.

At this point the interface node is ready to display the cursor, object circles, and any polygons sent to it using the projector_interface/DrawPolygon service.

Nodes

object_circler

Responsible for drawing the interface and dispatching click notifications if any objects in the interface have been clicked

Subscribed Topics

object_cloud (sensor_msgs/PointCloud2)
  • A point cloud containing the centers of detected objects to be circled
click (std_msgs/Empty)
  • Indicates that a click has been received
intersected_points (sensor_msgs/PointCloud2)
  • A point cloud containing point intersections. These points are used to determine which object (if any) is being selected. This enables using multiple world models for object selection. If multiple models are not being used, this should be the same as intersected_points_cursor.
intersected_points_cursor (sensor_msgs/PointCloud2)
  • A point cloud containing point intersections used to determine the current cursor location in the interface.
camera_info (sensor_msgs/CameraInfo)
  • The camera calibration for the camera whose camera-projector homography is being used.

Published Topics

selected_point (geometry_msgs/PointStamped)
  • After a click, this is the point that was clicked on.
rate (std_msgs/Empty)
  • Published each time the interface is finished redrawing
click_stats (sensor_msgs/PointCloud2)
  • Published the cursor history every time a click is received.
clicked_object (std_msgs/String)
  • The object id for the object that was just clicked

Services

hilight_object (projector_interface/HilightObject)
  • Tells the interface to hilight a specific object
clear_hilights (projector_interface/ClearHilights)
  • Clears all hilights
get_cursor_stats (projector_interface/GetCursorStats)
  • Requests the current cursor history
set_selection_method (projector_interface/SetSelectionMethod)
  • Enables changing the selection method for selecting circled objects.
draw_polygon (projector_interface/DrawPolygon)
  • Adds a polygon for the interface to draw
clear_polygons (projector_interface/ClearPolygons)
  • Clears all polygons

Parameters

/homography (string)
  • The camear-projector homography
~flip (string)
  • Sets the top right of the display to be (0,0) rather than bottom left. Defaults to false.
~window_size (string)
  • Sets how much cursor history to use. Defaults to 10.
~circle_objects (string)
  • Sets whether or not to draw circles around detected objects (from object_cloud)

point_to_click

Takes a button press from a joystick and publishes a click. After a button press has been detected, won't publish another click for 1 second.

Subscribed Topics

joy (sensor_msgs/Joy)
  • The joystick topic

Published Topics

click (std_msgs/Empty)
  • Topic where clicks should be published.

find_objects

Calls the tabletop object detector and publishes a cloud of detected object centers.

Published Topics

object_cloud (sensor_msgs/PointCloud2)
  • Object center cloud topic
table (tabletop_object_detector/Table)
  • Table information

Parameters

~detect_rate (float)
  • How frequently to call the detector. Defaults to once every 2 seconds (0.5).

manipulator

Goes between object_circler and PR2's object manipulation capabilities.

Subscribed Topics

click (std_msgs/Empty)
  • Receives clicks when objects are clicked on
intersected_points (sensor_msgs/PointCloud2)
  • Intersected points when there was a click

Published Topics

place_pose (geometry_msgs/PoseStamped)
  • Publishes a pose where the object should be placed

Wiki: projector_interface (last edited 2013-05-02 19:41:54 by DanLazewatsky)