mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-10-27 20:13:35 +08:00
ekf2: add unit test for earth mag field reset to WMM
This commit is contained in:
committed by
Mathieu Bresciani
parent
c8738e3a0d
commit
99824c445c
@@ -372,6 +372,8 @@ public:
|
|||||||
Vector3f getAccelBiasVariance() const { return Vector3f{P(13, 13), P(14, 14), P(15, 15)} / sq(_dt_ekf_avg); } // get the accelerometer bias variance in m/s**2
|
Vector3f getAccelBiasVariance() const { return Vector3f{P(13, 13), P(14, 14), P(15, 15)} / sq(_dt_ekf_avg); } // get the accelerometer bias variance in m/s**2
|
||||||
float getAccelBiasLimit() const { return _params.acc_bias_lim; }
|
float getAccelBiasLimit() const { return _params.acc_bias_lim; }
|
||||||
|
|
||||||
|
const Vector3f &getMagEarthField() const { return _state.mag_I; }
|
||||||
|
|
||||||
// mag bias (states 19, 20, 21)
|
// mag bias (states 19, 20, 21)
|
||||||
const Vector3f &getMagBias() const { return _state.mag_B; }
|
const Vector3f &getMagBias() const { return _state.mag_B; }
|
||||||
Vector3f getMagBiasVariance() const
|
Vector3f getMagBiasVariance() const
|
||||||
|
|||||||
@@ -83,6 +83,20 @@ TEST_F(EkfMagTest, fusionStartWithReset)
|
|||||||
EXPECT_FALSE(_ekf_wrapper.isIntendingMag3DFusion());
|
EXPECT_FALSE(_ekf_wrapper.isIntendingMag3DFusion());
|
||||||
|
|
||||||
EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1);
|
EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 1);
|
||||||
|
|
||||||
|
// AND WHEN: GNSS fusion starts
|
||||||
|
_ekf_wrapper.enableGpsFusion();
|
||||||
|
_sensor_simulator.startGps();
|
||||||
|
_sensor_simulator.runSeconds(11);
|
||||||
|
|
||||||
|
// THEN: the earth mag field is reset to the WMM
|
||||||
|
EXPECT_EQ(_ekf_wrapper.getQuaternionResetCounter(), initial_quat_reset_counter + 2);
|
||||||
|
|
||||||
|
Vector3f mag_earth = _ekf->getMagEarthField();
|
||||||
|
float mag_decl = atan2f(mag_earth(1), mag_earth(0));
|
||||||
|
float mag_decl_wmm_deg = 0.f;
|
||||||
|
_ekf->get_mag_decl_deg(&mag_decl_wmm_deg);
|
||||||
|
EXPECT_NEAR(degrees(mag_decl), mag_decl_wmm_deg, 1e-6f);
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST_F(EkfMagTest, noInitLargeStrength)
|
TEST_F(EkfMagTest, noInitLargeStrength)
|
||||||
|
|||||||
Reference in New Issue
Block a user