Difference between two rigid body transformations

Hello,

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?

edit retag close merge delete

Sort by » oldest newest most voted

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

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?

( 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

( 2012-08-25 08:43:20 -0600 )edit