30 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
35 void Init(
const Eigen::VectorXd &x);
39 void Correct(
const Eigen::VectorXd &z);
64template <std::
size_t N>
67 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
104 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
110 void Init(
const Eigen::VectorXd &x);
114 void Correct(
const Eigen::VectorXd &z);
147 Eigen::VectorXd state_;
174 const Eigen::VectorXd &
get_state()
const;
176 int size()
const {
return static_cast<int>(measures_.size()); }
180 Eigen::VectorXd state_;
181 Eigen::MatrixXd variance_;
187template <std::
size_t N>
195template <std::
size_t N>
200 predict_state_ = state_;
202 covariance_ += process_noise_;
207template <std::
size_t N>
212 auto measurements_cov = covariance_ + measure_noise_;
213 kalman_gain_ = covariance_ * measurements_cov.inverse();
214 state_ = state_ + kalman_gain_ * (measurement - state_);
215 covariance_ = (MatrixNd::Identity() - kalman_gain_) * covariance_;
218 residual_ = measurement - predict_state_;
220 double kval = -0.5 * residual_.transpose().adjoint().dot(
221 measurements_cov.inverse() * residual_);
223 std::exp(kval) / std::sqrt(2 * M_PI * measurements_cov.determinant());
void Correct(const Eigen::VectorXd &z)
Eigen::Vector4d get_state() const
Eigen::Matrix4d process_noise_
Eigen::Matrix< double, 3, 4 > measure_matrix_
Eigen::Matrix< double, 4, 3 > kalman_gain_
Eigen::Matrix< double, 4, 1 > state_
Eigen::Matrix4d variance_
Eigen::Matrix3d measure_noise_
Eigen::Matrix4d state_transition_matrix_
FirstOrderRCLowPassFilter()
void SetAlpha(float alpha)
Eigen::VectorXd get_state() const
void AddMeasure(const Eigen::VectorXd &z)
bool Predict(float delta_t)
Eigen::Matrix< double, N, 1 > VectorNd
~KalmanFilterConstState()=default
Eigen::Matrix< double, N, N > MatrixNd
bool Init(const VectorNd ¶m)
VectorNd get_state() const
void Correct(const VectorNd &measurement)
KalmanFilterConstState()=default
void Correct(const Eigen::VectorXd &z)
Eigen::Vector4d get_state() const
Eigen::Matrix< double, 4, 1 > predict_state_
KalmanFilterConstVelocity()
Eigen::Matrix4d state_transition_matrix_
Eigen::Matrix2d measure_noise_
Eigen::Matrix< double, 4, 2 > kalman_gain_
void Init(const Eigen::VectorXd &x)
Eigen::Matrix4d variance_
Eigen::Matrix< double, 4, 1 > state_
void MagicVelocity(const Eigen::VectorXd &vel)
Eigen::Matrix4d process_noise_
Eigen::Matrix< double, 2, 4 > measure_matrix_
void MagicPosition(const Eigen::VectorXd &pos)
Eigen::VectorXd get_state() const
void AddMeasure(const Eigen::VectorXd &z)
void SetWindow(int window)
void AddMeasure(const Eigen::VectorXd &z)
void SetWindow(int window)
const Eigen::MatrixXd & get_variance() const
const Eigen::VectorXd & get_state() const
std::vector< EigenType, Eigen::aligned_allocator< EigenType > > EigenVector