GTSAM  4.0.2
C++ library for smoothing and mapping (SAM)
ManifoldPreintegration.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 
22 #pragma once
23 
26 
27 namespace gtsam {
28 
33 class GTSAM_EXPORT ManifoldPreintegration : public PreintegrationBase {
34  protected:
35 
43  Matrix3 delPdelBiasAcc_;
45  Matrix3 delVdelBiasAcc_;
47 
50  resetIntegration();
51  }
52 
53 public:
56 
62  ManifoldPreintegration(const std::shared_ptr<Params>& p,
63  const imuBias::ConstantBias& biasHat = imuBias::ConstantBias());
64 
66 
70  void resetIntegration() override;
71 
73 
76  NavState deltaXij() const override { return deltaXij_; }
77  Rot3 deltaRij() const override { return deltaXij_.attitude(); }
78  Vector3 deltaPij() const override { return deltaXij_.position(); }
79  Vector3 deltaVij() const override { return deltaXij_.velocity(); }
80 
81  Matrix3 delRdelBiasOmega() const { return delRdelBiasOmega_; }
82  Matrix3 delPdelBiasAcc() const { return delPdelBiasAcc_; }
83  Matrix3 delPdelBiasOmega() const { return delPdelBiasOmega_; }
84  Matrix3 delVdelBiasAcc() const { return delVdelBiasAcc_; }
85  Matrix3 delVdelBiasOmega() const { return delVdelBiasOmega_; }
86 
89  bool equals(const ManifoldPreintegration& other, double tol) const;
91 
94 
99  void update(const Vector3& measuredAcc, const Vector3& measuredOmega, const double dt,
100  Matrix9* A, Matrix93* B, Matrix93* C) override;
101 
105  Vector9 biasCorrectedDelta(const imuBias::ConstantBias& bias_i,
106  OptionalJacobian<9, 6> H = {}) const override;
107 
109  virtual std::shared_ptr<ManifoldPreintegration> clone() const {
110  return std::shared_ptr<ManifoldPreintegration>();
111  }
112 
114 
115 private:
116 #ifdef GTSAM_ENABLE_BOOST_SERIALIZATION
117 
118  friend class boost::serialization::access;
119  template<class ARCHIVE>
120  void serialize(ARCHIVE & ar, const unsigned int /*version*/) {
121  namespace bs = ::boost::serialization;
122  ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(PreintegrationBase);
123  ar & BOOST_SERIALIZATION_NVP(deltaXij_);
124  ar & BOOST_SERIALIZATION_NVP(delRdelBiasOmega_);
125  ar & BOOST_SERIALIZATION_NVP(delPdelBiasAcc_);
126  ar & BOOST_SERIALIZATION_NVP(delPdelBiasOmega_);
127  ar & BOOST_SERIALIZATION_NVP(delVdelBiasAcc_);
128  ar & BOOST_SERIALIZATION_NVP(delVdelBiasOmega_);
129  }
130 #endif
131 };
132 
133 }
Definition: NavState.h:34
Definition: ManifoldPreintegration.h:33
NavState deltaXij_
Definition: ManifoldPreintegration.h:41
Definition: ImuBias.h:32
std::string serialize(const T &input)
serializes to a string
Definition: serialization.h:113
Definition: PreintegrationBase.h:41
Matrix3 delPdelBiasAcc_
Jacobian of preintegrated position w.r.t. acceleration bias.
Definition: ManifoldPreintegration.h:43
Matrix3 delRdelBiasOmega_
Jacobian of preintegrated rotation w.r.t. angular rate bias.
Definition: ManifoldPreintegration.h:42
Matrix3 delPdelBiasOmega_
Jacobian of preintegrated position w.r.t. angular rate bias.
Definition: ManifoldPreintegration.h:44
Rot3 is a 3D rotation represented as a rotation matrix if the preprocessor symbol GTSAM_USE_QUATERNIO...
Definition: Rot3.h:58
Matrix3 delVdelBiasOmega_
Jacobian of preintegrated velocity w.r.t. angular rate bias.
Definition: ManifoldPreintegration.h:46
Definition: Testable.h:112
ManifoldPreintegration()
Default constructor for serialization.
Definition: ManifoldPreintegration.h:49
Matrix3 delVdelBiasAcc_
Jacobian of preintegrated velocity w.r.t. acceleration bias.
Definition: ManifoldPreintegration.h:45
Definition: chartTesting.h:28
Definition: OptionalJacobian.h:38
virtual std::shared_ptr< ManifoldPreintegration > clone() const
Definition: ManifoldPreintegration.h:109