float BlockLowPass::update(float input) { float b = 2 * float(M_PI) * getFCut() * getDt(); float a = b / (1 + b); setState(a * input + (1 - a)*getState()); return getState(); }
float BlockHighPass::update(float input) { float b = 2 * float(M_PI) * getFCut() * getDt(); float a = 1 / (1 + b); setY(a * (getY() + input - getU())); setU(input); return getY(); }
matrix::Vector<Type, M> update(const matrix::Matrix<Type, M, 1> &input) { for (size_t i = 0; i < M; i++) { if (!PX4_ISFINITE(getState()(i))) { setState(input); } } float b = 2 * float(M_PI) * getFCut() * getDt(); float a = b / (1 + b); setState(input * a + getState() * (1 - a)); return getState(); }