00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef CPose3DPDF_H
00029 #define CPose3DPDF_H
00030
00031 #include <mrpt/utils/CSerializable.h>
00032 #include <mrpt/poses/CPose3D.h>
00033 #include <mrpt/math/CMatrixD.h>
00034
00035 namespace mrpt
00036 {
00037 namespace poses
00038 {
00039 using namespace mrpt::math;
00040
00041 class CPosePDF;
00042
00043 DEFINE_SERIALIZABLE_PRE( CPose3DPDF )
00044
00045
00059 class MRPTDLLIMPEXP CPose3DPDF : public mrpt::utils::CSerializable
00060 {
00061 DEFINE_VIRTUAL_SERIALIZABLE( CPose3DPDF )
00062
00063 public:
00066 double getEstimatedCovarianceEntropy();
00067
00070 virtual CPose3D getEstimatedPose() const = 0 ;
00071
00074 virtual CMatrixD getEstimatedCovariance() const = 0;
00075
00079 virtual void copyFrom(const CPose3DPDF &o) = 0;
00080
00085 static CPose3DPDF* createFrom2D(const CPosePDF &o);
00086
00089 virtual void saveToTextFile(const std::string &file) const = 0;
00090
00094 virtual void changeCoordinatesReference( const CPose3D &newReferenceBase ) = 0;
00095
00098 virtual void drawSingleSample( CPose3D &outPart ) const = 0;
00099
00102 virtual void drawManySamples( size_t N, std::vector<vector_double> & outSamples ) const = 0;
00103
00106 virtual void bayesianFusion( CPose3DPDF &p1, CPose3DPDF &p2 ) = 0 ;
00107
00110 virtual void inverse(CPose3DPDF &o) const = 0;
00111
00112
00113 };
00114
00115
00116 }
00117 }
00118
00119 #endif