Ask Your Question

How to retrieve absolute pose in ROS

asked 2019-02-06 16:31:56 -0500

hpoleselo gravatar image

updated 2019-02-07 02:22:39 -0500

gvdhoorn gravatar image


i'm currently doing the detection of ArUco and Alvar fiducial markers (glued on a cube), by that trying to grasp the cube with the detection of the marker. The camera is mounted on the Panda from Franka Emika, which is controlled by ROS with the aid of ROS MoveIt! (I'm sending some joint_values to the robot so we can kind of scan the table where he is on). There's a link to a video where one can see what i'm really doing.


Technical part: I want to retrieve the absolute pose of the marker, i.e the transform from my first frame, in this case /world to ar_marker_3 and then send this to the robot as his goal. But for some reason (as seen in the video) every time the robot moves in the XY direction of the table, the frame of the marker varies as well, meaning the pose of the marker is actually not absolute (i presume). So my question is: is this correct? Or the way i'm thinking is wrong? I thought that the pose of the marker relative to the world SHOULD be always fixed since the marker is not moving.

I think this question maybe not specific to ROS but robotics in general, but i'm quite in a dead end so any helpful would be nice! Thanks! Pictures of the tf_tree if it helps..

C:\fakepath\tftree1.png C:\fakepath\tftree2.png

edit retag flag offensive close merge delete



The pose will initially be detected in the camera's optical frame. This will need to be transformed with the correct timestamp into the world frame. Only then will it be fixed in the world frame.

PeteBlackerThe3rd gravatar image PeteBlackerThe3rd  ( 2019-02-06 17:59:41 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2019-02-07 03:51:00 -0500

hpoleselo gravatar image

updated 2019-02-07 03:53:49 -0500

Hey, thanks! I managed to fix it. Actually the timestamps were correct, my tf_tree wasn't completely right, that was it. For whom it may interest: I was using panda_link8 as parent (and it had a strange orientation), meaning my camera would have as well. So i ended up using another frame as parent, i.e panda_hand in my .xacro file and then adding rotation on the Z-Axis rpy="0 0 1.5708" until the marker frame in RVIZ coincide with real life.

  <joint name="hand_camera_j" type="fixed">
    <origin xyz="${hand_to_camera_x} 0 ${hand_to_camera_z}" rpy="0 0 1.5708" />
    <parent link="panda_hand"/>
    <child link="camera" />

  <link name="camera">
        <origin xyz="0 0 0" rpy="0 0 0"/>

Final result: (Realize that panda_hand is the one centered on the flange, then underneath it the usb_cam i.e camera )

image description

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2019-02-06 16:31:56 -0500

Seen: 357 times

Last updated: Feb 07 '19