GLIM
Loading...
Searching...
No Matches
odometry_estimation_ct.hpp
1#pragma once
2
3#include <deque>
4#include <memory>
5#include <future>
6
7#include <glim/odometry/odometry_estimation_base.hpp>
8
9namespace gtsam {
10class Values;
11}
12
13namespace gtsam_points {
14struct FlatContainer;
15template <typename VoxelContents>
16class IncrementalVoxelMap;
17using iVox = IncrementalVoxelMap<FlatContainer>;
18
19class IncrementalCovarianceVoxelMap;
20using iVoxCovarianceEstimation = IncrementalCovarianceVoxelMap;
21class IncrementalFixedLagSmootherExt;
22class IncrementalFixedLagSmootherExtWithFallback;
23} // namespace gtsam_points
24
25namespace glim {
26
27class CloudCovarianceEstimation;
28
33public:
36
37public:
39
43
48
49 // iSAM2 params
50 double smoother_lag;
52 double isam2_relinearize_skip;
53 double isam2_relinearize_thresh;
54};
55
60public:
61 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
62
64 virtual ~OdometryEstimationCT() override;
65
66 virtual bool requires_imu() const override { return false; }
67
68 virtual EstimationFrame::ConstPtr insert_frame(const PreprocessedFrame::Ptr& frame, std::vector<EstimationFrame::ConstPtr>& marginalized_frames) override;
69
70private:
72 Params params;
73
74 std::unique_ptr<CloudCovarianceEstimation> covariance_estimation;
75
76 int marginalized_cursor;
77 std::vector<EstimationFrame::Ptr> frames;
78 std::shared_ptr<gtsam_points::iVox> target_ivox;
79 EstimationFrame::ConstPtr target_ivox_frame;
80
81 // Optimizer
83 std::unique_ptr<FixedLagSmootherExt> smoother;
84
85 std::shared_ptr<void> tbb_task_arena;
86};
87
88} // namespace glim
Odometry estimation base class.
Definition odometry_estimation_base.hpp:22
LiDAR-only odometry estimation based on CT-GICP scan-to-model matching.
Definition odometry_estimation_ct.hpp:59
virtual EstimationFrame::ConstPtr insert_frame(const PreprocessedFrame::Ptr &frame, std::vector< EstimationFrame::ConstPtr > &marginalized_frames) override
Insert a point cloud.
virtual bool requires_imu() const override
Returns true if the odometry estimation module requires IMU data.
Definition odometry_estimation_ct.hpp:66
Definition loose_initial_state_estimation.hpp:9
Parameters for OdometryEstimationCT.
Definition odometry_estimation_ct.hpp:32
double smoother_lag
Fixed-lag smoothing window [sec].
Definition odometry_estimation_ct.hpp:50
double ivox_min_points_dist
Minimum distance between points in an iVox cell.
Definition odometry_estimation_ct.hpp:41
double max_correspondence_distance
Maximum distance between corresponding points.
Definition odometry_estimation_ct.hpp:44
int num_threads
Number of threads.
Definition odometry_estimation_ct.hpp:38
double ivox_resolution
iVox resolution
Definition odometry_estimation_ct.hpp:40
double constant_velocity_inf_scale
Weight for constant velocity constraints.
Definition odometry_estimation_ct.hpp:46
int lm_max_iterations
Maximum number of iterations for LM optimization.
Definition odometry_estimation_ct.hpp:47
bool use_isam2_dogleg
If true, use dogleg optimizer.
Definition odometry_estimation_ct.hpp:51
double location_consistency_inf_scale
Weight for location consistency constraints.
Definition odometry_estimation_ct.hpp:45
int ivox_lru_thresh
iVox LRU cache threshold
Definition odometry_estimation_ct.hpp:42