OSVR-Core  0.6-1962-g59773924
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
osvr::kalman::matrix_exponential_map Namespace Reference

Classes

class  ExponentialMapData
 Contained cached computed values. More...
 

Functions

template<typename T >
void avoidSingularities (T &&omega)
 
template<typename Derived >
double getAngle (Eigen::MatrixBase< Derived > const &omega)
 
template<typename Derived >
Eigen::Quaterniond getQuat (Eigen::MatrixBase< Derived > const &omega)
 

Detailed Description

Utilities for interacting with a "matrix exponential map vector" rotation parameterization/formalism, where rotation is represented as a 3D vector that is turned into a rotation matrix by applying Rodrigues' formula that resembles a matrix exponential.

Based on discussion in section 2.2.3 of:

Lepetit, V., & Fua, P. (2005). Monocular Model-Based 3D Tracking of Rigid Objects. Foundations and Trends® in Computer Graphics and Vision, 1(1), 1–89. http://doi.org/10.1561/0600000001

Not to be confused with the quaternion-related exponential map espoused in:

Grassia, F. S. (1998). Practical Parameterization of Rotations Using the Exponential Map. Journal of Graphics Tools, 3(3), 29–48. http://doi.org/10.1080/10867651.1998.10487493

Function Documentation

template<typename T >
void osvr::kalman::matrix_exponential_map::avoidSingularities ( T &&  omega)
inline

Adjust a matrix exponential map rotation vector, if required, to avoid singularities.

Parameters
omegaa 3D "matrix exponential map" rotation vector, which will be modified if required.

Definition at line 80 of file MatrixExponentialMap.h.

template<typename Derived >
double osvr::kalman::matrix_exponential_map::getAngle ( Eigen::MatrixBase< Derived > const &  omega)
inline

Gets the rotation angle of a rotation vector.

Parameters
omegaa 3D "exponential map" rotation vector

Definition at line 91 of file MatrixExponentialMap.h.

template<typename Derived >
Eigen::Quaterniond osvr::kalman::matrix_exponential_map::getQuat ( Eigen::MatrixBase< Derived > const &  omega)
inline

Gets the unit quaternion corresponding to the exponential rotation vector.

Parameters
omegaa 3D "exponential map" rotation vector

Definition at line 100 of file MatrixExponentialMap.h.