MobileRobotParticleFilterModel.hpp

00001 #ifndef MOBILEROBOTPARTICLEFILTERMODEL_HPP
00002 #define MOBILEROBOTPARTICLEFILTERMODEL_HPP
00003 
00004 #include "indii/ml/filter/ParticleSmootherModel.hpp"
00005 #include "indii/ml/filter/KernelForwardBackwardSmootherModel.hpp"
00006 #include "indii/ml/filter/KernelTwoFilterSmootherModel.hpp"
00007 #include "indii/ml/aux/GaussianPdf.hpp"
00008 #include "indii/ml/aux/vector.hpp"
00009 #include "indii/ml/aux/matrix.hpp"
00010 
00011 using namespace indii::ml::filter;
00012 
00013 namespace aux = indii::ml::aux;
00014 
00015 /**
00016  * Mobile robot model for particle filter tests.
00017  */
00018 class MobileRobotParticleFilterModel
00019     : public virtual ParticleSmootherModel<unsigned int>,
00020       public virtual KernelForwardBackwardSmootherModel<unsigned int>,
00021       public virtual KernelTwoFilterSmootherModel<unsigned int> {
00022 public:
00023   MobileRobotParticleFilterModel(const double vel = 0.1,
00024       const double ang = 0.0);
00025 
00026   virtual ~MobileRobotParticleFilterModel();
00027 
00028   aux::GaussianPdf suggestPrior();
00029 
00030   virtual unsigned int getStateSize();
00031 
00032   virtual unsigned int getMeasurementSize();
00033 
00034   virtual aux::vector transition(const aux::vector& x,
00035       const unsigned int start, const unsigned int delta);
00036 
00037   virtual double weight(const aux::vector& x, const aux::vector& y);
00038 
00039   virtual aux::vector measure(const aux::vector& x);
00040 
00041   virtual aux::sparse_matrix alpha(const aux::DiracMixturePdf& p_xtn_ytn,
00042       const aux::DiracMixturePdf& p_xtnp1_ytnp1, const unsigned int start,
00043       const unsigned int delta);
00044 
00045 private:
00046   /**
00047    * System noise.
00048    */
00049   aux::GaussianPdf w;
00050 
00051   /**
00052    * Measurement noise.
00053    */
00054   aux::GaussianPdf v;
00055 
00056   /**
00057    * Translational velocity.
00058    */
00059   const double vel;
00060   
00061   /**
00062    * Angular velocity.
00063    */
00064   const double ang;
00065   
00066 };
00067 
00068 #endif
00069 

Generated on Wed Dec 17 15:05:50 2008 for dysii Filtering Test Suite by  doxygen 1.5.3