34 bool enable_optimization;
35 bool enable_between_factors;
36 std::string between_registration_type;
38 std::string registration_error_factor_type;
39 double submap_voxel_resolution;
40 double submap_voxel_resolution_max;
41 double submap_voxel_resolution_dmin;
42 double submap_voxel_resolution_dmax;
43 int submap_voxelmap_levels;
44 double submap_voxelmap_scaling_factor;
46 double randomsampling_rate;
47 double max_implicit_loop_distance;
48 double min_implicit_loop_overlap;
50 bool use_isam2_dogleg;
51 double isam2_relinearize_skip;
52 double isam2_relinearize_thresh;
54 double init_pose_damping_scale;
65 virtual void insert_imu(
const double stamp,
const Eigen::Vector3d& linear_acc,
const Eigen::Vector3d& angular_vel)
override;
71 virtual void save(
const std::string& path)
override;
78 bool load(
const std::string& path);
83 std::shared_ptr<gtsam::NonlinearFactorGraph> create_between_factors(
int current)
const;
84 std::shared_ptr<gtsam::NonlinearFactorGraph> create_matching_cost_factors(
int current)
const;
86 void update_submaps();
87 gtsam_points::ISAM2ResultExt update_isam2(
const gtsam::NonlinearFactorGraph& new_factors,
const gtsam::Values& new_values);
89 void recover_graph()
override;
90 std::pair<gtsam::NonlinearFactorGraph, gtsam::Values> recover_graph(
const gtsam::NonlinearFactorGraph& graph,
const gtsam::Values& values,
int start_from_frame_id)
const;
99 std::unique_ptr<IMUIntegration> imu_integration;
100 std::any stream_buffer_roundrobin;
102 std::vector<SubMap::Ptr> submaps;
103 std::vector<gtsam_points::PointCloud::ConstPtr> subsampled_submaps;
105 std::unique_ptr<gtsam::Values> new_values;
106 std::unique_ptr<gtsam::NonlinearFactorGraph> new_factors;
108 std::unique_ptr<gtsam_points::ISAM2Ext> isam2;
110 std::shared_ptr<void> tbb_task_arena;