8#ifndef INTERFACE_NavState_H
9#define INTERFACE_NavState_H
32 NavState(
const Eigen::Isometry3d& T_W_Ik, Eigen::Vector3d I_v_W_I, Eigen::Vector3d I_w_W_I,
const double timeK)
43 void updateInWorld(
const Eigen::Isometry3d& T_W_Ik,
const Eigen::Vector3d& I_v_W_I,
const Eigen::Vector3d& I_w_W_I,
double timeK);
52 Eigen::Isometry3d
T_W_Ik_ = Eigen::Isometry3d::Identity();
54 Eigen::Vector3d
I_v_W_I_ = Eigen::Vector3d::Zero();
55 Eigen::Vector3d
I_w_W_I_ = Eigen::Vector3d::Zero();
74 SafeIntegratedNavState(
const Eigen::Isometry3d& T_W_O,
const Eigen::Isometry3d& T_O_Ik_gravityAligned,
const Eigen::Vector3d& I_v_W_I,
75 const Eigen::Vector3d& I_w_W_I,
const double timeK,
const bool odomNotJump)
76 :
NavState(T_W_O * T_O_Ik_gravityAligned, I_v_W_I, I_w_W_I, timeK),
81 SafeIntegratedNavState(
const Eigen::Isometry3d& T_W_Ik,
const Eigen::Vector3d& I_v_W_I,
const Eigen::Vector3d& I_w_W_I,
86 void update(
const Eigen::Isometry3d& T_W_O,
const Eigen::Isometry3d& T_O_Ik_gravityAligned,
const Eigen::Vector3d& I_v_W_I,
87 const Eigen::Vector3d& I_w_W_I,
double timeK,
bool odomNotJump);
88 void updateInWorld(
const Eigen::Isometry3d& T_W_Ik,
const Eigen::Vector3d& I_v_W_I,
const Eigen::Vector3d& I_w_W_I,
const double timeK,
105 Eigen::Isometry3d
T_W_O_ = Eigen::Isometry3d::Identity();
124 const double timeK,
const Eigen::Matrix<double, 6, 6>& poseCovariance,
125 const Eigen::Matrix<double, 3, 3>& velocityCovariance, Eigen::Vector3d accelerometerBias,
130 :
NavState(T_W_Ik, I_v_W_I, I_w_W_I, timeK),
143 Eigen::Isometry3d(graphState.navState().pose().matrix()), graphState.navState().velocity(),
144 graphState.angularVelocityCorrected(), graphState.ts(), graphState.poseCovariance(), graphState.velocityCovariance(),
145 graphState.imuBias().accelerometer(), graphState.imuBias().gyroscope(), graphState.referenceFrameTransforms(),
146 graphState.referenceFrameTransformsCovariance(), graphState.landmarkTransforms(), graphState.landmarkTransformsCovariance()) {}
virtual void updateLatestMeasurementTimestamp(double timeK)
void updatePositionInWorld(const Eigen::Vector3d &W_t_W_Ik)
const Eigen::Vector3d & getI_w_W_I() const
const Eigen::Vector3d & getI_v_W_I() const
Eigen::Isometry3d T_W_Ik_
NavState(const NavState &navState)=default
void updateYawInWorld(double yaw_W_Ik)
void updateInWorld(const Eigen::Isometry3d &T_W_Ik, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, double timeK)
NavState(const Eigen::Isometry3d &T_W_Ik, Eigen::Vector3d I_v_W_I, Eigen::Vector3d I_w_W_I, const double timeK)
const Eigen::Isometry3d & getT_W_Ik() const
bool isrelocalizedWorldToOdom() const
SafeIntegratedNavState(const SafeIntegratedNavState &safeIntegratedNavState)
Eigen::Isometry3d T_O_Ik_gravityAligned_
void update(const Eigen::Isometry3d &T_W_O, const Eigen::Isometry3d &T_O_Ik_gravityAligned, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, double timeK, bool odomNotJump)
void updateYawInWorld(double yaw_W_Ik, bool odomNotJump)
const Eigen::Isometry3d & getT_O_Ik_gravityAligned() const
const Eigen::Isometry3d & getT_W_O() const
SafeIntegratedNavState()=default
SafeIntegratedNavState(const Eigen::Isometry3d &T_W_Ik, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, const double timeK)
void updateLatestMeasurementTimestamp(const double timeK) override
SafeIntegratedNavState(const Eigen::Isometry3d &T_W_O, const Eigen::Isometry3d &T_O_Ik_gravityAligned, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, const double timeK, const bool odomNotJump)
bool relocalizedWorldToOdom_
void updateInWorld(const Eigen::Isometry3d &T_W_Ik, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, const double timeK, bool odomNotJump)
std::mutex stateUpdateMutex_
void updatePositionInWorld(const Eigen::Vector3d &W_t_W_Ik, bool odomNotJump)
const TransformsDictionary< Eigen::Matrix< double, 6, 6 > > & getLandmarkTransformsCovariance() const
const Eigen::Vector3d & getGyroscopeBias() const
const TransformsDictionary< Eigen::Isometry3d > & getReferenceFrameTransforms() const
const TransformsDictionary< Eigen::Isometry3d > & getLandmarkTransforms() const
SafeNavStateWithCovarianceAndBias()=default
Eigen::Vector3d accelerometerBias_
const Eigen::Matrix< double, 6, 6 > & getPoseCovariance() const
holistic_fusion::TransformsDictionary< Eigen::Matrix< double, 6, 6 > > landmarkTransformsCovariance_
const Eigen::Vector3d & getAccelerometerBias() const
holistic_fusion::TransformsDictionary< Eigen::Isometry3d > landmarkTransforms_
holistic_fusion::TransformsDictionary< Eigen::Matrix< double, 6, 6 > > referenceFrameTransformsCovariance_
SafeNavStateWithCovarianceAndBias(const GraphState &graphState)
holistic_fusion::TransformsDictionary< Eigen::Isometry3d > referenceFrameTransforms_
Eigen::Matrix< double, 6, 6 > poseCovariance_
SafeNavStateWithCovarianceAndBias(const SafeNavStateWithCovarianceAndBias &navState)=default
SafeNavStateWithCovarianceAndBias(const Eigen::Isometry3d &T_W_Ik, const Eigen::Vector3d &I_v_W_I, const Eigen::Vector3d &I_w_W_I, const double timeK, const Eigen::Matrix< double, 6, 6 > &poseCovariance, const Eigen::Matrix< double, 3, 3 > &velocityCovariance, Eigen::Vector3d accelerometerBias, Eigen::Vector3d gyroscopeBias, const TransformsDictionary< Eigen::Isometry3d > &fixedFrameTransforms, const TransformsDictionary< Eigen::Matrix< double, 6, 6 > > &fixedFrameTransformsCovariance, const TransformsDictionary< Eigen::Isometry3d > &landmarkTransforms, const TransformsDictionary< Eigen::Matrix< double, 6, 6 > > &landmarkTransformsCovariance)
const TransformsDictionary< Eigen::Matrix< double, 6, 6 > > & getReferenceFrameTransformsCovariance() const
Eigen::Matrix< double, 3, 3 > velocityCovariance_
Eigen::Vector3d gyroscopeBias_
const Eigen::Matrix< double, 3, 3 > & getVelocityCovariance() const