aboutsummaryrefslogtreecommitdiff
path: root/src/modules/controllib/blocks.cpp
diff options
context:
space:
mode:
authorLorenz Meier <lm@inf.ethz.ch>2014-07-29 21:36:55 +0200
committerLorenz Meier <lm@inf.ethz.ch>2014-07-29 21:36:55 +0200
commite3da7f564f1bc7746ba3be946fd02b95642cbf6e (patch)
treeb69ee5fe005979cdc00b025388f598e631b08eee /src/modules/controllib/blocks.cpp
parent5422e081246885331d4e34fbb0fbcdf1587b25d3 (diff)
downloadpx4-firmware-e3da7f564f1bc7746ba3be946fd02b95642cbf6e.tar.gz
px4-firmware-e3da7f564f1bc7746ba3be946fd02b95642cbf6e.tar.bz2
px4-firmware-e3da7f564f1bc7746ba3be946fd02b95642cbf6e.zip
NaN check and better init in lowpass
Diffstat (limited to 'src/modules/controllib/blocks.cpp')
-rw-r--r--src/modules/controllib/blocks.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/modules/controllib/blocks.cpp b/src/modules/controllib/blocks.cpp
index 0175acda9..f739446fa 100644
--- a/src/modules/controllib/blocks.cpp
+++ b/src/modules/controllib/blocks.cpp
@@ -121,6 +121,9 @@ int blockLimitSymTest()
float BlockLowPass::update(float input)
{
+ if (!isfinite(getState())) {
+ setState(input);
+ }
float b = 2 * float(M_PI) * getFCut() * getDt();
float a = b / (1 + b);
setState(a * input + (1 - a)*getState());