ViSP  2.8.0

#include <vpExponentialMap.h>

Static Public Member Functions

static vpHomogeneousMatrix direct (const vpColVector &v)
 
static vpHomogeneousMatrix direct (const vpColVector &v, const double &delta_t)
 
static vpColVector inverse (const vpHomogeneousMatrix &M)
 
static vpColVector inverse (const vpHomogeneousMatrix &M, const double &delta_t)
 

Detailed Description

Direct or inverse exponential map computation.

  • The direct exponential map allows to determine a displacement from a velocity vector applied during a sampling time. With direct() the sampling time is set to 1 second. With direct(const vpColVector &, const float &) the sampling time can be set to an other value.
  • The inverse exponential map allows to compute a velocity vector from a displacement measured during a time interval. With inverse() the time interval also called sampling time is set to 1 second. With inverse(const vpHomogeneousMatrix &, const float &) the sampling time can be set to an other value.

The displacement is represented as an homogeneous matrix (vpHomogeneousMatrix). Velocities are represented as a $ [{\bf t}, {\bf \theta u} ]^t $ 6 dimension vector where $ t $ is a translation vector (see vpTranslationVector) and $ \theta u $ a rotation vector (see vpThetaUVector).

Definition at line 81 of file vpExponentialMap.h.

Member Function Documentation

vpHomogeneousMatrix vpExponentialMap::direct ( const vpColVector v)
static

Compute the exponential map. The inverse function is inverse(). The sampling time is here set to 1 second. To use an other value you should use direct(const vpColVector &, const float &).

Parameters
v: Instantaneous velocity represented by a 6 dimension vector $ [{\bf t}, {\bf \theta u}]^t $ where $ {\bf t} $ is a translation vector and $ {\bf \theta u} $ is a rotation vector (see vpThetaUVector). $ {\bf v} = [t_x, t_y, t_z, {\theta u}_x, {\theta u}_y, {\theta u}_z] $ (see vpTranslationVector and vpThetaUVector).
Returns
An homogeneous matrix $ \bf M $ computed from an instantaneous velocity $ \bf v $. If $ \bf v $ is expressed in frame c, $ {\bf M} = {^c}{\bf M}_{c_{new}} $.
See also
inverse(const vpHomogeneousMatrix &)
Examples:
calibrateTsai.cpp, and exponentialMap.cpp.

Definition at line 65 of file vpExponentialMap.cpp.

Referenced by vpHomography::computeDisplacement(), vpMbEdgeKltTracker::computeVVS(), vpMbKltTracker::computeVVS(), vpMbEdgeTracker::computeVVS(), vpPose::poseVirtualVS(), vpPose::poseVirtualVSrobust(), vpRobotCamera::setVelocity(), and vpSimulatorCamera::setVelocity().

vpHomogeneousMatrix vpExponentialMap::direct ( const vpColVector v,
const double &  delta_t 
)
static

Compute the exponential map. The inverse function is inverse().

Parameters
v: Instantaneous velocity represented by a 6 dimension vector $ [{\bf t}, {\bf \theta u}]^t $ where $ {\bf t} $ is a translation vector and $ {\bf \theta u} $ is a rotation vector (see vpThetaUVector). $ {\bf v} = [t_x, t_y, t_z, {\theta u}_x, {\theta u}_y, {\theta u}_z] $ (see vpTranslationVector and vpThetaUVector).
delta_t: Sampling time $ \Delta t $. Time during which the velocity v is applied.
Returns
An homogeneous matrix $ \bf M $ computed from an instantaneous velocity $ \bf v $. If $ \bf v $ is expressed in frame c, $ {\bf M} = {^c}{\bf M}_{c_{new}} $.
See also
inverse(const vpHomogeneousMatrix &, const float &)

Definition at line 90 of file vpExponentialMap.cpp.

References vpRotationMatrix::buildFrom(), vpHomogeneousMatrix::insert(), vpMath::mcosc(), vpMath::msinc(), and vpMath::sinc().

vpColVector vpExponentialMap::inverse ( const vpHomogeneousMatrix M)
static

Compute an instantaneous velocity from an homogeneous matrix. The inverse function is the exponential map, see direct().

Parameters
M: An homogeneous matrix corresponding to a displacement.
Returns
Instantaneous velocity $ \bf v $ represented by a 6 dimension vector $ [{\bf t}, {\bf \theta u}]^t $ where $ {\bf \theta u} $ is a rotation vector (see vpThetaUVector) and $ \bf t $ is a translation vector: $ {\bf v} = [t_x, t_y, t_z, {\theta u}_x, {\theta u}_y, {\theta u}_z] $ (see vpTranslationVector and vpThetaUVector).
See also
direct(const vpColVector &)
Examples:
exponentialMap.cpp.

Definition at line 218 of file vpExponentialMap.cpp.

Referenced by vpRobotBiclops::getDisplacement(), vpRobotAfma4::getVelocity(), vpRobotAfma6::getVelocity(), vpRobotViper850::getVelocity(), and vpRobotViper650::getVelocity().

vpColVector vpExponentialMap::inverse ( const vpHomogeneousMatrix M,
const double &  delta_t 
)
static

Compute an instantaneous velocity from an homogeneous matrix. The inverse function is the exponential map, see direct().

Parameters
M: An homogeneous matrix corresponding to a displacement.
delta_t: Sampling time $ \Delta t $. Time during which the displacement is applied.
Returns
Instantaneous velocity $ \bf v $ represented by a 6 dimension vector $ [{\bf t}, {\bf \theta u}]^t $ where $ {\bf \theta u} $ is a rotation vector (see vpThetaUVector) and $ \bf t $ is a translation vector: $ {\bf v} = [t_x, t_y, t_z, {\theta u}_x, {\theta u}_y, {\theta u}_z] $ (see vpTranslationVector and vpThetaUVector).
See also
direct(const vpColVector &, const float &)

Definition at line 242 of file vpExponentialMap.cpp.

References vpThetaUVector::buildFrom(), vpHomogeneousMatrix::extract(), vpMath::mcosc(), vpMath::msinc(), and vpMath::sinc().