Class CPose3DQuatPDFGaussianInf

Inheritance Relationships

Base Type

Class Documentation

class CPose3DQuatPDFGaussianInf : public mrpt::poses::CPose3DQuatPDF

Declares a class that represents a Probability Density function (PDF) of a 3D pose using a quaternion \( p(\mathbf{x}) = [x ~ y ~ z ~ qr ~ qx ~ qy ~ qz]^\top \).

This class implements that PDF using a mono-modal Gaussian distribution storing the information matrix instead of its inverse, the covariance matrix. See mrpt::poses::CPose3DQuatPDF for more details, or mrpt::poses::CPose3DPDF for classes based on Euler angles instead.

Uncertainty of pose composition operations ( \( y = x \oplus u \)) is implemented in the methods “CPose3DQuatPDFGaussianInf::operator+=” and “CPose3DQuatPDF::jacobiansPoseComposition”.

Note

Read also: “A tutorial on SE(3) transformation parameterizations and

on-manifold optimization”, in blanco_se3_tutorial

Public Functions

CPose3DQuatPDFGaussianInf()

Default constructor - set all values to zero.

CPose3DQuatPDFGaussianInf(mrpt::math::TConstructorFlags_Quaternions constructor_dummy_param)

Constructor which left all the member uninitialized, for using when speed is critical - as argument, use UNINITIALIZED_QUATERNION.

explicit CPose3DQuatPDFGaussianInf(const CPose3DQuat &init_Mean)

Constructor from a default mean value, information matrix equals to zero.

CPose3DQuatPDFGaussianInf(const CPose3DQuat &init_Mean, const mrpt::math::CMatrixDouble77 &init_CovInv)

Constructor with mean and inverse covariance (information matrix).

inline const CPose3DQuat &getPoseMean() const
inline CPose3DQuat &getPoseMean()
inline void getMean(CPose3DQuat &mean_pose) const override
inline bool isInfType() const override
inline std::tuple<cov_mat_t, type_value> getCovarianceAndMean() const override
inline void getInformationMatrix(mrpt::math::CMatrixDouble77 &inf) const override

Returns the information (inverse covariance) matrix (a STATE_LEN x STATE_LEN matrix)

See also

getMean, getCovarianceAndMean

virtual void copyFrom(const CPose3DQuatPDF &o) override

Copy operator, translating if necessary (for example, between particles and gaussian representations)

bool saveToTextFile(const std::string &file) const override

Save the PDF to a text file, containing the 3D pose in the first line (x y z qr qx qy qz), then the information matrix in the next 7 lines.

void changeCoordinatesReference(const CPose3DQuat &newReferenceBase)

this = p (+) this. This can be used to convert a PDF from local coordinates to global, providing the point (newReferenceBase) from which “to project” the current pdf. Result PDF substituted the currently stored one in the object.

virtual void changeCoordinatesReference(const CPose3D &newReferenceBase) override

this = p (+) this. This can be used to convert a PDF from local coordinates to global, providing the point (newReferenceBase) from which “to project” the current pdf. Result PDF substituted the currently stored one in the object.

void drawSingleSample(CPose3DQuat &outPart) const override

Draws a single sample from the distribution

void drawManySamples(size_t N, std::vector<mrpt::math::CVectorDouble> &outSamples) const override

Draws a number of samples from the distribution, and saves as a list of 1x7 vectors, where each row contains a (x,y,z,qr,qx,qy,qz) datum

virtual void inverse(CPose3DQuatPDF &o) const override

Returns a new PDF such as: NEW_PDF = (0,0,0) - THIS_PDF

inline CPose3DQuatPDFGaussianInf operator-() const

Unary - operator, returns the PDF of the inverse pose.

void operator+=(const CPose3DQuat &Ap)

Makes: thisPDF = thisPDF + Ap, where “+” is pose composition (both the mean, and the covariance matrix are updated).

void operator+=(const CPose3DQuatPDFGaussianInf &Ap)

Makes: thisPDF = thisPDF + Ap, where “+” is pose composition (both the mean, and the covariance matrix are updated) (see formulas in jacobiansPoseComposition ).

void operator-=(const CPose3DQuatPDFGaussianInf &Ap)

Makes: thisPDF = thisPDF - Ap, where “-” is pose inverse composition (both the mean, and the covariance matrix are updated).

double evaluatePDF(const CPose3DQuat &x) const

Evaluates the PDF at a given point

double evaluateNormalizedPDF(const CPose3DQuat &x) const

Evaluates the ratio PDF(x) / PDF(MEAN), that is, the normalized PDF in the range [0,1]

Public Members

CPose3DQuat mean

The mean value

mrpt::math::CMatrixDouble77 cov_inv

The 7x7 information matrix (the inverse of the covariance)