Visual Servoing Platform
version 3.6.1 under development (2024-11-15)
|
#include <visp3/core/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) |
Direct or inverse exponential map computation.
The exponential map gives the relationship between the velocity of a moving body and its displacement:
where is the velocity skew vector at the previous iteration applied during seconds at point in frame , while is the corresponding displacement.
This class allows to compute the direct or the inverse exponential map.
where is a reference frame. With direct(), the velocity skew vector is applied during 1 second considering . With direct(const vpColVector &, const double &) the sampling time can be set to an other value where the second argument is .
A displacement is represented as an homogeneous matrix implemented in vpHomogeneousMatrix. A velocity is represented as a 6 dimension velocity skew vector , where is a velocity translation vector with values in m/s and a velocity rotation vector with values expressed in rad/s.
Definition at line 89 of file vpExponentialMap.h.
|
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 double &).
v | : Instantaneous velocity skew represented by a 6 dimension vector where is a translation velocity vector and is a rotation velocity vector. |
Definition at line 54 of file vpExponentialMap.cpp.
Referenced by vpMbDepthDenseTracker::computeVVS(), vpMbDepthNormalTracker::computeVVS(), vpMbEdgeTracker::computeVVS(), vpMbGenericTracker::computeVVS(), vpMbEdgeTracker::computeVVSFirstPhasePoseEstimation(), vpPose::poseVirtualVS(), vpPose::poseVirtualVSrobust(), vpRobotBebop2::setVelocity(), and vpSimulatorCamera::setVelocity().
|
static |
Compute the exponential map. The inverse function is inverse().
v | : Instantaneous velocity skew represented by a 6 dimension vector where is a translation velocity vector and is a rotation velocity vector. |
delta_t | : Sampling time . Time during which the velocity is applied. |
Definition at line 74 of file vpExponentialMap.cpp.
References vpRotationMatrix::buildFrom(), vpException::dimensionError, vpHomogeneousMatrix::insert(), vpMath::mcosc(), vpMath::msinc(), vpMath::sinc(), and vpArray2D< Type >::size().
|
static |
Computes an instantaneous velocity skew from an homogeneous matrix. The inverse function is the exponential map, see direct().
M | : An homogeneous matrix corresponding to the displacement of an object during 1 second. |
Definition at line 141 of file vpExponentialMap.cpp.
Referenced by vpRobotBiclops::getDisplacement(), vpRobotAfma4::getVelocity(), vpRobotAfma6::getVelocity(), vpRobotViper650::getVelocity(), and vpRobotViper850::getVelocity().
|
static |
Compute an instantaneous velocity from an homogeneous matrix. The inverse function is the exponential map, see direct().
M | : An homogeneous matrix corresponding to the displacement of an object during seconds. |
delta_t | : Sampling time . Time during which the displacement is applied. |
Definition at line 160 of file vpExponentialMap.cpp.
References vpThetaUVector::buildFrom(), vpHomogeneousMatrix::extract(), vpMath::mcosc(), vpMath::msinc(), and vpMath::sinc().