Difference between revisions of "Realization of transformations"

From Robotics
Jump to: navigation, search
Line 14: Line 14:
 
q' = e\ q\ e^*+ p
 
q' = e\ q\ e^*+ p
 
</math>
 
</math>
 +
 +
 +
----
 +
  
 
Assume a pure translation is to be described using the above notation. Thus the rotation quaternion <math>e</math> describes a rotation with an angle <math>\phi=0^\circ</math> which is actually no rotation at all. According to [[Rotations using quaternions]] <math>e</math> is defined as:
 
Assume a pure translation is to be described using the above notation. Thus the rotation quaternion <math>e</math> describes a rotation with an angle <math>\phi=0^\circ</math> which is actually no rotation at all. According to [[Rotations using quaternions]] <math>e</math> is defined as:
 
:<math>
 
:<math>
e(\vec{\mathbf{u}},0^\circ)=\cos{0^\circ} + \sin{0^ \circ}\vec{\mathbf{u}} = 1+0\cdot\vec{\mathbf{u}} = 1
+
e_t(\vec{\mathbf{u}},0^\circ)=\cos{0^\circ} + \sin{0^ \circ}\vec{\mathbf{u}} = 1+0\cdot\vec{\mathbf{u}} = 1
 
</math>
 
</math>
 
The rotation axis <math>\vec{\mathbf{u}}</math> can be any arbitrary unit vector as the sine of <math>0^\circ</math> is zero. So <math>e</math> of a pure translation is always just <math>1</math>.
 
The rotation axis <math>\vec{\mathbf{u}}</math> can be any arbitrary unit vector as the sine of <math>0^\circ</math> is zero. So <math>e</math> of a pure translation is always just <math>1</math>.
 
The translation quaternion <math>p</math> has scalar part <math>0</math> and the translation vector <math>\vec{\mathbf{p}}</math> as vector part:
 
The translation quaternion <math>p</math> has scalar part <math>0</math> and the translation vector <math>\vec{\mathbf{p}}</math> as vector part:
 
:<math>
 
:<math>
p=0\ \oplus\ \left[\begin{array}{c}p_x\\p_y\\p_z\end{array}\right] =  p_xi+p_yj+p_zk
+
p_t=0\ \oplus\ \left[\begin{array}{c}p_x\\p_y\\p_z\end{array}\right] =  p_xi+p_yj+p_zk
 +
</math>
 +
A translation by <math>2</math> on the <math>y</math>-axis for example would be
 +
:<math>
 +
\mathbf{Trans}(y,2) \eqiv \left\{1,2j\right\}
 
</math>
 
</math>
  

Revision as of 16:54, 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 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

Failed to parse (unknown function "\eqiv"): \mathbf{Trans}(y,2) \eqiv \left\{1,2j\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.