Go to the documentation of this file.
22 #ifndef OV_MSCKF_STATE_HELPER_H
23 #define OV_MSCKF_STATE_HELPER_H
25 #include <Eigen/Eigen>
76 static void EKFPropagation(std::shared_ptr<State> state,
const std::vector<std::shared_ptr<ov_type::Type>> &order_NEW,
77 const std::vector<std::shared_ptr<ov_type::Type>> &order_OLD,
const Eigen::MatrixXd &Phi,
78 const Eigen::MatrixXd &Q);
88 static void EKFUpdate(std::shared_ptr<State> state,
const std::vector<std::shared_ptr<ov_type::Type>> &H_order,
const Eigen::MatrixXd &H,
89 const Eigen::VectorXd &res,
const Eigen::MatrixXd &R);
99 const std::vector<std::shared_ptr<ov_type::Type>> &order);
113 const std::vector<std::shared_ptr<ov_type::Type>> &small_variables);
139 static void marginalize(std::shared_ptr<State> state, std::shared_ptr<ov_type::Type> marg);
146 static std::shared_ptr<ov_type::Type>
clone(std::shared_ptr<State> state, std::shared_ptr<ov_type::Type> variable_to_clone);
165 static bool initialize(std::shared_ptr<State> state, std::shared_ptr<ov_type::Type> new_variable,
166 const std::vector<std::shared_ptr<ov_type::Type>> &H_order, Eigen::MatrixXd &H_R, Eigen::MatrixXd &H_L,
167 Eigen::MatrixXd &R, Eigen::VectorXd &res,
double chi_2_mult);
183 static void initialize_invertible(std::shared_ptr<State> state, std::shared_ptr<ov_type::Type> new_variable,
184 const std::vector<std::shared_ptr<ov_type::Type>> &H_order,
const Eigen::MatrixXd &H_R,
185 const Eigen::MatrixXd &H_L,
const Eigen::MatrixXd &R,
const Eigen::VectorXd &res);
213 static void augment_clone(std::shared_ptr<State> state, Eigen::Matrix<double, 3, 1> last_w);
242 #endif // OV_MSCKF_STATE_HELPER_H
static void augment_clone(std::shared_ptr< State > state, Eigen::Matrix< double, 3, 1 > last_w)
Augment the state with a stochastic copy of the current IMU pose.
static void initialize_invertible(std::shared_ptr< State > state, std::shared_ptr< ov_type::Type > new_variable, const std::vector< std::shared_ptr< ov_type::Type >> &H_order, const Eigen::MatrixXd &H_R, const Eigen::MatrixXd &H_L, const Eigen::MatrixXd &R, const Eigen::VectorXd &res)
Initializes new variable into covariance (H_L must be invertible)
Extended Kalman Filter estimator.
static bool initialize(std::shared_ptr< State > state, std::shared_ptr< ov_type::Type > new_variable, const std::vector< std::shared_ptr< ov_type::Type >> &H_order, Eigen::MatrixXd &H_R, Eigen::MatrixXd &H_L, Eigen::MatrixXd &R, Eigen::VectorXd &res, double chi_2_mult)
Initializes new variable into covariance.
static void marginalize_slam(std::shared_ptr< State > state)
Marginalize bad SLAM features.
static void EKFUpdate(std::shared_ptr< State > state, const std::vector< std::shared_ptr< ov_type::Type >> &H_order, const Eigen::MatrixXd &H, const Eigen::VectorXd &res, const Eigen::MatrixXd &R)
Performs EKF update of the state (see Linear Measurement Update page)
static std::shared_ptr< ov_type::Type > clone(std::shared_ptr< State > state, std::shared_ptr< ov_type::Type > variable_to_clone)
Clones "variable to clone" and places it at end of covariance.
static Eigen::MatrixXd get_marginal_covariance(std::shared_ptr< State > state, const std::vector< std::shared_ptr< ov_type::Type >> &small_variables)
For a given set of variables, this will this will calculate a smaller covariance.
static void set_initial_covariance(std::shared_ptr< State > state, const Eigen::MatrixXd &covariance, const std::vector< std::shared_ptr< ov_type::Type >> &order)
This will set the initial covaraince of the specified state elements. Will also ensure that proper cr...
static void marginalize_old_clone(std::shared_ptr< State > state)
Remove the oldest clone, if we have more then the max clone count!!
static void EKFPropagation(std::shared_ptr< State > state, const std::vector< std::shared_ptr< ov_type::Type >> &order_NEW, const std::vector< std::shared_ptr< ov_type::Type >> &order_OLD, const Eigen::MatrixXd &Phi, const Eigen::MatrixXd &Q)
Performs EKF propagation of the state covariance.
Helper which manipulates the State and its covariance.
static Eigen::MatrixXd get_full_covariance(std::shared_ptr< State > state)
This gets the full covariance matrix.
static void marginalize(std::shared_ptr< State > state, std::shared_ptr< ov_type::Type > marg)
Marginalizes a variable, properly modifying the ordering/covariances in the state.
ov_msckf
Author(s): Patrick Geneva
, Kevin Eckenhoff , Guoquan Huang
autogenerated on Mon Dec 16 2024 03:06:54