ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

TF loops in urdf with branches

asked 2014-06-16 15:47:32 -0600

Benny gravatar image

updated 2014-06-16 15:49:32 -0600

Hi I have noticed loops created in transform chain when I ask for a transform between the root to a child in a tree with multiple branches.

Eg: head    -> imu_link
            -> laser_link
            -> camera_link      -> camera_optical_frame

When I perform a tf_monitor from head to camera_optical_frame, I get a chain like this => head->laser_link->head->camera_link->camera_optical_frame.

The loop head->laser_link->head is unity when the links are stationary. It becomes a serious issue when the links are moving as this loop need not be unity. I understand TF is trying to match both time and frame and this might be a side effect of it as It is not taking a snapshot of the joint states before transforming but getting joint states as it computes. Is there any way to disable this. In a multi frame humanoid this is a serious cause of the TF to be slow. Currently in cases where I need TF lookup fast I use KDL and extract my chain of interest and perform the FK.

Please give me your opinions and suggestion on it. Could it be possible that the way I am setting up the robot might be wrong?

Thanking you, Benzun

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2014-06-17 04:06:30 -0600

updated 2014-06-17 05:44:09 -0600

Loops in a tf setup generally point towards an error of your robot setup (for example having a fixed joint between head and laser_link in your URDF, but also having a static transform publisher running, publishing the same transform separately). In my years of using ROS on robots (including high number of DOF humanoid systems) this never occured (and if something similar occured, it was always due to a faulty robot setup). You might want to keep a close look on your tf_monitor output and see if the "source" switches between different nodes for the publisher of your head->laser_link transform.

edit flag offensive delete link more


Thank you Stefan. I will look into more closely at the TF monitor and see if there are two publishers.

Benny gravatar image Benny  ( 2014-06-17 11:18:02 -0600 )edit

Question Tools

1 follower


Asked: 2014-06-16 15:47:32 -0600

Seen: 439 times

Last updated: Jun 17 '14