wbc
filter.hpp
Go to the documentation of this file.
1#ifndef WBC_TOOLS_FILTER_HPP
2#define WBC_TOOLS_FILTER_HPP
3
4#include <vector>
5#include <Eigen/Core>
6
7namespace wbc {
8
9class Filter{
10protected:
12public:
13 Filter(size_t window_size) : window_size_(window_size) {}
14 virtual ~Filter() {}
15 virtual double apply(double new_value) = 0;
16};
17
18class MovingMedianFilter : public Filter {
19protected:
20 Eigen::VectorXd values_;
21 Eigen::VectorXd sorted_values_;
22public:
23 MovingMedianFilter(size_t window_size) : Filter(window_size) {}
24
25 virtual double apply(double new_value);
26
27};
28
30protected:
31 Eigen::VectorXd values_;
32public:
33 MovingAverageFilter(size_t window_size) : Filter(window_size) {}
34
35 virtual double apply(double new_value);
36
37};
38
47protected:
48 double alpha_;
50 Eigen::VectorXd y_;
51public:
54 LowPassFilter(double cutoff_freq, double sample_time);
55
57 const Eigen::VectorXd& apply(const Eigen::VectorXd& new_value);
58
60 void reset(){initialized_ = false;}
61};
62
63}
64
65#endif // WBC_TOOLS_FILTER_HPP
size_t window_size_
Definition filter.hpp:11
Filter(size_t window_size)
Definition filter.hpp:13
virtual ~Filter()
Definition filter.hpp:14
virtual double apply(double new_value)=0
double alpha_
Definition filter.hpp:48
const Eigen::VectorXd & apply(const Eigen::VectorXd &new_value)
Definition filter.cpp:43
void reset()
Definition filter.hpp:60
Eigen::VectorXd y_
Definition filter.hpp:50
bool initialized_
Definition filter.hpp:49
LowPassFilter(double cutoff_freq, double sample_time)
Definition filter.cpp:36
MovingAverageFilter(size_t window_size)
Definition filter.hpp:33
virtual double apply(double new_value)
Definition filter.cpp:27
Eigen::VectorXd values_
Definition filter.hpp:31
Eigen::VectorXd values_
Definition filter.hpp:20
virtual double apply(double new_value)
Definition filter.cpp:8
MovingMedianFilter(size_t window_size)
Definition filter.hpp:23
Eigen::VectorXd sorted_values_
Definition filter.hpp:21
Definition ContactsAccelerationConstraint.cpp:3