Browse Source

Quaternion: added NaN paranoid checking

this is for Michael to run
mission-4.1.18
Andrew Tridgell 13 years ago
parent
commit
f363f81869
  1. 22
      libraries/AP_Quaternion/AP_Quaternion.cpp

22
libraries/AP_Quaternion/AP_Quaternion.cpp

@ -305,6 +305,10 @@ void AP_Quaternion::update(void) @@ -305,6 +305,10 @@ void AP_Quaternion::update(void)
Vector3f gyro, accel;
float deltat;
#ifdef DESKTOP_BUILD
Quaternion q_saved = q;
#endif
_imu->update();
deltat = _imu->get_delta_time();
@ -396,6 +400,24 @@ void AP_Quaternion::update(void) @@ -396,6 +400,24 @@ void AP_Quaternion::update(void)
if (yaw_sensor < 0) {
yaw_sensor += 36000;
}
#ifdef DESKTOP_BUILD
if (q.is_nan() ||
isnan(roll) ||
isnan(pitch) ||
isnan(yaw) ||
isnan(b_x) ||
isnan(b_z) ||
gyro_bias.is_nan()) {
SITL_debug("QUAT NAN: deltat=%f roll=%f pitch=%f yaw=%f q0=[%f %f %f %f] q=[%f %f %f %f] a=[%f %f %f] g=(%f %f %f)\n",
deltat, roll, pitch, yaw,
q_saved.q1, q_saved.q2, q_saved.q3, q_saved.q4,
q.q1, q.q2, q.q3, q.q4,
accel.x, accel.y, accel.z,
gyro.x, gyro.y, gyro.z);
}
#endif
}
// average error in roll/pitch since last call

Loading…
Cancel
Save