![]() |
Visual Servoing Platform
version 3.2.0
|
#include <vpPoseVector.h>
Public Member Functions | |
vpPoseVector () | |
vpPoseVector (const double tx, const double ty, const double tz, const double tux, const double tuy, const double tuz) | |
vpPoseVector (const vpHomogeneousMatrix &M) | |
vpPoseVector (const vpTranslationVector &tv, const vpThetaUVector &tu) | |
vpPoseVector (const vpTranslationVector &tv, const vpRotationMatrix &R) | |
virtual | ~vpPoseVector () |
vpPoseVector | buildFrom (const double tx, const double ty, const double tz, const double tux, const double tuy, const double tuz) |
vpPoseVector | buildFrom (const vpHomogeneousMatrix &M) |
vpPoseVector | buildFrom (const vpTranslationVector &tv, const vpThetaUVector &tu) |
vpPoseVector | buildFrom (const vpTranslationVector &tv, const vpRotationMatrix &R) |
void | extract (vpRotationMatrix &R) const |
void | extract (vpThetaUVector &tu) const |
void | extract (vpTranslationVector &tv) const |
void | extract (vpQuaternionVector &q) const |
vpRotationMatrix | getRotationMatrix () const |
vpThetaUVector | getThetaUVector () const |
vpTranslationVector | getTranslationVector () const |
void | load (std::ifstream &f) |
double & | operator[] (unsigned int i) |
const double & | operator[] (unsigned int i) const |
void | print () const |
int | print (std::ostream &s, unsigned int length, char const *intro=0) const |
void | resize (const unsigned int nrows, const unsigned int ncols, const bool flagNullify=true) |
void | save (std::ofstream &f) const |
void | set (const double tx, const double ty, const double tz, const double tux, const double tuy, const double tuz) |
vpRowVector | t () const |
Deprecated functions | |
vp_deprecated void | init () |
Inherited functionalities from vpArray2D | |
unsigned int | getCols () const |
double | getMaxValue () const |
double | getMinValue () const |
unsigned int | getRows () const |
unsigned int | size () const |
void | resize (const unsigned int nrows, const unsigned int ncols, const bool flagNullify=true, const bool recopy_=true) |
vpArray2D< double > | hadamard (const vpArray2D< double > &m) const |
Static Public Member Functions | |
Inherited I/O from vpArray2D with Static Public Member Functions | |
static bool | load (const std::string &filename, vpArray2D< double > &A, const bool binary=false, char *header=NULL) |
static bool | loadYAML (const std::string &filename, vpArray2D< double > &A, char *header=NULL) |
static bool | save (const std::string &filename, const vpArray2D< double > &A, const bool binary=false, const char *header="") |
static bool | saveYAML (const std::string &filename, const vpArray2D< double > &A, const char *header="") |
Public Attributes | |
double * | data |
Protected Attributes | |
unsigned int | rowNum |
unsigned int | colNum |
double ** | rowPtrs |
unsigned int | dsize |
Related Functions | |
(Note that these are not member functions.) | |
enum | vpGEMMmethod |
void | vpGEMM (const vpArray2D< double > &A, const vpArray2D< double > &B, const double &alpha, const vpArray2D< double > &C, const double &beta, vpArray2D< double > &D, const unsigned int &ops=0) |
Implementation of a pose vector and operations on poses.
The vpPose class implements a complete representation of every rigid motion in the euclidian space.
The vpPose class is derived from vpArray2D<double>.
The pose is composed of a translation and a rotation minimaly represented by a 6 dimension pose vector as:
where is the pose from frame
to frame
, with
being the translation vector between these frames along the x,y,z axis and
, the axis-angle representation of the rotation
between these frames.
Translations are expressed in meters, while the angles in the axis-angle representation are expressed in radians.
To know more about the rotation representation, see vpThetaUVector documentation.
Definition at line 91 of file vpPoseVector.h.
vpPoseVector::vpPoseVector | ( | ) |
Default constructor that construct a 6 dimension pose vector where
is a rotation vector
and
is a translation vector
.
The pose vector is initialized to zero.
Definition at line 65 of file vpPoseVector.cpp.
vpPoseVector::vpPoseVector | ( | const double | tx, |
const double | ty, | ||
const double | tz, | ||
const double | tux, | ||
const double | tuy, | ||
const double | tuz | ||
) |
Construct a 6 dimension pose vector from 3 translations and 3
angles.
Translations are expressed in meters, while rotations in radians.
tx,ty,tz | : Translations ![]() |
tux,tuy,tuz | : Rotations ![]() |
Definition at line 82 of file vpPoseVector.cpp.
|
explicit |
Construct a 6 dimension pose vector from an homogeneous matrix
.
M | : Homogeneous matrix ![]() ![]() ![]() |
Definition at line 137 of file vpPoseVector.cpp.
vpPoseVector::vpPoseVector | ( | const vpTranslationVector & | tv, |
const vpThetaUVector & | tu | ||
) |
Construct a 6 dimension pose vector from a translation vector
and a
vector.
tv | : Translation vector ![]() |
tu | : ![]() |
Definition at line 105 of file vpPoseVector.cpp.
vpPoseVector::vpPoseVector | ( | const vpTranslationVector & | tv, |
const vpRotationMatrix & | R | ||
) |
Construct a 6 dimension pose vector from a translation vector
and a rotation matrix
.
tv | : Translation vector ![]() |
R | : Rotation matrix ![]() ![]() |
Definition at line 122 of file vpPoseVector.cpp.
|
inlinevirtual |
Destructor.
Definition at line 107 of file vpPoseVector.h.
vpPoseVector vpPoseVector::buildFrom | ( | const double | tx, |
const double | ty, | ||
const double | tz, | ||
const double | tux, | ||
const double | tuy, | ||
const double | tuz | ||
) |
Build a 6 dimension pose vector from 3 translations and 3
angles.
Translations are expressed in meters, while rotations in radians.
tx,ty,tz | : Translations ![]() |
tux,tuy,tuz | : Rotations ![]() |
Definition at line 182 of file vpPoseVector.cpp.
vpPoseVector vpPoseVector::buildFrom | ( | const vpHomogeneousMatrix & | M | ) |
Build a 6 dimension pose vector from an homogeneous matrix
.
M | : Homogeneous matrix ![]() ![]() ![]() |
Definition at line 206 of file vpPoseVector.cpp.
vpPoseVector vpPoseVector::buildFrom | ( | const vpTranslationVector & | tv, |
const vpRotationMatrix & | R | ||
) |
Build a 6 dimension pose vector from a translation vector
and a rotation matrix
.
tv | : Translation vector ![]() |
R | : Rotation matrix ![]() ![]() |
Definition at line 249 of file vpPoseVector.cpp.
vpPoseVector vpPoseVector::buildFrom | ( | const vpTranslationVector & | tv, |
const vpThetaUVector & | tu | ||
) |
Build a 6 dimension pose vector from a translation vector
and a
vector.
tv | : Translation vector ![]() |
tu | : ![]() |
Definition at line 227 of file vpPoseVector.cpp.
void vpPoseVector::extract | ( | vpQuaternionVector & | q | ) | const |
Extract the rotation as a quaternion vector.
Definition at line 280 of file vpPoseVector.cpp.
void vpPoseVector::extract | ( | vpRotationMatrix & | R | ) | const |
Extract the rotation as a rotation matrix.
Definition at line 288 of file vpPoseVector.cpp.
void vpPoseVector::extract | ( | vpThetaUVector & | tu | ) | const |
Extract the rotation as a vector.
Definition at line 271 of file vpPoseVector.cpp.
void vpPoseVector::extract | ( | vpTranslationVector & | tv | ) | const |
Extract the translation vector from the homogeneous matrix.
Definition at line 261 of file vpPoseVector.cpp.
|
inlineinherited |
Return the number of columns of the 2D array.
Definition at line 145 of file vpArray2D.h.
|
inherited |
Return the array max value.
Definition at line 693 of file vpArray2D.h.
|
inherited |
Return the array min value.
Definition at line 676 of file vpArray2D.h.
vpRotationMatrix vpPoseVector::getRotationMatrix | ( | ) | const |
Return the rotation matrix that corresponds to the rotation part of the pose vector.
Definition at line 303 of file vpPoseVector.cpp.
|
inlineinherited |
Return the number of rows of the 2D array.
Definition at line 155 of file vpArray2D.h.
vpThetaUVector vpPoseVector::getThetaUVector | ( | ) | const |
Return the vector that corresponds to the rotation part of the pose vector.
Definition at line 313 of file vpPoseVector.cpp.
vpTranslationVector vpPoseVector::getTranslationVector | ( | ) | const |
Return the translation vector that corresponds to the translation part of the pose vector.
Definition at line 293 of file vpPoseVector.cpp.
Compute the Hadamard product (element wise matrix multiplication).
m | : Second matrix; |
Definition at line 713 of file vpArray2D.h.
|
inline |
Definition at line 206 of file vpPoseVector.h.
|
inlinestaticinherited |
Load a matrix from a file.
filename | : Absolute file name. |
A | : Array to be loaded |
binary | : If true the matrix is loaded from a binary file, else from a text file. |
header | : Header of the file is loaded in this parameter. |
Definition at line 321 of file vpArray2D.h.
void vpPoseVector::load | ( | std::ifstream & | f | ) |
Read a pose vector from an input file stream.
f | : The input file stream..Should be open before entering in this method. |
vpException::ioError | : If the input file stream is not open. |
Definition at line 380 of file vpPoseVector.cpp.
|
inlinestaticinherited |
Load an array from a YAML-formatted file.
filename | : absolute file name. |
A | : array to be loaded from the file. |
header | : header of the file is loaded in this parameter. |
Definition at line 433 of file vpArray2D.h.
|
inline |
Set the value of an element of the pose vector: r[i] = x.
i | : Pose vector element index |
This code produces the same effect:
Definition at line 154 of file vpPoseVector.h.
|
inline |
Get the value of an element of the pose vector: x = r[i].
i | : Pose vector element index |
Definition at line 173 of file vpPoseVector.h.
void vpPoseVector::print | ( | ) | const |
Prints to the standart stream the pose vector.
The following code
produces the output:
Definition at line 340 of file vpPoseVector.cpp.
int vpPoseVector::print | ( | std::ostream & | s, |
unsigned int | length, | ||
char const * | intro = 0 |
||
) | const |
Pretty print a pose vector. The data are tabulated. The common widths before and after the decimal point are set with respect to the parameter maxlen.
s | Stream used for the printing. |
length | The suggested width of each vector element. The actual width grows in order to accomodate the whole integral part, and shrinks if the whole extent is not needed for all the numbers. |
intro | The introduction which is printed before the vector. Can be set to zero (or omitted), in which case the introduction is not printed. |
Definition at line 421 of file vpPoseVector.cpp.
|
inline |
This function is not applicable to a pose vector that is always a 6-by-1 column vector.
vpException::fatalError | When this function is called. |
Definition at line 184 of file vpPoseVector.h.
|
inlineinherited |
Set the size of the array and initialize all the values to zero.
nrows | : number of rows. |
ncols | : number of column. |
flagNullify | : if true, then the array is re-initialized to 0 after resize. If false, the initial values from the common part of the array (common part between old and new version of the array) are kept. Default value is true. |
recopy_ | : if true, will perform an explicit recopy of the old data if needed and if flagNullify is set to false. |
Definition at line 170 of file vpArray2D.h.
|
inlinestaticinherited |
Save a matrix to a file.
filename | : Absolute file name. |
A | : Array to be saved. |
binary | : If true the matrix is saved in a binary file, else a text file. |
header | : Optional line that will be saved at the beginning of the file. |
Warning : If you save the matrix as in a text file the precision is less than if you save it in a binary file.
Definition at line 518 of file vpArray2D.h.
void vpPoseVector::save | ( | std::ofstream & | f | ) | const |
Save the pose vector in the output file stream.
f | : Output file stream. Should be open before entering in this method. |
vpException::ioError | : If the output stream is not open. |
Definition at line 361 of file vpPoseVector.cpp.
|
inlinestaticinherited |
Save an array in a YAML-formatted file.
filename | : absolute file name. |
A | : array to be saved in the file. |
header | : optional lines that will be saved at the beginning of the file. Should be YAML-formatted and will adapt to the indentation if any. |
Here is an example of outputs.
Content of matrix.yml:
Content of matrixIndent.yml:
Definition at line 611 of file vpArray2D.h.
void vpPoseVector::set | ( | const double | tx, |
const double | ty, | ||
const double | tz, | ||
const double | tux, | ||
const double | tuy, | ||
const double | tuz | ||
) |
Set the 6 dimension pose vector from 3 translations and 3
angles.
Translations are expressed in meters, while rotations in radians.
tx,ty,tz | : Translations ![]() |
tux,tuy,tuz | : Rotations ![]() |
Definition at line 154 of file vpPoseVector.cpp.
|
inlineinherited |
Return the number of elements of the 2D array.
Definition at line 157 of file vpArray2D.h.
vpRowVector vpPoseVector::t | ( | ) | const |
Definition at line 395 of file vpPoseVector.cpp.
References vpArray2D< Type >::data, vpArray2D< double >::data, and vpArray2D< double >::rowNum.
|
related |
This function performs generalized matrix multiplication: D = alpha*op(A)*op(B) + beta*op(C), where op(X) is X or X^T. Operation on A, B and C matrices is described by enumeration vpGEMMmethod().
For example, to compute D = alpha*A^T*B^T+beta*C we need to call :
If C is not used, vpGEMM must be called using an empty array null. Thus to compute D = alpha*A^T*B, we have to call:
vpException::incorrectMatrixSizeError | if the sizes of the matrices do not allow the operations. |
A | : An array that could be a vpMatrix. |
B | : An array that could be a vpMatrix. |
alpha | : A scalar. |
C | : An array that could be a vpMatrix. |
beta | : A scalar. |
D | : The resulting array that could be a vpMatrix. |
ops | : A scalar describing operation applied on the matrices. Possible values are the one defined in vpGEMMmethod(): VP_GEMM_A_T, VP_GEMM_B_T, VP_GEMM_C_T. |
|
related |
Enumeration of the operations applied on matrices in vpGEMM() function.
Operations are :
|
protectedinherited |
Number of columns in the array.
Definition at line 75 of file vpArray2D.h.
|
inherited |
Address of the first element of the data array.
Definition at line 83 of file vpArray2D.h.
|
protectedinherited |
Current array size (rowNum * colNum)
Definition at line 79 of file vpArray2D.h.
|
protectedinherited |
Number of rows in the array.
Definition at line 73 of file vpArray2D.h.
|
protectedinherited |
Address of the first element of each rows.
Definition at line 77 of file vpArray2D.h.