Teleop Kinect Cleanup

Description: Teleop Kinect Cleanup enables virtual moving of the household objects and can be for example used to show a robot where to exactly place down certain objects during pick and place actions.

Submitted By: Zoltan-Csaba Marton, Dejan Pangercic


How to Reproduce Your Entry

To reproduce this entry you need the following:

  • Kitchen table
  • Kinect sensor mounted on a robot or a tripod looking down on a table
  • Household objects

Code to Checkout

  1. First you have to install ni stack.

  2. Patch openni_tracker package
      patch -p0 -i `rospack find kinect_cleanup`/openni_tracker.patch
  3. Make ni stack
       rosmake ni
  4. Check out TUM's mapping stack and compile kinect_cleanup package:
     git clone
     rosmake kinect_cleanup

Running the Code

  1. Place the kitchen table between you and the Kinect sensor such that the table surface and you will be visible in the point cloud of Kinect sensor. Place an object or two to the robot's side of the table. Note that the robot and the person shall be both approximately 1m away from the table on both sides.
  2. Measure approximate angle between Kinect's Z-axis (depth axis) and table plane and replace the value of "base_link_head_tilt_link_angle" parameter in kinect_cleanup/launch/kc.launch
  3. With the kinect plugged in:
    term1: roslaunch openni_camera openni_kinect.launch
    term2: roslaunch kinect_cleanup kc.launch
    To view with rviz, use the configuration:
    rosrun rviz rviz -d `rospack find kinect_cleanup`/kc.vcg
  4. Step behind the table and put your arms into openni calibration pose. Wait until you see "Calibration complete, start tracking user 1" in term2.
  5. Point with your right arm to the object and raise your left arm straight up and down again. This will trigger the segmentation of the object. Note, that the pointing direction is the line between the elbow and hand, which can be different from the finger's direction. It can happen that the node human_tracker can find no transform between required frames (indicated by "no transform found") for couple of seconds, so be patient. Keep pointing to the object until you see "Republished object in frame right_hand" in term2 which will mean that you can start doing the magic and moving the object teleoperationally.
  6. If you want to release the object just stretch your left arm to the side of your body and raise it up and down again.


  • roscpp (cturtle)
  • pcl (trunk, r35035 of perception_pcl)
  • tf (cturtle)
  • pcl_ros (trunk, r35035 of perception_pcl)
  • sensor_msgs (cturtle)

How It Works


Wiki: openni/Contests/ROS 3D/Teleop Kinect Cleanup (last edited 2011-01-27 20:32:36 by Dejan Pangercic)