Bayesian Filtering Library  Generated from SVN r
nonminimalkalmanfilter.h
1 // $Id$
2 // Copyright (C) 2002 Klaas Gadeyne <first dot last at gmail dot com>
3 // Wim Meeussen <wim dot meeussen at mech dot kuleuven dot ac dot be>
4 //
5 // This program is free software; you can redistribute it and/or modify
6 // it under the terms of the GNU Lesser General Public License as published by
7 // the Free Software Foundation; either version 2.1 of the License, or
8 // (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU Lesser General Public License for more details.
14 //
15 // You should have received a copy of the GNU Lesser General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 //
19 
20 #ifndef __NONMINIMAL_KALMAN_FILTER__
21 #define __NONMINIMAL_KALMAN_FILTER__
22 
23 #include "kalmanfilter.h"
24 #include "../pdf/conditionalpdf.h"
25 #include "../pdf/gaussian.h"
26 #include "../model/nonlinearanalyticmeasurementmodel_gaussianuncertainty.h"
27 #include "../model/nonlinearanalyticsystemmodel_gaussianuncertainty.h"
28 #include "nonminimal_state/linearise.h"
29 #include "../filter/iteratedextendedkalmanfilter.h"
30 
31 namespace BFL
32 {
33 
34 #define NLSysModel NonLinearAnalyticSystemModelGaussianUncertainty
35 #define NLMeasModel NonLinearAnalyticMeasurementModelGaussianUncertainty
36 
37 
48  {
49  public:
60  unsigned int NrIterations,
61  vector<NLSysModel*> minimalsysmodels,
62  vector<NLMeasModel*> minimalmeasmodels,
63  vector<GiNaC::symbol> nonlinearstate = *(new vector<GiNaC::symbol>));
64 
66  virtual ~NonminimalKalmanFilter();
67 
68  // virtual functions
69  virtual void SysUpdate(SystemModel<ColumnVector>* const sysmodel,
70  const ColumnVector& u);
71  virtual void MeasUpdate(MeasurementModel<ColumnVector,ColumnVector>* const measmodel,
72  const ColumnVector& z,
73  const ColumnVector& s);
74 
75  private:
76  vector<GiNaC::symbol> MinimalState, NonminimalState;
77  Linearise *Linear;
78  IteratedExtendedKalmanFilter *NonminimalFilter, *MinimalFilter;
79  Gaussian *NonminimalPrior, *MinimalPrior;
80  NLMeasModel *MinimalMeasModel;
81 
82  }; // class
83 
84 } // End namespace
85 
86 #endif // __NONMINIMAL_KALMAN_FILTER__
NonminimalKalmanFilter(Gaussian *prior, unsigned int NrIterations, vector< NLSysModel * > minimalsysmodels, vector< NLMeasModel * > minimalmeasmodels, vector< GiNaC::symbol > nonlinearstate=*(new vector< GiNaC::symbol >))
virtual ~NonminimalKalmanFilter()
Destructor.
Class representing Gaussian (or normal density)
Definition: gaussian.h:27
Class representing the family of all Kalman Filters (EKF, IEKF, ...)
Definition: kalmanfilter.h:49