1
0
Fork 0

Optionally disable the lowpass for the static system

the static system has an optional "tau" parameter to
define the rate at which the output value changes.

Setting this value to zero now disables the filter.

This prevents wrong airspeed indications on rapid
altitude changes. No functional changes if tau has
other-than-zero values (e.g. the default systems).
This commit is contained in:
Torsten Dreyer 2014-09-10 21:07:57 +02:00
parent 85e4a3254f
commit 48180eb9ab

View file

@ -15,6 +15,9 @@
#include <Main/fg_props.hxx>
#include <Main/util.hxx>
#include <simgear/constants.h>
#include <simgear/math/SGMisc.hxx>
#include <simgear/math/SGLimits.hxx>
#include <simgear/math/SGMathFwd.hxx>
#include <simgear/sg_inlines.h>
@ -22,7 +25,7 @@ StaticSystem::StaticSystem ( SGPropertyNode *node )
:
_name(node->getStringValue("name", "static")),
_num(node->getIntValue("number", 0)),
_tau(node->getDoubleValue("tau", 1)),
_tau(SGMiscd::max(.0,node->getDoubleValue("tau", 1))),
_error_factor(node->getDoubleValue("error-factor", 0)),
_type(node->getIntValue("type", 0))
{
@ -76,7 +79,7 @@ StaticSystem::update (double dt)
double beta;
double alpha;
double mach;
double trat = _tau ? dt/_tau : 100;
double trat = _tau ? dt/_tau : SGLimitsd::max();
double proj_factor = 0;
double pt;
@ -100,7 +103,9 @@ StaticSystem::update (double dt)
p_new = p_new + qc_part;
}
_pressure_out_node->setDoubleValue(fgGetLowPass(p, p_new, trat)); //setting new pressure in static system
_pressure_out_node->setDoubleValue(
_tau > .0 ? fgGetLowPass(p, p_new, trat) : p_new
); //setting new pressure in static system
}
}