indii/ml/filter/UnscentedKalmanFilterModel.hpp

00001 #ifndef INDII_ML_FILTER_UNSCENTEDKALMANFILTERMODEL_HPP
00002 #define INDII_ML_FILTER_UNSCENTEDKALMANFILTERMODEL_HPP
00003 
00004 #include "../aux/GaussianPdf.hpp"
00005 
00006 namespace indii {
00007   namespace ml {
00008     namespace filter {
00009 
00010 /**
00011  * UnscentedKalmanFilter compatible model.
00012  *
00013  * @author Lawrence Murray <lawrence@indii.org>
00014  * @version $Rev: 544 $
00015  * @date $Date: 2008-09-01 15:04:39 +0100 (Mon, 01 Sep 2008) $
00016  *
00017  * @param T The type of time.
00018  * 
00019  * @see indii::ml::filter for general usage guidelines.
00020  */
00021 template <class T = unsigned int>
00022 class UnscentedKalmanFilterModel {
00023 public:
00024   /**
00025    * Destructor.
00026    */
00027   virtual ~UnscentedKalmanFilterModel() = 0;
00028 
00029   /**
00030    * Get number of dimensions in state.
00031    *
00032    * @return Number of dimensions in state.
00033    */
00034   virtual unsigned int getStateSize() = 0;
00035 
00036   /**
00037    * Get system noise.
00038    *
00039    * @return \f$\mathbf{w}\f$; system noise.
00040    */
00041   virtual indii::ml::aux::GaussianPdf& getSystemNoise() = 0;
00042    
00043   /**
00044    * Get measurement noise.
00045    *
00046    * @return \f$\mathbf{v}\f$; measurement noise.
00047    */
00048   virtual indii::ml::aux::GaussianPdf& getMeasurementNoise() = 0;
00049 
00050   /**
00051    * Propagate sample through the state transition function.
00052    *
00053    * @param x \f$\mathbf{x}^*\f$; state sample.
00054    * @param w \f$\mathbf{w}^*\f$; noise sample.
00055    * @param delta \f$\Delta t\f$; time step.
00056    *
00057    * @return \f$f(\mathbf{x}^*,\mathbf{w}^*,\Delta t)\f$; propagation
00058    * of \f$\mathbf{x}^*\f$ through the transition function, given
00059    * noise of \f$\mathbf{w}^*\f$.
00060    */
00061   virtual indii::ml::aux::vector transition(const indii::ml::aux::vector& x,
00062       const indii::ml::aux::vector& w, T delta) = 0;
00063 
00064   /**
00065    * Propagate sample through the measurement function.
00066    *
00067    * @param x \f$\mathbf{x}^*\f$; state sample.
00068    * @param v \f$\mathbf{v}^*\f$; noise sample.
00069    *
00070    * @return \f$g(\mathbf{x}^*,\mathbf{v}^*)\f$; propagation of
00071    * \f$\mathbf{x}^*\f$ through the measurement function, given noise
00072    * of \f$\mathbf{v}^*\f$.
00073    */
00074   virtual indii::ml::aux::vector measure(const indii::ml::aux::vector& x,
00075       const indii::ml::aux::vector& v) = 0;
00076 
00077 };
00078 
00079     }
00080   }
00081 }
00082 
00083 template <class T>
00084 indii::ml::filter::UnscentedKalmanFilterModel<T>::~UnscentedKalmanFilterModel() {
00085   //
00086 }
00087 
00088 #endif

Generated on Wed Dec 17 15:11:57 2008 for dysii Dynamical Systems Library by  doxygen 1.5.3