A 3D pose, with a 3D translation and a rotation in 3D parameterized in rotation-vector form (equivalent to axis-angle).
The 6D transformation in SE(3) stored in this class is kept in two separate containers: a 3-array for the rotation vector, and a 3-array for the translation.
For a complete descriptionan of Points/Poses, see mrpt::poses::CPoseOrPoint, or refer to the 2D/3D Geometry tutorial online.
There are Lie algebra methods: exp and ln (see the methods for documentation).
Definition at line 44 of file CPose3DRotVec.h.
#include <mrpt/poses/CPose3DRotVec.h>
Public Types | |
enum | { is_3D_val = 1 } |
enum | { rotation_dimensions = 3 } |
enum | { is_PDF_val = 0 } |
typedef CPose3DRotVec | type_value |
Used to emulate CPosePDF types, for example, in mrpt::graphs::CNetworkOfPoses. More... | |
Public Member Functions | |
void * | operator new (size_t size) |
void * | operator new[] (size_t size) |
void | operator delete (void *ptr) noexcept |
void | operator delete[] (void *ptr) noexcept |
void | operator delete (void *memory, void *ptr) noexcept |
void * | operator new (size_t size, const std::nothrow_t &) noexcept |
void | operator delete (void *ptr, const std::nothrow_t &) noexcept |
const type_value & | getPoseMean () const |
type_value & | getPoseMean () |
void | setToNaN () override |
Set all data fields to quiet NaN. More... | |
virtual mxArray * | writeToMatlab () const |
Introduces a pure virtual method responsible for writing to a mxArray Matlab object, typically a MATLAB struct whose contents are documented in each derived class. More... | |
Constructors | |
CPose3DRotVec () | |
Default constructor, with all the coordinates set to zero. More... | |
CPose3DRotVec (TConstructorFlags_Poses constructor_dummy_param) | |
Fast constructor that leaves all the data uninitialized - call with UNINITIALIZED_POSE as argument. More... | |
CPose3DRotVec (const double vx, const double vy, const double vz, const double x, const double y, const double z) | |
Constructor with initilization of the pose. More... | |
CPose3DRotVec (const mrpt::math::CArrayDouble< 6 > &v) | |
Constructor with initilization of the pose from a vector [w1 w2 w3 x y z]. More... | |
CPose3DRotVec (const CPose3DRotVec &o) | |
Copy constructor. More... | |
CPose3DRotVec (const math::CMatrixDouble44 &m) | |
Constructor from a 4x4 homogeneous matrix: More... | |
CPose3DRotVec (const CPose3D &m) | |
Constructor from a CPose3D object. More... | |
CPose3DRotVec (const mrpt::math::CQuaternionDouble &q, const double x, const double y, const double z) | |
Constructor from a quaternion (which only represents the 3D rotation part) and a 3D displacement. More... | |
CPose3DRotVec (const double *vec6) | |
Constructor from an array with these 6 elements: [w1 w2 w3 x y z] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose. More... | |
Access 3x3 rotation and 4x4 homogeneous matrices | |
void | getHomogeneousMatrix (mrpt::math::CMatrixDouble44 &out_HM) const |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation). More... | |
mrpt::math::CMatrixDouble44 | getHomogeneousMatrixVal () const |
void | getRotationMatrix (mrpt::math::CMatrixDouble33 &ROT) const |
Get the 3x3 rotation matrix. More... | |
const mrpt::math::CMatrixDouble33 | getRotationMatrix () const |
Pose-pose and pose-point compositions and operators | |
CPose3DRotVec | operator+ (const CPose3DRotVec &b) const |
The operator ![]() | |
CPoint3D | operator+ (const CPoint3D &b) const |
The operator ![]() | |
CPoint3D | operator+ (const CPoint2D &b) const |
The operator ![]() | |
void | setFromTransformationMatrix (const mrpt::math::CMatrixDouble44 &m) |
void | setFromXYZAndAngles (const double x, const double y, const double z, const double yaw=0, const double pitch=0, const double roll=0) |
void | sphericalCoordinates (const mrpt::math::TPoint3D &point, double &out_range, double &out_yaw, double &out_pitch) const |
Computes the spherical coordinates of a 3D point as seen from the 6D pose specified by this object. More... | |
void | composePoint (double lx, double ly, double lz, double &gx, double &gy, double &gz, mrpt::math::CMatrixFixedNumeric< double, 3, 3 > *out_jacobian_df_dpoint=nullptr, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dpose=nullptr) const |
An alternative, slightly more efficient way of doing ![]() | |
void | composePoint (const mrpt::math::TPoint3D local_point, mrpt::math::TPoint3D &global_point) const |
An alternative, slightly more efficient way of doing ![]() | |
void | inverseComposePoint (const double gx, const double gy, const double gz, double &lx, double &ly, double &lz, mrpt::math::CMatrixFixedNumeric< double, 3, 3 > *out_jacobian_df_dpoint=nullptr, mrpt::math::CMatrixFixedNumeric< double, 3, 6 > *out_jacobian_df_dpose=nullptr) const |
Computes the 3D point L such as ![]() | |
void | composeFrom (const CPose3DRotVec &A, const CPose3DRotVec &B, mrpt::math::CMatrixFixedNumeric< double, 6, 6 > *out_jacobian_drvtC_drvtA=nullptr, mrpt::math::CMatrixFixedNumeric< double, 6, 6 > *out_jacobian_drvtC_drvtB=nullptr) |
Makes "this = A (+) B"; this method is slightly more efficient than "this= A + B;" since it avoids the temporary object. More... | |
void | toQuatXYZ (CPose3DQuat &q) const |
Convert this RVT into a quaternion + XYZ. More... | |
CPose3DRotVec & | operator+= (const CPose3DRotVec &b) |
Make ![]() | |
CPose3DRotVec & | operator= (const CPose3DRotVec &o) |
Copy operator. More... | |
void | inverseComposeFrom (const CPose3DRotVec &A, const CPose3DRotVec &B) |
Makes ![]() | |
CPose3DRotVec | operator- (const CPose3DRotVec &b) const |
Compute ![]() | |
void | inverse () |
Convert this pose into its inverse, saving the result in itself. More... | |
CPose3DRotVec | getInverse () const |
Compute the inverse of this pose and return the result. More... | |
void | changeCoordinatesReference (const CPose3DRotVec &p) |
makes: this = p (+) this More... | |
Access and modify contents | |
double | rx () const |
double | ry () const |
double | rz () const |
double & | rx () |
double & | ry () |
double & | rz () |
void | addComponents (const CPose3DRotVec &p) |
Scalar sum of all 6 components: This is diferent from poses composition, which is implemented as "+" operators. More... | |
void | operator*= (const double s) |
Scalar multiplication of x,y,z,vx,vy,vz. More... | |
mrpt::math::CArrayDouble< 3 > | rotVecFromRotMat (const math::CMatrixDouble44 &m) |
Create a vector with 3 components according to the input transformation matrix (only the rotation will be taken into account) More... | |
void | setFromValues (const double x0, const double y0, const double z0, const double vx, const double vy, const double vz) |
Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes the internal rotation matrix. More... | |
template<class ARRAYORVECTOR > | |
void | setFrom6Vector (const ARRAYORVECTOR &vec6) |
Set pose from an array with these 6 elements: [x y z vx vy vz] where v{xyz} is the rotation vector and {xyz} the 3D translation of the pose. More... | |
template<class ARRAYORVECTOR > | |
void | getAs6Vector (ARRAYORVECTOR &vec6) const |
Gets pose as an array with these 6 elements: [x y z vx vy vz] where v{xyz} is the rotation vector and {xyz} the 3D translation of the pose The target vector MUST ALREADY have space for 6 elements (i.e. More... | |
template<class ARRAYORVECTOR > | |
void | getAsVector (ARRAYORVECTOR &v) const |
Like getAs6Vector() but for dynamic size vectors (required by base class CPoseOrPoint) More... | |
const double & | operator[] (unsigned int i) const |
double & | operator[] (unsigned int i) |
void | asString (std::string &s) const |
Returns a human-readable textual representation of the object: "[x y z
rx ry rz]". More... | |
std::string | asString () const |
void | fromString (const std::string &s) |
Set the current object value from a string generated by 'asString' (eg: "[x y z yaw pitch roll]", angles in deg. More... | |
RTTI classes and functions | |
mrpt::utils::CObject::Ptr | duplicateGetSmartPtr () const |
Returns a copy of the object, indepently of its class, as a smart pointer (the newly created object will exist as long as any copy of this smart pointer). More... | |
Static Public Member Functions | |
static void * | operator new (size_t size, void *ptr) |
static bool | is_3D () |
static bool | is_PDF () |
Public Attributes | |
mrpt::math::CArrayDouble< 3 > | m_coords |
The translation vector [x,y,z]. More... | |
mrpt::math::CArrayDouble< 3 > | m_rotvec |
The rotation vector [vx,vy,vz]. More... | |
Protected Member Functions | |
CSerializable virtual methods | |
void | writeToStream (mrpt::utils::CStream &out, int *getVersion) const override |
Introduces a pure virtual method responsible for writing to a CStream. More... | |
void | readFromStream (mrpt::utils::CStream &in, int version) override |
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori. More... | |
RTTI stuff | |
using | Ptr = std::shared_ptr< CPose3DRotVec > |
using | ConstPtr = std::shared_ptr< const CPose3DRotVec > |
static mrpt::utils::CLASSINIT | _init_CPose3DRotVec |
static const mrpt::utils::TRuntimeClassId | runtimeClassId |
static constexpr const char * | className = "CPose3DRotVec" |
static const mrpt::utils::TRuntimeClassId * | _GetBaseClass () |
static const mrpt::utils::TRuntimeClassId & | GetRuntimeClassIdStatic () |
static mrpt::utils::CObject * | CreateObject () |
template<typename... Args> | |
static Ptr | Create (Args &&... args) |
virtual const mrpt::utils::TRuntimeClassId * | GetRuntimeClass () const override |
Returns information about the class of an object in runtime. More... | |
virtual mrpt::utils::CObject * | clone () const override |
Returns a deep copy (clone) of the object, indepently of its class. More... | |
Lie Algebra methods | |
static CPose3DRotVec | exp (const mrpt::math::CArrayDouble< 6 > &vect) |
Exponentiate a Vector in the SE(3) Lie Algebra to generate a new CPose3DRotVec (static method). More... | |
void | ln (mrpt::math::CArrayDouble< 6 > &out_ln) const |
Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the SE(3) Lie Algebra. More... | |
mrpt::math::CArrayDouble< 3 > | ln_rotation () const |
Take the logarithm of the 3x3 rotation matrix part of this pose, generating the corresponding vector in the Lie Algebra. More... | |
STL-like methods and typedefs | |
enum | { static_size = 6 } |
typedef double | value_type |
The type of the elements. More... | |
typedef double & | reference |
typedef const double & | const_reference |
typedef std::size_t | size_type |
typedef std::ptrdiff_t | difference_type |
static size_type | size () |
static bool | empty () |
static size_type | max_size () |
static void | resize (const size_t n) |
static bool | is3DPoseOrPoint () |
Return true for poses or points with a Z component, false otherwise. More... | |
double | x () const |
Common members of all points & poses classes. More... | |
double & | x () |
void | x (const double v) |
double | y () const |
double & | y () |
void | y (const double v) |
void | x_incr (const double v) |
void | y_incr (const double v) |
double | sqrDistanceTo (const CPoseOrPoint< OTHERCLASS > &b) const |
Returns the squared euclidean distance to another pose/point: More... | |
double | distanceTo (const CPoseOrPoint< OTHERCLASS > &b) const |
Returns the Euclidean distance to another pose/point: More... | |
double | distanceTo (const mrpt::math::TPoint3D &b) const |
Returns the euclidean distance to a 3D point: More... | |
double | distance2DToSquare (double ax, double ay) const |
Returns the squared 2D distance from this pose/point to a 2D point (ignores Z, if it exists). More... | |
double | distance3DToSquare (double ax, double ay, double az) const |
Returns the squared 3D distance from this pose/point to a 3D point. More... | |
double | distance2DTo (double ax, double ay) const |
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists). More... | |
double | distance3DTo (double ax, double ay, double az) const |
Returns the 3D distance from this pose/point to a 3D point. More... | |
double | norm () const |
Returns the euclidean norm of vector: ![]() | |
mrpt::math::CVectorDouble | getAsVectorVal () const |
Return the pose or point as a 1xN vector with all the components (see derived classes for each implementation) More... | |
void | getInverseHomogeneousMatrix (mrpt::math::CMatrixDouble44 &out_HM) const |
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose. More... | |
mrpt::math::CMatrixDouble44 | getInverseHomogeneousMatrix () const |
typedef const double& mrpt::poses::CPose3DRotVec::const_reference |
Definition at line 529 of file CPose3DRotVec.h.
using mrpt::poses::CPose3DRotVec::ConstPtr = std::shared_ptr<const CPose3DRotVec > |
Definition at line 47 of file CPose3DRotVec.h.
Definition at line 531 of file CPose3DRotVec.h.
using mrpt::poses::CPose3DRotVec::Ptr = std::shared_ptr< CPose3DRotVec > |
A typedef for the associated smart pointer
Definition at line 47 of file CPose3DRotVec.h.
typedef double& mrpt::poses::CPose3DRotVec::reference |
Definition at line 528 of file CPose3DRotVec.h.
typedef std::size_t mrpt::poses::CPose3DRotVec::size_type |
Definition at line 530 of file CPose3DRotVec.h.
Used to emulate CPosePDF types, for example, in mrpt::graphs::CNetworkOfPoses.
Definition at line 505 of file CPose3DRotVec.h.
typedef double mrpt::poses::CPose3DRotVec::value_type |
The type of the elements.
Definition at line 527 of file CPose3DRotVec.h.
anonymous enum |
Enumerator | |
---|---|
is_3D_val |
Definition at line 506 of file CPose3DRotVec.h.
anonymous enum |
Enumerator | |
---|---|
rotation_dimensions |
Definition at line 511 of file CPose3DRotVec.h.
anonymous enum |
Enumerator | |
---|---|
is_PDF_val |
Definition at line 515 of file CPose3DRotVec.h.
anonymous enum |
Enumerator | |
---|---|
static_size |
Definition at line 534 of file CPose3DRotVec.h.
|
inline |
Default constructor, with all the coordinates set to zero.
Definition at line 59 of file CPose3DRotVec.h.
References m_coords, and m_rotvec.
Referenced by changeCoordinatesReference().
|
inline |
Fast constructor that leaves all the data uninitialized - call with UNINITIALIZED_POSE as argument.
Definition at line 67 of file CPose3DRotVec.h.
References MRPT_UNUSED_PARAM.
|
inline |
Constructor with initilization of the pose.
Definition at line 74 of file CPose3DRotVec.h.
References m_coords, m_rotvec, mrpt::poses::CPoseOrPoint< CPose3DRotVec >::x(), and mrpt::poses::CPoseOrPoint< CPose3DRotVec >::y().
|
inline |
Constructor with initilization of the pose from a vector [w1 w2 w3 x y z].
Definition at line 88 of file CPose3DRotVec.h.
|
inline |
|
explicit |
Constructor from a 4x4 homogeneous matrix:
Definition at line 34 of file CPose3DRotVec.cpp.
|
explicit |
Constructor from a CPose3D object.
Definition at line 43 of file CPose3DRotVec.cpp.
References mrpt::poses::CPose3D::getHomogeneousMatrix(), R, mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
CPose3DRotVec::CPose3DRotVec | ( | const mrpt::math::CQuaternionDouble & | q, |
const double | _x, | ||
const double | _y, | ||
const double | _z | ||
) |
Constructor from a quaternion (which only represents the 3D rotation part) and a 3D displacement.
Definition at line 55 of file CPose3DRotVec.cpp.
|
inlineexplicit |
Constructor from an array with these 6 elements: [w1 w2 w3 x y z] where r{ij} are the entries of the 3x3 rotation matrix and t{x,y,z} are the 3D translation of the pose.
Definition at line 122 of file CPose3DRotVec.h.
|
staticprotected |
|
inline |
Scalar sum of all 6 components: This is diferent from poses composition, which is implemented as "+" operators.
Definition at line 329 of file CPose3DRotVec.h.
|
inline |
Returns a human-readable textual representation of the object: "[x y z rx ry rz]".
Definition at line 454 of file CPose3DRotVec.h.
References mrpt::mrpt::format(), m_coords, and m_rotvec.
|
inline |
Definition at line 460 of file CPose3DRotVec.h.
|
inline |
makes: this = p (+) this
Definition at line 311 of file CPose3DRotVec.h.
References composeFrom(), and CPose3DRotVec().
|
overridevirtual |
Returns a deep copy (clone) of the object, indepently of its class.
Implements mrpt::utils::CObject.
void CPose3DRotVec::composeFrom | ( | const CPose3DRotVec & | A, |
const CPose3DRotVec & | B, | ||
mrpt::math::CMatrixFixedNumeric< double, 6, 6 > * | out_jacobian_drvtC_drvtA = nullptr , |
||
mrpt::math::CMatrixFixedNumeric< double, 6, 6 > * | out_jacobian_drvtC_drvtB = nullptr |
||
) |
Makes "this = A (+) B"; this method is slightly more efficient than "this= A + B;" since it avoids the temporary object.
Definition at line 307 of file CPose3DRotVec.cpp.
References mrpt::obs::gnss::a1, mrpt::obs::gnss::a2, getRotationMatrix(), mrpt::poses::CPose3D::ln_rotation(), m_coords, mrpt::poses::CPose3DQuat::m_quat, m_rotvec, mrpt::poses::CPose3D::setRotationMatrix(), mrpt::math::skew_symmetric3(), mrpt::math::skew_symmetric3_neg(), toQuatXYZ(), and mrpt::poses::UNINITIALIZED_POSE.
Referenced by changeCoordinatesReference(), operator+(), and operator+=().
void CPose3DRotVec::composePoint | ( | double | lx, |
double | ly, | ||
double | lz, | ||
double & | gx, | ||
double & | gy, | ||
double & | gz, | ||
mrpt::math::CMatrixFixedNumeric< double, 3, 3 > * | out_jacobian_df_dpoint = nullptr , |
||
mrpt::math::CMatrixFixedNumeric< double, 3, 6 > * | out_jacobian_df_dpose = nullptr |
||
) | const |
An alternative, slightly more efficient way of doing with G and L being 3D points and P this 6D pose.
If pointers are provided, the corresponding Jacobians are returned. See this report for mathematical details.
Definition at line 177 of file CPose3DRotVec.cpp.
References MRPT_TODO, and THROW_EXCEPTION.
Referenced by composePoint(), and inverseComposePoint().
|
inline |
An alternative, slightly more efficient way of doing with G and L being 3D points and P this 6D pose.
Definition at line 233 of file CPose3DRotVec.h.
References composePoint(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
inlinestatic |
Definition at line 47 of file CPose3DRotVec.h.
|
static |
|
inlineinherited |
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
Definition at line 233 of file CPoseOrPoint.h.
|
inlineinherited |
Returns the squared 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
Definition at line 213 of file CPoseOrPoint.h.
|
inlineinherited |
Returns the 3D distance from this pose/point to a 3D point.
Definition at line 239 of file CPoseOrPoint.h.
|
inlineinherited |
Returns the squared 3D distance from this pose/point to a 3D point.
Definition at line 220 of file CPoseOrPoint.h.
|
inlineinherited |
Returns the Euclidean distance to another pose/point:
Definition at line 206 of file CPoseOrPoint.h.
|
inlineinherited |
Returns the euclidean distance to a 3D point:
Definition at line 245 of file CPoseOrPoint.h.
|
inlinestatic |
Definition at line 539 of file CPose3DRotVec.h.
|
static |
Exponentiate a Vector in the SE(3) Lie Algebra to generate a new CPose3DRotVec (static method).
Exponentiate a Vector in the SE3 Lie Algebra to generate a new CPose3DRotVec.
Definition at line 568 of file CPose3DRotVec.cpp.
|
inline |
Set the current object value from a string generated by 'asString' (eg: "[x y z yaw pitch roll]", angles in deg.
)
std::exception | On invalid format |
Definition at line 472 of file CPose3DRotVec.h.
References ASSERTMSG_, m_coords, m_rotvec, mrpt::mrpt::math::size(), and THROW_EXCEPTION.
|
inline |
Gets pose as an array with these 6 elements: [x y z vx vy vz] where v{xyz} is the rotation vector and {xyz} the 3D translation of the pose The target vector MUST ALREADY have space for 6 elements (i.e.
no .resize() method will be called).
Definition at line 388 of file CPose3DRotVec.h.
References m_coords, and m_rotvec.
Referenced by getAsVector().
|
inline |
Like getAs6Vector() but for dynamic size vectors (required by base class CPoseOrPoint)
Definition at line 401 of file CPose3DRotVec.h.
References getAs6Vector().
|
inlineinherited |
Return the pose or point as a 1xN vector with all the components (see derived classes for each implementation)
Definition at line 265 of file CPoseOrPoint.h.
|
inline |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).
Definition at line 141 of file CPose3DRotVec.h.
References getRotationMatrix(), and m_coords.
Referenced by getHomogeneousMatrixVal(), and inverseComposeFrom().
|
inline |
Definition at line 153 of file CPose3DRotVec.h.
References getHomogeneousMatrix().
Referenced by Pose3DRotVecTests::test_compose().
CPose3DRotVec CPose3DRotVec::getInverse | ( | ) | const |
Compute the inverse of this pose and return the result.
Definition at line 509 of file CPose3DRotVec.cpp.
References setFromTransformationMatrix(), mrpt::math::UNINITIALIZED_MATRIX, and mrpt::poses::UNINITIALIZED_POSE.
|
inlineinherited |
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.
Definition at line 287 of file CPoseOrPoint.h.
|
inlineinherited |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 295 of file CPoseOrPoint.h.
|
inline |
Definition at line 520 of file CPose3DRotVec.h.
|
inline |
Definition at line 521 of file CPose3DRotVec.h.
void CPose3DRotVec::getRotationMatrix | ( | mrpt::math::CMatrixDouble33 & | ROT | ) | const |
Get the 3x3 rotation matrix.
Definition at line 139 of file CPose3DRotVec.cpp.
References mrpt::poses::CPose3D::exp_rotation().
Referenced by composeFrom().
|
inline |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
Definition at line 163 of file CPose3DRotVec.h.
References mrpt::math::UNINITIALIZED_MATRIX.
Referenced by getHomogeneousMatrix().
|
overridevirtual |
Returns information about the class of an object in runtime.
Reimplemented from mrpt::utils::CSerializable.
|
static |
void CPose3DRotVec::inverse | ( | ) |
Convert this pose into its inverse, saving the result in itself.
Definition at line 501 of file CPose3DRotVec.cpp.
References mrpt::math::UNINITIALIZED_MATRIX.
void CPose3DRotVec::inverseComposeFrom | ( | const CPose3DRotVec & | A, |
const CPose3DRotVec & | B | ||
) |
Makes this method is slightly more efficient than "this= A - B;" since it avoids the temporary object.
Definition at line 524 of file CPose3DRotVec.cpp.
References getHomogeneousMatrix(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getInverseHomogeneousMatrix(), and mrpt::math::UNINITIALIZED_MATRIX.
Referenced by operator-().
void CPose3DRotVec::inverseComposePoint | ( | const double | gx, |
const double | gy, | ||
const double | gz, | ||
double & | lx, | ||
double & | ly, | ||
double & | lz, | ||
mrpt::math::CMatrixFixedNumeric< double, 3, 3 > * | out_jacobian_df_dpoint = nullptr , |
||
mrpt::math::CMatrixFixedNumeric< double, 3, 6 > * | out_jacobian_df_dpose = nullptr |
||
) | const |
Computes the 3D point L such as .
If pointers are provided, the corresponding Jacobians are returned. See this report for mathematical details.
Definition at line 552 of file CPose3DRotVec.cpp.
References composePoint(), MRPT_TODO, and MRPT_UNUSED_PARAM.
|
inlinestaticinherited |
Return true for poses or points with a Z component, false otherwise.
Definition at line 172 of file CPoseOrPoint.h.
|
inlinestatic |
Definition at line 510 of file CPose3DRotVec.h.
References is_3D_val.
|
inlinestatic |
Definition at line 519 of file CPose3DRotVec.h.
References is_PDF_val.
void CPose3DRotVec::ln | ( | mrpt::math::CArrayDouble< 6 > & | out_ln | ) | const |
Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the SE(3) Lie Algebra.
Take the logarithm of the 3x4 matrix defined by this pose, generating the corresponding vector in the SE3 Lie Algebra.
Definition at line 580 of file CPose3DRotVec.cpp.
CArrayDouble< 3 > CPose3DRotVec::ln_rotation | ( | ) | const |
Take the logarithm of the 3x3 rotation matrix part of this pose, generating the corresponding vector in the Lie Algebra.
Take the logarithm of the 3x3 rotation matrix, generating the corresponding vector in the Lie Algebra.
Definition at line 576 of file CPose3DRotVec.cpp.
|
inlinestatic |
Definition at line 540 of file CPose3DRotVec.h.
References static_size.
|
inlineinherited |
Returns the euclidean norm of vector: .
Definition at line 252 of file CPoseOrPoint.h.
Definition at line 47 of file CPose3DRotVec.h.
Definition at line 47 of file CPose3DRotVec.h.
|
inlinenoexcept |
Definition at line 47 of file CPose3DRotVec.h.
Definition at line 47 of file CPose3DRotVec.h.
Definition at line 47 of file CPose3DRotVec.h.
|
inlinenoexcept |
Definition at line 47 of file CPose3DRotVec.h.
|
inline |
Definition at line 47 of file CPose3DRotVec.h.
|
inline |
Definition at line 47 of file CPose3DRotVec.h.
|
inline |
Scalar multiplication of x,y,z,vx,vy,vz.
Definition at line 336 of file CPose3DRotVec.h.
|
inline |
The operator is the pose compounding operator.
Definition at line 176 of file CPose3DRotVec.h.
References composeFrom(), and mrpt::poses::UNINITIALIZED_POSE.
The operator is the pose compounding operator.
Definition at line 235 of file CPose3DRotVec.cpp.
References mrpt::poses::CPoint3D::m_coords.
The operator is the pose compounding operator.
Definition at line 249 of file CPose3DRotVec.cpp.
References mrpt::poses::CPoint3D::m_coords.
|
inline |
Make (b can be "this" without problems)
Definition at line 274 of file CPose3DRotVec.h.
References composeFrom().
|
inline |
Compute .
Definition at line 296 of file CPose3DRotVec.h.
References inverseComposeFrom(), and mrpt::poses::UNINITIALIZED_POSE.
|
inline |
|
inline |
Definition at line 407 of file CPose3DRotVec.h.
|
inline |
Definition at line 428 of file CPose3DRotVec.h.
|
overrideprotectedvirtual |
Introduces a pure virtual method responsible for loading from a CStream This can not be used directly be users, instead use "stream >> object;" for reading it from a stream or "stream >> object_ptr;" if the class is unknown apriori.
in | The input binary stream where the object data must read from. |
version | The version of the object stored in the stream: use this version number in your code to know how to read the incoming data. |
std::exception | On any error, see CStream::ReadBuffer |
Implements mrpt::utils::CSerializable.
Definition at line 89 of file CPose3DRotVec.cpp.
References MRPT_THROW_UNKNOWN_SERIALIZATION_VERSION.
|
inlinestatic |
Definition at line 541 of file CPose3DRotVec.h.
References mrpt::format(), and static_size.
CArrayDouble< 3 > CPose3DRotVec::rotVecFromRotMat | ( | const math::CMatrixDouble44 & | m | ) |
Create a vector with 3 components according to the input transformation matrix (only the rotation will be taken into account)
Definition at line 115 of file CPose3DRotVec.cpp.
References mrpt::poses::CPose3D::ln_rotation().
Referenced by setFromTransformationMatrix().
|
inline |
Definition at line 321 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Definition at line 324 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Definition at line 322 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Definition at line 325 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Definition at line 323 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Definition at line 326 of file CPose3DRotVec.h.
References m_rotvec.
|
inline |
Set pose from an array with these 6 elements: [x y z vx vy vz] where v{xyz} is the rotation vector and {xyz} the 3D translation of the pose.
Definition at line 370 of file CPose3DRotVec.h.
|
inline |
Definition at line 189 of file CPose3DRotVec.h.
References rotVecFromRotMat().
Referenced by getInverse().
|
inline |
Set the pose from a 3D position (meters) and yaw/pitch/roll angles (radians) - This method recomputes the internal rotation matrix.
Definition at line 352 of file CPose3DRotVec.h.
void CPose3DRotVec::setFromXYZAndAngles | ( | const double | x, |
const double | y, | ||
const double | z, | ||
const double | yaw = 0 , |
||
const double | pitch = 0 , |
||
const double | roll = 0 |
||
) |
Definition at line 104 of file CPose3DRotVec.cpp.
References mrpt::poses::CPose3D::ln_rotation(), mrpt::poses::CPose3D::m_coords, mrpt::obs::gnss::pitch, and mrpt::obs::gnss::roll.
Referenced by Pose3DRotVecTests::test_compose().
|
overridevirtual |
Set all data fields to quiet NaN.
Implements mrpt::poses::CPoseOrPoint< CPose3DRotVec >.
Definition at line 586 of file CPose3DRotVec.cpp.
|
inlinestatic |
Definition at line 538 of file CPose3DRotVec.h.
References static_size.
void CPose3DRotVec::sphericalCoordinates | ( | const mrpt::math::TPoint3D & | point, |
double & | out_range, | ||
double & | out_yaw, | ||
double & | out_pitch | ||
) | const |
Computes the spherical coordinates of a 3D point as seen from the 6D pose specified by this object.
For the coordinate system see mrpt::poses::CPose3D
Definition at line 149 of file CPose3DRotVec.cpp.
References local, mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
inlineinherited |
Returns the squared euclidean distance to another pose/point:
Definition at line 179 of file CPoseOrPoint.h.
void CPose3DRotVec::toQuatXYZ | ( | CPose3DQuat & | q | ) | const |
Convert this RVT into a quaternion + XYZ.
Definition at line 260 of file CPose3DRotVec.cpp.
Referenced by composeFrom().
|
inlinevirtualinherited |
Introduces a pure virtual method responsible for writing to a mxArray
Matlab object, typically a MATLAB struct
whose contents are documented in each derived class.
mxArray
(caller is responsible of memory freeing) or nullptr is class does not support conversion to MATLAB. Definition at line 89 of file CSerializable.h.
|
overrideprotectedvirtual |
Introduces a pure virtual method responsible for writing to a CStream.
This can not be used directly be users, instead use "stream << object;" for writing it to a stream.
out | The output binary stream where object must be dumped. |
getVersion | If nullptr, the object must be dumped. If not, only the version of the object dump must be returned in this pointer. This enables the versioning of objects dumping and backward compatibility with previously stored data. |
std::exception | On any error, see CStream::WriteBuffer |
Implements mrpt::utils::CSerializable.
Definition at line 74 of file CPose3DRotVec.cpp.
|
inlineinherited |
Common members of all points & poses classes.
< Get X coord.
Definition at line 135 of file CPoseOrPoint.h.
Referenced by CPose3DRotVec().
|
inlineinherited |
Definition at line 144 of file CPoseOrPoint.h.
|
inlineinherited |
v | Set X coord. |
Definition at line 153 of file CPoseOrPoint.h.
|
inlineinherited |
v | X+=v |
Definition at line 162 of file CPoseOrPoint.h.
|
inlineinherited |
|
inlineinherited |
Definition at line 148 of file CPoseOrPoint.h.
|
inlineinherited |
v | Set Y coord. |
Definition at line 157 of file CPoseOrPoint.h.
|
inlineinherited |
v | Y+=v |
Definition at line 166 of file CPoseOrPoint.h.
|
staticprotected |
Definition at line 47 of file CPose3DRotVec.h.
|
static |
Definition at line 47 of file CPose3DRotVec.h.
mrpt::math::CArrayDouble<3> mrpt::poses::CPose3DRotVec::m_coords |
The translation vector [x,y,z].
Definition at line 51 of file CPose3DRotVec.h.
Referenced by addComponents(), asString(), composeFrom(), CPose3DRotVec(), fromString(), getAs6Vector(), getHomogeneousMatrix(), mrpt::poses::operator!=(), operator*=(), operator=(), mrpt::poses::operator==(), operator[](), setFrom6Vector(), and setFromValues().
mrpt::math::CArrayDouble<3> mrpt::poses::CPose3DRotVec::m_rotvec |
The rotation vector [vx,vy,vz].
Definition at line 53 of file CPose3DRotVec.h.
Referenced by addComponents(), asString(), composeFrom(), mrpt::poses::CPose3D::CPose3D(), CPose3DRotVec(), fromString(), getAs6Vector(), mrpt::poses::operator!=(), operator*=(), operator=(), mrpt::poses::operator==(), operator[](), rx(), ry(), rz(), setFrom6Vector(), and setFromValues().
|
staticprotected |
Definition at line 47 of file CPose3DRotVec.h.
Page generated by Doxygen 1.8.14 for MRPT 1.9.9 Git: ae4571287 Thu Nov 23 00:06:53 2017 +0100 at dom oct 27 23:51:55 CET 2019 |