It seems there's an inconsistency between the frame conventions used by openni_camera and openni_tracker nodes. You should probably open a ticket with this issue.
In the meantime, you can take advantage of the fact that the pointcloud is published with reference frame openni_rgb_optical_frame
and the skeleton with frame openni_depth_frame
. The relation between those two frames is established in openni_camera/launch/kinect_frames.launch
file, so you can change the static transforms declared in that file (or a copy of it, then you should also copy openni_node.launch
and make it reference your copy of kinect_frames.launch
) so that the skeleton and the depth data coincide.
Also, you should consider that the openni_tracker loades a configuration file (openni_tracker/openni_tracker.xml
) for the OpenNI generators that set the mirror parameter to true. You should check if this is the behaviour you want.
If I can find the time to do it I'll try to prepare a patch that fixes these issues. Please tell me if you'd be interested.
Update: Using the frame David Lu suggests in his comment, plus a couple of changes in openni_tracker.xml
and openni_tracker.cpp
I've prepared a patch that should fix these issues. You need to run the openni_tracker
node by using the new openni_tracker.launch
file that should by added by the patch.
I must admit I'm not used to create patch files, so if there's something wrong you can easily make the changes manually by inspecting the file.
You can find the file here: http://snipt.org/xHmk