16 #ifndef EKF__UPDATE__MSCKF_UPDATER_HPP_
17 #define EKF__UPDATE__MSCKF_UPDATER_HPP_
19 #include <eigen3/Eigen/Eigen>
25 #include "ekf/types.hpp"
26 #include "ekf/update/updater.hpp"
27 #include "infrastructure/data_logger.hpp"
48 const std::string & log_file_directory,
51 std::shared_ptr<DebugLogger> logger
63 const double local_time,
66 Eigen::Vector3d & pos_f_in_l);
78 const FeatureTracks & feature_tracks,
88 const Eigen::Vector2d & xy_norm,
90 Eigen::MatrixXd & H_d);
97 static void ProjectionJacobian(
const Eigen::Vector3d & position, Eigen::MatrixXd & jacobian);
104 static Eigen::Vector2d
Project(
const Eigen::Vector3d pos_f_in_c);
112 static Eigen::Vector2d
Distort(
const Eigen::Vector2d & xy_norm,
const Intrinsics & intrinsics);
115 bool m_is_cam_extrinsic;
118 double m_min_feat_dist{1.0};
119 double m_max_feat_dist{100.0};
120 bool m_is_first_estimate{
true};
121 bool m_use_true_triangulation{
true};
123 Eigen::Vector3d m_pos_c_in_b{0.0, 0.0, 0.0};
124 Eigen::Quaterniond m_ang_c_to_b{1.0, 0.0, 0.0, 0.0};
DataLogger class.
Definition: data_logger.hpp:26
Calibration EKF class.
Definition: ekf.hpp:39
Camera intrinsics data structure.
Definition: types.hpp:49
EKF Updater Class for MSCKF Camera Measurements.
Definition: msckf_updater.hpp:34
bool TriangulateFeature(const double local_time, EKF &ekf, const FeatureTrack &feature_track, Eigen::Vector3d &pos_f_in_l)
Triangulate feature seen from multiple camera frames.
Definition: msckf_updater.cpp:71
static Eigen::Vector2d Project(const Eigen::Vector3d pos_f_in_c)
Project a 3D position in the camera frame to a 2D bearing.
Definition: msckf_updater.cpp:221
static Eigen::Vector2d Distort(const Eigen::Vector2d &xy_norm, const Intrinsics &intrinsics)
Distort a normalized camera coordinate using intrinsics.
Definition: msckf_updater.cpp:229
void UpdateEKF(EKF &ekf, const double time, const FeatureTracks &feature_tracks, double px_error)
EKF updater function.
Definition: msckf_updater.cpp:249
MsckfUpdater(unsigned int cam_id, bool is_extrinsic, const std::string &log_file_directory, double data_log_rate, double min_feat_dist, std::shared_ptr< DebugLogger > logger)
MSCKF EKF Updater constructor.
Definition: msckf_updater.cpp:39
static void DistortionJacobian(const Eigen::Vector2d &xy_norm, const Intrinsics &intrinsics, Eigen::MatrixXd &H_d)
Computes the derivative of raw distorted to normalized coordinate.
Definition: msckf_updater.cpp:174
static void ProjectionJacobian(const Eigen::Vector3d &position, Eigen::MatrixXd &jacobian)
Function to calculate jacobian for camera projection function.
Definition: msckf_updater.cpp:160
Base class for EKF updater classes.
Definition: updater.hpp:29
FeatureTrack structure.
Definition: types.hpp:290