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 CPosePDFGrid_H
00029 #define CPosePDFGrid_H
00030
00031 #include <mrpt/poses/CPosePDF.h>
00032 #include <mrpt/poses/CPose2DGridTemplate.h>
00033
00034 namespace mrpt
00035 {
00036 namespace poses
00037 {
00038 using namespace mrpt::utils;
00039
00040
00041 DEFINE_SERIALIZABLE_PRE_CUSTOM_BASE( CPosePDFGrid, CPosePDF )
00042
00043
00049 class MRPTDLLIMPEXP CPosePDFGrid : public CPosePDF, public CPose2DGridTemplate<double>
00050 {
00051
00052 DEFINE_SERIALIZABLE( CPosePDFGrid )
00053
00054 protected:
00055
00056
00057 public:
00060 CPosePDFGrid(
00061 double xMin = -1.0f,
00062 double xMax = 1.0f,
00063 double yMin = -1.0f,
00064 double yMax = 1.0f,
00065 double resolutionXY = 0.5f,
00066 double resolutionPhi = DEG2RAD(180),
00067 double phiMin = -M_PIf,
00068 double phiMax = M_PIf
00069 );
00070
00073 virtual ~CPosePDFGrid();
00074
00077 void copyFrom(const CPosePDF &o);
00078
00081 void normalize();
00082
00085 void uniformDistribution();
00086
00090 CPose2D getEstimatedPose() const;
00091
00094 CMatrixD getEstimatedCovariance() const;
00095
00098 void saveToTextFile(const std::string &dataFile) const;
00099
00103 void changeCoordinatesReference( const CPose2D &newReferenceBase );
00104
00107 void bayesianFusion( CPosePDF &p1, CPosePDF &p2, const double &minMahalanobisDistToDrop = 0 );
00108
00111 void inverse(CPosePDF &o) const;
00112
00115 void drawSingleSample( CPose2D &outPart ) const;
00116
00119 void drawManySamples( size_t N, std::vector<vector_double> & outSamples ) const;
00120
00121 };
00122
00123
00124 }
00125 }
00126
00127 #endif