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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 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
31namespace 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
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__
Class representing Gaussian (or normal density)
Definition: gaussian.h:28
Class representing the family of all Kalman Filters (EKF, IEKF, ...)
Definition: kalmanfilter.h:50
virtual ~NonminimalKalmanFilter()
Destructor.
NonminimalKalmanFilter(Gaussian *prior, unsigned int NrIterations, vector< NLSysModel * > minimalsysmodels, vector< NLMeasModel * > minimalmeasmodels, vector< GiNaC::symbol > nonlinearstate= *(new vector< GiNaC::symbol >))