Mermaid diagram

release/4.3a0
Frank Dellaert 2025-04-06 23:05:07 -04:00
parent c2f9c5e4af
commit b29ca85739
1 changed files with 98 additions and 1 deletions

View File

@ -33,4 +33,101 @@ The `navigation` module in GTSAM provides specialized tools for inertial navigat
- **[AcceleratingScenario](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/Scenario.h)**: Implements constantly accelerating motion.
- **[ScenarioRunner](https://github.com/borglab/gtsam/blob/develop/gtsam/navigation/ScenarioRunner.h)**: Executes scenarios and generates IMU measurements.
These components together provide a comprehensive framework for fusing inertial data with other sensor measurements in navigation and robotics applications.
# IMU Factor and Preintegration Overview
This document provides an overview of the key classes involved in IMU preintegration and factor creation within the `gtsam/navigation` module. These components are essential for performing state estimation using Inertial Measurement Unit data, often fused with other sensors like cameras or GPS.
## Class Relationship Diagram (Mermaid)
```mermaid
classDiagram
direction TD
class PreintegratedRotationParams {
+Matrix3 gyroscopeCovariance
+Vector3 omegaCoriolis
+Pose3 body_P_sensor
}
class PreintegrationParams {
+Matrix3 accelerometerCovariance
+Matrix3 integrationCovariance
+bool use2ndOrderCoriolis
+Vector3 n_gravity
}
PreintegrationParams --|> PreintegratedRotationParams : inherits
class PreintegrationCombinedParams {
+Matrix3 biasAccCovariance
+Matrix3 biasOmegaCovariance
+Matrix6 biasAccOmegaInt
}
PreintegrationCombinedParams --|> PreintegrationParams : inherits
class PreintegratedRotation {
+double deltaTij_
+Rot3 deltaRij_
+Matrix3 delRdelBiasOmega_
+integrateGyroMeasurement()
+biascorrectedDeltaRij()
}
PreintegratedRotation ..> PreintegratedRotationParams : uses
class PreintegrationBase {
<<Abstract>>
+imuBias::ConstantBias biasHat_
+resetIntegration()*
+integrateMeasurement()*
+biasCorrectedDelta()*
+predict()
+computeError()
}
PreintegrationBase --|> PreintegratedRotation : inherits
class ManifoldPreintegration {
+NavState deltaXij_
+update()
}
ManifoldPreintegration --|> PreintegrationBase : implements
class TangentPreintegration {
+Vector9 preintegrated_
+Matrix93 preintegrated_H_biasAcc_
+Matrix93 preintegrated_H_biasOmega_
+update()
}
TangentPreintegration --|> PreintegrationBase : implements
class PreintegratedAhrsMeasurements {
+Matrix3 preintMeasCov_
}
PreintegratedAhrsMeasurements --|> PreintegratedRotation : inherits
%% Assuming PreintegrationType is TangentPreintegration for example %%
%% Change TangentPreintegration to ManifoldPreintegration if needed %%
PreintegratedImuMeasurements --|> TangentPreintegration : inherits
class PreintegratedImuMeasurements {
+Matrix9 preintMeasCov_
}
PreintegratedCombinedMeasurements --|> TangentPreintegration : inherits
class PreintegratedCombinedMeasurements {
+Matrix preintMeasCov_ (15x15)
}
PreintegratedCombinedMeasurements ..> PreintegrationCombinedParams : uses
class ImuFactor {
}
ImuFactor ..> PreintegratedImuMeasurements : uses
class ImuFactor2 {
}
ImuFactor2 ..> PreintegratedImuMeasurements : uses
class CombinedImuFactor {
}
CombinedImuFactor ..> PreintegratedCombinedMeasurements : uses
class AHRSFactor {
}
AHRSFactor ..> PreintegratedAhrsMeasurements : uses
```