ov_msckf::State class

State of our filter.

This state has all the current estimates for the filter. This system is modeled after the MSCKF filter, thus we have a sliding window of clones. We additionally have more parameters for online estimation of calibration and SLAM features. We also have the covariance of the system, which should be managed using the StateHelper class.

Constructors, destructors, conversion operators

State(StateOptions& options_)
Default Constructor (will initialize variables to defaults)

Public functions

auto margtimestep() -> double
Will return the timestep that we will marginalize next. As of right now, since we are using a sliding window, this is the oldest clone. But if you wanted to do a keyframe system, you could selectively marginalize clones.
auto max_covariance_size() -> int
Calculates the current max size of the covariance.

Public variables

double _timestamp
Current timestamp (should be the last update time!)
StateOptions _options
Struct containing filter options.
IMU* _imu
Pointer to the "active" IMU state (q_GtoI, p_IinG, v_IinG, bg, ba)
std::map<double, PoseJPL*> _clones_IMU
Map between imaging times and clone poses (q_GtoIi, p_IiinG)
std::unordered_map<size_t, Landmark*> _features_SLAM
Our current set of SLAM features (3d positions)
Vec* _calib_dt_CAMtoIMU
Time offset base IMU to camera (t_imu = t_cam + t_off)
std::unordered_map<size_t, PoseJPL*> _calib_IMUtoCAM
Calibration poses for each camera (R_ItoC, p_IinC)
std::unordered_map<size_t, Vec*> _cam_intrinsics
Camera intrinsics.
std::unordered_map<size_t, bool> _cam_intrinsics_model
What distortion model we are using (false=radtan, true=fisheye)

Function documentation

ov_msckf::State::State(StateOptions& options_)

Default Constructor (will initialize variables to defaults)

Parameters
options_ Options structure containing filter options

double ov_msckf::State::margtimestep()

Will return the timestep that we will marginalize next. As of right now, since we are using a sliding window, this is the oldest clone. But if you wanted to do a keyframe system, you could selectively marginalize clones.

Returns timestep of clone we will marginalize

int ov_msckf::State::max_covariance_size()

Calculates the current max size of the covariance.

Returns Size of the current covariance matrix