ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

openni tracker not producing any output

asked 2012-02-02 05:22:12 -0500

bkx gravatar image

updated 2016-10-24 08:59:40 -0500

ngrennan gravatar image

I am trying to run the openni_tracker node to duplicate the results from the wiki although the openni_tracker node just isn't producing any output. Here is a log from running openni_tracker (openni_tracker.xml set to log info-level messages to screen.) It looks like openni_tracker is detecting users, but it is not publishing any data or displaying any images. rostopic -list just returns /rosout and /rossout_agg.

I have visualized Kinect point cloud data in rviz with openni_launch, so I doubt that this is a hardware problem. Does anyone have ideas on why openni_tracker is not publishing any data? I'd really appreciate any help in figuring this out!

edit retag flag offensive close merge delete

4 Answers

Sort by » oldest newest most voted

answered 2012-02-02 19:55:06 -0500

michikarg gravatar image

Starting openni.launch in the openni package should be responsible for creating the links between the kinect and your map/fixed frame (maybe you have to ajjust the tf-frames to your scenario). To track the human, you should additionally start the openni_tracker. It should output if a User is detected and instructions about the calibration step (to calibrate the tracker, the user has to do the Phi-pose). As soon as the calibration was successful, the skelleton joints are posted on tf... (Very often, calibration fails, in this case, don´t worry, just do the Phi-pose again..)

edit flag offensive delete link more


FYI for anyone reading, the Psi pose doesn't appear to be necessary. (Maybe this was once the case but is no longer). It should pick you up immediately.

Neil Traft gravatar image Neil Traft  ( 2014-08-11 14:12:52 -0500 )edit

What this answer doesn't mention is that to visualize in RViz you need to select /openni_depth_frame as your Fixed Frame.

Neil Traft gravatar image Neil Traft  ( 2014-08-11 14:15:30 -0500 )edit

answered 2012-02-03 05:20:58 -0500

bkx gravatar image

updated 2012-02-03 05:24:13 -0500

Thanks for the help michikarg. My problem was that openni_tracker required the param "camera_frame_id" identifying the transform from world coordinates to the kinect. I used the following launch file to set "camera_frame_id" to /camera_link which is published by openni_launch.

Now, sequentially running roslaunch openni_launch openni.launch roslaunch my_pkg the_above_launch_file successfully results in all of the transforms being published!

edit flag offensive delete link more

answered 2012-02-02 05:43:11 -0500

michikarg gravatar image

Openni tracker usually publishes the joints of the human skelleton on the TF topic. Therefore your TF configuration should be correct, i.e. links between your fixed-frame and your kinect-frame have to exist. Did you check if transforms are beeing sent on topic /tf ?

You can also visualize tf in rviz and check the warnings if and what transforms are missing...

edit flag offensive delete link more


With just openni_tracker, nothing is published, the topic /tf does not exist.. If I additionally launch openni.launch, several transforms are published (camera_link, camera_rgb_frame, etc.) but still nothing from openni_tracker. What is the minimum config for seeing skeleton data?
bkx gravatar image bkx  ( 2012-02-02 07:00:45 -0500 )edit
see entry below...
michikarg gravatar image michikarg  ( 2012-02-02 19:55:18 -0500 )edit

answered 2012-04-24 01:47:32 -0500

tayyab gravatar image

Ideally you should not be required to run any node or launch file to get openni tracker started. ROS openni tracker is a stand alone node. As far as /tf topics are concerned they will only be published once the node has started tracking the user. You can monitor the console output of the program and when it says 'started tracking user #' then /tf topics will be published.

No change is required in 'camera_frame_id' , keep it to 'openni_depth_frame' and while visualizing in rviz keep your fixed/reference frame to 'openni_depth_frame'.

Just in case you want to visualize the pointcloud/depth/rgb images along with /tf skeleton tree , just change the 'camera_frame_id'

string frame_id("openni_depth_frame");

pnh.getParam("camera_frame_id", frame_id);


string frame_id("openni_rgb_optical_frame"); // what ever you want here

pnh.getParam("camera_frame_id", frame_id);

Hope it helps, you might want to checkout my posts about other issues while get these things running [] :-)

edit flag offensive delete link more


Thanks for making it clear that you do NOT need to run openni.launch to use the tracker! However, your method of linking the frame to an existing tf tree is bad and unnecessary. You can specify "camera_frame_id" on the Parameter Server. You should not be editing and recompiling the source code!

Neil Traft gravatar image Neil Traft  ( 2014-08-11 14:24:05 -0500 )edit

Question Tools


Asked: 2012-02-02 05:22:12 -0500

Seen: 2,848 times

Last updated: Apr 24 '12