35 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
43 double imu_bias_noise;
44 Eigen::Isometry3d T_lidar_imu;
45 Eigen::Matrix<double, 6, 1> imu_bias;
48 std::string initialization_mode;
49 bool estimate_init_state;
50 Eigen::Isometry3d init_T_world_imu;
51 Eigen::Vector3d init_v_world_imu;
52 double init_pose_damping_scale;
56 bool use_isam2_dogleg;
57 double isam2_relinearize_skip;
58 double isam2_relinearize_thresh;
61 bool save_imu_rate_trajectory;
64 int num_smoother_update_threads;
72 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
77 virtual void insert_imu(
const double stamp,
const Eigen::Vector3d& linear_acc,
const Eigen::Vector3d& angular_vel)
override;
78 virtual EstimationFrame::ConstPtr
insert_frame(
const PreprocessedFrame::Ptr& frame, std::vector<EstimationFrame::ConstPtr>& marginalized_frames)
override;
82 virtual void create_frame(EstimationFrame::Ptr& frame) {}
85 virtual void fallback_smoother() {}
86 virtual void update_frames(
const int current,
const gtsam::NonlinearFactorGraph& new_factors);
89 update_smoother(
const gtsam::NonlinearFactorGraph& new_factors,
const gtsam::Values& new_values,
const std::map<std::uint64_t, double>& new_stamp,
int update_count = 0);
90 virtual void update_smoother(
int update_count = 1);
93 std::unique_ptr<OdometryEstimationIMUParams> params;
96 Eigen::Isometry3d T_lidar_imu;
97 Eigen::Isometry3d T_imu_lidar;
100 int marginalized_cursor;
104 std::unique_ptr<InitialStateEstimation> init_estimation;
105 std::unique_ptr<IMUIntegration> imu_integration;
106 std::unique_ptr<CloudDeskewing> deskewing;
107 std::unique_ptr<CloudCovarianceEstimation> covariance_estimation;
111 std::unique_ptr<FixedLagSmootherExt> smoother;
113 std::shared_ptr<void> tbb_task_arena;