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 
17 #pragma once
18 
20 
21 namespace gtsam {
22 
32 
36  accelerometerCovariance(I_3x3),
37  integrationCovariance(I_3x3),
38  use2ndOrderCoriolis(false),
39  n_gravity(0, 0, -1) {}
40 
43  PreintegrationParams(const Vector3& n_gravity_)
45  accelerometerCovariance(I_3x3),
46  integrationCovariance(I_3x3),
47  use2ndOrderCoriolis(false),
48  n_gravity(n_gravity_) {}
49 
50  // Default Params for a Z-down navigation frame, such as NED: gravity points along positive Z-axis
51  static std::shared_ptr<PreintegrationParams> MakeSharedD(double g = 9.81) {
52  return std::shared_ptr<PreintegrationParams>(new PreintegrationParams(Vector3(0, 0, g)));
53  }
54 
55  // Default Params for a Z-up navigation frame, such as ENU: gravity points along negative Z-axis
56  static std::shared_ptr<PreintegrationParams> MakeSharedU(double g = 9.81) {
57  return std::shared_ptr<PreintegrationParams>(new PreintegrationParams(Vector3(0, 0, -g)));
58  }
59 
60  void print(const std::string& s="") const override;
61  bool equals(const PreintegratedRotationParams& other, double tol) const override;
62 
63  void setAccelerometerCovariance(const Matrix3& cov) { accelerometerCovariance = cov; }
64  void setIntegrationCovariance(const Matrix3& cov) { integrationCovariance = cov; }
65  void setUse2ndOrderCoriolis(bool flag) { use2ndOrderCoriolis = flag; }
66 
67  const Matrix3& getAccelerometerCovariance() const { return accelerometerCovariance; }
68  const Matrix3& getIntegrationCovariance() const { return integrationCovariance; }
69  const Vector3& getGravity() const { return n_gravity; }
70  bool getUse2ndOrderCoriolis() const { return use2ndOrderCoriolis; }
71 
72 protected:
73 
74 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
75 
76  friend class boost::serialization::access;
77  template<class ARCHIVE>
78  void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
79  namespace bs = ::boost::serialization;
80  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(PreintegratedRotationParams);
81  ar & BOOST_SERIALIZATION_NVP(accelerometerCovariance);
82  ar & BOOST_SERIALIZATION_NVP(integrationCovariance);
83  ar & BOOST_SERIALIZATION_NVP(use2ndOrderCoriolis);
84  ar & BOOST_SERIALIZATION_NVP(n_gravity);
85  }
86 #endif
87 
88 #ifdef GTSAM_USE_QUATERNIONS
89  // Align if we are using Quaternions
90 public:
92 #endif
93 };
94 
95 } // namespace gtsam
void print(const Matrix &A, const string &s, ostream &stream)
Definition: Matrix.cpp:155
const Matrix3 & getAccelerometerCovariance() const
void setAccelerometerCovariance(const Matrix3 &cov)
Eigen::Vector3d Vector3
Definition: Vector.h:43
Matrix3 integrationCovariance
continuous-time "Covariance" describing integration uncertainty
std::string serialize(const T &input)
serializes to a string
void setIntegrationCovariance(const Matrix3 &cov)
void g(const string &key, int i)
Definition: testBTree.cpp:41
const Matrix3 & getIntegrationCovariance() const
static std::shared_ptr< PreintegrationParams > MakeSharedD(double g=9.81)
Vector3 n_gravity
Gravity vector in nav frame.
RealScalar s
bool use2ndOrderCoriolis
Whether to use second order Coriolis integration.
const Vector3 & getGravity() const
traits
Definition: chartTesting.h:28
PreintegrationParams(const Vector3 &n_gravity_)
#define GTSAM_MAKE_ALIGNED_OPERATOR_NEW
Definition: types.h:284
const G double tol
Definition: Group.h:86
static std::shared_ptr< PreintegrationParams > MakeSharedU(double g=9.81)
PreintegrationParams()
Default constructor for serialization only.


gtsam
Author(s):
autogenerated on Tue Jul 4 2023 02:35:15