[Request] Support frame_prefix for TF publishing

I’m using Isaac to support multiple robots. I want to be able to visualize the Robot’s TFs on the same TF tree so I can see them all together in RViz. I also want to obtain transforms between robots by putting them all in the same TF, i.e. they all publish to /tf.

ROS1’s TF library supported this with tf_prefix. In ROS2 this is now called frame_prefix. This means that while all robots publish to the /tf topic, the frame_prefix gets prepended to all frame IDs. E.g. allowing you to do tf_buffer.lookupTransform ("robot1/base_link", "robot2/base_link").

However, the current Node Namespace attribute in the Isaac TF publisher does not do this. It only prepends to the tf topic name itself, causing the TF topic to publish to /robot1/tf. This is incorrect. For one, everything in ROS2 listens to /tf, not any other TF topic. E.g. RViz only listens to /tf. Having robots publishing to different TF topic names makes it impossible to look up transforms between robots.

Can support for frame_prefix be added, please?

1 Like

I’m experiencing the same issue and just wanted to check if you’ve found a solution for it

Hi @zliu9 , yes, I used the tf_relay package to republish /$ROBOT_NAME/tf to /tf, that also adds $ROBOT_NAME as a prefix to each tf frame.

Though I found the Python version introduces some lag. I think rewriting in C++ may be beneficial.

2 Likes

Thank you! I will try that way.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.