ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
The openni_tracker simply broadcasts transforms from the camera_frame_id frame (defaults to openni_depth_frame) to each of the joints of the user. Using a tf listener one could write a simple node that looked up transforms between any two frames you are interested in. For example you could lookup the transform between the /torso and the /right_elbow. Once you have a transform object, the tf package provides functionality for converting to Euler angles, quaternions, SO(3), etc. See the geometry page and the rotation methods page. Then you could publish this info as whatever type of message you want.
Alternatively, you could write your own node that modified the source of openni_tracker that published a custom message in the form you want. I believe this is the route taken by the pi_tracker package. I have also worked with my own package that does this same thing. See https://github.com/jakeware/skeletontracker_nu and https://github.com/jakeware/skeletonmsgs_nu