0
$\begingroup$

Rosanswers logo

When using the openni_tracker for skeletal tracking, all the skeletal frames being tracked have common parent frame "openni_depth_frame". Since the openni_depth_frame does not have a parent in the tf tree, I cannot transform the tracked joint positions from the "openni_depth_frame" to any other openni frame of the kinect, for instance "openni_rgb_optical_frame". I think the only solution is to link the "openni_depth_frame" to a frame in the hierarchy of the kinect drivers with a static transform publisher. I have looked into the kinect_frames in openni_camera/launch but cannot find a relation between the two. Does anyone know the transform between /openni_depth_frame and any other openni frame?

Thanks


Originally posted by Nash on ROS Answers with karma: 207 on 2012-02-08

Post score: 0

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

Hmm, that sounds odd to me. When I'm using the openni_tracker, I first launch the camera node (roslaunch openni_camera openni_node.launch) and then the openni_tracker. The first already includes static transform publishers for /openni_depth_frame, _depth_optical_frame etc. And as you wrote, the later publishes the skeleton frames with respect to openni_depth_frame. Hence, I see no problem, if you want to transform the skeleton frames into another frame of the Kinect. Did I miss something?


Originally posted by bit-pirate with karma: 2062 on 2012-02-08

This answer was ACCEPTED on the original site

Post score: 1


Original comments

Comment by bit-pirate on 2012-02-08:
You are correct. I thought that might be your goal. Regarding your real problem, are you not using the launch files in the openni_camera or openni_launch package? Or do the static transform publisher in them not work for you?

Comment by Nash on 2012-02-08:
I would still need to combine the trees and to do so I would need a relation between openni_rgb_optical_frame to openni_depth_frame

Comment by Nash on 2012-02-08:
If I map the transforms like you suggested, I would essentially make the robot mirror the human's movements. But I am interested in obtaining the "torso_skeleton" position with respect to the robot's "torso_lift_link", so that the robot could be aware of where the human is with respect to itself.

Comment by bit-pirate on 2012-02-08:
e.g. the transform torso_skeleton -> hand_skeleton is used to define the target position for the robot (torso_robot -> hand_robot). Btw, please mark the replies, if they answer your question.

Comment by bit-pirate on 2012-02-08:
You are welcome. Another comment: If you like to map something from on tf tree to another, they don't need to be connected. For example, I mapped transform from the skeleton tree onto the robot for teleoperation.

Comment by Nash on 2012-02-08:
..on the robot other than openni_rgb_optical_frame. Additionally, openni_rgb_optical_frame is connected to the main tf tree, so if there was a static transform to relate the depth_frame to the rgb_optical_frame, this would combine the trees. Thanks for the reply!

Comment by Nash on 2012-02-08:
Im using the kinect which is mounted on the PR2. I am trying to transform the joint positions to a frame in the robot. Since the openni_tracker creates a new independent tree with openni_depth_optical_frame as the root and openni_depth_frame as its child, I cant transform them to another frame.

$\endgroup$

Your Answer

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