Difference between revisions of "Realization of transformations"

From Robotics
Jump to: navigation, search
Line 52: Line 52:
 
A rotation by <math>60^\circ</math> around the <math>z</math>-axis for example would be
 
A rotation by <math>60^\circ</math> around the <math>z</math>-axis for example would be
 
:<math>
 
:<math>
\begin{align}
+
\mathbf{Rot}(z,30^\circ) \equiv \left\{\cos{30^\circ} + \sin{30^\circ}\left[\begin{array}{c}0\\0\\1\end{array}\right],\ 0\right\} = \left\{\frac{\sqrt{3}}{2} + \frac{1}{2}k,\ 0\right\}
\mathbf{Rot}(z,30^\circ) \equiv \left\{\cos{30^\circ} + \sin{30^\circ}\left[\begin{array}{c}0\\0\\1\end{array}\right],\ 0\right\} = \left\{\frac{\sqrt3}}{2} + \frac{1}{2}k,\ 0\right\}
 
\end{align}
 
 
</math>
 
</math>
  

Revision as of 11:09, 16 October 2015

← Back: Composition of rotations Overview: Quaternions Next: ???

Quaternion notation for general transformations

Up to now transformations have been defined by homogeneous matrices combining a rotation matrix \mathbf{R} and a translation vector \vec{\mathbf{p}}. Now a new notation is introduced to represent a transformation using two quaternions e and p:


\mathbf{T} = \left[\begin{array}{cccc} & & & \\ & \mathbf{R} &  & \vec{\mathbf{p}} \\ & & & \\ 0 & 0 & 0 & 1\end{array}\right] \quad \equiv \quad \left\{e,p\right\}

The quaternion e is equivalent to \mathbf{R} and describes the rotation while p is defined as 0 \oplus \vec{\mathbf{p}} and so equivalent to the translation.


e \equiv \mathbf{R} \qquad \quad p = 0 \oplus \vec{\mathbf{p}}

Applying such a transformation to a quaternion q is done by first rotating q with e corresponding to the rotation equation and then adding p:


q' = e\ q\ e^*+ p

Assume a pure translation is to be described using the above notation. Thus the rotation quaternion e_t of a pure translation describes a rotation with an angle \phi=0^\circ which is actually no rotation at all. According to Rotations using quaternions e is defined as:


e_t(\vec{\mathbf{u}},0^\circ)=\cos{0^\circ} + \sin{0^ \circ}\vec{\mathbf{u}} = 1+0\cdot\vec{\mathbf{u}} = 1

The rotation axis \vec{\mathbf{u}} can be any arbitrary unit vector as the sine of 0^\circ is zero. So e_t of a pure translation is always just 1.

The translation quaternion p_t of a pure translation has the scalar part 0 and the translation vector \vec{\mathbf{p}} as vector part:


p_t=0\oplus\left[\begin{array}{c}p_x\\p_y\\p_z\end{array}\right] =  p_xi+p_yj+p_zk

So a pure translation by vector [p_x\ p_y\ p_z]^T is defined as:


\left\{e_t,p_t\right\}=\left\{1,\ p_xi+p_yj+p_zk\right\}

A translation by 2 on the y-axis for example would be


\mathbf{Trans}(y,2) \equiv \left\{1,2j\right\}

For a pure rotation there is no translation. Thus the translation quaternion p_r of a pure rotation is a zero quaternion:


p_r=0 \oplus \left[\begin{array}{c}0\\0\\0\end{array}\right] = 0

The rotation quaternion e_r of a pure rotation around an axis defined by a unit vector \vec{\mathbf{u}} by the angle \phi is:


e_r(\vec{\mathbf{u}},\phi)=\cos{\frac{\phi}{2}} + \sin{\frac{\phi}{2}}\vec{\mathbf{u}}

So a pure rotation is defined as:


\left\{e_r,p_r\right\}=\left\{\cos{\frac{\phi}{2}} + \sin{\frac{\phi}{2}}\vec{\mathbf{u}},\ 0\right\}

A rotation by 60^\circ around the z-axis for example would be


\mathbf{Rot}(z,30^\circ) \equiv \left\{\cos{30^\circ} + \sin{30^\circ}\left[\begin{array}{c}0\\0\\1\end{array}\right],\ 0\right\} = \left\{\frac{\sqrt{3}}{2} + \frac{1}{2}k,\ 0\right\}

Combination of transformations

It is known that a combination of transformations is defined as:


\begin{align}
\mathbf{T}_c = \mathbf{T}_2\mathbf{T}_1  = 
\left[\begin{array}{cccc} & & & \\ & \mathbf{R}_2\mathbf{R}_1 &  & \vec{\mathbf{p}}_2+\mathbf{R}_2\vec{\mathbf{p}}_1 \\ & & & \\ 0 & 0 & 0 & 1\end{array}\right]
=
\left[\begin{array}{cccc} & & & \\ & \mathbf{R}_c &  & \vec{\mathbf{p}}_c \\ & & & \\ 0 & 0 & 0 & 1\end{array}\right]
\quad \equiv \quad
\left\{e_c,p_c\right\}=\left\{e_2,p_2\right\}\left\{e_1,p_1\right\}
\end{align}

But how can the two quaternions e_c and p_c of the quaternion notation be calculated based on the quaternions of individual transformations? The first transformation leads to


q' = e_1\ q\ e_1^*+ p_1

Now the second transformation is applied on q'. The resulting equation can be solved using the distributive law for quaternions to determine e_c and p_c:


\begin{align}
q'' &= e_2\ q'\ e_2^*+ p_2 \\
&= e_2\Big(e_1qe_1^*+ p_1\Big)e_2^*+ p_2 \\
&= \Big(e_2e_1qe_1^*+ e_2p_1\Big)e_2^*+ p_2 \\
&= \underbrace{e_2e_1}_{e_c}q\underbrace{e_1^*e_2^*}_{e_c^*}+\underbrace{e_2p_1e_2^*+ p_2}_{p_c} \\
&= e_c\ q\ e_c^*+p_c \\
\end{align}

Thus the combination of two transformations can be denoted in quaternion notation as


\left\{e_c,p_c\right\}=\left\{e_2,p_2\right\}\left\{e_1,p_1\right\}=\left\{e_2e_1\ , \ e_2p_1e_2^*+p_2\right\}

Using the knowledge about addition of quaternions and rotations and composition of rotations using quaternions this can directly be determined regarding the homogeneous transformation matrix \mathbf{T}_c and its rotational and translational components \mathbf{R}_c and \vec{\mathbf{p}}_c.