Haptic Controller
Loading...
Searching...
No Matches
filters.hpp
Go to the documentation of this file.
1
#pragma once
2
#include <math.h>
3
#include <deque>
4
#include <numeric>
5
7
class
LowPassFilter
8
{
9
public
:
10
LowPassFilter
() =
default
;
11
~LowPassFilter
() =
default
;
12
13
LowPassFilter
(
float
cutoff_frequnecy)
14
: cutoff_frequnecy_(cutoff_frequnecy)
15
{
16
}
17
18
float
update
(
float
new_value,
float
dt)
19
{
20
const
auto
alpha = std::exp(cutoff_frequnecy_ * dt);
21
const
auto
new_value_ = alpha * new_value + (1.0f - alpha) * last_value_;
22
last_value_ = new_value_;
23
return
new_value_;
24
}
25
26
private
:
27
float
cutoff_frequnecy_;
28
float
last_value_ = 0.0f;
29
};
30
32
class
MovingAverageFilter
33
{
34
public
:
35
MovingAverageFilter
() =
default
;
36
~MovingAverageFilter
() =
default
;
37
MovingAverageFilter
(
size_t
num_samples)
38
: max_samples_(num_samples)
39
{
40
}
41
42
float
update
(
float
new_sample)
43
{
44
samples_.push_back(new_sample);
45
if
(samples_.size() > max_samples_)
46
{
47
samples_.pop_front();
48
return
std::accumulate(samples_.begin(), samples_.end(), 0.0) / max_samples_;
49
}
50
return
std::accumulate(samples_.begin(), samples_.end(), 0.0) / samples_.size();
51
}
52
53
private
:
54
size_t
max_samples_;
55
std::deque<float> samples_;
56
};
LowPassFilter
Infinite Impulse Response Filter.
Definition
filters.hpp:8
LowPassFilter::~LowPassFilter
~LowPassFilter()=default
LowPassFilter::update
float update(float new_value, float dt)
Definition
filters.hpp:18
LowPassFilter::LowPassFilter
LowPassFilter()=default
LowPassFilter::LowPassFilter
LowPassFilter(float cutoff_frequnecy)
Definition
filters.hpp:13
MovingAverageFilter
Moving Average Filter.
Definition
filters.hpp:33
MovingAverageFilter::MovingAverageFilter
MovingAverageFilter()=default
MovingAverageFilter::~MovingAverageFilter
~MovingAverageFilter()=default
MovingAverageFilter::MovingAverageFilter
MovingAverageFilter(size_t num_samples)
Definition
filters.hpp:37
MovingAverageFilter::update
float update(float new_sample)
Definition
filters.hpp:42
src
utils
filters.hpp
Generated by
1.11.0