KalmanFilter.h
Go to the documentation of this file.
1 // *****************************************************************
2 // Filename: KalmanFilter.h
3 // Copyright: Kai Welke, Chair Prof. Dillmann (IAIM),
4 // Institute for Computer Science and Engineering (CSE),
5 // University of Karlsruhe. All rights reserved.
6 // Author: Kai Welke
7 // Date: 27.05.2009
8 // *****************************************************************
9 #pragma once
10 
11 // *****************************************************************
12 // includes
13 // *****************************************************************
14 #include <math.h>
15 
16 #include <Eigen/Eigen>
17 
18 #include "Gaussian.h"
19 
20 // Kalman filter for linear system with the following control model:
21 // xt = Axt-1 + But + d + gaussian error
22 // and following measurment model
23 // zt = Cx + e + gaussian error
24 
25 // *****************************************************************
26 // declaration of KalmanFilter
27 // *****************************************************************
29 {
30 public:
31  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
32 
33  // construction / destruction
35 
36  // setup system
37  /**
38  * @param motion_A nxn square matrix being the linear transformation of the state
39  * @param motion_B nxm matrix being the transformation from control to state
40  * @param motion_noise n dimensional gaussian being the motion noise
41  **/
42  void setMotionModel(const Eigen::MatrixXd& motion_A,
43  const Eigen::MatrixXd& motion_B,
44  const Gaussian& motion_noise);
45 
46  /**
47  * @param measurement_C transformation from state space to observation space
48  * @param measurement_noise gaussian encoding the observation noise
49  **/
50  void setMeasurementModel(const Eigen::MatrixXd& measurement_C,
51  const Gaussian& measurement_noise);
52 
53  // filtering (if result == NULL, believe is updated)
54  Gaussian filter(const Gaussian& believe,
55  const Eigen::VectorXd& actionU,
56  const Eigen::VectorXd& perceptZ);
57  Gaussian predict(const Gaussian& believe, const Eigen::VectorXd& actionU);
58  Gaussian update(const Gaussian& predicted_believe, const Eigen::VectorXd& perceptZ);
59 
60 public:
61  // system model
62  Eigen::MatrixXd m_A;
63  Eigen::MatrixXd m_B;
64  Eigen::MatrixXd m_C;
65  Eigen::MatrixXd m_A_t;
66  Eigen::MatrixXd m_C_t;
67 
68  // noises
71 };
KalmanFilter::KalmanFilter
EIGEN_MAKE_ALIGNED_OPERATOR_NEW KalmanFilter()
Definition: KalmanFilter.h:34
KalmanFilter::setMotionModel
void setMotionModel(const Eigen::MatrixXd &motion_A, const Eigen::MatrixXd &motion_B, const Gaussian &motion_noise)
Definition: KalmanFilter.cpp:21
KalmanFilter
Definition: KalmanFilter.h:28
KalmanFilter::setMeasurementModel
void setMeasurementModel(const Eigen::MatrixXd &measurement_C, const Gaussian &measurement_noise)
Definition: KalmanFilter.cpp:34
KalmanFilter::m_C
Eigen::MatrixXd m_C
Definition: KalmanFilter.h:64
KalmanFilter::filter
Gaussian filter(const Gaussian &believe, const Eigen::VectorXd &actionU, const Eigen::VectorXd &perceptZ)
Definition: KalmanFilter.cpp:48
KalmanFilter::m_B
Eigen::MatrixXd m_B
Definition: KalmanFilter.h:63
KalmanFilter::m_C_t
Eigen::MatrixXd m_C_t
Definition: KalmanFilter.h:66
Gaussian.h
KalmanFilter::predict
Gaussian predict(const Gaussian &believe, const Eigen::VectorXd &actionU)
Definition: KalmanFilter.cpp:62
KalmanFilter::m_A
Eigen::MatrixXd m_A
Definition: KalmanFilter.h:62
Gaussian
Definition: Gaussian.h:50
KalmanFilter::m_Q
Gaussian m_Q
Definition: KalmanFilter.h:69
KalmanFilter::m_R
Gaussian m_R
Definition: KalmanFilter.h:70
KalmanFilter::update
Gaussian update(const Gaussian &predicted_believe, const Eigen::VectorXd &perceptZ)
Definition: KalmanFilter.cpp:74
KalmanFilter::m_A_t
Eigen::MatrixXd m_A_t
Definition: KalmanFilter.h:65