0
$\begingroup$

Rosanswers logo

Hello,

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.

Link: https://youtu.be/oiPJZO2T00k

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


Originally posted by hpoleselo on ROS Answers with karma: 133 on 2019-02-06

Post score: 0


Original comments

Comment by PeteBlackerThe3rd on 2019-02-06:
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.

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

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" />
  </joint>  
  
  <link name="camera">
        <origin xyz="0 0 0" rpy="0 0 0"/>
  </link>

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

image description


Originally posted by hpoleselo with karma: 133 on 2019-02-07

This answer was ACCEPTED on the original site

Post score: 0

$\endgroup$

Your Answer

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