![]() |
Visual Servoing Platform version 3.6.0
|
#include <vpRxyzVector.h>
Inheritance diagram for vpRxyzVector:Public Member Functions | |
| vpRxyzVector () | |
| vpRxyzVector (const vpRxyzVector &rxyz) | |
| vpRxyzVector (double phi, double theta, double psi) | |
| vpRxyzVector (const vpRotationMatrix &R) | |
| vpRxyzVector (const vpThetaUVector &tu) | |
| vpRxyzVector (const vpColVector &rxyz) | |
| vpRxyzVector (const std::vector< double > &rxyz) | |
| virtual | ~vpRxyzVector () |
| vpRxyzVector | buildFrom (const vpRotationMatrix &R) |
| vpRxyzVector | buildFrom (const vpThetaUVector &tu) |
| vpRxyzVector | buildFrom (const vpColVector &rxyz) |
| vpRxyzVector | buildFrom (const std::vector< double > &rxyz) |
| void | buildFrom (double phi, double theta, double psi) |
| vpRxyzVector & | operator= (const vpColVector &rxyz) |
| vpRxyzVector & | operator= (double x) |
| vpRxyzVector & | operator= (const vpRxyzVector &rxyz)=default |
| vpRxyzVector & | operator= (const std::initializer_list< double > &list) |
Inherited functionalities from vpArray2D | |
| unsigned int | getCols () const |
| double | getMaxValue () const |
| double | getMinValue () const |
| unsigned int | getRows () const |
| unsigned int | size () const |
| void | resize (unsigned int nrows, unsigned int ncols, bool flagNullify=true, bool recopy_=true) |
| void | reshape (unsigned int nrows, unsigned int ncols) |
| void | insert (const vpArray2D< double > &A, unsigned int r, unsigned int c) |
| bool | operator== (const vpArray2D< double > &A) const |
| bool | operator!= (const vpArray2D< double > &A) const |
| vpArray2D< double > | hadamard (const vpArray2D< double > &m) const |
Public Attributes | |
| double * | data |
Protected Attributes | |
| unsigned int | rowNum |
| unsigned int | colNum |
| double ** | rowPtrs |
| unsigned int | dsize |
Related Symbols | |
(Note that these are not member symbols.) | |
| vpColVector | operator* (const double &x, const vpRotationVector &v) |
| enum | vpGEMMmethod |
| bool | operator== (const vpArray2D< double > &A) const |
| bool | operator== (const vpArray2D< float > &A) const |
| bool | operator!= (const vpArray2D< double > &A) const |
| 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) |
Inherited functionalities from vpRotationVector | |
| double & | operator[] (unsigned int i) |
| const double & | operator[] (unsigned int i) const |
| vpColVector | operator* (double x) const |
| vpRotationVector & | operator<< (double val) |
| vpRotationVector & | operator, (double val) |
| double | sumSquare () const |
| vpRowVector | t () const |
| std::vector< double > | toStdVector () const |
| unsigned int | m_index |
Inherited I/O from vpArray2D with Static Public Member Functions | |
| vpArray2D< double > | insert (const vpArray2D< double > &A, const vpArray2D< double > &B, unsigned int r, unsigned int c) |
| static void | insert (const vpArray2D< double > &A, const vpArray2D< double > &B, vpArray2D< double > &C, unsigned int r, unsigned int c) |
| static bool | load (const std::string &filename, vpArray2D< double > &A, 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, bool binary=false, const char *header="") |
| static bool | saveYAML (const std::string &filename, const vpArray2D< double > &A, const char *header="") |
| static vpArray2D< double > | conv2 (const vpArray2D< double > &M, const vpArray2D< double > &kernel, const std::string &mode) |
| static void | conv2 (const vpArray2D< double > &M, const vpArray2D< double > &kernel, vpArray2D< double > &res, const std::string &mode) |
Implementation of a rotation vector as 
Class that consider the case of the Euler 




![\[R_{xyz}(\varphi,\theta,\psi) = R_x(\varphi) \; R_y(\theta) \; R_z(\psi)\]](form_322.png)
with
![\[R_{x}(\varphi) = \left(
\begin{array}{ccc}
1 & 0 & 0 \\
0 &\cos \varphi & -\sin\varphi \\
0 &\sin \varphi & \cos\varphi \\
\end{array}
\right) \;
R_{y}(\theta) = \left(
\begin{array}{ccc}
\cos \theta & 0 & \sin\theta\\
0 & 1 & 0 \\
-\sin\theta & 0 &\cos \theta
\end{array}
\right) \;
R_{z}(\psi) = \left(
\begin{array}{ccc}
\cos \psi & -\sin\psi & 0\\
\sin\psi &\cos \psi& 0 \\
0 & 0 & 1
\end{array}
\right)\]](form_323.png)
The rotation matrix corresponding to the x-y-z convention is given by:
![\[
R_{xyz}(\varphi,\theta,\psi) = \left(
\begin{array}{ccc}
\cos\theta \cos\psi & -\cos\theta \sin\psi & \sin\theta \\
\sin\varphi \sin\theta \cos\psi + \cos\varphi\sin\psi & -\sin\varphi
\sin\theta \sin\psi +\cos\varphi\cos\psi & -\sin\varphi \cos\theta \\
-\cos\varphi \sin\theta \cos\psi + \sin\varphi\sin\psi & \cos\varphi
\sin\theta \sin\psi +\sin\varphi\cos\psi & \cos\varphi \cos\theta \end{array}
\right)
\]](form_324.png)
The vpRxyzVector class is derived from vpRotationVector.
From the implementation point of view, it is nothing more than an array of three doubles with values in [rad].
You can set values [rad] accessing each element:
You can also initialize the vector using operator<<(double):
Or you can also initialize the vector from a list of doubles if ViSP is build with c++11 enabled:
To get the values [rad] use:
The code below shows first how to initialize this representation of Euler angles, than how to contruct a rotation matrix from a vpRxyzVector and finally how to extract the vpRxyzVector Euler angles from the build rotation matrix.
Definition at line 177 of file vpRxyzVector.h.
| vpRxyzVector::vpRxyzVector | ( | ) |
Default constructor that initialize all the 3 angles to zero.
Definition at line 48 of file vpRxyzVector.cpp.
| vpRxyzVector::vpRxyzVector | ( | const vpRxyzVector & | rxyz | ) |
Copy constructor.
Definition at line 51 of file vpRxyzVector.cpp.
| vpRxyzVector::vpRxyzVector | ( | double | phi, |
| double | theta, | ||
| double | psi | ||
| ) |
Constructor from 3 angles (in radian).
| phi | : ![]() ![]() |
| theta | : ![]() ![]() |
| psi | : ![]() ![]() |
Definition at line 59 of file vpRxyzVector.cpp.
References buildFrom().
|
explicit |
Constructor that initialize 
| R | : Rotation matrix used to initialize the Euler angles. |
Definition at line 66 of file vpRxyzVector.cpp.
References buildFrom().
|
explicit |
Constructor that initialize 

| tu | : ![]() |
Definition at line 74 of file vpRxyzVector.cpp.
References buildFrom().
|
explicit |
Copy constructor from a 3-dimension vector.
Definition at line 77 of file vpRxyzVector.cpp.
References buildFrom().
|
explicit |
Copy constructor from a 3-dimension vector.
Definition at line 80 of file vpRxyzVector.cpp.
References buildFrom().
|
inlinevirtual |
Destructor.
Definition at line 193 of file vpRxyzVector.h.
| vpRxyzVector vpRxyzVector::buildFrom | ( | const std::vector< double > & | rxyz | ) |
Construct a 
Definition at line 155 of file vpRxyzVector.cpp.
References vpArray2D< double >::data, and vpException::dimensionError.
| vpRxyzVector vpRxyzVector::buildFrom | ( | const vpColVector & | rxyz | ) |
Construct a 
Definition at line 140 of file vpRxyzVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< Type >::size().
| vpRxyzVector vpRxyzVector::buildFrom | ( | const vpRotationMatrix & | R | ) |
Convert a rotation matrix into a 
| R | : Rotation matrix used as input. |

Definition at line 89 of file vpRxyzVector.cpp.
References buildFrom().
Referenced by buildFrom(), buildFrom(), vpRobotAfma6::getDisplacement(), vpRobotAfma4::getPosition(), vpRobotAfma6::getPosition(), vpRobotViper650::getPosition(), vpRobotViper850::getPosition(), vpRobotCamera::getPosition(), vpSimulatorCamera::getPosition(), vpSimulatorPioneer::getPosition(), vpSimulatorPioneerPan::getPosition(), vpAfma6::set_eMc(), vpViper::set_eMc(), vpRobotAfma6::setPosition(), vpRxyzVector(), vpRxyzVector(), vpRxyzVector(), vpRxyzVector(), and vpRxyzVector().
| vpRxyzVector vpRxyzVector::buildFrom | ( | const vpThetaUVector & | tu | ) |
Convert a 

| tu | : ![]() |

Definition at line 115 of file vpRxyzVector.cpp.
References vpRotationMatrix::buildFrom(), and buildFrom().
| void vpRxyzVector::buildFrom | ( | double | phi, |
| double | theta, | ||
| double | psi | ||
| ) |
Construction from 3 angles (in radian).
| phi | : ![]() ![]() |
| theta | : ![]() ![]() |
| psi | : ![]() ![]() |
Definition at line 130 of file vpRxyzVector.cpp.
References vpArray2D< double >::data.
|
staticinherited |
Perform a 2D convolution similar to Matlab conv2 function: 
| M | : First matrix. |
| kernel | : Second matrix. |
| mode | : Convolution mode: "full" (default), "same", "valid". |
Definition at line 956 of file vpArray2D.h.
|
staticinherited |
Perform a 2D convolution similar to Matlab conv2 function: 
| M | : First array. |
| kernel | : Second array. |
| res | : Result. |
| mode | : Convolution mode: "full" (default), "same", "valid". |
Definition at line 970 of file vpArray2D.h.
|
inlineinherited |
Return the number of columns of the 2D array.
Definition at line 280 of file vpArray2D.h.
|
inherited |
Return the array max value.
Definition at line 282 of file vpArray2D.h.
|
inherited |
Return the array min value.
Definition at line 284 of file vpArray2D.h.
|
inlineinherited |
Return the number of rows of the 2D array.
Definition at line 290 of file vpArray2D.h.
Compute the Hadamard product (element wise matrix multiplication).
| m | : Second matrix; |

Definition at line 554 of file vpArray2D.h.
|
inherited |
Insert array B in array A at the given position.
| A | : Main array. |
| B | : Array to insert. |
| r | : Index of the row where to add the array. |
| c | : Index of the column where to add the array. |
Definition at line 984 of file vpArray2D.h.
|
inlineinherited |
Insert array A at the given position in the current array.
| A | : The array to insert. |
| r | : The index of the row to begin to insert data. |
| c | : The index of the column to begin to insert data. |
Definition at line 417 of file vpArray2D.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 582 of file vpArray2D.h.
|
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 696 of file vpArray2D.h.
|
inherited |
Not equal to comparison operator of a 2D array.
Definition at line 442 of file vpArray2D.h.
|
inherited |
Operator that allows to multiply each element of a rotation vector by a scalar.
| x | : The scalar. |
Definition at line 86 of file vpRotationVector.cpp.
References vpArray2D< double >::dsize.
|
inherited |
Set vector second and third element values.
| val | : Value of the vector element [rad]. |
The following example shows how to initialize a 
It produces the following printings:
Definition at line 159 of file vpRotationVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, vpRotationVector::m_index, and vpArray2D< double >::size().
|
inherited |
Set vector first element value.
| val | : Value of the vector first element [rad]. |
The following example shows how to initialize a 
It produces the following printings:
Definition at line 129 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpRotationVector::m_index.
| vpRxyzVector & vpRxyzVector::operator= | ( | const std::initializer_list< double > & | list | ) |
Set vector from a list of 3 double angle values in radians.
It produces the following printings:
Definition at line 247 of file vpRxyzVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< double >::size().
| vpRxyzVector & vpRxyzVector::operator= | ( | const vpColVector & | rxyz | ) |
Copy operator that initializes a 
| rxyz | : 3-dimension vector containing the values of the rotation vector. |
Definition at line 217 of file vpRxyzVector.cpp.
References vpArray2D< double >::data, vpException::dimensionError, and vpArray2D< Type >::size().
|
default |
| vpRxyzVector & vpRxyzVector::operator= | ( | double | v | ) |
Initialize each element of the vector to the same angle value v.
| v | : Angle value to set for each element of the vector. |
Definition at line 186 of file vpRxyzVector.cpp.
References vpArray2D< double >::data, and vpArray2D< double >::dsize.
Equal to comparison operator of a 2D array.
Definition at line 438 of file vpArray2D.h.
|
inlineinherited |
Operator that allows to set the value of an element of the rotation vector: r[i] = value
Definition at line 122 of file vpRotationVector.h.
|
inlineinherited |
Operator that allows to get the value of an element of the rotation vector: value = r[i]
Definition at line 127 of file vpRotationVector.h.
|
inlineinherited |
Definition at line 383 of file vpArray2D.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. |
Definition at line 305 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 784 of file vpArray2D.h.
|
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 877 of file vpArray2D.h.
|
inlineinherited |
Return the number of elements of the 2D array.
Definition at line 292 of file vpArray2D.h.
|
inherited |
Return the sum square of all the elements 
![\[\sum{i=0}^{m} r_i^{2}\]](form_615.png)
Definition at line 178 of file vpRotationVector.cpp.
References vpArray2D< double >::rowNum, and vpArray2D< double >::rowPtrs.
|
inherited |
Return the transpose of the rotation vector.
Definition at line 53 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpArray2D< double >::dsize.
Referenced by vpQuaternionVector::lerp(), vpQuaternionVector::nlerp(), and vpQuaternionVector::slerp().
|
inherited |
Converts the vpRotationVector to a std::vector.
Definition at line 67 of file vpRotationVector.cpp.
References vpArray2D< double >::data, and vpArray2D< double >::size().
|
related |
Insert array B in array A at the given position.
| A | : Main array. |
| B | : Array to insert. |
| C | : Result array. |
| r | : Index of the row where to insert array B. |
| c | : Index of the column where to insert array B. |
Definition at line 999 of file vpArray2D.h.
|
related |
Definition at line 1227 of file vpArray2D.h.
|
related |
Allows to multiply a scalar by rotaion vector.
Definition at line 99 of file vpRotationVector.cpp.
|
related |
Definition at line 1191 of file vpArray2D.h.
|
related |
Definition at line 1209 of file vpArray2D.h.
|
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 136 of file vpArray2D.h.
|
inherited |
Address of the first element of the data array.
Definition at line 144 of file vpArray2D.h.
|
protectedinherited |
Current array size (rowNum * colNum)
Definition at line 140 of file vpArray2D.h.
|
protectedinherited |
Definition at line 156 of file vpRotationVector.h.
Referenced by vpRotationVector::operator,(), and vpRotationVector::operator<<().
|
protectedinherited |
Number of rows in the array.
Definition at line 134 of file vpArray2D.h.
|
protectedinherited |
Address of the first element of each rows.
Definition at line 138 of file vpArray2D.h.