# Kinematics - Changing Frame-Of-Reference

The space coordinate system that we choose is somewhat arbitrary, perhaps we may choose orthogonal (mutually perpendicular) x,y and z coordinates that align with the surface of the earth where we happen to be, or we could choose any other convenient alignment. In the same way the origin point of the coordinate system is similarly arbitrary.

This can be useful as changing the frame of reference (different observers) in an appropriate way could simplify the mathematics.

When we go on to look at dynamics we shall see that the laws of motion are independent of certain changes in the coordinate system such as:

• time shift
• space translation
• space rotation
• uniform linear velocity

We can think of these as symmetries.

This means that if we do a mechanics experiment where the frame of reference is transformed in any of these ways then we will get the same result (provided that we are consistent: if we are using some equation then all the quantities in that equation must be measured in the same coordinate system). in fact this can be stated in a stronger way: there is no way, by doing physics experiments that we can determine an absolute time, space or velocity, these things always have to be measured relative to something. This relativity principle applies both to Newtonian and Einsteinian physics although, as we will see below, the nature of the velocity transform depends on which of these we are using.

There may be other symmetries, for instance, reflection in space or time, however there are some frames of reference which will alter the laws of physics, for example, where the frame of reference is accelerating or in a constant angular velocity.

We will now look at these changes or transforms individually in more detail.

## Time Shift Transform

We can change the frame of reference by shifting the timeframe as follows:

t'=t - t0

where:

• t' = time in new frame of reference (scalar value)
• t0 = time in new frame of reference when t=0 (scalar value)
• t = time in original frame of reference (scalar value)

Alternatively we could use t'=t + t0 if we defined t0 as time in original frame of reference when t'=0

Another way to express this is to represent space-time as a 4 dimensional vector in which case, for newtonian physics, we get:

 t' x' y' z'
=
 t0 0 0 0
+
 t x y z

Time is not absolute in either Newtonian or Einsteinian physics in the sense that there is no preferred origin (except perhaps the time of the big bang?) but in Einsteinian physics time is even less absolute in that time intervals change due to relative velocity.

## Space Translation Transform

We can change the frame of reference by shifting the origin as follows:

x'=x - x0

where:

• x' = position in new frame of reference (vector value)
• x0 = position in new frame of reference when x=0 (vector value)
• x = position in original frame of reference (vector value)

Alternatively we could use x'=x + x 0 if we defined x 0 as time in original frame of reference when x'=0

Another way to express this is to represent space-time as a 4 dimensional vector in which case, for newtonian physics, we get:

 t' x' y' z'
=
 0 x0 y0 z0
+
 t x y z

Position is not absolute in either Newtonian or Einsteinian physics in the sense that there is no preferred origin but in Einsteinian physics distance is even less absolute in that distances change due to relative velocity.

## Space Rotation Transform

In the same way we can rotate the space frame as follows:

 t' x' y' z'
=
 1 0 0 0 0 rxx rxy rxz 0 ryx ryy ryz 0 rzx rzy rzz
 t x y z

## Uniform Linear Velocity Transform

The transform between moving frames depends on whether we are using Newtonian or Einsteinian physics in Newtonian physics we use the Galilean transform and in Einsteinian physics we use the Lorentz transform.

### Galilean transform

Assuming the relative motion 'v' is along the x dimension then x -> x0 + vxt

or if we have components of velocity in all dimensions the transform will be:

 t' x' y' z'
=
 1 0 0 0 vx 1 0 0 vy 0 1 0 vz 0 0 1
 t x y z

where:

• vx,vy,vz= relative velocity of the two reference frames in x,y and z directions.
• x,y,z= position in original frame.
• x',y',z'= position in transformed frame.

in other words point:

 t x y z
is transformed to:
 t x + vxt y + vyt z + vzt

The nature of this transform is a shear (also known as skew) transform: —» When doing this we choose to make time 'absolute' in that the time lines are left horizontal wheras the position lines are skewed althogh I guess that this is just a covention and we could have skewed the time and made the distance absolute.

# Practical Issues

At first, it may seem a bit academic to transform these quantities into different frames-of-reference but, this is important for solving practical problems like collisions. For instance, the two objects colliding will have their inertial tensors defined in their own local coordinates, but when we work out the collision response, the impulse will have to be calculated in some common coordinate system. What we are doing here is observing the same particle or solid object from different frames-of-reference. When the frames-of-reference are static (not moving relative to each other). Then the Newtonian laws will apply, regardless of where, or which direction, that we are looking at them from, provided that we are consistent about measuring all quantities on the same frame-of-reference.

It may be that the transform is changing with time, for example, if we are trying to solve a collision response, we might want to work in the frame-of-reference of one of the objects that is colliding. This object may be moving, so its frame-of-reference is moving with respect to the absolute coordinate system.

Do all the laws of physics apply when observing them from a moving frame-of-reference? If the frame-of-reference is moving with a constant linear velocity, then the Newtonian laws will apply just the same. A stationery object in one frame-of-reference may appear to be moving in another, but provided that we are constant about which frame-of-reference that we are working in, neither will contravene the laws. (Einsteins laws may not apply, the speed of light is the same in each frame-of-reference, relativity is not relative to the frame-of-reference - we are interested in slow speed interactions so this is not an issue for us).

However, if the frame-of-reference has angular motion (even if its constant), or if the frame-of-reference is accelerating, or if it has some irregular motion, then the Newtonian laws will not apply in this frame-of-reference.

To take an example, imagine a solid object travailing in free space, it may be spinning and have linear velocity as well. We may want to work in this objects own coordinate system, because this frame-of-reference is rotating, the Newtonian laws may not apply, for example an object which is stationary in the absolute frame-of-reference will appear to be traveling in a spiral in this objects frame of reference. An object with no forces acting on it should not be moving in a spiral, so Newtonian laws do not apply in this frame-of-reference. However, if we want to apply this inertia tensor, then we have to work in the local coordinate system of the rotating object. x y z
=
 ixx ixy ixz iyx iyy iyz izx izy izz x y z

So, we have to be careful. When we are calculating torques and forces, we often want to work in its local coordinate system, but when we are calculating motion we probably want to work in absolute coordinates.

### Using matrix algebra to calculate transforms to other frames-of-reference

As described here, a 4x4 matrix can be used to represent a rotation and a translation in 3 dimensions. So we can use matrix algebra to translate from one frame of reference to another.

The transform will take a 3d vector representing a point in absolute coordinates and convert it into a 3d vector representing a point in absolute coordinates: a = [T] l

It is possible to have many layers of one frames-of-reference inside another. For example, if we know the position of the moon relative to the earth [Tme] and we know the position of the earth in the frame-of-reference of the sun [Tes], then we could work out the position of a point on the moon in the frame of reference of the sun [Tms].

It turns out that transforms can be concatenated by multiplying their corresponding matrices. So [Tms] = [Tes]*[Tme].

One way to represent this is to use a scene graph. We could use a scene graph is a similar way to VRML. We could put dynamics information into the scene graph in the same way that shape information is. In this page I would like to work out the effect of transforming dynamics information in this way. The transform allows us to plug in a coordinate in the local frame-of-reference and get the coresponding coordinate in the absolute frame-of-reference.

 Pax Pay Paz 1
=
 rxx rxy rxz tx ryx ryy ryz ty rzx rzy rzz tz 0 0 0 1
 Plx Ply Plz 1
=
 Plx * rxx + Ply * rxy + Plz * rxz + tx Plx * ryx + Ply * ryy + Plz * ryz + ty Plx * rzx + Ply * rzy + Plz * rzz + tz 1

For Solid objects, we need to specify both the location and the orientation of the object to define its position. So for solid objects we can easily translate its centre-of-mass (c-of-m) in this way, but how do we translate its orientation? One way that occurred to me would be to, take a point an infinitesimal distance away from from the c-of-m, translate that, and then see the orientation of this point relative to the translated c-of-m.

 Pax' Pay' Paz' 1
=
 rxx rxy rxz tx ryx ryy ryz ty izx izy izz tz 0 0 0 1
 Plx + dPlx Ply + dPly Plz + dPlz 1
=
 (Plx + dPlx) * rxx + (Ply + dPly) * rxy + (Plz + dPlz) * rxz + tx (Plx + dPlx) * ryx + (Ply + dPly) * ryy + (Plz + dPlz) * ryz + ty (Plx + dPlx) * rzx + (Ply + dPly) * rzy + (Plz + dPlz) * rzz + tz 1

So the relative position is given by:

 dPax dPay dPaz 1
=
 Pax' Pay' Paz' 1
-
 Pax Pay Paz 1
=
 dPlx * rxx + dPly * rxy + dPlz * rxz dPlx * ryx + dPly * ryy + dPlz * ryz dPlx * rzx + dPly * rzy + dPlz * rzz 1
=
 rxx rxy rxz 0 ryx ryy ryz 0 izx izy izz 0 0 0 0 1
 dPlx dPly dPlz 1

So to transform a movement, then we transform it by the rotational part of the transform without the translational part of the matrix. Alternatively, if we don't want to modify the transform matrix, we could just use 0 for the 4th row of a relative movement vector, then the translational part will automatically be ignored.

 dPax dPay dPaz 0
= [T]
 dPlx dPly dPlz 0

But if we measuring orientation with 3 angles, θx, θy and θz. How can we translate this with [T]? This may seem a bit stange as we are using [T] to define the rotation of the frame-of-reference and θx, θy and θz to define the orientation in each frame-of-reference. The advantage of using θx, θy and θz would be that this notation would fit in better with the physics equations.

### Using 6 dimensional vectors to calculate transforms to other frames of reference

For Solid objects, we need to specify both the location and the orientation of the object to define its position. It might be useful if we could represent the transform of both location and orientation in one equation. To do this we need a 6x6 matrix as the position has 6 degrees of freedom.

I am not sure if this will work for position because the normal rules of algebra don't apply when combining rotations (see rotations). Can anyone help me prove if this will work?

 θax θay θaz Pax Pay Paz
=
 m00 m01 m02 m03 m04 m05 m10 m11 m12 m13 m14 m15 m20 m21 m22 m23 m24 m25 m30 m31 m32 m33 m34 m35 m40 m41 m42 m43 m44 m45 m50 m51 m52 m53 m54 m55
 θlx θly θlz Plx Ply Plz

However I am sure it would work for velocities because infinitesimally small rotations can be combined in the usual way.

 wax way waz vax vay vaz
=
 m00 m01 m02 m03 m04 m05 m10 m11 m12 m13 m14 m15 m20 m21 m22 m23 m24 m25 m30 m31 m32 m33 m34 m35 m40 m41 m42 m43 m44 m45 m50 m51 m52 m53 m54 m55
 wx wy wz vx vy vz

This 6x6 matrix does not contain any extra information than the 4x4 transform [T] (even the 4x4 transform has redundant information when we are considering only a rotation and translation).

However, multiplication of a 6d vector by a 6x6 matrix, might be a lot easier than multiPlying 4x4 matrix by a 4x4 matrix (which we would have to do several times if we are going to represent rotations by using matrices).

The advantage of this notation is that:

• The linear and angular quantities are dealt with is the same equation.
• The angular velocities and accelerations are defined in a way that is consistent with the usual dynamics equations.

Issues:

• Not sure if we can use this to transform points.
• Not sure how we would concatinate transforms (transform within a transform).

## Point ( )

Every coordinate point in the local frame of reference can be transformed to a coordinate in the absolute frame of reference a = [T] l . This can be thought of as the same point just measured in a different coordinate reference. A solid object can be transformed in this way by seperately transforming each point that makes it up. This transform [T] is a 4x4 matrix and is capable of representing lots of tranforms such as sheer, scaleing, reflection, etc. which are not valid operations for a solid body, also it is very wasteful using a 4x4 matrix. Since we only want to represent translations and rotations, it may be more efficient to represent it in terms of a 3x3 rotation matrix [R] and a translation 0. a = [R] l + 0

Where:

• a is the position in absolute coordinates.
• [R] is a 3x3 rotational matrix
• l is the position in local coordinates.
• 0 is the linear translation.

But we still have the problem that [R] could be used to repesent invalid operations for a solid object, we need to ensure that [R] is orthogonal. The problem is that if a calculation involves lots of transforms then rounding errors could distort [R], therefore we need to normalise (or should that be orthogonalise) after tranforms are combined.

One way round this would be to work from the quaternion [Q] to represent the rotation, as the quaternion is easier to normalise: a =
 1 - 2 * ( yy + zz ) 2 * ( xy - zw ) 2 * ( xz + yw ) 2 * ( xy + zw ) 1 - 2 * ( xx + zz ) 2 * ( yz - xw ) 2 * ( xz - yw ) 2 * ( yz + xw ) 1 - 2 * ( xx + yy ) l + 0

where:

• xx = qx* qx
• xy = qx * qy
• xz = qx * qz
• xw = qx * qw
• yy = qy * qy
• yz = qy * qz
• yw = qy * qw
• zz = qz * qz
• zw = qz * qw
• qx, qy, qz and qw are the values of the quaternion.

## Linear Velocity( ) a = d a / dt = d[T] l /dT a = d a / dt = d
 rxx * Plx + rxy * Ply + rxz * Plz + tx ryx * Plx + ryy * Ply + ryz * Plz + ty rzx * Plx + rzy * Ply + rzz * Plz + tz 0
/dt

using partial differential equations:

d (u * v) / dt = u dv/dt + v du/dt

so, a =
 rxx * d Plx/dt + d rxx/dt * Plx + rxy * d Ply/dt + d rxy/dt * Ply + rxz * d Plz/dt +d rxz/dt * Plz + d tx/dt ryx * d Plx/dt + d ryx/dt * Plx + ryy * d Ply/dt + d ryy/dt * Ply + ryz * d Plz/dt + d ryz/dt * Plz + d ty/dt rzx * d Plx/dt + d rzx/dt * Plx + rzy * d Ply/dt + d rzy/dt * Ply + rzz * d Plz/dt + d rzz/dt * Plz + d tz/dt 0 a =
 rxx * d Plx/dt + rxy * d Ply/dt + rxz * d Plz/dt ryx * d Plx/dt + ryy * d Ply/dt + ryz * d Plz/dt rzx * d Plx/dt + rzy * d Ply/dt + rzz * d Plz/dt 0
+
 d rxx/dt * Plx + d rxy/dt * Ply + d rxz/dt * Plz d ryx/dt * Plx + d ryy/dt * Ply + d ryz/dt * Plz d rzx/dt * Plx + d rzy/dt * Ply + d rzz/dt * Plz 0
+
 d tx/dt d ty/dt d tz/dt 0

therefore: a = [T1] l + [T2] l + r

where:

• a = linear velocity of point in absolute coordinates
• l = linear velocity of point in local coordinates
• r = linear velocity of local coordinates relative to absolute coordinates
• [T1] = transform [T] with only rotational components (m03 = m02 = m01 =0)
• [T2] = rate of change of rotational components of [T]
•  d rxx / dt d rxy / dt d rxz / dt d tx / dt d ryx / dt d ryy / dt d ryz / dt d ty / dt d izx / dt d izy / dt d izz / dt d tz / dt 0 0 0 1

If the local coordinates are not rotated then: a = l + r

[T1]=
 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1
[T2]=
 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

## Angular Velocity ( ) We have particle or solid object which has an angular velocity wl about point pl when measured in local coordinates. What will be its angular velocity when these quantities are measured in absolute coodinates? In the most general case the transform itself may be changing itself, it may be representing a rotating frame-of-reference about a different point than the centre of the local rotation. As shown here = x So when we are working in absolute coordinates: a = a x a

and when we are working in local coordinates: l = l x l

So, substituting this in the above equations: a x a = [T1]( l x l) + [T2] l + r

Here I am stuck. can anyone help me continue? I think I am making incorrect assumptions here because the angular velocity of a solid object is just the rate of change of its orientation. The angular velocity of a particle on the object takes into account both the translation and the orientation of the object. So the angular velocity of a solid object and its component particles is different.

If the frame of reference is rotating about l= a then the angular velocities can be added: a = l + r

So although the frame-of-reference is moving about a different centre than the point is rotating, the absolute rotation is still the sum of the roations of the f-of-r and the local rotation. The actual motion may follow a much more complex path. See the following examples:

Thank you to the following for helping me with this:

### Method using Curl

I would like to try and prove that a = l + r using vector calculus.

Given that a = l + r

It is shown here that, for a solid object, that curl( a) = 2 a

So if curl(a + b) = curl(a) + curl(b) we could prove that a = l + r

The trouble is I can't find any indentity like curl(a + b) = curl(a) + curl(b)?

Can anyone help me?

## Angular Acceleration ( )

As with angular velocity, the absolute angular acceleration is the sum of the angular acceleration of the frame-of-reference and the local angular acceleration: a = l + r

 metadata block see also: Correspondence about this page Book Shop - Further reading. Where I can, I have put links to Amazon for books that are relevant to the subject, click on the appropriate country flag to get more details of the book or to buy it from them.       Robot Dynamics Algorithms (Kluwer International Series in Engineering and Computer Science, 22) Commercial Software Shop Where I can, I have put links to Amazon for commercial software, not directly related to the software project, but related to the subject being discussed, click on the appropriate country flag to get more details of the software or to buy it from them.

This site may have errors. Don't use for critical systems.