Visual Servoing Platform
version 3.6.1 under development (2024-11-21)
|
#include <visp3/core/vpHomogeneousMatrix.h>
Public Member Functions | |
vpHomogeneousMatrix () | |
vpHomogeneousMatrix (const vpHomogeneousMatrix &M) | |
vpHomogeneousMatrix (const vpTranslationVector &t, const vpRotationMatrix &R) | |
vpHomogeneousMatrix (const vpTranslationVector &t, const vpThetaUVector &tu) | |
vpHomogeneousMatrix (const vpTranslationVector &t, const vpQuaternionVector &q) | |
VP_EXPLICIT | vpHomogeneousMatrix (const vpPoseVector &p) |
VP_EXPLICIT | vpHomogeneousMatrix (const std::vector< float > &v) |
VP_EXPLICIT | vpHomogeneousMatrix (const std::vector< double > &v) |
vpHomogeneousMatrix (double tx, double ty, double tz, double tux, double tuy, double tuz) | |
VP_EXPLICIT | vpHomogeneousMatrix (const std::initializer_list< double > &list) |
vpHomogeneousMatrix & | buildFrom (const vpTranslationVector &t, const vpRotationMatrix &R) |
vpHomogeneousMatrix & | buildFrom (const vpTranslationVector &t, const vpThetaUVector &tu) |
vpHomogeneousMatrix & | buildFrom (const vpTranslationVector &t, const vpQuaternionVector &q) |
vpHomogeneousMatrix & | buildFrom (const vpPoseVector &p) |
vpHomogeneousMatrix & | buildFrom (const std::vector< float > &v) |
vpHomogeneousMatrix & | buildFrom (const std::vector< double > &v) |
vpHomogeneousMatrix & | buildFrom (const double &tx, const double &ty, const double &tz, const double &tux, const double &tuy, const double &tuz) |
void | convert (std::vector< float > &M) |
void | convert (std::vector< double > &M) |
void | eye () |
vpColVector | getCol (unsigned int j) const |
vpRotationMatrix | getRotationMatrix () const |
vpThetaUVector | getThetaUVector () const |
vpTranslationVector | getTranslationVector () const |
vpHomogeneousMatrix | inverse () const |
void | inverse (vpHomogeneousMatrix &Mi) const |
bool | isAnHomogeneousMatrix (double threshold=1e-6) const |
bool | isValid () const |
void | insert (const vpRotationMatrix &R) |
void | insert (const vpThetaUVector &tu) |
void | insert (const vpTranslationVector &t) |
void | insert (const vpQuaternionVector &t) |
void | extract (vpRotationMatrix &R) const |
void | extract (vpThetaUVector &tu) const |
void | extract (vpTranslationVector &t) const |
void | extract (vpQuaternionVector &q) const |
void | load (std::ifstream &f) |
void | load (const std::string &filename) |
void | save (std::ofstream &f) const |
void | save (const std::string &filename) const |
vpHomogeneousMatrix & | operator= (const vpHomogeneousMatrix &M) |
vpHomogeneousMatrix | operator* (const vpHomogeneousMatrix &M) const |
vpHomogeneousMatrix & | operator*= (const vpHomogeneousMatrix &M) |
vpColVector | operator* (const vpColVector &v) const |
vpTranslationVector | operator* (const vpTranslationVector &t) const |
vpHomogeneousMatrix | operator* (const vpRotationMatrix &R) const |
vpPoint | operator* (const vpPoint &bP) const |
vpHomogeneousMatrix & | operator<< (double val) |
vpHomogeneousMatrix & | operator, (double val) |
void | orthogonalizeRotation () |
void | print () const |
void | resize (unsigned int nrows, unsigned int ncols, bool flagNullify=true) |
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 |
double * | operator[] (unsigned int i) |
double * | operator[] (unsigned int i) const |
vpArray2D< double > | hadamard (const vpArray2D< double > &m) const |
vpArray2D< double > | t () const |
Static Public Member Functions | |
static vpHomogeneousMatrix | compute3d3dTransformation (const std::vector< vpPoint > &p, const std::vector< vpPoint > &q) |
static vpHomogeneousMatrix | mean (const std::vector< vpHomogeneousMatrix > &vec_M) |
Public Attributes | |
double * | data |
Static Public Attributes | |
static const std::string | jsonTypeName = "vpHomogeneousMatrix" |
Protected Attributes | |
unsigned int | m_index |
Friends | |
void | to_json (nlohmann::json &j, const vpHomogeneousMatrix &T) |
void | from_json (const nlohmann::json &j, vpHomogeneousMatrix &T) |
Related Functions | |
(Note that these are not member functions.) | |
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 I/O from vpArray2D with Static Public Member Functions | |
unsigned int | rowNum |
unsigned int | colNum |
double ** | rowPtrs |
unsigned int | dsize |
vpArray2D< double > | insert (const vpArray2D< double > &A, const vpArray2D< double > &B, unsigned int r, unsigned int c) |
static bool | load (const std::string &filename, vpArray2D< double > &A, bool binary=false, char *header=nullptr) |
static bool | loadYAML (const std::string &filename, vpArray2D< double > &A, char *header=nullptr) |
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) |
static void | insert (const vpArray2D< double > &A, const vpArray2D< double > &B, vpArray2D< double > &C, unsigned int r, unsigned int c) |
Implementation of an homogeneous matrix and operations on such kind of matrices.
The class provides a data structure for the homogeneous matrices as well as a set of operations on these matrices.
The vpHomogeneousMatrix class is derived from vpArray2D<double>.
An homogeneous matrix is 4x4 matrix defines as
that defines the position of frame b in frame a
is a rotation matrix and is a translation vector.
There are different ways to initialize an homogeneous matrix. You can set each element of the matrix like:
It produces the following printings:
You can also use vpRotationMatrix::operator<< and vpTranslationVector::operator<< like:
If ViSP is build with c++11 enabled, you can do the same using:
JSON serialization
Since ViSP 3.6.0, if ViSP is build with JSON for modern C++ 3rd-party we introduce JSON serialization capabilities for vpHomogeneousMatrix. The following sample code shows how to save a homogeneous matrix in a file named homo-mat.json
and reload the values from this JSON file.
If you build and execute the sample code, it will produce the following output:
The content of the homo-mat.json
file is the following:
Definition at line 220 of file vpHomogeneousMatrix.h.
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | ) |
Default constructor that initialize an homogeneous matrix as identity.
Definition at line 61 of file vpHomogeneousMatrix.cpp.
References eye().
Referenced by compute3d3dTransformation(), and operator*().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const vpHomogeneousMatrix & | M | ) |
Copy constructor that initialize an homogeneous matrix from another homogeneous matrix.
Definition at line 67 of file vpHomogeneousMatrix.cpp.
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const vpTranslationVector & | t, |
const vpRotationMatrix & | R | ||
) |
Construct an homogeneous matrix from a translation vector and a rotation matrix.
Definition at line 87 of file vpHomogeneousMatrix.cpp.
References insert(), and vpArray2D< double >::t().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const vpTranslationVector & | t, |
const vpThetaUVector & | tu | ||
) |
Construct an homogeneous matrix from a translation vector and rotation vector.
Definition at line 76 of file vpHomogeneousMatrix.cpp.
References buildFrom(), and vpArray2D< double >::t().
BEGIN_VISP_NAMESPACE vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const vpTranslationVector & | t, |
const vpQuaternionVector & | q | ||
) |
Construct an homogeneous matrix from a translation vector and quaternion rotation vector.
Definition at line 51 of file vpHomogeneousMatrix.cpp.
References buildFrom(), and vpArray2D< double >::t().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const vpPoseVector & | p | ) |
Construct an homogeneous matrix from a pose vector.
Definition at line 99 of file vpHomogeneousMatrix.cpp.
References buildFrom().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const std::vector< float > & | v | ) |
Construct an homogeneous matrix from a vector of float.
v | : Vector of 12 or 16 values corresponding to the values of the homogeneous matrix. |
The following example shows how to use this function:
It produces the following printings:
Definition at line 154 of file vpHomogeneousMatrix.cpp.
References buildFrom().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const std::vector< double > & | v | ) |
Construct an homogeneous matrix from a vector of double.
v | : Vector of 12 or 16 values corresponding to the values of the homogeneous matrix. |
The following example shows how to use this function:
It produces the following printings:
Definition at line 311 of file vpHomogeneousMatrix.cpp.
References buildFrom().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | double | tx, |
double | ty, | ||
double | tz, | ||
double | tux, | ||
double | tuy, | ||
double | tuz | ||
) |
Construct an homogeneous matrix from a translation vector and a rotation vector.
Definition at line 322 of file vpHomogeneousMatrix.cpp.
References buildFrom().
vpHomogeneousMatrix::vpHomogeneousMatrix | ( | const std::initializer_list< double > & | list | ) |
Construct an homogeneous matrix from a list of 12 or 16 double values.
list | : List of double. The following code shows how to use this constructor to initialize an homogeneous matrix: #include <visp3/core/vpHomogeneousMatrix.h>
#ifdef ENABLE_VISP_NAMESPACE
using namespace VISP_NAMESPACE_NAME;
#endif
int main()
{
0, 0, 1, 0.1,
0, 1, 0, 0.2,
1, 0, 0, 0.3 };
std::cout << "M:\n" << M << std::endl;
0, 0, 1, 0.1,
0, 1, 0, 0.2,
1, 0, 0, 0.3,
0, 0, 0, 1 };
std::cout << "N:\n" << N << std::endl;
}
M:
0 0 1 0.1
0 1 0 0.2
1 0 0 0.3
0 0 0 1
N:
0 0 1 0.1
0 1 0 0.2
1 0 0 0.3
0 0 0 1
|
Definition at line 201 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, vpException::fatalError, isAnHomogeneousMatrix(), and vpRotationMatrix::orthogonalize().
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const double & | tx, |
const double & | ty, | ||
const double & | tz, | ||
const double & | tux, | ||
const double & | tuy, | ||
const double & | tuz | ||
) |
Build an homogeneous matrix from a translation vector and a rotation vector.
Definition at line 386 of file vpHomogeneousMatrix.cpp.
References insert(), and vpArray2D< double >::t().
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const std::vector< double > & | v | ) |
Build an homogeneous matrix from a vector of double.
v | : Vector of 12 or 16 values corresponding to the values of the homogeneous matrix. |
The following example shows how to use this function:
It produces the following printings:
Definition at line 496 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, and vpException::dimensionError.
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const std::vector< float > & | v | ) |
Build an homogeneous matrix from a vector of float.
v | : Vector of 12 or 16 values corresponding to the values of the homogeneous matrix. |
The following example shows how to use this function:
It produces the following printings:
Definition at line 440 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, and vpException::dimensionError.
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const vpPoseVector & | p | ) |
Build an homogeneous matrix from a pose vector.
Definition at line 354 of file vpHomogeneousMatrix.cpp.
References insert().
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const vpTranslationVector & | t, |
const vpQuaternionVector & | q | ||
) |
Build an homogeneous matrix from a translation vector and a quaternion rotation vector.
Definition at line 374 of file vpHomogeneousMatrix.cpp.
References insert(), and vpArray2D< double >::t().
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const vpTranslationVector & | t, |
const vpRotationMatrix & | R | ||
) |
Build an homogeneous matrix from a translation vector and a rotation matrix.
Definition at line 344 of file vpHomogeneousMatrix.cpp.
References insert(), and vpArray2D< double >::t().
Referenced by vpHomography::buildFrom(), vpAfma6::init(), vpViper650::init(), vpViper850::init(), vpMbTracker::initFromPose(), vpMarkersMeasurements::likelihood(), vpMbTracker::loadCAOModel(), vpMarkersMeasurements::measureGT(), vpWireFrameSimulator::navigation(), vpAfma6::parseConfigFile(), vpPioneerPan::set_cMe(), vpViper::set_eMc(), vpWireFrameSimulator::setExternalCameraPosition(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), vpMarkersMeasurements::state_to_measurement(), vpAfma4::vpAfma4(), vpHomogeneousMatrix(), vpKinect::vpKinect(), and vpWireFrameSimulator::vpWireFrameSimulator().
vpHomogeneousMatrix & vpHomogeneousMatrix::buildFrom | ( | const vpTranslationVector & | t, |
const vpThetaUVector & | tu | ||
) |
Build an homogeneous matrix from a translation vector and a rotation vector.
Definition at line 333 of file vpHomogeneousMatrix.cpp.
References insert(), and vpArray2D< double >::t().
|
static |
Compute the transformation between two point clouds.
[in] | p | : First point cloud. |
[in] | q | : Second point cloud. |
Definition at line 1217 of file vpHomogeneousMatrix.cpp.
References vpMatrix::det(), vpMatrix::svd(), vpArray2D< double >::t(), vpMatrix::t(), and vpHomogeneousMatrix().
Referenced by vpPose::computePlanarObjectPoseFromRGBD().
|
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 1053 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 1067 of file vpArray2D.h.
void vpHomogeneousMatrix::convert | ( | std::vector< double > & | M | ) |
Converts an homogeneous matrix to a vector of 12 doubles.
M | : Converted matrix. |
Definition at line 1127 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data.
void vpHomogeneousMatrix::convert | ( | std::vector< float > & | M | ) |
Converts an homogeneous matrix to a vector of 12 floats.
M | : Converted matrix. |
Definition at line 1115 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data.
void vpHomogeneousMatrix::extract | ( | vpQuaternionVector & | q | ) | const |
Extract the rotation as a quaternion.
Definition at line 904 of file vpHomogeneousMatrix.cpp.
References vpQuaternionVector::buildFrom().
void vpHomogeneousMatrix::extract | ( | vpRotationMatrix & | R | ) | const |
Extract the rotational matrix from the homogeneous matrix.
R | : rotational component as a rotation matrix. |
Definition at line 868 of file vpHomogeneousMatrix.cpp.
Referenced by vpPoseVector::buildFrom(), vpThetaUVector::buildFrom(), vpTranslationVector::buildFrom(), vpFeatureThetaU::buildFrom(), vpViper::get_eJe(), vpViper::get_fJe(), vpRobotAfma6::getDisplacement(), vpRobotAfma4::getPosition(), vpRobotAfma6::getPosition(), vpRobotViper650::getPosition(), vpRobotViper850::getPosition(), vpSimulatorCamera::getPosition(), vpSimulatorPioneer::getPosition(), vpSimulatorPioneerPan::getPosition(), getRotationMatrix(), getThetaUVector(), getTranslationVector(), vpRobotAfma6::getVelocity(), vpRobotViper650::getVelocity(), vpRobotViper850::getVelocity(), inverse(), vpExponentialMap::inverse(), isAnHomogeneousMatrix(), operator*(), vpPose::poseLowe(), vpViper::set_eMc(), vpImageSimulator::setCameraPosition(), vpWireFrameSimulator::setExternalCameraPosition(), vpAROgre::setPosition(), vpRobotAfma4::setVelocity(), vpFeatureThetaU::vpFeatureThetaU(), and vpTranslationVector::vpTranslationVector().
void vpHomogeneousMatrix::extract | ( | vpThetaUVector & | tu | ) | const |
Extract the rotation as a vector.
Definition at line 894 of file vpHomogeneousMatrix.cpp.
References vpThetaUVector::buildFrom().
void vpHomogeneousMatrix::extract | ( | vpTranslationVector & | t | ) | const |
Extract the translation vector from the homogeneous matrix.
Definition at line 881 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::t().
void vpHomogeneousMatrix::eye | ( | ) |
Set transformation to identity.
Definition at line 993 of file vpHomogeneousMatrix.cpp.
Referenced by vpHandEyeCalibration::calibrate(), vpViper::get_eMs(), vpViper::get_wMe(), vpMbDepthDenseTracker::reInitModel(), vpMbDepthNormalTracker::reInitModel(), vpMbEdgeTracker::reInitModel(), vpMbDepthDenseTracker::resetTracker(), vpMbDepthNormalTracker::resetTracker(), vpMbEdgeTracker::resetTracker(), vpMbGenericTracker::resetTracker(), vpAfma6::vpAfma6(), vpHomogeneousMatrix(), and vpViper::vpViper().
vpColVector vpHomogeneousMatrix::getCol | ( | unsigned int | j | ) | const |
Extract a column vector from an homogeneous matrix.
j | : Index of the column to extract. If j=0, the first column is extracted. |
The following example shows how to use this function:
It produces the following output:
Definition at line 1198 of file vpHomogeneousMatrix.cpp.
References vpException::dimensionError, vpArray2D< double >::getCols(), and vpArray2D< double >::getRows().
|
inlineinherited |
Return the number of columns of the 2D array.
Definition at line 337 of file vpArray2D.h.
|
inherited |
Return the array max value.
Definition at line 339 of file vpArray2D.h.
|
inherited |
Return the array min value.
Definition at line 341 of file vpArray2D.h.
vpRotationMatrix vpHomogeneousMatrix::getRotationMatrix | ( | ) | const |
Return the rotation matrix from the homogeneous transformation matrix.
Definition at line 1148 of file vpHomogeneousMatrix.cpp.
References extract().
Referenced by vpForceTwistMatrix::buildFrom(), vpVelocityTwistMatrix::buildFrom(), vpRotationMatrix::operator*(), vpPanda3DBaseRenderer::setNodePose(), vpRobotBebop2::setPosition(), vpPanda3DBaseRenderer::vispVectorToPanda(), vpForceTwistMatrix::vpForceTwistMatrix(), and vpVelocityTwistMatrix::vpVelocityTwistMatrix().
|
inlineinherited |
Return the number of rows of the 2D array.
Definition at line 347 of file vpArray2D.h.
vpThetaUVector vpHomogeneousMatrix::getThetaUVector | ( | ) | const |
Return the vector that corresponds to the rotation part of the homogeneous transformation.
Definition at line 1159 of file vpHomogeneousMatrix.cpp.
References extract().
vpTranslationVector vpHomogeneousMatrix::getTranslationVector | ( | ) | const |
Return the translation vector from the homogeneous transformation matrix.
Definition at line 1138 of file vpHomogeneousMatrix.cpp.
References extract().
Referenced by vpForceTwistMatrix::buildFrom(), vpVelocityTwistMatrix::buildFrom(), mean(), vpRotationMatrix::operator*(), vpMbtFaceDepthNormal::planeIsInvalid(), vpAfma6::set_eMc(), vpPanda3DBaseRenderer::setNodePose(), and vpRobotBebop2::setPosition().
Compute the Hadamard product (element wise matrix multiplication).
m | : Second matrix; |
Definition at line 641 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 1081 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 497 of file vpArray2D.h.
void vpHomogeneousMatrix::insert | ( | const vpQuaternionVector & | q | ) |
Insert the rotational component of the homogeneous matrix from a quaternion rotation vector.
Definition at line 956 of file vpHomogeneousMatrix.cpp.
References insert().
void vpHomogeneousMatrix::insert | ( | const vpRotationMatrix & | R | ) |
Insert the rotational component of the homogeneous matrix.
Definition at line 914 of file vpHomogeneousMatrix.cpp.
Referenced by buildFrom(), vpHandEyeCalibration::calibrate(), vpExponentialMap::direct(), insert(), inverse(), operator*(), vpPose::poseLowe(), and vpHomogeneousMatrix().
void vpHomogeneousMatrix::insert | ( | const vpThetaUVector & | tu | ) |
Insert the rotational component of the homogeneous matrix from a rotation vector.
Definition at line 930 of file vpHomogeneousMatrix.cpp.
References insert().
void vpHomogeneousMatrix::insert | ( | const vpTranslationVector & | t | ) |
Insert the translational component in a homogeneous matrix.
Definition at line 939 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::t().
vpHomogeneousMatrix vpHomogeneousMatrix::inverse | ( | ) | const |
Invert the homogeneous matrix
Definition at line 972 of file vpHomogeneousMatrix.cpp.
References extract(), insert(), and vpRotationMatrix::t().
Referenced by vpKeyPoint::compute3D(), vpKeyPoint::compute3DForPointsOnCylinders(), vpMbtFaceDepthNormal::computeDesiredNormalAndCentroid(), vpBiclops::computeMGD(), vpPtu46::computeMGD(), vpPanda3DBaseRenderer::computeNearAndFarPlanesFromNode(), vpMbDepthDenseTracker::computeVVS(), vpMbDepthNormalTracker::computeVVS(), vpMbEdgeTracker::computeVVS(), vpMbGenericTracker::computeVVS(), vpMbEdgeTracker::computeVVSFirstPhasePoseEstimation(), vpMbGenericTracker::computeVVSInteractionMatrixAndResidu(), vpProjectionDisplay::displayCamera(), vpPtu46::get_cMe(), vpAfma4::get_cMe(), vpAfma6::get_cMe(), vpViper::get_cMe(), vpRobotFlirPtu::get_cVe(), vpAfma4::get_cVf(), vpViper::get_eJe(), vpViper::get_fJe(), vpBiclops::get_fMc(), vpRobotBiclops::getDisplacement(), vpRobotAfma6::getDisplacement(), vpSimulator::getExternalCameraPosition(), vpWireFrameSimulator::getExternalImage(), vpRobotFranka::getForceTorque(), vpRobotUniversalRobots::getForceTorque(), vpWireFrameSimulator::getInternalImage(), vpAfma6::getInverseKinematics(), vpViper::getInverseKinematics(), vpRobotAfma4::getVelocity(), vpRobotAfma6::getVelocity(), vpRobotViper650::getVelocity(), vpRobotViper850::getVelocity(), inverse(), vpSimulator::moveInternalCamera(), vpPose::poseVirtualVS(), vpPose::poseVirtualVSrobust(), vpWireFrameSimulator::projectCameraTrajectory(), vpPioneerPan::set_cMe(), vpWireFrameSimulator::setCameraPositionRelObj(), vpWireFrameSimulator::setCameraPositionRelWorld(), vpWireFrameSimulator::setExternalCameraPosition(), vpRobotUniversalRobots::setPosition(), vpSimulatorPioneer::setVelocity(), vpSimulatorPioneerPan::setVelocity(), and vpKinect::vpKinect().
void vpHomogeneousMatrix::inverse | ( | vpHomogeneousMatrix & | M | ) | const |
Invert the homogeneous matrix.
M | : The inverted homogeneous matrix: |
Definition at line 1032 of file vpHomogeneousMatrix.cpp.
References inverse().
bool vpHomogeneousMatrix::isAnHomogeneousMatrix | ( | double | threshold = 1e-6 | ) | const |
Test if the 3x3 rotational part of the homogeneous matrix is a valid rotation matrix and the last row is equal to [0, 0, 0, 1].
Definition at line 834 of file vpHomogeneousMatrix.cpp.
References vpMath::equal(), extract(), vpRotationMatrix::isARotationMatrix(), and vpMath::nul().
Referenced by vpHomogeneousMatrix().
bool vpHomogeneousMatrix::isValid | ( | ) | const |
Check if the homogeneous transformation matrix doesn't have a value NaN.
Definition at line 853 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, vpMath::isNaN(), and vpArray2D< double >::size().
Referenced by vpPose::computePlanarObjectPoseFromRGBD().
void vpHomogeneousMatrix::load | ( | const std::string & | filename | ) |
Read an homogeneous matrix from an input file. The homogeneous matrix is considered as a 4 by 4 matrix.
filename | : Input file name. |
The code below shows how to get an homogeneous matrix from a file.
Definition at line 1067 of file vpHomogeneousMatrix.cpp.
References load().
|
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 669 of file vpArray2D.h.
void vpHomogeneousMatrix::load | ( | std::ifstream & | f | ) |
Read an homogeneous matrix from an input file stream. The homogeneous matrix is considered as a 4 by 4 matrix.
f | : Input file stream. |
The code below shows how to get an homogeneous matrix from a file.
Definition at line 1052 of file vpHomogeneousMatrix.cpp.
References vpException::ioError.
Referenced by load().
|
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 783 of file vpArray2D.h.
|
static |
Compute the Euclidean mean of the homogeneous matrices. The Euclidean mean of the rotation matrices is computed following Moakher's method (SIAM 2002).
[in] | vec_M | : Set of homogeneous matrices. |
Definition at line 1279 of file vpHomogeneousMatrix.cpp.
References getTranslationVector(), vpMatrix::pseudoInverse(), vpArray2D< Type >::size(), vpArray2D< double >::t(), and vpMatrix::t().
|
inherited |
Not equal to comparison operator of a 2D array.
Definition at line 523 of file vpArray2D.h.
vpColVector vpHomogeneousMatrix::operator* | ( | const vpColVector & | v | ) | const |
Operator that allow to multiply an homogeneous matrix by a 4-dimension column vector.
vpException::dimensionError | : If the vector v is not a 4-dimension vector. |
Definition at line 601 of file vpHomogeneousMatrix.cpp.
References vpException::dimensionError, vpArray2D< Type >::getRows(), vpArray2D< double >::rowNum, and vpArray2D< double >::rowPtrs.
vpHomogeneousMatrix vpHomogeneousMatrix::operator* | ( | const vpHomogeneousMatrix & | M | ) | const |
Operator that allow to multiply an homogeneous matrix by an other one.
Definition at line 544 of file vpHomogeneousMatrix.cpp.
From the coordinates of the point in camera frame b and the transformation between camera frame a and camera frame b computes the coordinates of the point in camera frame a.
bP | : 3D coordinates of the point in camera frame bP. |
Definition at line 634 of file vpHomogeneousMatrix.cpp.
References vpPoint::get_W(), vpPoint::get_X(), vpPoint::get_Y(), vpPoint::get_Z(), vpPoint::set_oW(), vpPoint::set_oX(), vpPoint::set_oY(), vpPoint::set_oZ(), vpPoint::set_W(), vpPoint::set_X(), vpPoint::set_Y(), and vpPoint::set_Z().
vpHomogeneousMatrix vpHomogeneousMatrix::operator* | ( | const vpRotationMatrix & | R | ) | const |
Operator that allows to multiply a rotation matrix by a rotation matrix.
[in] | R | : Rotation matrix. |
R
.The following snippet shows how to use this method:
Definition at line 709 of file vpHomogeneousMatrix.cpp.
References vpHomogeneousMatrix().
vpTranslationVector vpHomogeneousMatrix::operator* | ( | const vpTranslationVector & | t | ) | const |
Since a translation vector could be seen as the origin point of a frame, this function computes the new coordinates of a translation vector after applying an homogeneous transformation.
t | : Translation vector seen as the 3D coordinates of a point. |
Definition at line 681 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::t().
vpHomogeneousMatrix & vpHomogeneousMatrix::operator*= | ( | const vpHomogeneousMatrix & | M | ) |
Operator that allow to multiply an homogeneous matrix by an other one.
Definition at line 588 of file vpHomogeneousMatrix.cpp.
vpHomogeneousMatrix & vpHomogeneousMatrix::operator, | ( | double | val | ) |
Set the second and next element of the homogenous matrix.
val | : Value of the matrix second or next element. |
The following example shows how to initialize an homogeneous matrix using this operator.
It produces the following printings:
Definition at line 813 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, vpException::dimensionError, m_index, and vpArray2D< double >::size().
vpHomogeneousMatrix & vpHomogeneousMatrix::operator<< | ( | double | val | ) |
Set homogeneous matrix first element.
val | : Value of the matrix first element. |
The following example shows how to initialize a rotation matrix using this operator.
It produces the following printings:
Definition at line 760 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, and m_index.
vpHomogeneousMatrix & vpHomogeneousMatrix::operator= | ( | const vpHomogeneousMatrix & | M | ) |
Copy operator that allows to set an homogeneous matrix from an other one.
M | : Matrix to copy. |
Definition at line 513 of file vpHomogeneousMatrix.cpp.
References vpArray2D< Type >::rowPtrs, and vpArray2D< double >::rowPtrs.
Equal to comparison operator of a 2D array.
Definition at line 519 of file vpArray2D.h.
|
inlineinherited |
Set element using A[i][j] = x.
Definition at line 605 of file vpArray2D.h.
|
inlineinherited |
Get element using x = A[i][j].
Definition at line 607 of file vpArray2D.h.
void vpHomogeneousMatrix::orthogonalizeRotation | ( | ) |
Perform orthogonalization of the rotation part of the homogeneous transformation.
Definition at line 1078 of file vpHomogeneousMatrix.cpp.
References vpArray2D< double >::data, and vpRotationMatrix::orthogonalize().
void vpHomogeneousMatrix::print | ( | ) | const |
Print the matrix as a pose vector .
Definition at line 1105 of file vpHomogeneousMatrix.cpp.
References vpPoseVector::t().
|
inlineinherited |
Definition at line 456 of file vpArray2D.h.
|
inline |
This function is not applicable to an homogeneous matrix that is always a 4-by-4 matrix.
vpException::fatalError | When this function is called. |
Definition at line 379 of file vpHomogeneousMatrix.h.
References vpException::fatalError.
|
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 362 of file vpArray2D.h.
void vpHomogeneousMatrix::save | ( | const std::string & | filename | ) | const |
Save an homogeneous matrix in a file.
filename | : Output file name. The homogeneous matrix is saved as a 4 by 4 matrix. |
The code below shows how to save an homogeneous matrix in a file.
Definition at line 1044 of file vpHomogeneousMatrix.cpp.
References save().
|
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 874 of file vpArray2D.h.
void vpHomogeneousMatrix::save | ( | std::ofstream & | f | ) | const |
Save an homogeneous matrix in an output file stream.
f | : Output file stream. The homogeneous matrix is saved as a 4 by 4 matrix. |
The code below shows how to save an homogeneous matrix in a file.
Definition at line 1034 of file vpHomogeneousMatrix.cpp.
References vpException::ioError.
Referenced by save().
|
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 972 of file vpArray2D.h.
|
inlineinherited |
Return the number of elements of the 2D array.
Definition at line 349 of file vpArray2D.h.
Compute the transpose of the array.
Definition at line 648 of file vpArray2D.h.
|
friend |
Definition at line 431 of file vpHomogeneousMatrix.h.
|
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 1096 of file vpArray2D.h.
|
related |
Definition at line 1351 of file vpArray2D.h.
|
related |
Definition at line 1313 of file vpArray2D.h.
|
related |
Definition at line 1332 of file vpArray2D.h.
|
friend |
Definition at line 426 of file vpHomogeneousMatrix.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 1103 of file vpArray2D.h.
|
inherited |
Address of the first element of the data array.
Definition at line 148 of file vpArray2D.h.
|
protectedinherited |
Current array size (rowNum * colNum)
Definition at line 1107 of file vpArray2D.h.
|
static |
Definition at line 393 of file vpHomogeneousMatrix.h.
|
protected |
Definition at line 422 of file vpHomogeneousMatrix.h.
Referenced by operator,(), and operator<<().
|
protectedinherited |
Number of rows in the array.
Definition at line 1101 of file vpArray2D.h.
|
protectedinherited |
Address of the first element of each rows.
Definition at line 1105 of file vpArray2D.h.