00001 00002 ////////////////////////////////////////////////////////////////////////////////////////////////// 00003 /*! \file SequentialFilterHistory.h 00004 * \brief An abstract class to store generic sequential filter data. 00005 * \author $Author: cakinli $ 00006 * \version $Revision: 1.7 $ 00007 * \date $Date: 2005/03/16 18:08:13 $ 00008 *////////////////////////////////////////////////////////////////////////////////////////////////// 00009 /* 00010 */ 00011 ////////////////////////////////////////////////////////////////////////////////////////////////// 00012 00013 #ifndef __SSSL_SEQUENTIALFILTER_HISTORY_H__ 00014 #define __SSSL_SEQUENTIALFILTER_HISTORY_H__ 00015 00016 #include <matrix/Matrix.h> 00017 #include <datahandling/History.h> 00018 #include "utils/Time.h" 00019 #include <Filtering/SequentialFilter.h> 00020 #include <vector> 00021 using namespace std; 00022 using namespace O_SESSAME; 00023 00024 /*! \brief An abstract class to store generic sequential filter data. */ 00025 class SequentialFilterHistory : public History 00026 { 00027 public: 00028 // DESTRUCTOR (no constructor) 00029 /*! Default destructor. */ 00030 virtual ~SequentialFilterHistory() {}; 00031 00032 // OPERATORS 00033 virtual void AppendHistory(const double& _appendTime); 00034 virtual void AppendHistory(const ssfTime& _appendTime); 00035 00036 virtual void ResetHistory(); 00037 00038 // INSPECTORS 00039 virtual Matrix GetHistory(); 00040 virtual void GetKalmanHistory(Matrix&, Matrix&) = 0; 00041 virtual Vector GetIterationHistory() { Vector temp(0); return temp; }; 00042 00043 // void GetState(const ssfTime& _requestedTime, sequentialFilterData& _returnSequentialStruct); 00044 00045 protected: 00046 // A PSEUDO-CONSTRUCTOR 00047 void InitializeSequentialFilterHistory(SequentialFilter* _ptr_filter); 00048 00049 /*! @brief Pointer to the filter that the history is logging. 00050 * Note that because this is a pointer to a base class it can be used to 00051 * point to an instance of any derived class. */ 00052 SequentialFilter* m_ptr_filter; 00053 00054 private: 00055 /*! \brief Internal vector container of the state Vector, x. */ 00056 vector<Vector> m_sfStateHistory; 00057 00058 /*! \brief Internal vector container of the control Vector, u. */ 00059 vector<Vector> m_sfControlHistory; 00060 00061 /*! \brief Internal vector container of the measurement Vector, z. */ 00062 vector<Vector> m_sfMeasurementHistory; 00063 00064 /*! \brief Internal vector container of the parameter Vector, w. */ 00065 vector<Vector> m_sfParameterHistory; 00066 00067 00068 }; 00069 00070 #endif 00071 00072 00073 // Do not change the comments below - they will be added automatically by CVS 00074 /***************************************************************************** 00075 * $Log: SequentialFilterHistory.h,v $ 00076 * Revision 1.7 2005/03/16 18:08:13 cakinli 00077 * *** empty log message *** 00078 * 00079 * Revision 1.6 2003/11/01 21:00:16 rsharo 00080 * changed "Time.h" includes to "utils/Time.h" includes. Also eliminated excess compile warnings. 00081 * 00082 * Revision 1.5 2003/07/12 17:54:40 simpliciter 00083 * Added IEKF and EKF Histories. 00084 * 00085 * Revision 1.4 2003/06/28 00:45:37 simpliciter 00086 * Basic housekeeping. 00087 * 00088 * Revision 1.3 2003/06/27 01:53:56 simpliciter 00089 * Fully commented and fully functional! 00090 * GetState not implemented because it would require / desire 00091 * iterpolations, which seems not in the spirit of logging the 00092 * performance of a filter. 00093 * 00094 * Revision 1.2 2003/06/24 15:50:06 simpliciter 00095 * Everything but the all important "GetHistory" command 00096 * should work. :) 00097 * 00098 * Revision 1.1 2003/06/12 20:47:23 simpliciter 00099 * Previously IterativeFilterHistory.h 00100 * 00101 * Revision 1.0 2003/06/11 20:55:53 simpliciter 00102 * Initial submission. 00103 * 00104 * 00105 * 00106 ******************************************************************************/