GLIM
Loading...
Searching...
No Matches
imu_integration.hpp
1#pragma once
2
3#include <deque>
4#include <vector>
5#include <Eigen/Core>
6#include <gtsam/navigation/ImuFactor.h>
7
8namespace glim {
9
14 IMUIntegrationParams(const bool upright = true);
16
17 bool upright; // If true, +Z = up
18 double acc_noise; // Linear acceleration noise
19 double gyro_noise; // Angular velocity noise
20 double int_noise; // Integration noise
21};
22
27public:
30
37 void insert_imu(double stamp, const Eigen::Vector3d& linear_acc, const Eigen::Vector3d& angular_vel);
38
47 int integrate_imu(double start_time, double end_time, const gtsam::imuBias::ConstantBias& bias, int* num_integrated);
48
60 double start_time,
61 double end_time,
62 const gtsam::NavState& state,
63 const gtsam::imuBias::ConstantBias& bias,
64 std::vector<double>& pred_times,
65 std::vector<Eigen::Isometry3d>& pred_poses);
66
75 int find_imu_data(double start_time, double end_time, std::vector<double>& delta_times, std::vector<Eigen::Matrix<double, 7, 1>>& imu_data);
76
81 void erase_imu_data(int last);
82
86 const gtsam::PreintegratedImuMeasurements& integrated_measurements() const;
87
91 const std::deque<Eigen::Matrix<double, 7, 1>>& imu_data_in_queue() const;
92
93private:
94 std::shared_ptr<gtsam::PreintegratedImuMeasurements> imu_measurements;
95 std::deque<Eigen::Matrix<double, 7, 1>> imu_queue;
96};
97} // namespace glim
Utility class to integrate IMU measurements.
Definition imu_integration.hpp:26
void insert_imu(double stamp, const Eigen::Vector3d &linear_acc, const Eigen::Vector3d &angular_vel)
Insert an IMU data.
const gtsam::PreintegratedImuMeasurements & integrated_measurements() const
Preintegrated measurements.
int integrate_imu(double start_time, double end_time, const gtsam::NavState &state, const gtsam::imuBias::ConstantBias &bias, std::vector< double > &pred_times, std::vector< Eigen::Isometry3d > &pred_poses)
Integrate IMU measurements and predict IMU poses in a time range.
const std::deque< Eigen::Matrix< double, 7, 1 > > & imu_data_in_queue() const
IMU data in queue.
void erase_imu_data(int last)
Erase IMU data before the given index.
int find_imu_data(double start_time, double end_time, std::vector< double > &delta_times, std::vector< Eigen::Matrix< double, 7, 1 > > &imu_data)
Find IMU data in a time range.
int integrate_imu(double start_time, double end_time, const gtsam::imuBias::ConstantBias &bias, int *num_integrated)
Integrate IMU measurements in a time range.
IMU integration parameters.
Definition imu_integration.hpp:13