File ukf.hpp

Implements the Unscented Kalman Filter (UKF).

License:

BSD 3-clause

The theory is described here. https://www.seas.harvard.edu/courses/cs281/papers/unscented.pdf
Copyright

Copyright (c) 2020, New York University and Max Planck Gesellschaft

Todo:

Explain here the math a little at least or add ref.

namespace mim_estimation
namespace standard_filters
template<class S, class M>
class UKF
#include <ukf.hpp>

Public Functions

UKF(bool numerical_jac, bool is_discrete, bool update_on, double dt)
inline ~UKF()
virtual void initialize(void) = 0
inline virtual void updateControls(void)
void update(void)
virtual Eigen::Matrix<double, N, 1> get_filter_state(void) = 0
void print_debug(void)

Public Static Attributes

static const int N = S::state_dim
static const int P = S::noise_dim
static const int K = M::meas_dim
static const int L = 2 * N + 1

Protected Functions

virtual Eigen::Matrix<double, N, 1> process_model(S &s) = 0
virtual Eigen::Matrix<double, K, 1> measurement_model(S &s) = 0
virtual void form_process_jacobian(void) = 0
virtual void form_process_noise(void) = 0
virtual void form_noise_jacobian(void) = 0
virtual void form_measurement_noise(void) = 0
virtual void form_actual_measurement(void) = 0

Protected Attributes

S state_pre_
S state_post_
M meas_actual_
M meas_pred_
Eigen::MatrixXd proc_jac_
Eigen::MatrixXd proc_jac_disc_
Eigen::MatrixXd noise_jac_
Eigen::MatrixXd proc_noise_
Eigen::MatrixXd proc_noise_disc_
Eigen::MatrixXd meas_jac_
Eigen::MatrixXd meas_noise_
Eigen::MatrixXd meas_noise_disc_
Eigen::MatrixXd state_weights_
Eigen::MatrixXd cov_weights_
Eigen::MatrixXd spoints_mat_
Eigen::MatrixXd spoints_proc_
Eigen::MatrixXd spoints_meas_
Eigen::MatrixXd cross_cov_
Eigen::MatrixXd gain_mat_
Eigen::LDLT<Eigen::MatrixXd> ldlt
double alpha_
double beta_
double kappa_
double lambda_
bool numerical_jac_
bool is_discrete_
bool update_on_
double dt_