gtsam
Loading...
Searching...
No Matches
PreintegrationParams.h
Go to the documentation of this file.
1/* ----------------------------------------------------------------------------
2
3 * GTSAM Copyright 2010, Georgia Tech Research Corporation,
4 * Atlanta, Georgia 30332-0415
5 * All Rights Reserved
6 * Authors: Frank Dellaert, et al. (see THANKS for the full author list)
7
8 * See LICENSE for the license information
9
10 * -------------------------------------------------------------------------- */
11
16
17#pragma once
18
21
22#if GTSAM_ENABLE_BOOST_SERIALIZATION
23#include <boost/serialization/version.hpp>
24#endif
25
26namespace gtsam {
27
34
37struct GTSAM_EXPORT PreintegrationParams: PreintegratedRotationParams {
42
43 protected:
44 friend class PreintegrationBase;
45
49
50 public:
51 Vector3 n_gravity;
52
53 private:
54 ImuFactorErrorMode imuFactorErrorMode_;
55
56 public:
59 : PreintegratedRotationParams(),
63 n_gravity(0, 0, -1),
64 imuFactorErrorMode_(ImuFactorErrorMode::Logmap) {}
65
68 PreintegrationParams(const Vector3& n_gravity_)
69 : PreintegratedRotationParams(),
73 n_gravity(n_gravity_),
74 imuFactorErrorMode_(ImuFactorErrorMode::Logmap) {}
75
76 // Default Params for a Z-down navigation frame, such as NED: gravity points along positive Z-axis
77 static std::shared_ptr<PreintegrationParams> MakeSharedD(double g = 9.81) {
78 return std::shared_ptr<PreintegrationParams>(new PreintegrationParams(Vector3(0, 0, g)));
79 }
80
81 // Default Params for a Z-up navigation frame, such as ENU: gravity points along negative Z-axis
82 static std::shared_ptr<PreintegrationParams> MakeSharedU(double g = 9.81) {
83 return std::shared_ptr<PreintegrationParams>(new PreintegrationParams(Vector3(0, 0, -g)));
84 }
85
86 void print(const std::string& s="") const override;
87 bool equals(const PreintegratedRotationParams& other, double tol) const override;
88
89 void setAccelerometerCovariance(const Matrix3& cov) { accelerometerCovariance = cov; }
90 void setIntegrationCovariance(const Matrix3& cov) { integrationCovariance = cov; }
91
92 const Matrix3& getAccelerometerCovariance() const { return accelerometerCovariance; }
93 const Matrix3& getIntegrationCovariance() const { return integrationCovariance; }
94 const Vector3& getGravity() const { return n_gravity; }
95
104 imuFactorErrorMode_ = mode;
105 }
106
109 return imuFactorErrorMode_;
110 }
111
112#ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V43
114 void setUse2ndOrderCoriolis(bool flag) {
115 use2ndOrderCoriolis = flag;
116 }
117
119 bool getUse2ndOrderCoriolis() const {
120 return use2ndOrderCoriolis;
121 }
122#endif
123
124protected:
125
126#if GTSAM_ENABLE_BOOST_SERIALIZATION
128 friend class boost::serialization::access;
129 template<class ARCHIVE>
130 void serialize(ARCHIVE & ar, const unsigned int version) {
131 namespace bs = ::boost::serialization;
132 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(PreintegratedRotationParams);
133 ar & BOOST_SERIALIZATION_NVP(accelerometerCovariance);
134 ar & BOOST_SERIALIZATION_NVP(integrationCovariance);
135 ar & BOOST_SERIALIZATION_NVP(use2ndOrderCoriolis);
136 ar & BOOST_SERIALIZATION_NVP(n_gravity);
137 if (version > 0) {
138 ar & BOOST_SERIALIZATION_NVP(imuFactorErrorMode_);
139 } else if (ARCHIVE::is_loading::value) {
140 imuFactorErrorMode_ = ImuFactorErrorMode::Legacy;
141 }
142 }
143#endif
144};
145
146} // namespace gtsam
147
148#if GTSAM_ENABLE_BOOST_SERIALIZATION
149BOOST_CLASS_VERSION(gtsam::PreintegrationParams, 1)
150#endif
Macros for Matrix constants to avoid excessive template instantiation.
Global functions in a separate testing namespace.
Definition chartTesting.h:28
void print(const Matrix &A, const string &s, ostream &stream)
print without optional string, must specify cout yourself
Definition Matrix.cpp:143
ImuFactorErrorMode
Error chart used by IMU factors.
Definition PreintegrationParams.h:29
@ Legacy
Historical backend-dependent error chart.
Definition PreintegrationParams.h:30
@ ComponentWise
Use the component-wise NavState error for every backend.
Definition PreintegrationParams.h:31
@ Logmap
Use the SE_2(3) NavState Logmap for every backend.
Definition PreintegrationParams.h:32
Parameters for pre-integration: Usage: Create just a single Params and pass a shared pointer to the c...
Definition PreintegrationParams.h:37
Matrix3 accelerometerCovariance
Continuous-time "Covariance" of accelerometer The units for stddev are σ = m/s²/√Hz.
Definition PreintegrationParams.h:40
bool use2ndOrderCoriolis
Retained only for source and archive compatibility.
Definition PreintegrationParams.h:48
PreintegrationParams()
Default constructor for serialization only; fresh params use Logmap.
Definition PreintegrationParams.h:58
ImuFactorErrorMode getImuFactorErrorMode() const
Return the nonlinear error chart used by IMU factors.
Definition PreintegrationParams.h:108
Vector3 n_gravity
Gravity vector in nav frame.
Definition PreintegrationParams.h:51
Matrix3 integrationCovariance
continuous-time "Covariance" describing integration uncertainty
Definition PreintegrationParams.h:41
PreintegrationParams(const Vector3 &n_gravity_)
The Params constructor insists on getting the navigation frame gravity vector For convenience,...
Definition PreintegrationParams.h:68
void setImuFactorErrorMode(ImuFactorErrorMode mode)
Select the nonlinear error chart used by IMU factors.
Definition PreintegrationParams.h:103