40 using namespace mrpt::math;
81 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
91 void assureSymmetry();
102 size_t size()
const {
return m_modes.size(); }
103 bool empty()
const {
return m_modes.empty(); }
132 m_modes.push_back(m);
135 iterator
begin() {
return m_modes.begin(); }
136 iterator
end() {
return m_modes.end(); }
137 const_iterator
begin()
const {
return m_modes.begin(); }
138 const_iterator
end()
const {
return m_modes.end(); }
140 iterator
erase(iterator i) {
return m_modes.erase(i); }
142 void resize(
const size_t N);
150 void mergeModes(
double max_KLd = 0.5,
bool verbose =
false );
155 void getMean(
CPose2D &mean_pose)
const;
169 void normalizeWeights();
173 void copyFrom(
const CPosePDF &o);
194 void changeCoordinatesReference(
const CPose3D &newReferenceBase );
198 void rotateAllCovariances(
const double &ang);
202 void drawSingleSample(
CPose2D &outPart )
const;
206 void drawManySamples(
size_t N, std::vector<vector_double> & outSamples )
const;
210 void inverse(CPosePDF &o)
const;
218 double evaluatePDF(
const CPose2D &x,
bool sumOverAllPhis =
false )
const;
222 double evaluateNormalizedPDF(
const CPose2D &x )
const;
226 void evaluatePDFInArea(
227 const double & x_min,
228 const double & x_max,
229 const double & y_min,
230 const double & y_max,
231 const double & resolutionXY,
234 bool sumOverAllPhis =
false );
238 void bayesianFusion(
const CPosePDF &p1,
const CPosePDF &p2,
const double &minMahalanobisDistToDrop=0 );