chili-epfl / attention-tracker

136 stars 97 forks source link

Tf transform upside-down. #12

Closed pragmaticTNT closed 8 years ago

pragmaticTNT commented 8 years ago

The coordinate axis presented by the debugger (projected points mapped back onto the image) does not match the published tf transform displayed in RVIZ. The head coordinate axis is upside down and the movements are inverted (compared to those displayed by the debug image). inverted_axes

severin-lemaignan commented 8 years ago

Hello @pragmaticTNT , thanks for your report. It's difficult to see on the RViz screenshot how the frames are oriented... could you provide a clearer screenshot?

To be honest, the tf trnasformation code has been fairly well tested and extensively used, so I'd be surprised of such an issue... :-/ Note that we use the ROS convention for the camera (Z pointing forward, Y pointing up) when converting to TF.

pragmaticTNT commented 8 years ago

Here are some more screen shots of the of the head orientation. Doesn't the ROS convension specify suffix specify Z forward, X right, Y down for the suffix frame? (This is what is shown in the RVIZ models).
tf_inverted_update_1 tf_inverted_update_2

severin-lemaignan commented 8 years ago

@pragmaticTNT you've closed the issue because you've fixed the problem?

pragmaticTNT commented 8 years ago

No, sorry. I might have closed the issue by accident. Below is one more picture that may illustrate my dilemma. I have aligned the camera frame as Z-forward, Y-up, X-right in RVIZ and the head movements in the image matches the tf, but there seems to be a slight issue with the head pointing direction (see below). In the image stream the axis created from the projected points suggests that the head is pointing towards the camera - which it is -, but this is not so in the tf visualization. Is the pointing direction only suppose to work when the head is centered in the image? I agree that the code most likely works as intended, but I just want to understand why there is this disparity between the projected points axis and tf transform. Thank you for your time and patience.
tf_inverted_update2

severin-lemaignan commented 8 years ago

Hum... indeed, the disparity is surprising. May it be simply an issue with the perspective 3D projection used by RVIZ? In any case, I would check the actual angles viewed from ROS (something like rosrun tf_echo tf_echo camera_optical head_pose) and viewed from the face tracker (cf code here for the code to get the Euler angle)

pragmaticTNT commented 8 years ago

Just an update: I needed my camera_optical coordinates orientated X-left Y-down Z-forwards. I ended up applying transformations to the output of the head pose estimation. This only sort of fixes the problem... will try to look into the transformations some more. Anyway, thanks for your help @severin-lemaignan !