GLIM
Loading...
Searching...
No Matches
odometry_estimation_gpu.hpp
1#pragma once
2
3#include <glim/odometry/odometry_estimation_imu.hpp>
4
5namespace gtsam_points {
6class VoxelizedFrame;
7class StreamTempBufferRoundRobin;
8class CUDAStream;
9} // namespace gtsam_points
10
11namespace glim {
12
17public:
18 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
19
22
23 enum class KeyframeUpdateStrategy { OVERLAP, DISPLACEMENT, ENTROPY };
24
25public:
26 // Registration params
27 double voxel_resolution;
28 double voxel_resolution_max;
29 double voxel_resolution_dmin;
30 double voxel_resolution_dmax;
31 int voxelmap_levels;
32 double voxelmap_scaling_factor;
33
34 int max_num_keyframes;
35 int full_connection_window_size;
36
37 // Keyframe management params
38 KeyframeUpdateStrategy keyframe_strategy;
39 double keyframe_min_overlap;
40 double keyframe_max_overlap;
41 double keyframe_delta_trans;
42 double keyframe_delta_rot;
43 double keyframe_entropy_thresh;
44};
45
51public:
52 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
53
55 virtual ~OdometryEstimationGPU() override;
56
57private:
58 virtual void create_frame(EstimationFrame::Ptr& frame) override;
59 virtual gtsam::NonlinearFactorGraph create_factors(const int current, const gtsam_points::shared_ptr<gtsam::ImuFactor>& imu_factor, gtsam::Values& new_values) override;
60 virtual void update_frames(const int current, const gtsam::NonlinearFactorGraph& new_factors) override;
61
62 void update_keyframes_overlap(int current);
63 void update_keyframes_displacement(int current);
64 void update_keyframes_entropy(const gtsam::NonlinearFactorGraph& matching_cost_factors, int current);
65
66private:
67 // Keyframe params
68 int entropy_num_frames;
69 double entropy_running_average;
70 std::vector<EstimationFrame::ConstPtr> keyframes;
71
72 // CUDA-related
73 std::unique_ptr<gtsam_points::CUDAStream> stream;
74 std::unique_ptr<gtsam_points::StreamTempBufferRoundRobin> stream_buffer_roundrobin;
75};
76
77} // namespace glim
GPU-based tightly coupled LiDAR-IMU odometry.
Definition odometry_estimation_gpu.hpp:50
Base class for LiDAR-IMU odometry estimation.
Definition odometry_estimation_imu.hpp:70
Definition loose_initial_state_estimation.hpp:9
Parameters for OdometryEstimationGPU.
Definition odometry_estimation_gpu.hpp:16
Parameters for OdometryEstimationIMU.
Definition odometry_estimation_imu.hpp:33