8#ifndef GMSF_UNARY_EXPRESSION_VELOCITY3_LOCAL_H
9#define GMSF_UNARY_EXPRESSION_VELOCITY3_LOCAL_H
12#include <gtsam/base/types.h>
13#include <gtsam/inference/Symbol.h>
14#include <gtsam/navigation/ImuBias.h>
15#include <gtsam/slam/expressions.h>
28 const std::string& imuFrameName,
const Eigen::Isometry3d& T_I_sensorFrame,
29 const std::shared_ptr<holistic_fusion::ImuBuffer> imuBufferPtr)
40 imuBufferPtr->getClosestImuMeasurement(imuTimestamp, imuMeasurement, 0.1, velocityUnaryMeasurementPtr->timeK());
54 const std::string& imuFrameName,
const Eigen::Isometry3d& T_I_sensorFrame,
55 const Eigen::Vector3d& angularVelocity)
81 gtsam::Point3_ exp_fixedFrame_v_fixedFrame_sensorFrame_ =
82 gtsam::Expression<gtsam::Vector3>(gtsam::symbol_shorthand::V(closestGeneralKey));
86 gtsam::rotation(gtsam::Expression<gtsam::Pose3>(gtsam::symbol_shorthand::X(closestGeneralKey)));
95 const gtsam::Expression<gtsam::imuBias::ConstantBias> exp_imuBias(gtsam::symbol_shorthand::B(closestGeneralKey));
128 gtsam::Pose3
convertToPose3(
const gtsam::Point3& measurement)
final {
return gtsam::Pose3(gtsam::Rot3::Identity(), measurement); }
130 gtsam::Point3
convertFromPose3(
const gtsam::Pose3& pose)
final {
return pose.translation(); }
gtsam::Pose3 convertToPose3(const gtsam::Point3 &measurement) final
gtsam::Point3 convertFromPose3(const gtsam::Pose3 &pose) final
const gtsam::Vector getNoiseDensity() const override
gtsam::Point3 angularVelocity_
gtsam::Expression< gtsam::Rot3 > exp_R_fixedFrame_I_
bool foundImuMeasurementFlag_
const gtsam::Point3 getGtsamMeasurementValue() const override
void applyExtrinsicCalibrationCorrection(const gtsam::Point3_ &exp_correction) final
const gtsam::Expression< gtsam::Point3 > getGtsamExpression() const override
void transformImuStateToSensorFrameState() final
gtsam::Expression< gtsam::Point3 > exp_I_w_W_I_
~GmsfUnaryExpressionLocalVelocity3()=default
std::shared_ptr< UnaryMeasurementXD< Eigen::Vector3d, 3 > > velocityUnaryMeasurementPtr_
GmsfUnaryExpressionLocalVelocity3(const std::shared_ptr< UnaryMeasurementXD< Eigen::Vector3d, 3 > > &velocityUnaryMeasurementPtr, const std::string &imuFrameName, const Eigen::Isometry3d &T_I_sensorFrame, const std::shared_ptr< holistic_fusion::ImuBuffer > imuBufferPtr)
gtsam::Expression< gtsam::Point3 > exp_sensorFrame_v_fixedFrame_sensorFrame_
void generateImuStateInWorldFrameAtKey(const gtsam::Key &closestGeneralKey) override
GmsfUnaryExpressionLocalVelocity3(const std::shared_ptr< UnaryMeasurementXD< Eigen::Vector3d, 3 > > &velocityUnaryMeasurementPtr, const std::string &imuFrameName, const Eigen::Isometry3d &T_I_sensorFrame, const Eigen::Vector3d &angularVelocity)
GmsfUnaryExpressionLocal(const std::shared_ptr< UnaryMeasurement > &baseUnaryAbsoluteMeasurementPtr, const std::string &imuFrameName, const Eigen::Isometry3d &T_I_sensorFrame)
Eigen::Isometry3d T_I_sensorFrameInit_
Class to represent x-dimensional unary measurement in the graph.
gtsam::Rot3_ inverseRot3(const gtsam::Rot3_ &R)
Eigen::Vector3d angularVelocity