More sync between versions
							parent
							
								
									a560dd6576
								
							
						
					
					
						commit
						5b9c966022
					
				|  | @ -70,13 +70,7 @@ void PreintegratedCombinedMeasurements::integrateMeasurement( | |||
|   // Update preintegrated measurements.
 | ||||
|   Matrix9 A;  // overall Jacobian wrt preintegrated measurements (df/dx)
 | ||||
|   Matrix93 B, C; | ||||
| #ifdef GTSAM_IMU_MANIFOLD_INTEGRATION | ||||
|   PreintegrationBase::integrateMeasurement(measuredAcc, measuredOmega, dt, &A, &B, &C); | ||||
| #else | ||||
|   Matrix3 D_incrR_integratedOmega; // Right jacobian computed at theta_incr
 | ||||
|   PreintegrationBase::integrateMeasurement(measuredAcc, measuredOmega, dt, | ||||
|       &D_incrR_integratedOmega, &A, &B, &C); | ||||
| #endif | ||||
| 
 | ||||
|   // Update preintegrated measurements covariance: as in [2] we consider a first
 | ||||
|   // order propagation that can be seen as a prediction phase in an EKF
 | ||||
|  |  | |||
|  | @ -55,13 +55,7 @@ void PreintegratedImuMeasurements::integrateMeasurement( | |||
|   // Update preintegrated measurements (also get Jacobian)
 | ||||
|   Matrix9 A;  // overall Jacobian wrt preintegrated measurements (df/dx)
 | ||||
|   Matrix93 B, C; | ||||
| #ifdef GTSAM_IMU_MANIFOLD_INTEGRATION | ||||
|   PreintegrationBase::integrateMeasurement(measuredAcc, measuredOmega, dt, &A, &B, &C); | ||||
| #else | ||||
|   Matrix3 D_incrR_integratedOmega; | ||||
|   PreintegrationBase::integrateMeasurement(measuredAcc, measuredOmega, dt, | ||||
|       &D_incrR_integratedOmega, &A, &B, &C); | ||||
| #endif | ||||
| 
 | ||||
|   // first order covariance propagation:
 | ||||
|   // as in [2] we consider a first order propagation that can be seen as a
 | ||||
|  |  | |||
|  | @ -253,7 +253,7 @@ Vector9 PreintegrationBase::biasCorrectedDelta( | |||
| //------------------------------------------------------------------------------
 | ||||
| void PreintegrationBase::integrateMeasurement(const Vector3& measuredAcc, | ||||
|     const Vector3& measuredOmega, const double dt, | ||||
|     Matrix3* D_incrR_integratedOmega, Matrix9* A, Matrix93* B, Matrix93* C) { | ||||
|     Matrix9* A, Matrix93* B, Matrix93* C) { | ||||
| 
 | ||||
|   // Correct for bias in the sensor frame
 | ||||
|   Vector3 acc = biasHat_.correctAccelerometer(measuredAcc); | ||||
|  | @ -287,10 +287,10 @@ void PreintegrationBase::integrateMeasurement(const Vector3& measuredAcc, | |||
|   const Matrix3 D_acc_biasOmega = D_acc_R * delRdelBiasOmega_; | ||||
| 
 | ||||
|   const Vector3 integratedOmega = omega * dt; | ||||
|   Matrix3 D_incrR_integratedOmega; | ||||
|   const Rot3 incrR = Rot3::Expmap(integratedOmega, D_incrR_integratedOmega); // expensive !!
 | ||||
|   const Matrix3 incrRt = incrR.transpose(); | ||||
|   delRdelBiasOmega_ = incrRt * delRdelBiasOmega_ | ||||
|       - *D_incrR_integratedOmega * dt; | ||||
|   delRdelBiasOmega_ = incrRt * delRdelBiasOmega_ - D_incrR_integratedOmega * dt; | ||||
| 
 | ||||
|   double dt22 = 0.5 * dt * dt; | ||||
|   const Matrix3 dRij = oldRij.matrix(); // expensive
 | ||||
|  |  | |||
|  | @ -199,35 +199,24 @@ public: | |||
|                                      OptionalJacobian<9, 3> B = boost::none, | ||||
|                                      OptionalJacobian<9, 3> C = boost::none); | ||||
| 
 | ||||
|   /// Update preintegrated measurements and get derivatives
 | ||||
|   /// It takes measured quantities in the j frame
 | ||||
|   /// Modifies preintegrated_ in place after correcting for bias and possibly sensor pose
 | ||||
|   void integrateMeasurement(const Vector3& measuredAcc, const Vector3& measuredOmega, const double dt, | ||||
|                             Matrix9* A, Matrix93* B, Matrix93* C); | ||||
| 
 | ||||
|   // Version without derivatives
 | ||||
|   void integrateMeasurement(const Vector3& measuredAcc, const Vector3& measuredOmega, const double dt); | ||||
| 
 | ||||
|   /// Given the estimate of the bias, return a NavState tangent vector
 | ||||
|   /// summarizing the preintegrated IMU measurements so far
 | ||||
|   Vector9 biasCorrectedDelta(const imuBias::ConstantBias& bias_i, | ||||
|       OptionalJacobian<9, 6> H = boost::none) const; | ||||
| 
 | ||||
| #else | ||||
| #endif | ||||
| 
 | ||||
|   /// Update preintegrated measurements and get derivatives
 | ||||
|   /// It takes measured quantities in the j frame
 | ||||
|   /// Modifies preintegrated quantities in place after correcting for bias and possibly sensor pose
 | ||||
|   /// NOTE(frank): implementation is different in two versions
 | ||||
|   void integrateMeasurement(const Vector3& measuredAcc, const Vector3& measuredOmega, const double dt, | ||||
|       Matrix3* D_incrR_integratedOmega, | ||||
|       Matrix9* A, Matrix93* B, Matrix93* C); | ||||
|                             Matrix9* A, Matrix93* B, Matrix93* C); | ||||
| 
 | ||||
|   /// Given the estimate of the bias, return a NavState tangent vector
 | ||||
|   /// summarizing the preintegrated IMU measurements so far
 | ||||
|   /// NOTE(frank): implementation is different in two versions
 | ||||
|   Vector9 biasCorrectedDelta(const imuBias::ConstantBias& bias_i, | ||||
|       OptionalJacobian<9, 6> H = boost::none) const; | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
|   /// Predict state at time j
 | ||||
|   NavState predict(const NavState& state_i, const imuBias::ConstantBias& bias_i, | ||||
|                    OptionalJacobian<9, 9> H1 = boost::none, | ||||
|  |  | |||
|  | @ -26,9 +26,9 @@ | |||
| 
 | ||||
| #include "imuFactorTesting.h" | ||||
| 
 | ||||
| #ifdef GTSAM_IMU_MANIFOLD_INTEGRATION | ||||
| static const double kDt = 0.1; | ||||
| 
 | ||||
| #ifdef GTSAM_IMU_MANIFOLD_INTEGRATION | ||||
| Vector9 f(const Vector9& zeta, const Vector3& a, const Vector3& w) { | ||||
|   return PreintegrationBase::UpdatePreintegrated(a, w, kDt, zeta); | ||||
| } | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue