32 #ifdef GTSAM_TANGENT_PREINTEGRATION 33 typedef TangentPreintegration PreintegrationType;
35 typedef ManifoldPreintegration PreintegrationType;
83 preintMeasCov_.setZero();
95 PreintegrationType(p, biasHat) {
96 preintMeasCov_.setZero();
105 : PreintegrationType(base),
106 preintMeasCov_(preintMeasCov) {
110 void print(
const std::string& s =
"Preintegrated Measurements:")
const override;
125 const Vector3& measuredOmega,
const double dt)
override;
134 #ifdef GTSAM_TANGENT_PREINTEGRATION 139 #ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V4 143 const Matrix3& measuredAccCovariance,
144 const Matrix3& measuredOmegaCovariance,
145 const Matrix3& integrationErrorCovariance,
146 bool use2ndOrderIntegration =
true);
151 const Vector3& measuredOmega,
double dt,
152 boost::optional<Pose3> body_P_sensor);
159 template<
class ARCHIVE>
160 void serialize(ARCHIVE & ar,
const unsigned int ) {
161 namespace bs = ::boost::serialization;
162 ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(PreintegrationType);
163 ar & bs::make_nvp(
"preintMeasCov_", bs::make_array(preintMeasCov_.data(), preintMeasCov_.size()));
180 imuBias::ConstantBias> {
192 #if !defined(_MSC_VER) && __GNUC__ == 4 && __GNUC_MINOR__ > 5 193 typedef typename boost::shared_ptr<ImuFactor> shared_ptr;
216 virtual gtsam::NonlinearFactor::shared_ptr
clone()
const;
220 GTSAM_EXPORT
friend std::ostream& operator<<(std::ostream& os,
const ImuFactor&);
222 DefaultKeyFormatter)
const;
234 Vector evaluateError(
const Pose3& pose_i,
const Vector3& vel_i,
236 const Pose3& pose_j,
const Vector3& vel_j,
238 boost::none, boost::optional<Matrix&> H2 = boost::none,
239 boost::optional<Matrix&> H3 = boost::none, boost::optional<Matrix&> H4 =
240 boost::none, boost::optional<Matrix&> H5 = boost::none)
const;
242 #ifdef GTSAM_TANGENT_PREINTEGRATION 249 static shared_ptr Merge(
const shared_ptr& f01,
const shared_ptr& f12);
252 #ifdef GTSAM_ALLOW_DEPRECATED_SINCE_V4 258 const PreintegratedMeasurements& preintegratedMeasurements,
259 const Vector3& n_gravity,
const Vector3& omegaCoriolis,
260 const boost::optional<Pose3>& body_P_sensor = boost::none,
261 const bool use2ndOrderCoriolis =
false);
265 static void Predict(
const Pose3& pose_i,
const Vector3& vel_i, Pose3& pose_j,
267 PreintegratedMeasurements& pim,
const Vector3& n_gravity,
268 const Vector3& omegaCoriolis,
const bool use2ndOrderCoriolis =
false);
274 friend class boost::serialization::access;
275 template<
class ARCHIVE>
276 void serialize(ARCHIVE & ar,
const unsigned int ) {
277 ar & boost::serialization::make_nvp(
"NoiseModelFactor5",
278 boost::serialization::base_object<Base>(*
this));
279 ar & BOOST_SERIALIZATION_NVP(_PIM_);
314 virtual gtsam::NonlinearFactor::shared_ptr
clone()
const;
318 GTSAM_EXPORT
friend std::ostream& operator<<(std::ostream& os,
const ImuFactor2&);
320 DefaultKeyFormatter)
const;
335 boost::optional<Matrix&> H1 = boost::none,
336 boost::optional<Matrix&> H2 = boost::none,
337 boost::optional<Matrix&> H3 = boost::none)
const;
342 friend class boost::serialization::access;
343 template<
class ARCHIVE>
344 void serialize(ARCHIVE & ar,
const unsigned int ) {
345 ar & boost::serialization::make_nvp(
"NoiseModelFactor3",
346 boost::serialization::base_object<Base>(*
this));
347 ar & BOOST_SERIALIZATION_NVP(_PIM_);
PreintegratedImuMeasurements()
Default constructor for serialization.
Definition: ImuFactor.h:82
Nonlinear factor base class.
Definition: NonlinearFactor.h:52
friend class boost::serialization::access
Serialization function.
Definition: ImuFactor.h:158
virtual boost::shared_ptr< ManifoldPreintegration > clone() const
Dummy clone for MATLAB.
Definition: ManifoldPreintegration.h:109
This is the base class for all factor types.
Definition: Factor.h:51
boost::shared_ptr< ImuFactor > shared_ptr
Shorthand for a smart pointer to a factor.
Definition: ImuFactor.h:195
A convenient base class for creating your own NoiseModelFactor with 3 variables.
Definition: NonlinearFactor.h:420
const PreintegratedImuMeasurements & preintegratedMeasurements() const
Access the preintegrated measurements.
Definition: ImuFactor.h:228
Definition: ImuFactor.h:179
void integrateMeasurements(const Matrix &measuredAccs, const Matrix &measuredOmegas, const Matrix &dts)
Add multiple measurements, in matrix columns.
Definition: ImuFactor.cpp:80
Matrix preintMeasCov() const
Return pre-integrated measurement covariance.
Definition: ImuFactor.h:132
Navigation state: Pose (rotation, translation) + velocity NOTE(frank): it does not make sense to make...
Definition: NavState.h:34
A helper that implements the traits interface for GTSAM types.
Definition: Testable.h:150
PreintegratedImuMeasurements(const boost::shared_ptr< PreintegrationParams > &p, const imuBias::ConstantBias &biasHat=imuBias::ConstantBias())
Constructor, initializes the class with no measurements.
Definition: ImuFactor.h:93
Definition: ImuFactor.h:71
PreintegratedImuMeasurements(const PreintegrationType &base, const Matrix9 &preintMeasCov)
Construct preintegrated directly from members: base class and preintMeasCov.
Definition: ImuFactor.h:104
bool equals(const PreintegratedImuMeasurements &expected, double tol=1e-9) const
equals
Definition: ImuFactor.cpp:40
ImuFactor2()
Default constructor - only use for serialization.
Definition: ImuFactor.h:299
A manifold defines a space in which there is a notion of a linear tangent space that can be centered ...
Definition: concepts.h:30
void resetIntegration() override
Re-initialize PreintegratedIMUMeasurements.
Definition: ImuFactor.cpp:47
A convenient base class for creating your own NoiseModelFactor with 5 variables.
Definition: NonlinearFactor.h:578
void integrateMeasurement(const Vector3 &measuredAcc, const Vector3 &measuredOmega, const double dt) override
Add a single IMU measurement to the preintegration.
Definition: ImuFactor.cpp:53
void print(const std::string &s="Preintegrated Measurements:") const override
print
Definition: ImuFactor.cpp:34
Non-linear factor base classes.
Matrix9 preintMeasCov_
COVARIANCE OF: [PreintPOSITION PreintVELOCITY PreintROTATION].
Definition: ImuFactor.h:78
Definition: ImuFactor.h:288
const PreintegratedImuMeasurements & preintegratedMeasurements() const
Access the preintegrated measurements.
Definition: ImuFactor.h:326
const Params & p() const
const reference to params
Definition: PreintegrationBase.h:116
ImuFactor()
Default constructor - only use for serialization.
Definition: ImuFactor.h:199
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:57
Global functions in a separate testing namespace.
Definition: chartTesting.h:28
boost::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:33