Browse Source

AP_NavEKF: prevent a possible numerical error on startup

fixes issue #1294
mission-4.1.18
Andrew Tridgell 11 years ago
parent
commit
3ee3a71644
  1. 13
      libraries/AP_NavEKF/AP_NavEKF.cpp

13
libraries/AP_NavEKF/AP_NavEKF.cpp

@ -511,13 +511,16 @@ void NavEKF::InitialiseFilterBootstrap(void) @@ -511,13 +511,16 @@ void NavEKF::InitialiseFilterBootstrap(void)
readMagData();
// normalise the acceleration vector
initAccVec.normalize();
float pitch=0, roll=0;
if (initAccVec.length() > 0.001f) {
initAccVec.normalize();
// calculate initial pitch angle
float pitch = asinf(initAccVec.x);
// calculate initial pitch angle
pitch = asinf(initAccVec.x);
// calculate initial roll angle
float roll = -asinf(initAccVec.y / cosf(pitch));
// calculate initial roll angle
roll = -asinf(initAccVec.y / cosf(pitch));
}
// calculate initial orientation and earth magnetic field states
Quaternion initQuat;

Loading…
Cancel
Save