A class used to store a 2D pose.
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle.
For a complete description of Points/Poses, see mrpt::poses::CPoseOrPoint, or refer to the 2D/3D Geometry tutorial in the wiki.
#include <mrpt/poses/CPose2D.h>
Public Types | |
enum | { is_3D_val = 0 } |
enum | { rotation_dimensions = 2 } |
enum | { is_PDF_val = 0 } |
typedef CPose2D | type_value |
Used to emulate CPosePDF types, for example, in mrpt::graphs::CNetworkOfPoses. | |
Public Member Functions | |
CPose2D () | |
Default constructor (all coordinates to 0) | |
CPose2D (const double x, const double y, const double phi) | |
Constructor from an initial value of the pose. | |
CPose2D (const CPoint2D &) | |
Constructor from a CPoint2D object. | |
CPose2D (const CPose3D &) | |
Aproximation!! Avoid its use, since information is lost. | |
CPose2D (const mrpt::math::TPose2D &) | |
Constructor from lightweight object. | |
CPose2D (const CPoint3D &) | |
Constructor from CPoint3D with information loss. | |
CPose2D (TConstructorFlags_Poses) | |
Fast constructor that leaves all the data uninitialized - call with UNINITIALIZED_POSE as argument. | |
const double & | phi () const |
Get the phi angle of the 2D pose (in radians) | |
double & | phi () |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
double | phi_cos () const |
Get a (cached) value of cos(phi), recomputing it only once when phi changes. | |
double | phi_sin () const |
Get a (cached) value of sin(phi), recomputing it only once when phi changes. | |
void | phi (double angle) |
Set the phi angle of the 2D pose (in radians) | |
void | phi_incr (const double Aphi) |
Increment the PHI angle (without checking the 2 PI range, call normalizePhi is needed) | |
void | getAsVector (mrpt::math::CVectorDouble &v) const |
Returns a 1x3 vector with [x y phi]. | |
void | getAsVector (mrpt::math::CArrayDouble< 3 > &v) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
void | getHomogeneousMatrix (mrpt::math::CMatrixDouble44 &out_HM) const |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation). | |
void | getRotationMatrix (mrpt::math::CMatrixDouble22 &R) const |
Returns the SE(2) 2x2 rotation matrix. | |
void | getRotationMatrix (mrpt::math::CMatrixDouble33 &R) const |
Returns the equivalent SE(3) 3x3 rotation matrix, with (2,2)=1. | |
mrpt::math::CMatrixDouble22 | getRotationMatrix () const |
CPose2D | operator+ (const CPose2D &D) const |
The operator ![]() | |
void | composeFrom (const CPose2D &A, const CPose2D &B) |
Makes ![]() | |
CPose3D | operator+ (const CPose3D &D) const |
The operator ![]() | |
CPoint2D | operator+ (const CPoint2D &u) const |
The operator ![]() | |
void | composePoint (double lx, double ly, double &gx, double &gy) const |
An alternative, slightly more efficient way of doing ![]() | |
void | composePoint (const mrpt::math::TPoint2D &l, mrpt::math::TPoint2D &g) const |
void | composePoint (const mrpt::math::TPoint3D &l, mrpt::math::TPoint3D &g) const |
void | composePoint (double lx, double ly, double lz, double &gx, double &gy, double &gz) const |
CPoint3D | operator+ (const CPoint3D &u) const |
The operator ![]() | |
void | inverseComposeFrom (const CPose2D &A, const CPose2D &B) |
Makes ![]() | |
void | inverse () |
Convert this pose into its inverse, saving the result in itself. | |
CPose2D | operator- (const CPose2D &b) const |
Compute ![]() | |
CPose3D | operator- (const CPose3D &b) const |
The operator ![]() | |
void | AddComponents (CPose2D &p) |
Scalar sum of components: This is diferent from poses composition, which is implemented as "+" operators in "CPose" derived classes. | |
void | operator*= (const double s) |
Scalar multiplication. | |
CPose2D & | operator+= (const CPose2D &b) |
Make ![]() | |
void | normalizePhi () |
Forces "phi" to be in the range [-pi,pi];. | |
void | asString (std::string &s) const |
Returns a human-readable textual representation of the object (eg: "[x y yaw]", yaw in degrees) | |
std::string | asString () const |
void | fromString (const std::string &s) |
Set the current object value from a string generated by 'asString' (eg: "[0.02 1.04 -0.8]" ) | |
const double & | operator[] (unsigned int i) const |
double & | operator[] (unsigned int i) |
void | changeCoordinatesReference (const CPose2D &p) |
makes: this = p (+) this | |
double | distance2DFrobeniusTo (const CPose2D &p) const |
Returns the 2D distance from this pose/point to a 2D pose using the Frobenius distance. | |
const type_value & | getPoseMean () const |
type_value & | getPoseMean () |
void | setToNaN () MRPT_OVERRIDE |
Set all data fields to quiet NaN. | |
Static Public Member Functions | |
static bool | is_3D () |
static bool | is_PDF () |
Public Attributes | |
mrpt::math::CArrayDouble< 2 > | m_coords |
[x,y] | |
Protected Member Functions | |
void | update_cached_cos_sin () const |
CSerializable virtual methods | |
void | writeToStream (mrpt::utils::CStream &out, int *getVersion) const MRPT_OVERRIDE |
void | readFromStream (mrpt::utils::CStream &in, int version) MRPT_OVERRIDE |
Protected Attributes | |
double | m_phi |
The orientation of the pose, in radians. | |
double | m_cosphi |
double | m_sinphi |
Precomputed cos() & sin() of phi. | |
bool | m_cossin_uptodate |
STL-like methods and typedefs | |
| |
enum | { static_size = 3 } |
typedef double | value_type |
The type of the elements. | |
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) |
RTTI stuff <br> | |
typedef CPose2DPtr | SmartPtr |
static mrpt::utils::CLASSINIT | _init_CPose2D |
static mrpt::utils::TRuntimeClassId | classCPose2D |
static const mrpt::utils::TRuntimeClassId * | classinfo |
static const mrpt::utils::TRuntimeClassId * | _GetBaseClass () |
virtual const mrpt::utils::TRuntimeClassId * | GetRuntimeClass () const MRPT_OVERRIDE |
virtual mrpt::utils::CObject * | duplicate () const MRPT_OVERRIDE |
static mrpt::utils::CObject * | CreateObject () |
static CPose2DPtr | Create () |
double | x () const |
Common members of all points & poses classes. | |
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) |
template<class OTHERCLASS > | |
double | sqrDistanceTo (const CPoseOrPoint< OTHERCLASS > &b) const |
Returns the squared euclidean distance to another pose/point: | |
template<class OTHERCLASS > | |
double | distanceTo (const CPoseOrPoint< OTHERCLASS > &b) const |
Returns the Euclidean distance to another pose/point: | |
double | distanceTo (const mrpt::math::TPoint3D &b) const |
Returns the euclidean distance to a 3D point: | |
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). | |
double | distance3DToSquare (double ax, double ay, double az) const |
Returns the squared 3D distance from this pose/point to a 3D point. | |
double | distance2DTo (double ax, double ay) const |
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists). | |
double | distance3DTo (double ax, double ay, double az) const |
Returns the 3D distance from this pose/point to a 3D point. | |
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) | |
mrpt::math::CMatrixDouble44 | getHomogeneousMatrixVal () const |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation). | |
void | getInverseHomogeneousMatrix (mrpt::math::CMatrixDouble44 &out_HM) const |
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose. | |
mrpt::math::CMatrixDouble44 | getInverseHomogeneousMatrix () const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
static bool | is3DPoseOrPoint () |
Return true for poses or points with a Z component, false otherwise. | |
typedef const double& mrpt::poses::CPose2D::const_reference |
typedef std::ptrdiff_t mrpt::poses::CPose2D::difference_type |
typedef double& mrpt::poses::CPose2D::reference |
typedef std::size_t mrpt::poses::CPose2D::size_type |
Used to emulate CPosePDF types, for example, in mrpt::graphs::CNetworkOfPoses.
typedef double mrpt::poses::CPose2D::value_type |
mrpt::poses::CPose2D::CPose2D | ( | ) |
Default constructor (all coordinates to 0)
mrpt::poses::CPose2D::CPose2D | ( | const double | x, |
const double | y, | ||
const double | phi | ||
) |
Constructor from an initial value of the pose.
|
explicit |
Aproximation!! Avoid its use, since information is lost.
mrpt::poses::CPose2D::CPose2D | ( | const mrpt::math::TPose2D & | ) |
Constructor from lightweight object.
|
explicit |
Constructor from CPoint3D with information loss.
|
inline |
|
staticprotected |
void mrpt::poses::CPose2D::AddComponents | ( | CPose2D & | p | ) |
Scalar sum of components: This is diferent from poses composition, which is implemented as "+" operators in "CPose" derived classes.
|
inline |
void mrpt::poses::CPose2D::asString | ( | std::string & | s | ) | const |
Returns a human-readable textual representation of the object (eg: "[x y yaw]", yaw in degrees)
|
inline |
Makes
void mrpt::poses::CPose2D::composePoint | ( | const mrpt::math::TPoint2D & | l, |
mrpt::math::TPoint2D & | g | ||
) | const |
void mrpt::poses::CPose2D::composePoint | ( | const mrpt::math::TPoint3D & | l, |
mrpt::math::TPoint3D & | g | ||
) | const |
void mrpt::poses::CPose2D::composePoint | ( | double | lx, |
double | ly, | ||
double & | gx, | ||
double & | gy | ||
) | const |
An alternative, slightly more efficient way of doing
void mrpt::poses::CPose2D::composePoint | ( | double | lx, |
double | ly, | ||
double | lz, | ||
double & | gx, | ||
double & | gy, | ||
double & | gz | ||
) | const |
|
static |
|
static |
double mrpt::poses::CPose2D::distance2DFrobeniusTo | ( | const CPose2D & | p | ) | const |
Returns the 2D distance from this pose/point to a 2D pose using the Frobenius distance.
|
inlineinherited |
Returns the 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
Definition at line 165 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance2DToSquare().
|
inlineinherited |
Returns the squared 2D distance from this pose/point to a 2D point (ignores Z, if it exists).
Definition at line 156 of file CPoseOrPoint.h.
References mrpt::utils::square(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance2DTo().
|
inlineinherited |
Returns the 3D distance from this pose/point to a 3D point.
Definition at line 168 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DToSquare().
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo().
|
inlineinherited |
Returns the squared 3D distance from this pose/point to a 3D point.
Definition at line 159 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::is3DPoseOrPoint(), mrpt::utils::square(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DTo().
|
inlineinherited |
Returns the Euclidean distance to another pose/point:
Definition at line 150 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::sqrDistanceTo().
|
inlineinherited |
Returns the euclidean distance to a 3D point:
Definition at line 171 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DTo(), mrpt::math::TPoint3D::x, mrpt::math::TPoint3D::y, and mrpt::math::TPoint3D::z.
|
virtual |
void mrpt::poses::CPose2D::fromString | ( | const std::string & | s | ) |
Set the current object value from a string generated by 'asString' (eg: "[0.02 1.04 -0.8]" )
std::exception | On invalid format |
void mrpt::poses::CPose2D::getAsVector | ( | mrpt::math::CArrayDouble< 3 > & | v | ) | const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
void mrpt::poses::CPose2D::getAsVector | ( | mrpt::math::CVectorDouble & | v | ) | const |
Returns a 1x3 vector with [x y phi].
|
inlineinherited |
Return the pose or point as a 1xN vector with all the components (see derived classes for each implementation)
Definition at line 181 of file CPoseOrPoint.h.
void mrpt::poses::CPose2D::getHomogeneousMatrix | ( | mrpt::math::CMatrixDouble44 & | out_HM | ) | const |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).
|
inlineinherited |
Returns the corresponding 4x4 homogeneous transformation matrix for the point(translation) or pose (translation+orientation).
Definition at line 191 of file CPoseOrPoint.h.
References mrpt::math::UNINITIALIZED_MATRIX.
|
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 208 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getInverseHomogeneousMatrix(), and mrpt::math::UNINITIALIZED_MATRIX.
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::getInverseHomogeneousMatrix().
|
inlineinherited |
Returns the corresponding 4x4 inverse homogeneous transformation matrix for this point or pose.
Definition at line 201 of file CPoseOrPoint.h.
References mrpt::math::homogeneousMatrixInverse().
|
inline |
|
inline |
|
inline |
Definition at line 111 of file CPose2D.h.
References mrpt::math::UNINITIALIZED_MATRIX.
void mrpt::poses::CPose2D::getRotationMatrix | ( | mrpt::math::CMatrixDouble22 & | R | ) | const |
Returns the SE(2) 2x2 rotation matrix.
void mrpt::poses::CPose2D::getRotationMatrix | ( | mrpt::math::CMatrixDouble33 & | R | ) | const |
Returns the equivalent SE(3) 3x3 rotation matrix, with (2,2)=1.
|
virtual |
void mrpt::poses::CPose2D::inverse | ( | ) |
Convert this pose into its inverse, saving the result in itself.
Makes
Referenced by mrpt::nav::PoseDistanceMetric< TNodeSE2_TP >::distance(), and operator-().
|
inlinestaticinherited |
Return true for poses or points with a Z component, false otherwise.
Definition at line 127 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DToSquare(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::norm(), mrpt::poses::operator<(), mrpt::poses::operator<<(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::sqrDistanceTo().
|
inlinestatic |
Definition at line 246 of file CPose2D.h.
References static_size.
|
inlineinherited |
Returns the euclidean norm of vector:
Definition at line 174 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::is3DPoseOrPoint(), mrpt::utils::square(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
void mrpt::poses::CPose2D::normalizePhi | ( | ) |
Forces "phi" to be in the range [-pi,pi];.
void mrpt::poses::CPose2D::operator*= | ( | const double | s | ) |
Scalar multiplication.
The operator
The operator
The operator
The operator
Compute
Definition at line 154 of file CPose2D.h.
References inverseComposeFrom(), and mrpt::poses::UNINITIALIZED_POSE.
The operator
|
inline |
|
inline |
|
inline |
|
inline |
Get the phi angle of the 2D pose (in radians)
Definition at line 84 of file CPose2D.h.
Referenced by mrpt::graphs::detail::graph_ops< graph_t >::auxEuclid2Dist(), mrpt::poses::SE_traits< 2 >::exp(), mrpt::utils::CRobotSimulator::getPHI(), mrpt::poses::SE_traits< 2 >::ln(), mrpt::graphs::detail::graph_ops< graph_t >::write_EDGE_line(), and mrpt::graphs::detail::graph_ops< graph_t >::write_VERTEX_line().
|
inline |
|
inline |
|
inline |
|
inline |
|
protected |
|
inlinestatic |
Definition at line 247 of file CPose2D.h.
References mrpt::format(), and static_size.
|
virtual |
Set all data fields to quiet NaN.
Implements mrpt::poses::CPoseOrPoint< DERIVEDCLASS >.
|
inlinestatic |
Definition at line 244 of file CPose2D.h.
References static_size.
|
inlineinherited |
Returns the squared euclidean distance to another pose/point:
Definition at line 130 of file CPoseOrPoint.h.
References mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::is3DPoseOrPoint(), mrpt::utils::square(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::x(), and mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::y().
Referenced by mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distanceTo().
|
inlineprotected |
|
protected |
|
inlineinherited |
Definition at line 116 of file CPoseOrPoint.h.
|
inlineinherited |
Common members of all points & poses classes.
< Get X coord.
Definition at line 113 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoint< DERIVEDCLASS >::asString(), mrpt::graphs::detail::graph_ops< graph_t >::auxEuclid2Dist(), mrpt::graphs::detail::graph_ops< graph_t >::auxEuclid2Dist(), mrpt::poses::CPoint2D::CPoint2D(), mrpt::nav::PoseDistanceMetric< TNodeSE2_TP >::distance(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance2DToSquare(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DToSquare(), mrpt::poses::SE_traits< 2 >::exp(), mrpt::poses::CPoint< DERIVEDCLASS >::getHomogeneousMatrix(), mrpt::utils::CRobotSimulator::getX(), mrpt::opengl::graph_tools::graph_visualize(), mrpt::maps::CColouredPointsMap::insertPoint(), mrpt::maps::COctoMapBase< OCTREE, OCTREE_NODE >::internal_build_PointCloud_for_observation(), mrpt::poses::SE_traits< 2 >::ln(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::norm(), mrpt::poses::operator<(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::sqrDistanceTo(), mrpt::graphs::detail::graph_ops< graph_t >::write_EDGE_line(), mrpt::graphs::detail::graph_ops< graph_t >::write_EDGE_line(), mrpt::graphs::detail::graph_ops< graph_t >::write_VERTEX_line(), and mrpt::graphs::detail::graph_ops< graph_t >::write_VERTEX_line().
|
inlineinherited |
v | Set X coord. |
Definition at line 119 of file CPoseOrPoint.h.
|
inlineinherited |
v | X+=v |
Definition at line 122 of file CPoseOrPoint.h.
|
inlineinherited |
Definition at line 117 of file CPoseOrPoint.h.
|
inlineinherited |
< Get Y coord.
Definition at line 114 of file CPoseOrPoint.h.
Referenced by mrpt::poses::CPoint< DERIVEDCLASS >::asString(), mrpt::graphs::detail::graph_ops< graph_t >::auxEuclid2Dist(), mrpt::graphs::detail::graph_ops< graph_t >::auxEuclid2Dist(), mrpt::poses::CPoint2D::CPoint2D(), mrpt::nav::PoseDistanceMetric< TNodeSE2_TP >::distance(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance2DToSquare(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::distance3DToSquare(), mrpt::poses::SE_traits< 2 >::exp(), mrpt::poses::CPoint< DERIVEDCLASS >::getHomogeneousMatrix(), mrpt::utils::CRobotSimulator::getY(), mrpt::opengl::graph_tools::graph_visualize(), mrpt::maps::CColouredPointsMap::insertPoint(), mrpt::maps::COctoMapBase< OCTREE, OCTREE_NODE >::internal_build_PointCloud_for_observation(), mrpt::poses::SE_traits< 2 >::ln(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::norm(), mrpt::poses::operator<(), mrpt::poses::CPoseOrPoint< DERIVEDCLASS >::sqrDistanceTo(), mrpt::graphs::detail::graph_ops< graph_t >::write_EDGE_line(), mrpt::graphs::detail::graph_ops< graph_t >::write_EDGE_line(), mrpt::graphs::detail::graph_ops< graph_t >::write_VERTEX_line(), and mrpt::graphs::detail::graph_ops< graph_t >::write_VERTEX_line().
|
inlineinherited |
v | Set Y coord. |
Definition at line 120 of file CPoseOrPoint.h.
|
inlineinherited |
v | Y+=v |
Definition at line 123 of file CPoseOrPoint.h.
|
staticprotected |
|
static |
|
static |
mrpt::math::CArrayDouble<2> mrpt::poses::CPose2D::m_coords |
|
mutableprotected |
|
protected |
Page generated by Doxygen 1.9.8 for MRPT 1.4.0 SVN: at Thu Dec 14 16:41:50 UTC 2023 |