00001 /************************************************************************************************/ 00002 /*! \file IteratedExtendedKalmanFilter.h 00003 * \brief The IteratedExtendedKalmanFilter class provides functionality beyond the ExtendedKalmanFilter class for advanced calculation of the measurement update of the state. 00004 * \author $Author: cakinli $ 00005 * \version $Revision: 1.9 $ 00006 * \date $Date: 2005/02/25 18:40:53 $ 00007 ************************************************************************************************/ 00008 /*! 00009 * 00010 ************************************************************************************************/ 00011 00012 #ifndef __SSSL_ITERATEDEXTENDEDKALMANFILTER_H__ 00013 #define __SSSL_ITERATEDEXTENDEDKALMANFILTER_H__ 00014 00015 #include <Filtering/ExtendedKalmanFilter.h> 00016 00017 #define DEFAULT_ITERATION_LIMIT 10 00018 #define DEFAULT_TOLERANCE 0.001 00019 00020 class IteratedExtendedKalmanFilter : public ExtendedKalmanFilter { 00021 00022 public: 00023 /*! Default Constructor */ 00024 IteratedExtendedKalmanFilter(); 00025 00026 /*! Constructor */ 00027 IteratedExtendedKalmanFilter(double propStepSize, int IterLimit, double tol); 00028 00029 /*! Destructor */ 00030 virtual ~IteratedExtendedKalmanFilter() { }; 00031 00032 // Facilitators 00033 00034 // Mutators 00035 00036 /*! Sets the limit on the number of iterations */ 00037 inline void SetIterationLimit(int iteratLimit) { m_iterationLimit = iteratLimit; }; 00038 00039 /*! Sets the tolerance */ 00040 inline void SetTolerance(double tol) { m_tolerance = tol; }; 00041 00042 /*! Estimates the states at the time of the measurements */ 00043 void EstimateState(); 00044 00045 // Inspectors 00046 00047 /*! Gets the iteration limit */ 00048 inline int GetIterationLimit() { return m_iterationLimit; }; 00049 00050 /*! Gets the tolerance */ 00051 inline double GetTolerance() { return m_tolerance; }; 00052 00053 /*! Gets the number of iterations */ 00054 inline int GetNumIterations() { return m_numIterations; }; 00055 00056 protected: 00057 00058 int m_iterationLimit; /*!< The maximum number of iterations allowed. */ 00059 double m_tolerance; /*!< The convergence tolerance. */ 00060 int m_numIterations; /*!< The number of iterations used. */ 00061 00062 private: 00063 00064 }; 00065 00066 #endif 00067 // Do not change the comments below - they will be added automatically by CVS 00068 /***************************************************************************** 00069 * $Log: IteratedExtendedKalmanFilter.h,v $ 00070 * Revision 1.9 2005/02/25 18:40:53 cakinli 00071 * Created Makefiles and organized include directives to reduce the number of 00072 * include paths. Reorganized libraries so that there is now one per source 00073 * directory. Each directory is self-contained in terms of its Makefile. 00074 * The local Makefile in each directory includes src/config.mk, which has all 00075 * the definitions and general and pattern rules. So at most, to see what 00076 * goes into building a target, a person needs to examine the Makefile in 00077 * that directory, and ../config.mk. 00078 * 00079 * Revision 1.8 2003/07/12 17:57:52 simpliciter 00080 * Added IEKF and EKF Histories. 00081 * 00082 * Revision 1.7 2003/07/01 21:04:45 mavandyk 00083 * Edited default constructor, and added another constructor to set iteration and step size values. 00084 * 00085 * Revision 1.6 2003/07/01 20:23:53 mavandyk 00086 * Corrected syntax errors. 00087 * 00088 * Revision 1.5 2003/06/30 21:47:32 mavandyk 00089 * Added comments and pulled out structs and replaced with multiple data members. 00090 * 00091 * Revision 1.4 2003/06/12 16:16:00 mavandyk 00092 * Changed all references to iterative filter to sequential filter for greater clarity. Removed improper lines of code involving iterated filter references. 00093 * 00094 * Revision 1.3 2003/06/11 15:46:42 simpliciter 00095 * Added include line for IterativeFilter.h. 00096 * 00097 * Revision 1.2 2003/06/11 13:08:27 simpliciter 00098 * Minor changes. 00099 * 00100 * Revision 1.1 2003/06/11 03:04:43 simpliciter 00101 * Initial submission. 00102 * 00103 ******************************************************************************/