Go to the documentation of this file.
22 #ifndef OV_MSCKF_STATE_H
23 #define OV_MSCKF_STATE_H
28 #include <unordered_map>
68 double time = INFINITY;
70 if (clone_imu.first < time) {
71 time = clone_imu.first;
92 assert(vec.rows() == 6);
93 assert(vec.cols() == 1);
94 Eigen::Matrix3d D_matrix = Eigen::Matrix3d::Identity();
95 if (imu_model == StateOptions::ImuModel::KALIBR) {
96 D_matrix << vec(0), 0, 0, vec(1), vec(3), 0, vec(2), vec(4), vec(5);
98 D_matrix << vec(0), vec(1), vec(3), 0, vec(2), vec(4), 0, 0, vec(5);
110 static Eigen::Matrix3d
Tg(
const Eigen::MatrixXd &vec) {
111 assert(vec.rows() == 9);
112 assert(vec.cols() == 1);
113 Eigen::Matrix3d
Tg = Eigen::Matrix3d::Zero();
114 Tg << vec(0), vec(3), vec(6), vec(1), vec(4), vec(7), vec(2), vec(5), vec(8);
147 std::shared_ptr<ov_type::IMU>
_imu;
197 #endif // OV_MSCKF_STATE_H
std::shared_ptr< ov_type::Vec > _calib_imu_da
Accelerometer IMU intrinsics (scale imperfection and axis misalignment)
double margtimestep()
Will return the timestep that we will marginalize next. As of right now, since we are using a sliding...
int imu_intrinsic_size() const
Calculates the error state size for imu intrinsics.
std::unordered_map< size_t, std::shared_ptr< ov_type::Vec > > _cam_intrinsics
Camera intrinsics.
static Eigen::Matrix3d Dm(StateOptions::ImuModel imu_model, const Eigen::MatrixXd &vec)
Gyroscope and accelerometer intrinsic matrix (scale imperfection and axis misalignment)
std::unordered_map< size_t, std::shared_ptr< ov_core::CamBase > > _cam_intrinsics_cameras
Camera intrinsics camera objects.
ImuModel
IMU intrinsic models.
Extended Kalman Filter estimator.
std::shared_ptr< ov_type::JPLQuat > _calib_imu_ACCtoIMU
Rotation from accelerometer to the "IMU" gyroscope frame frame (rpng model)
std::shared_ptr< ov_type::Vec > _calib_dt_CAMtoIMU
Time offset base IMU to camera (t_imu = t_cam + t_off)
std::shared_ptr< ov_type::IMU > _imu
Pointer to the "active" IMU state (q_GtoI, p_IinG, v_IinG, bg, ba)
std::shared_ptr< ov_type::Vec > _calib_imu_tg
Gyroscope gravity sensitivity.
Eigen::MatrixXd _Cov
Covariance of all active variables.
std::mutex _mutex_state
Mutex for locking access to the state.
bool do_calib_imu_intrinsics
Bool to determine whether or not to calibrate the IMU intrinsics.
State(StateOptions &options_)
Default Constructor (will initialize variables to defaults)
std::vector< std::shared_ptr< ov_type::Type > > _variables
Vector of variables.
std::unordered_map< size_t, std::shared_ptr< ov_type::PoseJPL > > _calib_IMUtoCAM
Calibration poses for each camera (R_ItoC, p_IinC)
std::unordered_map< size_t, std::shared_ptr< ov_type::Landmark > > _features_SLAM
Our current set of SLAM features (3d positions)
StateOptions _options
Struct containing filter options.
std::map< double, std::shared_ptr< ov_type::PoseJPL > > _clones_IMU
Map between imaging times and clone poses (q_GtoIi, p_IiinG)
Struct which stores all our filter options.
std::shared_ptr< ov_type::JPLQuat > _calib_imu_GYROtoIMU
Rotation from gyroscope frame to the "IMU" accelerometer frame (kalibr model)
static Eigen::Matrix3d Tg(const Eigen::MatrixXd &vec)
Gyroscope gravity sensitivity.
Helper which manipulates the State and its covariance.
std::shared_ptr< ov_type::Vec > _calib_imu_dw
Gyroscope IMU intrinsics (scale imperfection and axis misalignment)
bool do_calib_imu_g_sensitivity
Bool to determine whether or not to calibrate the Gravity sensitivity.
double _timestamp
Current timestamp (should be the last update time in camera clock frame!)
int max_covariance_size()
Calculates the current max size of the covariance.
ov_msckf
Author(s): Patrick Geneva
, Kevin Eckenhoff , Guoquan Huang
autogenerated on Mon Dec 16 2024 03:06:54