CIFlt.hpp

Go to the documentation of this file.
00001 #ifndef _BAYES_FILTER_CI
00002 #define _BAYES_FILTER_CI
00003 
00004 /*
00005  * Bayes++ the Bayesian Filtering Library
00006  * Copyright (c) 2002 Michael Stevens
00007  * See accompanying Bayes++.htm for terms and conditions of use.
00008  *
00009  * $Id: CIFlt.hpp 562 2006-04-05 20:46:23 +0200 (Wed, 05 Apr 2006) mistevens $
00010  */
00011 
00012 /*
00013  * Covariance Intersection Filter Scheme.
00014  *
00015  * References
00016  *  [1] "A Non divergent Estimation Algorithm in the Presence of Unknown Correlations"
00017  *   Simon J Julier, Jeffrey K Uhlmann
00018  *
00019  * CI provides a generalised consistent method to combine mean and covariances
00020  * of two estimates. The combination can be optimised by chosing a norm of the
00021  * combined correlations. The norm (omega) is restrict to 0..1 inclusive an effectively
00022  * scales the combination
00023  * Here is CI with a predict and obeserve model to form a filter.
00024  *
00025  * The Omega norm chosen here is the fixed value of 0.5
00026  * The Omega function should be overloaded to produce more useful results
00027  *
00028  * The filter is operated by performing a
00029  *  predict, observe
00030  * cycle derived from the Extended_filter
00031  */
00032 #include "bayesFlt.hpp"
00033 
00034 /* Filter namespace */
00035 namespace Bayesian_filter
00036 {
00037 
00038 class CI_scheme : public Extended_kalman_filter
00039 {
00040 public:
00041     CI_scheme (std::size_t x_size, std::size_t z_initialsize = 0);
00042     CI_scheme& operator= (const CI_scheme&);
00043     // Optimise copy assignment to only copy filter state
00044 
00045     void init ();
00046     void update ();
00047     Float predict (Linrz_predict_model& f);
00048     Float observe_innovation (Linrz_uncorrelated_observe_model& h, const FM::Vec& s);
00049     Float observe_innovation (Linrz_correlated_observe_model& h, const FM::Vec& s);
00050 
00051     virtual Float Omega(const FM::SymMatrix& Ai, const FM::SymMatrix& Bi, const FM::SymMatrix& A)
00052     // Determine norm Omega 0..1 for the CI combination
00053     // Default norm is the fixed value 0.5
00054     {
00055         return 0.5;
00056     }
00057 
00058 public:                     // Exposed Numerical Results
00059     FM::SymMatrix S, SI;        // Innovation Covariance and Inverse
00060 
00061 protected:                  // allow fast operation if z_size remains constant
00062     std::size_t last_z_size;
00063     void observe_size (std::size_t z_size);
00064 };
00065 
00066 
00067 }//namespace
00068 #endif

Generated on Wed Oct 4 22:57:23 2006 for Bayes++ Bayesian Filtering Classes by  doxygen 1.4.6