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

Public Member Functions | |
| 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) |
Protected Member Functions | |
| 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) |
Protected Attributes | |
| 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_ |
Private Member Functions | |
| bool | alignImu_ (double &imuAttitudeRoll, double &imuAttitudePitch) |
| Worker functions / Set Imu Attitude. | |
| void | initGraph_ (const double timeStamp_k, const Eigen::Vector3d &imuAngularVelocity) |
| void | optimizeGraph_ () |
| 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::thread | optimizeGraphThread_ |
| std::atomic< bool > | stopOptimizeGraphThread_ {false} |
| std::mutex | initYawAndPositionMutex_ |
| std::shared_ptr< SafeIntegratedNavState > | preIntegratedNavStatePtr_ = nullptr |
| State Containers. | |
Definition at line 34 of file HolisticFusion.h.
| holistic_fusion::HolisticFusion::HolisticFusion | ( | ) |
Constructor --------—.
Definition at line 23 of file HolisticFusion.cpp.
|
virtual |
Destructor --------—.
Definition at line 28 of file HolisticFusion.cpp.
|
pure virtual |
Binary Measurements.
Implemented in holistic_fusion::HolisticFusionClassic.
| bool holistic_fusion::HolisticFusion::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 --------------------—.
Definition at line 182 of file HolisticFusion.cpp.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionClassic.
|
pure virtual |
Unary Measurements / Absolute Measurements.
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Landmark Measurements.
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionClassic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionHolistic.
|
pure virtual |
Implemented in holistic_fusion::HolisticFusionClassic.
| bool holistic_fusion::HolisticFusion::addZeroMotionFactor | ( | double | timeKm1, |
| double | timeK, | ||
| double | noiseDensity ) |
Definition at line 328 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::addZeroVelocityFactor | ( | double | timeK, |
| double | noiseDensity ) |
Definition at line 337 of file HolisticFusion.cpp.
|
private |
Worker functions / Set Imu Attitude.
Worker Functions --------------------—.
Definition at line 347 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::areRollAndPitchInited | ( | ) | const |
Definition at line 100 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::areYawAndPositionInited | ( | ) | const |
Definition at line 96 of file HolisticFusion.cpp.
|
protected |
Definition at line 459 of file HolisticFusion.cpp.
|
inline |
Definition at line 64 of file HolisticFusion.h.
|
private |
Initialize graph node
Definition at line 377 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::initWorldFrameToFixedFrameTransform | ( | const Eigen::Isometry3d & | T_W_F, |
| const std::string & | fixedFrame ) |
Definition at line 173 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::initYawAndPosition | ( | const UnaryMeasurementXD< Eigen::Isometry3d, 6 > & | unary6DMeasurement | ) |
Definition at line 167 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::initYawAndPositionInWorld | ( | const double | yaw_W_frame1, |
| const Eigen::Vector3d & | W_t_W_frame2, | ||
| const std::string & | frame1, | ||
| const std::string & | frame2 ) |
Definition at line 109 of file HolisticFusion.cpp.
|
inlineprotected |
Convenience functions.
Definition at line 101 of file HolisticFusion.h.
| bool holistic_fusion::HolisticFusion::isGraphInited | ( | ) | const |
Definition at line 104 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::logRealTimeNavStates | ( | const std::string & | savePath | ) |
Definition at line 83 of file HolisticFusion.cpp.
|
private |
Definition at line 404 of file HolisticFusion.cpp.
| std::optional< BatchOptimizationResult > holistic_fusion::HolisticFusion::optimizeSlowBatchSmoother | ( | int | maxIterations, |
| const bool | computePoseCovarianceFlag ) |
Definition at line 79 of file HolisticFusion.cpp.
| bool holistic_fusion::HolisticFusion::optimizeSlowBatchSmoother | ( | int | maxIterations, |
| const std::string & | savePath, | ||
| const bool | saveCovarianceFlag ) |
Definition at line 75 of file HolisticFusion.cpp.
|
protected |
Definition at line 454 of file HolisticFusion.cpp.
| void holistic_fusion::HolisticFusion::setup | ( | const std::shared_ptr< GraphConfig > | graphConfigPtr, |
| const std::shared_ptr< StaticTransforms > | staticTransformsPtr ) |
Initialize helper threads
Definition at line 36 of file HolisticFusion.cpp.
|
private |
Utility functions / Geometric transformation to IMU in world frame.
Utility Functions --------------------—.
Global rotation
Translation in global frame
Shift observed Gnss position to IMU frame (instead of Gnss antenna)
Definition at line 438 of file HolisticFusion.cpp.
|
protected |
Flags / Initialization.
Definition at line 134 of file HolisticFusion.h.
|
protected |
Definition at line 127 of file HolisticFusion.h.
|
protected |
Definition at line 135 of file HolisticFusion.h.
|
protected |
Definition at line 120 of file HolisticFusion.h.
|
protected |
Definition at line 125 of file HolisticFusion.h.
|
protected |
Definition at line 143 of file HolisticFusion.h.
|
protected |
Definition at line 136 of file HolisticFusion.h.
|
private |
Definition at line 168 of file HolisticFusion.h.
|
protected |
Definition at line 146 of file HolisticFusion.h.
|
protected |
Definition at line 140 of file HolisticFusion.h.
|
protected |
Definition at line 139 of file HolisticFusion.h.
|
protected |
Definition at line 130 of file HolisticFusion.h.
|
private |
Definition at line 163 of file HolisticFusion.h.
|
private |
State Containers.
Definition at line 171 of file HolisticFusion.h.
|
protected |
Definition at line 122 of file HolisticFusion.h.
|
private |
Thread 5: Update of the graph as soon as new lidar measurement has arrived
Definition at line 165 of file HolisticFusion.h.
|
protected |
Definition at line 137 of file HolisticFusion.h.