ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | Q&A
Ask Your Question

what is tf

asked 2017-09-07 06:47:48 -0500

updated 2017-09-07 07:40:05 -0500

NEngelhard gravatar image

Hey guys, I am all in all pretty new to computer science in general and learning ROS now. came across some tutorials on tf after completing the beginner tutorials. I want to use rososc but that's another story since it is not updated for kinetic and catkin and I'm still trying to work out how to make that work for me... anyway,

-explain what tf is used for as if I am a 5 year old. -why would I use it in developing robots? -what type of applications is it useful for?

edit retag flag offensive close merge delete


wow someone downvoted my question? am i supposed to be ashamed to be a beginner or something? sounds like you need to take a break if you can't even come up w a creative response and instead downvote the question.

moonspacedancer gravatar image moonspacedancer  ( 2017-09-07 08:18:49 -0500 )edit

I don't think the downvote was because you are asking a beginners question. We all started like that, and it is definitely nothing to be ashamed of.

I didn't downvote, but I can imagine some people don't appreciate the "like I'm 5" bit: ROS Answers is a beginners site, we already know that, so ..

gvdhoorn gravatar image gvdhoorn  ( 2017-09-07 08:21:57 -0500 )edit

.. adding that is unnecessary and makes you seem unnecessarily insecure. If something in an answer is unclear, you can always just ask for additional clarification or explanation.

gvdhoorn gravatar image gvdhoorn  ( 2017-09-07 08:24:30 -0500 )edit

oh ok, thanks it's based on a reddit group where people explain things like they are talking to extreme beginners. guess it's not some people's cup of tea. thank you. I just feel like if I don't say I am an absolute beginner it won't be concise enough for me to understand at this point.

moonspacedancer gravatar image moonspacedancer  ( 2017-09-07 08:40:03 -0500 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2017-09-07 08:26:38 -0500

gvdhoorn gravatar image

updated 2017-09-07 09:07:31 -0500

The question "what is TF" seems to be rather succinctly answered by its wiki page:

tf2 is the second generation of the transform library, which lets the user keep track of multiple coordinate frames over time. tf2 maintains the relationship between coordinate frames in a tree structure buffered in time, and lets the user transform points, vectors, etc between any two coordinate frames at any desired point in time.

And the first section -- What does tf2 do? Why should I use tf2? -- has this to say:

A robotic system typically has many 3D coordinate frames that change over time, such as a world frame, base frame, gripper frame, head frame, etc. tf2 keeps track of all these frames over time, and allows you to ask questions like:

  • Where was the head frame relative to the world frame, 5 seconds ago?
  • What is the pose of the object in my gripper relative to my base?
  • What is the current pose of the base frame in the map frame?

tf2 can operate in a distributed system. This means all the information about the coordinate frames of a robot is available to all ROS components on any computer in the system. Tf2 can operate with a central server that contains all transform information, or you can have every component in your distributed system build its own transform information database.

I'm assuming you already read that, but it wasn't clear enough.

If that is the case, it would help if you could clarify what wasn't clear and perhaps we can explain that.


@gvdhoorn I did read all of this. I am asking even more basically: what do all of these 'frames' have to do w my actual robot in space and why do I need to transform points, vectors or anything?

Right. I'm not going to explain this in too much detail, as that would be off-topic for this site (we're ROS Answers, not

So almost everything in robotics is concerned with where things are - either relative to the robot itself or relative to other things. Whenever a robot wants to interact with the real world, it will need to know where the things it wants to interact with are.

As robots are basically computers with sensors and actuators, they store references to objects as coordinates with some attached semantics. Those coordinates will need to be updated whenever either the robot moves, or other things move.

And keeping track of all of those coordinates and updating them becomes a really involved task if you move beyond a simple robot or robot application: I've worked on applications that tracked locations of hundreds of objects, updating multiple times per second over several hours and in a large volume of space.

We don't want to -- nor can we -- do that manually. And I also don't want to -- nor should we -- write software that does such things for each and every new robot that we happen ... (more)

edit flag offensive delete link more


@gvdhoorn I did read all of this. I am asking even more basically: what do all of these 'frames' have to do w my actual robot in space and why do I need to transform points, vectors or anything? is this for actual movement through space or what???

moonspacedancer gravatar image moonspacedancer  ( 2017-09-07 08:43:09 -0500 )edit

If you don't have any prior exposure to things like coordinate frames, transformations, linear algebra or robot kinematics (and dynamics), I can imagine that all of this seems rather strange to want to deal with. It would probably help if you can try to get a grasp of these concepts, as it will ..

gvdhoorn gravatar image gvdhoorn  ( 2017-09-07 09:01:26 -0500 )edit

.. make working with libraries such as TF a lot more understandable.

gvdhoorn gravatar image gvdhoorn  ( 2017-09-07 09:02:03 -0500 )edit

Note that for really simple robotics, all of this is probably not needed, but for anything a bit more complicated, dealing with spatial data with a temporal dimension is going to be a lot more feasible with something like TF.

gvdhoorn gravatar image gvdhoorn  ( 2017-09-07 09:02:53 -0500 )edit

thank you @gvdhoorn this answer plus comments has me in a new place understanding that I need to learn some requisite robotics in general to really get into it. I do study math but am only in precalculus so looking forward to linear and will definitely look into kinematics. thank you :)

moonspacedancer gravatar image moonspacedancer  ( 2017-09-08 14:27:41 -0500 )edit

like would TF be useful with a robot who uses machine vision and stuff like that?

moonspacedancer gravatar image moonspacedancer  ( 2017-09-08 14:28:45 -0500 )edit

like would TF be useful with a robot who uses machine vision

I think you should be able to answer that yourself: does machine vision at any point depend on / use the position of anything? If yes: TF can help. If no, probably not needed.

gvdhoorn gravatar image gvdhoorn  ( 2017-09-09 03:54:29 -0500 )edit

Hello, your comment was quite explanatory for me. Thank you for myself. Also, I would like to ask: If we are using lidar as a sensor and we see that the movement in the lidar is quite late compared to the robot when we perform imaging in rviz, can the tf transformation be the reason for these delays? @gvdhoorn

SuleKayiran gravatar image SuleKayiran  ( 2021-08-13 01:39:34 -0500 )edit

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: 2017-09-07 06:47:48 -0500

Seen: 6,532 times

Last updated: Sep 07 '17