0
$\begingroup$

Rosanswers logo

I am trying to run the openni_tracker node to duplicate the results from the wiki http://www.ros.org/wiki/openni_tracker 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!


Originally posted by bkx on ROS Answers with karma: 145 on 2012-02-02

Post score: 1

$\endgroup$

4 Answers 4

0
$\begingroup$

Rosanswers logo

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..)


Originally posted by michikarg with karma: 2108 on 2012-02-02

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by Neil Traft on 2014-08-11:
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.

Comment by Neil Traft on 2014-08-11:
What this answer doesn't mention is that to visualize in RViz you need to select /openni_depth_frame as your Fixed Frame.

$\endgroup$
0
$\begingroup$

Rosanswers logo

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...


Originally posted by michikarg with karma: 2108 on 2012-02-02

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by michikarg on 2012-02-02:
see entry below...

Comment by bkx on 2012-02-02:
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?

$\endgroup$
0
$\begingroup$

Rosanswers logo

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!


Originally posted by bkx with karma: 145 on 2012-02-03

This answer was NOT ACCEPTED on the original site

Post score: 3

$\endgroup$
0
$\begingroup$

Rosanswers logo

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);

to

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 [http://tayyabnaseer.blogspot.de/2012/04/running-ros-openni-tracker-with.html] :-)


Originally posted by tayyab with karma: 59 on 2012-04-24

This answer was NOT ACCEPTED on the original site

Post score: 1


Original comments

Comment by Neil Traft on 2014-08-11:
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!

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.