8#include <gtsam_points/util/gtsam_migration.hpp>
9#include <glim/util/concurrent_vector.hpp>
10#include <glim/mapping/global_mapping_base.hpp>
15class NonlinearFactorGraph;
18namespace gtsam_points {
20class StreamTempBufferRoundRobin;
22class GaussianVoxelMap;
23class NearestNeighborSearch;
39 bool enable_optimization;
41 std::string registration_type;
43 double min_travel_dist;
44 double max_neighbor_dist;
45 double min_inliear_fraction;
48 double subsample_rate;
49 double gicp_max_correspondence_dist;
50 double vgicp_voxel_resolution;
52 double odom_factor_stddev;
53 double loop_factor_stddev;
54 double loop_factor_robust_width;
56 int loop_candidate_buffer_size;
57 int loop_candidate_eval_per_thread;
59 bool use_isam2_dogleg;
60 double isam2_relinearize_skip;
61 double isam2_relinearize_thresh;
63 double init_pose_damping_scale;
70 using Ptr = std::shared_ptr<SubMapTarget>;
71 using ConstPtr = std::shared_ptr<const SubMapTarget>;
73 SubMap::ConstPtr submap;
74 gtsam_points::PointCloud::ConstPtr subsampled;
75 std::shared_ptr<gtsam_points::NearestNeighborSearch> tree;
76 std::shared_ptr<gtsam_points::GaussianVoxelMap> voxels;
82 SubMapTarget::ConstPtr target;
83 SubMapTarget::ConstPtr source;
84 Eigen::Isometry3d init_T_target_source;
100 virtual void save(
const std::string& path)
override;
106 std::shared_ptr<gtsam::NonlinearFactorGraph> create_odometry_factors(
int current)
const;
107 void find_loop_candidates(
int current);
108 std::shared_ptr<gtsam::NonlinearFactorGraph> collect_detected_loops();
110 void update_submaps();
112 void loop_detection_task();
120 std::atomic_bool kill_switch;
121 std::thread loop_detection_thread;
125 std::vector<SubMap::Ptr> submaps;
126 std::vector<SubMapTarget::Ptr> submap_targets;
128 std::unique_ptr<gtsam::Values> new_values;
129 std::unique_ptr<gtsam::NonlinearFactorGraph> new_factors;
131 std::unique_ptr<gtsam_points::ISAM2Ext> isam2;
133 std::shared_ptr<void> tbb_task_arena;
Simple thread-safe vector with mutex-lock.
Definition concurrent_vector.hpp:48
Global mapping base class.
Definition global_mapping_base.hpp:22
Global mapping with the old conventional pose graph optimization.
Definition global_mapping_pose_graph.hpp:91
virtual void insert_submap(const SubMap::Ptr &submap) override
Insert a SubMap.
virtual void save(const std::string &path) override
Save the mapping result.
virtual void optimize() override
Request to perform optimization.
virtual gtsam_points::PointCloud::Ptr export_points() override
Export all the submap points.
GlobalMappingPoseGraph parameters.
Definition global_mapping_pose_graph.hpp:33
Loop candidate.
Definition global_mapping_pose_graph.hpp:81
Submap target.
Definition global_mapping_pose_graph.hpp:69