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.
Edit:
@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 robotics.stackexchange.com
).
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)
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.
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 ..
.. 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.
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.