00001 // This file is part of kfilter. 00002 // kfilter is a C++ variable-dimension extended kalman filter library. 00003 // 00004 // Copyright (C) 2004 Vincent Zalzal, Sylvain Marleau 00005 // Copyright (C) 2001, 2004 Richard Gourdeau 00006 // Copyright (C) 2004 GRPR and DGE's Automation sector 00007 // École Polytechnique de Montréal 00008 // 00009 // Code adapted from algorithms presented in : 00010 // Bierman, G. J. "Factorization Methods for Discrete Sequential 00011 // Estimation", Academic Press, 1977. 00012 // 00013 // This library is free software; you can redistribute it and/or 00014 // modify it under the terms of the GNU Lesser General Public 00015 // License as published by the Free Software Foundation; either 00016 // version 2.1 of the License, or (at your option) any later version. 00017 // 00018 // This library is distributed in the hope that it will be useful, 00019 // but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00021 // Lesser General Public License for more details. 00022 // 00023 // You should have received a copy of the GNU Lesser General Public 00024 // License along with this library; if not, write to the Free Software 00025 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00026 00027 #ifndef KFILTER_HPP 00028 #define KFILTER_HPP 00029 00032 00033 #include "kalman/ekfilter.hpp" 00034 00035 namespace Kalman { 00036 00037 // TODO : il faut que E(v) == 0 && E(w) == 0 !!! 00038 00040 00081 template<typename T, K_UINT_32 BEG, bool OQ = false, 00082 bool OVR = false, bool DBG = true> 00083 class KFilter : public EKFilter<T, BEG, OQ, OVR, DBG> { 00084 public: 00085 00087 virtual ~KFilter() = 0; 00088 00089 protected: 00090 00092 virtual void makeBaseB(); 00093 00095 virtual void makeB(); 00096 00098 Matrix B; 00099 00100 private: 00101 00103 virtual void makeProcess(); 00104 00106 virtual void makeMeasure(); 00107 00109 virtual void sizeUpdate(); 00110 00112 Vector x__; 00113 }; 00114 00115 } 00116 00117 #include "kalman/kfilter_impl.hpp" 00118 00119 #endif