Difference between revisions of "Realization of transformations"

From Robotics
Jump to: navigation, search
Line 35: Line 35:
 
For a pure rotation there is no translation. Thus the translation quaternion <math>p</math> is a zero quaternion:
 
For a pure rotation there is no translation. Thus the translation quaternion <math>p</math> is a zero quaternion:
 
:<math>
 
:<math>
p_r=<math>0
+
p_r=0
 
</math>
 
</math>
  

Revision as of 17:01, 15 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 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 of a pure translation is always just 1. The translation quaternion p 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

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 is a zero quaternion:


p_r=0

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.