class mrpt::poses::CPointPDF
Overview
Declares a class that represents a Probability Distribution function (PDF) of a 3D point (x,y,z).
This class is just the base class for unifying many different ways this PDF can be implemented.
For convenience, a pose composition is also defined for any PDF derived class, changeCoordinatesReference, in the form of a method rather than an operator.
For a similar class for 6D poses (a 3D point with attitude), see CPose3DPDF
See also: probabilistic spatial representations
See also:
#include <mrpt/poses/CPointPDF.h> class CPointPDF: public mrpt::serialization::CSerializable, public mrpt::math::CProbabilityDensityFunction { public: // typedefs typedef std::shared_ptr<CPointPDF> Ptr; typedef std::shared_ptr<const CPointPDF> ConstPtr; // enums enum { is_3D_val = 1, }; enum { is_PDF_val = 1, }; // methods virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); virtual void copyFrom(const CPointPDF& o) = 0; virtual void bayesianFusion( const CPointPDF& p1, const CPointPDF& p2, const double minMahalanobisDistToDrop = 0 ) = 0; virtual void changeCoordinatesReference(const CPose3D& newReferenceBase) = 0; template <class OPENGL_SETOFOBJECTSPTR> void getAs3DObject(OPENGL_SETOFOBJECTSPTR& out_obj) const; template <class OPENGL_SETOFOBJECTSPTR, class OPENGL_SETOFOBJECTS> OPENGL_SETOFOBJECTSPTR getAs3DObject() const; static constexpr bool is_3D(); static constexpr bool is_PDF(); }; // direct descendants class CBeacon; class CPointPDFGaussian; class CPointPDFParticles; class CPointPDFSOG;
Inherited Members
public: // typedefs typedef std::shared_ptr<CObject> Ptr; typedef std::shared_ptr<const CObject> ConstPtr; typedef std::unique_ptr<CObject> UniquePtr; typedef std::unique_ptr<const CObject> ConstUniquePtr; typedef std::shared_ptr<CSerializable> Ptr; typedef std::shared_ptr<const CSerializable> ConstPtr; typedef TDATA type_value; typedef CProbabilityDensityFunction<TDATA, STATE_LEN> self_t; typedef mrpt::math::CMatrixFixed<double, STATE_LEN, STATE_LEN> cov_mat_t; typedef cov_mat_t inf_mat_t; // fields static constexpr size_t state_length = STATE_LEN; // methods mrpt::rtti::CObject::Ptr duplicateGetSmartPtr() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; virtual CObject* clone() const = 0; virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const; static const mrpt::rtti::TRuntimeClassId& GetRuntimeClassIdStatic(); CProbabilityDensityFunction& operator = (const CProbabilityDensityFunction&); CProbabilityDensityFunction& operator = (CProbabilityDensityFunction&&); virtual void getMean(type_value& mean_point) const = 0; virtual std::tuple<cov_mat_t, type_value> getCovarianceAndMean() const = 0; virtual void getCovarianceAndMean(cov_mat_t& c, TDATA& mean) const; void getCovarianceDynAndMean(mrpt::math::CMatrixDouble& cov, type_value& mean_point) const; type_value getMeanVal() const; void getCovariance(mrpt::math::CMatrixDouble& cov) const; void getCovariance(cov_mat_t& cov) const; cov_mat_t getCovariance() const; virtual bool isInfType() const; virtual void getInformationMatrix(inf_mat_t& inf) const; virtual bool saveToTextFile(const std::string& file) const = 0; virtual void drawSingleSample(TDATA& outPart) const = 0; virtual void drawManySamples(size_t N, std::vector<mrpt::math::CVectorDouble>& outSamples) const; double getCovarianceEntropy() const;
Methods
virtual const mrpt::rtti::TRuntimeClassId* GetRuntimeClass() const
Returns information about the class of an object in runtime.
virtual void copyFrom(const CPointPDF& o) = 0
Copy operator, translating if necessary (for example, between particles and gaussian representations)
virtual void bayesianFusion( const CPointPDF& p1, const CPointPDF& p2, const double minMahalanobisDistToDrop = 0 ) = 0
Bayesian fusion of two point distributions (product of two distributions->new distribution), then save the result in this object (WARNING: See implementing classes to see classes that can and cannot be mixtured!)
Parameters:
p1 |
The first distribution to fuse |
p2 |
The second distribution to fuse |
minMahalanobisDistToDrop |
If set to different of 0, the result of very separate Gaussian modes (that will result in negligible components) in SOGs will be dropped to reduce the number of modes in the output. |
template <class OPENGL_SETOFOBJECTSPTR> void getAs3DObject(OPENGL_SETOFOBJECTSPTR& out_obj) const
Returns a 3D representation of this PDF (it doesn’t clear the current contents of out_obj, but append new OpenGL objects to that list)
Needs the mrpt-opengl library, and using mrpt::viz::CSetOfObjects::Ptr as template argument.
By default, ellipsoids for the confidence intervals of “q=3” are drawn; for more mathematical details, see CGeneralizedEllipsoidTemplate::setQuantiles()
template <class OPENGL_SETOFOBJECTSPTR, class OPENGL_SETOFOBJECTS> OPENGL_SETOFOBJECTSPTR getAs3DObject() const
Returns a 3D representation of this PDF.
Needs the mrpt-opengl library, and using mrpt::viz::CSetOfObjects::Ptr as template argument.