8#ifndef IMU_MANAGER_HPP_
9#define IMU_MANAGER_HPP_
19#include <gtsam/base/Vector.h>
20#include <gtsam/geometry/Pose3.h>
21#include <gtsam/navigation/CombinedImuFactor.h>
22#include <gtsam/navigation/ImuBias.h>
33typedef std::map<double, holistic_fusion::ImuMeasurement, std::less<double>,
34 Eigen::aligned_allocator<std::pair<const double, holistic_fusion::ImuMeasurement>>>
41 ImuBuffer(
const std::shared_ptr<GraphConfig> graphConfigPtr);
47 Eigen::Matrix<double, 6, 1>
addToImuBuffer(
double ts,
const Eigen::Vector3d& linearAcc,
const Eigen::Vector3d& angularVel);
64 TimeToImuMap::iterator& endIterator);
72 const gtsam::imuBias::ConstantBias& imuBias,
const Eigen::Vector3d& W_gravityVector);
ImuBuffer(const std::shared_ptr< GraphConfig > graphConfigPtr)
bool useImuSignalLowPassFilter_
bool getClosestImuMeasurement(double &returnedImuTimestamp, ImuMeasurement &returnedImuMeasurement, const double maxSearchDeviation, const double tK)
TimeToImuMap timeToImuBuffer_
double getLatestTimestampInBuffer()
bool getClosestKeyAndTimestamp(double &tInGraph, gtsam::Key &key, const std::string &callingName, const double maxSearchDeviation, const double tLidar)
gtsam::NavState integrateNavStateFromTimestamp(const double &tsStart, const double &tsEnd, const gtsam::NavState &stateStart, const gtsam::imuBias::ConstantBias &imuBias, const Eigen::Vector3d &W_gravityVector)
std::unique_ptr< ImuSignalLowPassFilter > imuSignalLowPassFilterPtr_
Eigen::Matrix< double, 6, 1 > addToImuBuffer(double ts, const Eigen::Vector3d &linearAcc, const Eigen::Vector3d &angularVel)
void getLastTwoMeasurements(TimeToImuMap &imuMap)
double getImuRate() const
std::mutex writeInBufferMutex_
bool getImuMeasurementAtTime(holistic_fusion::ImuMeasurement &returnedImuMeasurement, const double ts)
bool estimateAttitudeFromImu(gtsam::Rot3 &initAttitude, double &gravityMagnitude, Eigen::Vector3d &gyrBias)
Determine initial IMU pose w.r.t to gravity vector pointing up.
bool getIMUBufferIteratorsInInterval(const double tsStart, const double tsEnd, TimeToImuMap::iterator &startIterator, TimeToImuMap::iterator &endIterator)
void addToKeyBuffer(double ts, gtsam::Key key)
double imuPoseInitWaitSecs_
std::map< double, holistic_fusion::ImuMeasurement, std::less< double >, Eigen::aligned_allocator< std::pair< const double, holistic_fusion::ImuMeasurement > > > TimeToImuMap