Overview
struct State
{
// structs
struct ImuSample;
struct PendingImu;
struct PendingOdometry;
struct SourceState;
// fields
std::optional<mrpt::obs::CObservationOdometry> last_odom_obs;
std::optional<mrpt::Clock::time_point> last_pose_obs_tim;
std::optional<mrpt::poses::CPose3DPDFGaussian> last_pose;
std::optional<mrpt::math::TTwist3D> last_twist;
std::optional<mrpt::math::CMatrixDouble66> last_twist_cov;
bool pose_already_updated_with_odom = false;
std::array<double, 6> vel_filter_P = {1e4, 1e4, 1e4, 1e4, 1e4, 1e4};
std::array<bool, 6> vel_filter_seeded = {false, false, false, false, false, false};
std::array<std::optional<mrpt::Clock::time_point>, 6> vel_filter_last_tim;
std::map<std::string, SourceState> per_source;
std::multimap<mrpt::Clock::time_point, PendingImu> pending_imu;
std::multimap<mrpt::Clock::time_point, ImuSample> imu_history;
std::optional<mrpt::math::TVector3D> imu_velocity;
std::optional<mrpt::Clock::time_point> imu_velocity_tim;
mrpt::math::TVector3D imu_accel_bias = {0, 0, 0};
double imu_P_vv = 0;
double imu_P_vb = 0;
double imu_P_bb = 0;
std::multimap<std::pair<mrpt::Clock::time_point, std::string>, PendingOdometry> pending_odometry;
RegexCache do_process_imu_labels_re;
RegexCache do_process_odometry_labels_re;
RegexCache do_process_gnss_labels_re;
};