Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Modules/BallLocator/GT2004ProcessModels/FixedPositionModel.h

Go to the documentation of this file.
00001 /**
00002 * @file FixedPositionModel.h
00003 * Contains a KalmanBallLocator process model for non-moving balls
00004 *
00005 * @author <a href="mailto:stefanuhrig@gmx.net">Stefan Uhrig</a>
00006 */
00007 //------------------------------------------------------------------------------
00008 #ifndef FIXEDPOSITIONMODEL_H_INCLUDED
00009 #define FIXEDPOSITIONMODEL_H_INCLUDED
00010 //------------------------------------------------------------------------------
00011 #include "BaseModel.h"
00012 #include "Tools/Math/Vector_n.h"
00013 #include "Tools/Math/Matrix_nxn.h"
00014 //------------------------------------------------------------------------------
00015 /**
00016 * @class KalmanFixedPositionModel
00017 * Contains a KalmanBallLocator process model for non-moving balls
00018 */
00019 class KalmanFixedPositionModel : public KalmanProcessModelBase
00020 {
00021 public:
00022   KalmanFixedPositionModel();
00023   virtual ~KalmanFixedPositionModel();
00024 
00025 public:
00026   virtual const char* getModelName() const { return "FixedPositionModel"; }
00027 
00028   virtual int  getStateDim() const { return 2; }
00029   virtual void getP(double* pDest) const { P.copyTo(pDest); }
00030   virtual void getQ(double* pDest) const { globQ.copyTo(pDest); }
00031   virtual void setQ(const double* pSource) { globQ = pSource; }
00032   virtual void getR(double* pDest) const { globR.copyTo(pDest); }
00033   virtual void setR(double* pSource) { globR = pSource; }
00034   
00035   virtual void reset();
00036   virtual KalmanUpdateResult update(double time, double x, double y);
00037   virtual KalmanPredictResult predict(double time);
00038 
00039   virtual void adapt(const OdometryData& lastOdometry,
00040                      const OdometryData& actualOdometry);
00041 
00042 private:
00043   /**
00044   * Actual state:
00045   * x_act[0] is x-position in meters
00046   * x_act[1] is y-position in meters
00047   */
00048   Vector_n<double, 2>   x_act;
00049   Matrix_nxn<double, 2> A;     ///< linear process model matrix
00050   Matrix_nxn<double, 2> P;     ///< internal covariance matrix
00051   Matrix_nxn<double, 2> Q;     ///< process model error covariance matrix
00052   Matrix_nxn<double, 2> R;     ///< measurement error covariance matrix
00053 
00054   bool inited;                 ///< true, if model is initied
00055   double lastLiklihood;        ///< last liklihood
00056   double lastTime;             ///< last time in seconds
00057 
00058   // Temporary variables for permorming updates und predictions
00059   Vector_n<double, 2>   x_minus;
00060   Matrix_nxn<double, 2> P_minus;
00061   Matrix_nxn<double, 2> C;
00062   Matrix_nxn<double, 2> C_inv;
00063   Matrix_nxn<double, 2> K;
00064   Vector_n<double, 2>   z;
00065   Vector_n<double, 2>   x_predict;
00066 
00067    /// global process covariance matrix that is adapted with dt
00068   Matrix_nxn<double, 2> globQ;
00069    /// global measurement covariance matrix
00070   Matrix_nxn<double, 2> globR;
00071 
00072   static double defaultA[4]; ///< default linear process model matrix
00073   static double defaultP[4]; ///< default internal covariance matrix
00074   static double defaultQ[4]; ///< default process error covariance matrix
00075   static double defaultR[4]; ///< default measurement error covariance matrix
00076 };
00077 //------------------------------------------------------------------------------
00078 #endif
00079 //------------------------------------------------------------------------------
00080 
00081 /*
00082  * Change log :
00083  * $Log: FixedPositionModel.h,v $
00084  * Revision 1.1  2004/07/14 21:40:15  spranger
00085  * moved kalmanprocessmodel to gt2004processmodel
00086  *
00087  * Revision 1.1.1.1  2004/05/22 17:15:26  cvsadm
00088  * created new repository GT2004_WM
00089  *
00090  * Revision 1.3  2004/04/20 14:12:16  uhrig
00091  *  - odometry processing corrected
00092  *  - fixed position model disabled
00093  *  - covariance matrices tuned
00094  *
00095  * Revision 1.2  2004/03/15 12:28:52  risler
00096  * change log added
00097  *
00098  *
00099  */

Generated on Thu Sep 23 19:57:25 2004 for GT2004 by doxygen 1.3.6