Order of transformations
Hi!
I am confused about in which order to multiply transformations. Suppose I want to create a transformation that transfers a point from the WORLD frame to a frame called GOAL. I do have the transformations from WORLD to another frame TMP, and from TMP to GOAL (could for example be transformations obtained via a tflistener).
My intuition tells me that the transformation I want is (TMP->GOAL)*(WORLD->TMP), because that would first apply WORLD to TMP and then TMP to GOAL to a point. It however seems that (WORLD->TMP) * (TMP->GOAL) is correct in order to be published. This would make sense to me if ROS pre-multiplied points (i.e., p * M instead of M * p). Is that the case? If not, why else would that be?
Edit: I know that the tf package handels most of these things. However, I believe that there are cases where one should be able to do these transformations himself and I want to understand how this chaining works. I'd also be happy with hints to a good article or similar.
Does something preclude a tf lookup from world to goal? It would be useful to know what your tf lookups for the transforms you have are- which frame is which argument especially.
HI lucasw! Sure, that would mostly work too. But suppose I do have a camera consisting of a RGB and IR camera and I do have RGB->IR. I calibrate the camera to world using the IR frame, then I have WORLD->IR. If I wanted to calculate WORLD->RGB to include it into my tf tree, I would need to calc.
You can invert the RGB->IR transform and then put it into the tf tree as IR->RGB.