OSVR-Core
Classes | Functions
osvr::kalman::matrix_exponential_map Namespace Reference

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. More...

Classes

class  ExponentialMapData
 Contained cached computed values. More...
 

Functions

template<typename T >
void avoidSingularities (T &&omega)
 Adjust a matrix exponential map rotation vector, if required, to avoid singularities. More...
 
template<typename Derived >
double getAngle (Eigen::MatrixBase< Derived > const &omega)
 Gets the rotation angle of a rotation vector. More...
 
template<typename Derived >
Eigen::Quaterniond getQuat (Eigen::MatrixBase< Derived > const &omega)
 Gets the unit quaternion corresponding to the exponential rotation vector. More...
 

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

§ avoidSingularities()

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.

§ getAngle()

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

§ getQuat()

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