ImuFactor Jacobian test passed.
Need to integrate at least two IMU measurements to get information on the positionrelease/4.3a0
							parent
							
								
									704411de4e
								
							
						
					
					
						commit
						7f19e2ea86
					
				|  | @ -641,7 +641,7 @@ TEST(ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement) { | ||||||
|   pim.set_body_P_sensor(body_P_sensor); |   pim.set_body_P_sensor(body_P_sensor); | ||||||
| 
 | 
 | ||||||
|   // Check updatedDeltaXij derivatives
 |   // Check updatedDeltaXij derivatives
 | ||||||
|   Matrix3 D_correctedAcc_measuredOmega; |   Matrix3 D_correctedAcc_measuredOmega = Matrix3::Zero(); | ||||||
|   pim.correctMeasurementsByBiasAndSensorPose(measuredAcc, measuredOmega, D_correctedAcc_measuredOmega); |   pim.correctMeasurementsByBiasAndSensorPose(measuredAcc, measuredOmega, D_correctedAcc_measuredOmega); | ||||||
|   Matrix3 expectedD = numericalDerivative11<Vector3, Vector3>(boost::bind(correctedAcc, pim, measuredAcc, _1), measuredOmega, 1e-6); |   Matrix3 expectedD = numericalDerivative11<Vector3, Vector3>(boost::bind(correctedAcc, pim, measuredAcc, _1), measuredOmega, 1e-6); | ||||||
|   EXPECT(assert_equal(expectedD, D_correctedAcc_measuredOmega, 1e-5)); |   EXPECT(assert_equal(expectedD, D_correctedAcc_measuredOmega, 1e-5)); | ||||||
|  | @ -714,6 +714,10 @@ TEST(ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement) { | ||||||
|   pim.integrateMeasurement(measuredAcc, measuredOmega, dt, body_P_sensor); |   pim.integrateMeasurement(measuredAcc, measuredOmega, dt, body_P_sensor); | ||||||
|   EXPECT(assert_equal(expected, pim.preintMeasCov(), 1e-6)); |   EXPECT(assert_equal(expected, pim.preintMeasCov(), 1e-6)); | ||||||
| 
 | 
 | ||||||
|  |   // integrate one more time (at least twice) to get position information
 | ||||||
|  |   // otherwise factor cov noise from preint_cov is not positive definite
 | ||||||
|  |   pim.integrateMeasurement(measuredAcc, measuredOmega, dt, body_P_sensor); | ||||||
|  | 
 | ||||||
|   // Create factor
 |   // Create factor
 | ||||||
|   ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pim, kGravityAlongNavZDown, |   ImuFactor factor(X(1), V(1), X(2), V(2), B(1), pim, kGravityAlongNavZDown, | ||||||
|       kNonZeroOmegaCoriolis); |       kNonZeroOmegaCoriolis); | ||||||
|  | @ -723,7 +727,6 @@ TEST(ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement) { | ||||||
|   Vector3 actual_v2; |   Vector3 actual_v2; | ||||||
|   ImuFactor::Predict(x1, v1, actual_x2, actual_v2, bias, pim, |   ImuFactor::Predict(x1, v1, actual_x2, actual_v2, bias, pim, | ||||||
|       kGravityAlongNavZDown, kZeroOmegaCoriolis); |       kGravityAlongNavZDown, kZeroOmegaCoriolis); | ||||||
| 
 |  | ||||||
|   // Regression test with
 |   // Regression test with
 | ||||||
|   Rot3 expectedR( //
 |   Rot3 expectedR( //
 | ||||||
|       0.456795409,   -0.888128414,   0.0506544554,   //
 |       0.456795409,   -0.888128414,   0.0506544554,   //
 | ||||||
|  | @ -742,8 +745,10 @@ TEST(ImuFactor, ErrorWithBiasesAndSensorBodyDisplacement) { | ||||||
|   values.insert(V(2), v2); |   values.insert(V(2), v2); | ||||||
|   values.insert(B(1), bias); |   values.insert(B(1), bias); | ||||||
| 
 | 
 | ||||||
|  | //  factor.get_noiseModel()->print("noise: ");  // Make sure the noise is valid
 | ||||||
|  | 
 | ||||||
|   // Make sure linearization is correct
 |   // Make sure linearization is correct
 | ||||||
|   double diffDelta = 1e-5; |   double diffDelta = 1e-8; | ||||||
|   EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, diffDelta, 1e-3); |   EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, diffDelta, 1e-3); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue