Homepage Demos Overview Downloads Tutorials Reference
Credits

ROBOOP::Quaternion Class Reference

#include <quaternion.h>

List of all members.


Detailed Description

Quaternion class definition.

Definition at line 82 of file quaternion.h.

Public Member Functions

 Quaternion ()
 Constructor.
 Quaternion (const Quaternion &q)
 Constructor.
 Quaternion (const Real angle_in_rad, const ColumnVector &axis)
 Constructor.
 Quaternion (const Real s, const Real v1, const Real v2, const Real v3)
 Constructor.
 Quaternion (const Matrix &R)
 Constructor.
Quaternionoperator= (const Quaternion &q)
 Overload = operator.
Quaternion operator+ (const Quaternion &q) const
 Overload + operator.
Quaternion operator- (const Quaternion &q) const
 Overload - operator.
Quaternion operator * (const Quaternion &q) const
 Overload * operator.
Quaternion operator * (const Real c) const
 Overload * operator, multiplication by a scalar.
Quaternion operator/ (const Quaternion &q) const
 Overload / operator.
Quaternion operator/ (const Real c) const
 Overload / operator, division by a scalar.
Quaternion conjugate () const
 Conjugate.
Quaternion i () const
 Quaternion inverse.

\[ q^{-1} = \frac{q^{*}}{N(q)} \]

where $q^{*}$ and $N(q)$ are the quaternion conjugate and the quaternion norm respectively.

Quaternionunit ()
 Normalize a quaternion.
Quaternion exp () const
 Exponential of a quaternion.
Quaternion power (const Real t) const
Quaternion Log () const
 Logarithm of a unit quaternion.
Quaternion dot (const ColumnVector &w, const short sign) const
ReturnMatrix E (const short sign) const
Real norm () const
 Return the quaternion norm.
Real dot_prod (const Quaternion &q) const
Real s () const
 Return scalar part.
void set_s (const Real s)
 Set scalar part.
ReturnMatrix v () const
 Return vector part.
void set_v (const ColumnVector &v)
 Set quaternion vector part.
ReturnMatrix R () const
ReturnMatrix T () const

Private Attributes

Real s_
 Quaternion scalar part.
ColumnVector v_
 Quaternion vector part.


Constructor & Destructor Documentation

ROBOOP::Quaternion::Quaternion  ) 
 

Constructor.

Definition at line 67 of file quaternion.cpp.

ROBOOP::Quaternion::Quaternion const Quaternion q  ) 
 

Constructor.

Definition at line 75 of file quaternion.cpp.

ROBOOP::Quaternion::Quaternion const Real  angle_in_rad,
const ColumnVector axis
 

Constructor.

Definition at line 82 of file quaternion.cpp.

ROBOOP::Quaternion::Quaternion const Real  s,
const Real  v1,
const Real  v2,
const Real  v3
 

Constructor.

Definition at line 106 of file quaternion.cpp.

ROBOOP::Quaternion::Quaternion const Matrix R  ) 
 

Constructor.

Cite_: Dam. The unit quaternion obtained from a matrix (see Quaternion::R())

\[ R(s,v) = \left[ \begin{array}{ccc} s^2+v_1^2-v_2^2-v_3^2 & 2v_1v_2+2sv_3 & 2v_1v_3-2sv_2 \\ 2v_1v_2-2sv_3 & s^2-v_1^2+v_2^2-v_3^2 & 2v_2v_3+2sv_1 \\ 2v_1v_3+2sv_2 &2v_2v_3-2sv_1 & s^2-v_1^2-v_2^2+v_3^2 \end{array} \right] \]

First we find $s$ :

\[ R_{11} + R_{22} + R_{33} + R_{44} = 4s^2 \]

Now the other values are:

\[ s = \pm \frac{1}{2}\sqrt{R_{11} + R_{22} + R_{33} + R_{44}} \]

\[ v_1 = \frac{R_{32}-R_{23}}{4s} \]

\[ v_2 = \frac{R_{13}-R_{31}}{4s} \]

\[ v_3 = \frac{R_{21}-R_{12}}{4s} \]

The sign of $s$ cannot be determined. Depending on the choice of the sign for s the sign of $v$ change as well. Thus the quaternions $q$ and $-q$ represent the same rotation, but the interpolation curve changed with the choice of the sign. A positive sign has been chosen.

Definition at line 117 of file quaternion.cpp.


Member Function Documentation

Quaternion ROBOOP::Quaternion::conjugate  )  const
 

Conjugate.

The conjugate of a quaternion $q = [s, v]$ is $q^{*} = [s, -v]$

Definition at line 325 of file quaternion.cpp.

Referenced by i().

Quaternion ROBOOP::Quaternion::dot const ColumnVector w,
const short  sign
const
 

Real ROBOOP::Quaternion::dot_prod const Quaternion q  )  const
 

Referenced by ROBOOP::Clik::endeff_pos_ori_err().

ReturnMatrix ROBOOP::Quaternion::E const short  sign  )  const
 

Quaternion ROBOOP::Quaternion::exp  )  const
 

Exponential of a quaternion.

Let a quaternion of the form $q = [0, \theta v]$ , q is not necessarily a unit quaternion. Then the exponential function is defined by $q = [\cos(\theta),v \sin(\theta)]$ .

Definition at line 378 of file quaternion.cpp.

Referenced by power().

Quaternion ROBOOP::Quaternion::i  )  const
 

Quaternion inverse.

\[ q^{-1} = \frac{q^{*}}{N(q)} \]

where $q^{*}$ and $N(q)$ are the quaternion conjugate and the quaternion norm respectively.

Definition at line 365 of file quaternion.cpp.

Referenced by operator/(), and Quaternion().

Quaternion ROBOOP::Quaternion::Log  )  const
 

Logarithm of a unit quaternion.

The logarithm function of a unit quaternion $q = [\cos(\theta), v \sin(\theta)]$ is defined as $log(q) = [0, v\theta]$ . The result is not necessary a unit quaternion.

Definition at line 407 of file quaternion.cpp.

Referenced by power().

Real ROBOOP::Quaternion::norm  )  const
 

Return the quaternion norm.

The norm of quaternion is defined by

\[ N(q) = s^2 + v\cdot v \]

Definition at line 340 of file quaternion.cpp.

Referenced by i(), and unit().

Quaternion ROBOOP::Quaternion::operator * const Real  c  )  const
 

Overload * operator, multiplication by a scalar.

$q = [s, v]$ and let $r \in R$ . Then $rq = qr = [r, 0][s, v] = [rs, rv]$

The result is not necessarily a unit quaternion even if $q$ is a unit quaternions.

Definition at line 272 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::operator * const Quaternion rhs  )  const
 

Overload * operator.

The multiplication of two quaternions is

\[ q = q_1q_2 = [s_1s_2 - v_1\cdot v_2, v_1 \times v_2 + s_1v_2 + s_2v_1] \]

where $\cdot$ and $\times$ denote the scalar and vector product in $R^3$ respectively.

If $q_1$ and $q_2$ are unit quaternions, then q will also be a unit quaternion.

Definition at line 249 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::operator+ const Quaternion rhs  )  const
 

Overload + operator.

The quaternion addition is

\[ q_1 + q_2 = [s_1, v_1] + [s_2, v_2] = [s_1+s_2, v_1+v_2] \]

The result is not necessarily a unit quaternion even if $q_1$ and $q_2$ are unit quaternions.

Definition at line 209 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::operator- const Quaternion rhs  )  const
 

Overload - operator.

The quaternion soustraction is

\[ q_1 - q_2 = [s_1, v_1] - [s_2, v_2] = [s_1-s_2, v_1-v_2] \]

The result is not necessarily a unit quaternion even if $q_1$ and $q_2$ are unit quaternions.

Definition at line 229 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::operator/ const Real  c  )  const
 

Overload / operator, division by a scalar.

Same explanation as multiplication by scaler.

Definition at line 302 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::operator/ const Quaternion q  )  const
 

Overload / operator.

Definition at line 290 of file quaternion.cpp.

Quaternion & ROBOOP::Quaternion::operator= const Quaternion q  ) 
 

Overload = operator.

Definition at line 200 of file quaternion.cpp.

Quaternion ROBOOP::Quaternion::power const Real  t  )  const
 

Definition at line 400 of file quaternion.cpp.

ReturnMatrix ROBOOP::Quaternion::R  )  const
 

Referenced by Quaternion(), and ROBOOP::Dynamics::set_robot_on_first_point_of_splines().

Real ROBOOP::Quaternion::s  )  const [inline]
 

Return scalar part.

Definition at line 113 of file quaternion.h.

Referenced by ROBOOP::Clik::endeff_pos_ori_err().

void ROBOOP::Quaternion::set_s const Real  s  )  [inline]
 

Set scalar part.

Definition at line 114 of file quaternion.h.

void ROBOOP::Quaternion::set_v const ColumnVector v  ) 
 

Set quaternion vector part.

Definition at line 316 of file quaternion.cpp.

ReturnMatrix ROBOOP::Quaternion::T  )  const
 

Quaternion & ROBOOP::Quaternion::unit  ) 
 

Normalize a quaternion.

Definition at line 353 of file quaternion.cpp.

ReturnMatrix ROBOOP::Quaternion::v  )  const [inline]
 

Return vector part.

Definition at line 115 of file quaternion.h.

Referenced by ROBOOP::Clik::endeff_pos_ori_err().


Member Data Documentation

Real ROBOOP::Quaternion::s_ [private]
 

Quaternion scalar part.

Definition at line 121 of file quaternion.h.

Referenced by conjugate(), exp(), Log(), norm(), operator *(), operator+(), operator-(), operator/(), operator=(), Quaternion(), s(), set_s(), and unit().

ColumnVector ROBOOP::Quaternion::v_ [private]
 

Quaternion vector part.

Definition at line 122 of file quaternion.h.

Referenced by conjugate(), exp(), Log(), norm(), operator *(), operator+(), operator-(), operator/(), operator=(), Quaternion(), set_v(), unit(), and v().


The documentation for this class was generated from the following files:

ROBOOP v1.21a
Generated Tue Aug 16 16:32:19 2005 by Doxygen 1.4.4