00001 00002 00003 #ifndef _plEKF_h_ 00004 #define _plEKF_h_ 00005 00006 #include <plKalmanFilter.h> 00007 00011 class plEKF :public plKalmanFilter 00012 { 00013 protected: 00014 plFloatMatrix Jacob_State,Jacob_Obs, Jacob_Obs_T; 00015 plFloatMatrix observation_noise_matrix; 00016 00017 00018 plFloatVector F; 00019 00025 virtual void update_F_Jacob(const plFloatVector &obs) = 0; 00026 00027 void update_R_matrix(); 00028 void update_H_matrix(); 00029 00030 unsigned int mes_size; 00031 00032 public: 00034 plEKF(unsigned int fsize, const plFloatMatrix &_a, 00035 const plFloatMatrix &system_noise, const plFloatMatrix &obs_noise); 00036 00037 virtual ~plEKF(){}; 00038 00039 void init(const plFloatVector& Xo, const plFloatMatrix& Po); 00040 void AddMeasurement(const plFloatVector &obs); 00041 00042 }; 00043 00044 00045 00046 00047 00048 00049 #endif