65 void resetIntegration()
override;
71 Vector3 deltaPij()
const override {
return preintegrated_.segment<3>(3); }
72 Vector3 deltaVij()
const override {
return preintegrated_.tail<3>(); }
73 Rot3 deltaRij()
const override {
return Rot3::Expmap(theta()); }
74 Vector3 so3TangentAt(
double t)
const override;
75 NavState deltaXij()
const override {
76 return internal::navStateComponentWiseRetract(NavState(), preintegrated_);
79 const Vector9& preintegrated()
const {
return preintegrated_; }
80 Vector3 theta()
const {
return preintegrated_.head<3>(); }
81 const Matrix93& preintegrated_H_biasAcc()
const {
return preintegrated_H_biasAcc_; }
82 const Matrix93& preintegrated_H_biasOmega()
const {
return preintegrated_H_biasOmega_; }
86 bool equals(
const TangentPreintegration& other,
double tol)
const;
94 static Vector9 UpdatePreintegrated(
const Vector3& a_body,
95 const Vector3& w_body,
const double dt,
96 const Vector9& preintegrated,
97 OptionalJacobian<9, 9> A = {},
98 OptionalJacobian<9, 3> B = {},
99 OptionalJacobian<9, 3> C = {});
105 void update(
const Vector3& measuredAcc,
const Vector3& measuredOmega,
106 const double dt, Matrix9* A, Matrix93* B, Matrix93* C)
override;
111 Vector9 biasCorrectedDelta(
const imuBias::ConstantBias& bias_i,
112 OptionalJacobian<9, 6> H = {})
const override;
115 static Vector9 Compose(
const Vector9& zeta01,
const Vector9& zeta12,
117 OptionalJacobian<9, 9> H1 = {},
118 OptionalJacobian<9, 9> H2 = {});
122 void mergeWith(
const TangentPreintegration& pim, Matrix9* H1, Matrix9* H2);
126 virtual std::shared_ptr<TangentPreintegration>
clone()
const {
127 return std::shared_ptr<TangentPreintegration>();
133#if GTSAM_ENABLE_BOOST_SERIALIZATION
135 friend class boost::serialization::access;
136 template<
class ARCHIVE>
137 void serialize(ARCHIVE & ar,
const unsigned int ) {
138 namespace bs = ::boost::serialization;
140 ar & BOOST_SERIALIZATION_NVP(preintegrated_);
141 ar & BOOST_SERIALIZATION_NVP(preintegrated_H_biasAcc_);
142 ar & BOOST_SERIALIZATION_NVP(preintegrated_H_biasOmega_);