|
|
|
@ -41,13 +41,13 @@ TEST(MagnetometerBiasEstimatorTest, AllZeroCase)
@@ -41,13 +41,13 @@ TEST(MagnetometerBiasEstimatorTest, AllZeroCase)
|
|
|
|
|
FieldSensorBiasEstimator field_sensor_bias_estimator; |
|
|
|
|
const Vector3f virtual_gyro = Vector3f(0.f, 0.f, 0.1f); |
|
|
|
|
Vector3f virtual_unbiased_mag = Vector3f(0.9f, 0.f, 1.79f); // taken from SITL jmavsim initialization
|
|
|
|
|
const Vector3f virtual_bias(-0.2f, -0.4f, 0.5f); |
|
|
|
|
const Vector3f virtual_bias(0.2f, -0.4f, 0.5f); |
|
|
|
|
Vector3f virtual_mag = virtual_unbiased_mag + virtual_bias; |
|
|
|
|
|
|
|
|
|
// field_sensor_bias_estimator.setField(virtual_mag);
|
|
|
|
|
// field_sensor_bias_estimator.setBias(virtual_bias);
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i <= 10000000; i++) { |
|
|
|
|
for (int i = 0; i <= 1000; i++) { |
|
|
|
|
float dt = .01f; |
|
|
|
|
|
|
|
|
|
// turn the mag values according to the gyro
|
|
|
|
@ -61,8 +61,9 @@ TEST(MagnetometerBiasEstimatorTest, AllZeroCase)
@@ -61,8 +61,9 @@ TEST(MagnetometerBiasEstimatorTest, AllZeroCase)
|
|
|
|
|
virtual_unbiased_mag = Dcmf(AxisAnglef(-virtual_gyro * dt)) * virtual_unbiased_mag; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
field_sensor_bias_estimator.getBias().print(); |
|
|
|
|
// (magnetometer_bias_estimator._state_bias - virtual_bias).print();
|
|
|
|
|
//EXPECT_EQ(field_sensor_bias_estimator.getBias(), virtual_bias);
|
|
|
|
|
//EXPECT_TRUE(false);
|
|
|
|
|
const Vector3f bias_est = field_sensor_bias_estimator.getBias(); |
|
|
|
|
EXPECT_NEAR(bias_est(0), virtual_bias(0), 1e-3f) << "Estimated X bias " << bias_est(0); |
|
|
|
|
EXPECT_NEAR(bias_est(1), virtual_bias(1), 1e-3f) << "Estimated Y bias " << bias_est(1); |
|
|
|
|
// The Z bias is not observable due to pure yaw rotation
|
|
|
|
|
EXPECT_NEAR(bias_est(2), 0.f, 1e-3f) << "Estimated Z bias " << bias_est(2); |
|
|
|
|
} |
|
|
|
|