mrs_lib
Various reusable classes, functions and utilities for use in MRS projects
kalman_filter.h
Go to the documentation of this file.
1 // clang: MatousFormat
7 #ifndef SYSTEMMODEL_H
8 #define SYSTEMMODEL_H
9 
10 #include <Eigen/Dense>
11 
12 #include <ros/ros.h>
13 
14 namespace mrs_lib
15 {
16  /* KalmanFilter virtual class //{ */
25  template <int n_states, int n_inputs, int n_measurements>
27  {
28  public:
29  /* states, inputs etc. definitions (typedefs, constants etc) //{ */
30  static const int n = n_states;
31  static const int m = n_inputs;
32  static const int p = n_measurements;
34  typedef Eigen::Matrix<double, n, 1> x_t;
35  typedef Eigen::Matrix<double, m, 1> u_t;
36  typedef Eigen::Matrix<double, p, 1> z_t;
38  typedef Eigen::Matrix<double, n, n> P_t;
39  typedef Eigen::Matrix<double, p, p> R_t;
40  typedef Eigen::Matrix<double, n, n> Q_t;
41  //}
42 
43  /* statecov_t struct //{ */
47  struct statecov_t
48  {
49  x_t x;
50  P_t P;
51  ros::Time stamp = ros::Time(0);
52  };
53  //}
54 
55  public:
68  virtual statecov_t correct(const statecov_t& sc, const z_t& z, const R_t& R) const = 0;
69 
84  virtual statecov_t predict(const statecov_t& sc, const u_t& u, const Q_t& Q, double dt) const = 0;
85  };
86  //}
87 }
88 
89 #endif // SYSTEMMODEL_H
mrs_lib::KalmanFilter::predict
virtual statecov_t predict(const statecov_t &sc, const u_t &u, const Q_t &Q, double dt) const =0
Applies the prediction (time) step of the Kalman filter.
mrs_lib::KalmanFilter::R_t
Eigen::Matrix< double, p, p > R_t
Measurement noise covariance matrix type .
Definition: kalman_filter.h:39
mrs_lib::KalmanFilter::m
static const int m
Length of the input vector of the system.
Definition: kalman_filter.h:31
mrs_lib::KalmanFilter::P_t
Eigen::Matrix< double, n, n > P_t
State uncertainty covariance matrix type .
Definition: kalman_filter.h:38
mrs_lib::KalmanFilter::correct
virtual statecov_t correct(const statecov_t &sc, const z_t &z, const R_t &R) const =0
Applies the correction (update, measurement, data) step of the Kalman filter.
mrs_lib::KalmanFilter::u_t
Eigen::Matrix< double, m, 1 > u_t
Input vector type .
Definition: kalman_filter.h:35
mrs_lib::KalmanFilter::p
static const int p
Length of the measurement vector of the system.
Definition: kalman_filter.h:32
mrs_lib::KalmanFilter::statecov_t::P
P_t P
State covariance matrix.
Definition: kalman_filter.h:50
mrs_lib::KalmanFilter::x_t
Eigen::Matrix< double, n, 1 > x_t
State vector type .
Definition: kalman_filter.h:34
mrs_lib::KalmanFilter::statecov_t::x
x_t x
State vector.
Definition: kalman_filter.h:49
mrs_lib
All mrs_lib functions, classes, variables and definitions are contained in this namespace.
Definition: attitude_converter.h:29
mrs_lib::KalmanFilter::statecov_t::stamp
ros::Time stamp
ROS time stamp.
Definition: kalman_filter.h:51
mrs_lib::KalmanFilter::Q_t
Eigen::Matrix< double, n, n > Q_t
Process noise covariance matrix type .
Definition: kalman_filter.h:40
mrs_lib::KalmanFilter::z_t
Eigen::Matrix< double, p, 1 > z_t
Measurement vector type .
Definition: kalman_filter.h:36
mrs_lib::KalmanFilter::statecov_t
Helper struct for passing around the state and its covariance in one variable.
Definition: kalman_filter.h:47
mrs_lib::KalmanFilter::n
static const int n
Length of the state vector of the system.
Definition: kalman_filter.h:30
mrs_lib::KalmanFilter
This abstract class defines common interfaces and types for a generic Kalman filter.
Definition: kalman_filter.h:26