AC_PID: Protect against NaN and INF

This commit is contained in:
Leonard Hall 2015-03-29 20:32:46 +10:30 committed by Randy Mackay
parent 132cdc4916
commit ae77c18a19

View File

@ -84,6 +84,8 @@ void AC_PID::filt_hz(float hz)
// this should be called before any other calls to get_p, get_i or get_d
void AC_PID::set_input_filter_all(float input)
{
// don't pass in inf or NaN
if (isfinite(input)){
// reset input filter to value received
if (_flags._reset_filter) {
_flags._reset_filter = false;
@ -98,6 +100,7 @@ void AC_PID::set_input_filter_all(float input)
_derivative = input_filt_change / _dt;
}
}
}
// set_input_filter_d - set input to PID controller
// only input to the D portion of the controller is filtered