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

Difference between two rigid body transformations

asked 2012-08-25 07:30:08 -0600

ph4nt0m gravatar image


I would like to express the error between two rigid body transformations in terms of translation and rotation. What is the correct way to do this? I already know that you can determine the translational part (the norm of the 3x1 vector in the upper right corner) and rotational part (see angle theta here) of a single 4x4 matrix. But what kind of matrix should I use here?

Obviously, you have to consider some kind of "relative" transformation between the two original transformations. Most of the time, I see people using something like

Inverse[T1]*T2 or Inverse[T2]*T1,

which both lead to the same translation and angle. But what about the following?

T2*Inverse[T1] or T1*Inverse[T2]

Can somebody explain the difference between these two possibilities (maybe even geometrically)? Is there any reference for this kind of topic?

Thanks in advance!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2012-08-25 07:49:43 -0600

Aslund gravatar image

updated 2012-08-25 08:03:57 -0600

The best way to determine which transformation to inverse when confused is to draw the system. Here the transformations T1 and T2 are defined to a Origin/world frame. Now we want the transformation from T1 to T2 (the blue line). From the figure you can see that moving from T1 to Origin and from Origin to T2 will provide the same transformation. So we need to inverse T1. Therefore:
T12 = Inverse[T1] * T2
Transformation is like traveling a path and the difference reflect which direction you move. If we want the transformation from T2 to T1 it would be:
T21 = Inverse[T2] * T1
Of cause you will only have to inverse when the transformation have the opposit direction of the one you want to move.


Ps. regarding your question about the rotation the easiest way to calculate is by using the 3x3 rotation matrix and combine it with the 3x1 translation into a homogenous transformation matrix. With these matrixes you can calculate transformation with normal matrix operations. This paper looks like a good introduction into the concept

edit flag offensive delete link more


Thank you! The illustration already helps a bit, but why do you take the inverse at last? As far as I know, the transformations are applied from right to left if you transform a point x like this: T1 * T2 * x. So why isn't T12 = T2 * Inverse[T1] in your example?

ph4nt0m gravatar image ph4nt0m  ( 2012-08-25 08:22:53 -0600 )edit

I think it is a matter of style. I have learned it this way and then multiply backward. Sadly have the years only learned me that math is not an exact art

Aslund gravatar image Aslund  ( 2012-08-25 08:43:20 -0600 )edit

Question Tools

1 follower


Asked: 2012-08-25 07:30:08 -0600

Seen: 7,798 times

Last updated: Aug 25 '12