GLIM
Loading...
Searching...
No Matches
initial_state_estimation.hpp
1#pragma once
2
3#include <Eigen/Core>
4#include <Eigen/Geometry>
5
6#include <glim/odometry/estimation_frame.hpp>
7
8namespace spdlog {
9class logger;
10}
11
12namespace glim {
13
19public:
21 virtual ~InitialStateEstimation() {}
22
29 virtual void insert_imu(double stamp, const Eigen::Vector3d& linear_acc, const Eigen::Vector3d& angular_vel) {}
30
35 virtual void insert_frame(const PreprocessedFrame::ConstPtr& raw_frame) {}
36
42 virtual EstimationFrame::ConstPtr initial_pose() = 0;
43
44protected:
45 // Logging
46 std::shared_ptr<spdlog::logger> logger;
47};
48
54public:
55 EIGEN_MAKE_ALIGNED_OPERATOR_NEW
56
57 NaiveInitialStateEstimation(const Eigen::Isometry3d& T_lidar_imu, const Eigen::Matrix<double, 6, 1>& imu_bias);
58 virtual ~NaiveInitialStateEstimation() override;
59
60 virtual void insert_imu(double stamp, const Eigen::Vector3d& linear_acc, const Eigen::Vector3d& angular_vel) override;
61 virtual EstimationFrame::ConstPtr initial_pose() override;
62
63 void set_init_state(const Eigen::Isometry3d& init_T_world_imu, const Eigen::Vector3d& init_v_world_imu);
64
65private:
66 double window_size;
67
68 bool ready;
69 double init_stamp;
70 double stamp;
71 Eigen::Vector3d sum_acc;
72
73 Eigen::Matrix<double, 6, 1> imu_bias;
74 Eigen::Isometry3d T_lidar_imu;
75
76 bool force_init;
77 Eigen::Vector3d init_v_world_imu;
78 Eigen::Isometry3d init_T_world_imu;
79};
80
81// TODO: Implement Loose-coupling-based initial state estimator
82
83} // namespace glim
Initial sensor state estimator.
Definition initial_state_estimation.hpp:18
virtual void insert_imu(double stamp, const Eigen::Vector3d &linear_acc, const Eigen::Vector3d &angular_vel)
Insert an IMU data.
Definition initial_state_estimation.hpp:29
virtual EstimationFrame::ConstPtr initial_pose()=0
Get the initial estimation result.
virtual void insert_frame(const PreprocessedFrame::ConstPtr &raw_frame)
Insert a point cloud.
Definition initial_state_estimation.hpp:35
Naive initial state estimator that simply calculates a pose that aligns linear acc with the gravity d...
Definition initial_state_estimation.hpp:53
virtual EstimationFrame::ConstPtr initial_pose() override
Get the initial estimation result.
virtual void insert_imu(double stamp, const Eigen::Vector3d &linear_acc, const Eigen::Vector3d &angular_vel) override
Insert an IMU data.