#include <quaternion.h>
Definition at line 92 of file quaternion.h.
Public Member Functions | |
| Quaternion () | |
| 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. | |
| 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 Quaternion &q) const |
| Overload / operator. | |
| Quaternion | conjugate () const |
| Conjugate. | |
| Quaternion | i () const |
| Quaternion inverse.
where | |
| Quaternion & | unit () |
| 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 |
| Quaternion time derivative. | |
| ReturnMatrix | E (const short sign) const |
| Matrix E. | |
| Real | norm () const |
| Return the quaternion norm. | |
| Real | dot_prod (const Quaternion &q) const |
| Quaternion dot product. | |
| 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 vector part. | |
| ReturnMatrix | R () const |
| Rotation matrix from a unit quaternion. | |
| ReturnMatrix | T () const |
| Transformation matrix from a quaternion. | |
Private Attributes | |
| Real | s_ |
| Quaternion scalar part. | |
| ColumnVector | v_ |
| Quaternion vector part. | |
| Quaternion::Quaternion | ( | const Matrix & | R | ) |
Constructor.
Cite_: Dam. The unit quaternion obtained from a matrix (see Quaternion::R())
First we find
:
Now the other values are:
The sign of
cannot be determined. Depending on the choice of the sign for s the sign of
change as well. Thus the quaternions
and
represent the same rotation, but the interpolation curve changed with the choice of the sign. A positive sign has been chosen.
Definition at line 120 of file quaternion.cpp.
| Quaternion Quaternion::operator+ | ( | const Quaternion & | rhs | ) | const |
Overload + operator.
The quaternion addition is
The result is not necessarily a unit quaternion even if
and
are unit quaternions.
Definition at line 203 of file quaternion.cpp.
| Quaternion Quaternion::operator- | ( | const Quaternion & | rhs | ) | const |
Overload - operator.
The quaternion soustraction is
The result is not necessarily a unit quaternion even if
and
are unit quaternions.
Definition at line 223 of file quaternion.cpp.
| Quaternion Quaternion::operator * | ( | const Quaternion & | rhs | ) | const |
Overload * operator.
The multiplication of two quaternions is
where
and
denote the scalar and vector product in
respectively.
If
and
are unit quaternions, then q will also be a unit quaternion.
Definition at line 243 of file quaternion.cpp.
| Quaternion Quaternion::conjugate | ( | ) | const |
Conjugate.
The conjugate of a quaternion
is
Definition at line 283 of file quaternion.cpp.
Referenced by i().
| Quaternion Quaternion::exp | ( | ) | const |
| Quaternion Quaternion::Log | ( | ) | const |
| Quaternion Quaternion::dot | ( | const ColumnVector & | w, | |
| const short | sign | |||
| ) | const |
Quaternion time derivative.
The quaternion time derivative, quaternion propagation equation, is
where
is the angular velocity vector expressed in the base frame. If the vector is expressed in the object frame,
, the time derivative becomes
Definition at line 388 of file quaternion.cpp.
References s_, sign(), and v_.
Referenced by Impedance::control().
| ReturnMatrix Quaternion::E | ( | const short | sign | ) | const |
Matrix E.
See Quaternion::dot for explanation.
Definition at line 426 of file quaternion.cpp.
References BODY_FRAME, sign(), threebythreeident, and x_prod_matrix().
Referenced by Impedance::control(), and Omega().
| Real Quaternion::norm | ( | ) | const |
| Real Quaternion::dot_prod | ( | const Quaternion & | q | ) | const |
Quaternion dot product.
The dot product of quaternion is defined by
Definition at line 445 of file quaternion.cpp.
Referenced by Impedance::control(), and Resolved_acc::torque_cmd().
| ReturnMatrix Quaternion::R | ( | ) | const |
Rotation matrix from a unit quaternion.
where
is a vector,
a rotation matrix and
q quaternion. The rotation matrix obtained from a quaternion is then
where
is the cross product matrix defined by
Definition at line 458 of file quaternion.cpp.
References s_, threebythreeident, v_, and x_prod_matrix().
Referenced by homogen_demo(), main(), Quaternion(), and Dynamics::set_robot_on_first_point_of_splines().
| ReturnMatrix Quaternion::T | ( | ) | const |
Transformation matrix from a quaternion.
See Quaternion::R() for equations.
Definition at line 499 of file quaternion.cpp.
References fourbyfourident, s_, v_, and x_prod_matrix().
Referenced by homogen_demo(), and main().
1.5.1