|
My Project 1.0
Holistic Fusion: A Generic Framework for Multimodal Sensor Fusion
|
#include <HolisticFusionDualGraph.h>


Public Member Functions | |
| HolisticFusionDualGraph () | |
| ~HolisticFusionDualGraph ()=default | |
| virtual bool | setup () |
| void | activateGlobalGraph (const gtsam::Vector3 &imuPosition, const gtsam::Rot3 &imuRotation, const double measurementTime) |
| void | activateFallbackGraph () |
| std::shared_ptr< SafeNavState > | addDualOdometryMeasurementAndReturnNavState (const UnaryMeasurement6D &odometryKm1, const UnaryMeasurement6D &odometryK, const Eigen::Matrix< double, 6, 1 > &poseBetweenNoise) |
| Return. | |
| void | addDualGnssPositionMeasurement (const UnaryMeasurement3D &W_t_W_frame, const Eigen::Vector3d &lastPosition, const Eigen::Vector3d &gnssCovarianceXYZ, const bool attemptGraphSwitching, const bool addedYawBefore) |
| No return. | |
| bool | globalGraphActiveFlag () |
| bool | fallbackGraphActiveFlag () |
| void | activateFallbackGraph () |
Protected Member Functions | |
| void | optimizeGraph_ () |
| Worker functions / Updating the factor graph. | |
| bool | isGnssCovarianceViolated_ (const Eigen::Vector3d &gnssCovarianceXYZ) |
| Eigen::Vector3d | W_t_W_Frame1_to_W_t_W_Frame2_ (const Eigen::Vector3d &W_t_W_frame1, const std::string &frame1, const std::string &frame2, const Eigen::Matrix3d &R_W_frame2) |
| Utility functions / Geometric transformation to IMU in world frame. | |
Private Attributes | |
| std::shared_ptr< GraphManager > | graphMgrPtr_ = nullptr |
| std::vector< std::string > | graphNames_ {"globalGraph", "fallbackGraph"} |
| Graph names. | |
| std::shared_ptr< std::map< gtsam::Key, double > > | globalGraphKeysTimestampsMapBufferPtr_ |
| std::shared_ptr< std::map< gtsam::Key, double > > | fallbackGraphKeysTimestampsMapBufferPtr_ |
| std::shared_ptr< gtsam::IncrementalFixedLagSmoother > | activeSmootherPtr_ = globalSmootherPtr_ |
| Selector. | |
| std::shared_ptr< gtsam::NonlinearFactorGraph > | activeFactorsBufferPtr_ = globalFactorsBufferPtr_ |
| std::shared_ptr< gtsam::PreintegratedCombinedMeasurements > | activeImuBufferPreintegratorPtr_ = globalImuBufferPreintegratorPtr_ |
| std::shared_ptr< gtsam::Values > | activeGraphValuesBufferPtr_ = globalGraphValuesBufferPtr_ |
| std::shared_ptr< std::map< gtsam::Key, double > > | activeGraphKeysTimestampsMapBufferPtr_ = globalGraphKeysTimestampsMapBufferPtr_ |
| std::mutex | activelyUsingActiveGraphMutex_ |
| std::mutex | swappingActiveGraphMutex_ |
| Private Attributes inherited from holistic_fusion::HolisticFusion | |
| std::shared_ptr< GraphConfig > | graphConfigPtr_ = nullptr |
| std::shared_ptr< StaticTransforms > | staticTransformsPtr_ = nullptr |
| std::shared_ptr< GraphManager > | graphMgrPtr_ = nullptr |
| std::shared_ptr< holistic_fusion::ImuBuffer > | coreImuBufferPtr_ |
| std::mutex | optimizeGraphMutex_ |
| bool | alignedImuFlag_ = false |
| Flags / Initialization. | |
| bool | foundInitialYawAndPositionFlag_ = false |
| bool | initedGraphFlag_ = false |
| bool | validFirstMeasurementReceivedFlag_ = false |
| bool | optimizeGraphFlag_ = false |
| bool | normalOperationFlag_ = false |
| long | imuCallbackCounter_ = 0 |
| std::unordered_set< std::string > | measurementsWithViolatedCovariance_ |
Additional Inherited Members | |
| Private Member Functions inherited from holistic_fusion::HolisticFusion | |
| HolisticFusion () | |
| Constructor --------—. | |
| virtual | ~HolisticFusion () |
| Destructor --------—. | |
| void | setup (const std::shared_ptr< GraphConfig > graphConfigPtr, const std::shared_ptr< StaticTransforms > staticTransformsPtr) |
| bool | initYawAndPositionInWorld (const double yaw_W_frame1, const Eigen::Vector3d &W_t_W_frame2, const std::string &frame1, const std::string &frame2) |
| bool | initYawAndPosition (const UnaryMeasurementXD< Eigen::Isometry3d, 6 > &unary6DMeasurement) |
| bool | initWorldFrameToFixedFrameTransform (const Eigen::Isometry3d &T_W_F, const std::string &fixedFrame) |
| bool | optimizeSlowBatchSmoother (int maxIterations, const std::string &savePath, const bool saveCovarianceFlag) |
| std::optional< BatchOptimizationResult > | optimizeSlowBatchSmoother (int maxIterations, const bool computePoseCovarianceFlag) |
| bool | logRealTimeNavStates (const std::string &savePath) |
| bool | areYawAndPositionInited () const |
| bool | areRollAndPitchInited () const |
| bool | isGraphInited () const |
| bool | getNormalOperationFlag () const |
| bool | addCoreImuMeasurementAndGetState (const Eigen::Vector3d &linearAcc, const Eigen::Vector3d &angularVel, const double imuTimeK, std::shared_ptr< SafeIntegratedNavState > &returnPreIntegratedNavStatePtr, std::shared_ptr< SafeNavStateWithCovarianceAndBias > &returnOptimizedStateWithCovarianceAndBiasPtr, Eigen::Matrix< double, 6, 1 > &returnAddedImuMeasurements) |
| Main: IMU --------------------—. | |
| virtual void | addUnaryPose3AbsoluteMeasurement (const UnaryMeasurementXDAbsolute< Eigen::Isometry3d, 6 > &R_T_R_S, const bool addToOnlineSmootherFlag=true)=0 |
| Unary Measurements / Absolute Measurements. | |
| virtual void | addUnaryPosition3AbsoluteMeasurement (UnaryMeasurementXDAbsolute< Eigen::Vector3d, 3 > &R_t_R_S)=0 |
| virtual void | addUnaryVelocity3AbsoluteMeasurement (UnaryMeasurementXDAbsolute< Eigen::Vector3d, 3 > &R_v_R_S)=0 |
| virtual void | addUnaryRollAbsoluteMeasurement (const UnaryMeasurementXDAbsolute< double, 1 > &roll_R_S)=0 |
| virtual void | addUnaryPitchAbsoluteMeasurement (const UnaryMeasurementXDAbsolute< double, 1 > &pitch_R_S)=0 |
| virtual void | addUnaryYawAbsoluteMeasurement (const UnaryMeasurementXDAbsolute< double, 1 > &yaw_R_S)=0 |
| virtual void | addUnaryVelocity3LocalMeasurement (UnaryMeasurementXD< Eigen::Vector3d, 3 > &S_v_R_S)=0 |
| virtual void | addUnaryPosition3LandmarkMeasurement (UnaryMeasurementXDLandmark< Eigen::Vector3d, 3 > &S_t_S_L, const int landmarkCreationCounter)=0 |
| Landmark Measurements. | |
| virtual void | addUnaryBearing3LandmarkMeasurement (UnaryMeasurementXDLandmark< Eigen::Vector3d, 3 > &S_bearing_S_L)=0 |
| virtual void | addBinaryPose3Measurement (const BinaryMeasurementXD< Eigen::Isometry3d, 6 > &delta)=0 |
| Binary Measurements. | |
| bool | addZeroMotionFactor (double timeKm1, double timeK, double noiseDensity) |
| bool | addZeroVelocityFactor (double timeK, double noiseDensity) |
| template<int DIM> | |
| bool | isCovarianceViolated_ (const Eigen::Matrix< double, DIM, 1 > &covariance, const double covarianceViolationThreshold) |
| Convenience functions. | |
| void | pretendFirstMeasurementReceived () |
| bool | checkAndPrintCovarianceViolation_ (const std::string &measurementName, const bool violatedFlag) |
Definition at line 26 of file HolisticFusionDualGraph.h.
| holistic_fusion::HolisticFusionDualGraph::HolisticFusionDualGraph | ( | ) |
|
default |
| void holistic_fusion::HolisticFusionDualGraph::activateFallbackGraph | ( | ) |
| void holistic_fusion::HolisticFusionDualGraph::activateFallbackGraph | ( | ) |
| void holistic_fusion::HolisticFusionDualGraph::activateGlobalGraph | ( | const gtsam::Vector3 & | imuPosition, |
| const gtsam::Rot3 & | imuRotation, | ||
| const double | measurementTime ) |
| void holistic_fusion::HolisticFusionDualGraph::addDualGnssPositionMeasurement | ( | const UnaryMeasurement3D & | W_t_W_frame, |
| const Eigen::Vector3d & | lastPosition, | ||
| const Eigen::Vector3d & | gnssCovarianceXYZ, | ||
| const bool | attemptGraphSwitching, | ||
| const bool | addedYawBefore ) |
No return.
| std::shared_ptr< SafeNavState > holistic_fusion::HolisticFusionDualGraph::addDualOdometryMeasurementAndReturnNavState | ( | const UnaryMeasurement6D & | odometryKm1, |
| const UnaryMeasurement6D & | odometryK, | ||
| const Eigen::Matrix< double, 6, 1 > & | poseBetweenNoise ) |
Return.
|
inline |
Definition at line 54 of file HolisticFusionDualGraph.h.
|
inline |
Definition at line 50 of file HolisticFusionDualGraph.h.
|
protected |
|
protected |
Worker functions / Updating the factor graph.
|
virtual |
|
protected |
Utility functions / Geometric transformation to IMU in world frame.
|
private |
Definition at line 88 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 91 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 90 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 89 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 94 of file HolisticFusionDualGraph.h.
|
private |
Selector.
Definition at line 87 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 84 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 83 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 77 of file HolisticFusionDualGraph.h.
|
private |
Graph names.
Definition at line 80 of file HolisticFusionDualGraph.h.
|
private |
Definition at line 95 of file HolisticFusionDualGraph.h.