etrobocon2019 feat.KatLab  ece30a9a007fff7d3ad48592c0d09a74643377bb
Filter.cpp
[詳解]
1 
6 #include "Filter.h"
7 
8 template <typename T>
9 Filter<T>::Filter() : preValue(0)
10 {
11 }
12 
13 template <typename T>
15 {
16  preValue = 0;
17 }
18 
19 
27 template <typename T>
28 double Filter<T>::lowPassFilter(T value, double rate)
29 {
30  // 前回値の初期化
31  if(preValue == 0) {
32  preValue = value;
33  return static_cast<double>(value);
34  }
35 
36  double filtered = preValue * rate + value * (1 - rate);
37  // 前回値の更新
38  preValue = value;
39 
40  return filtered;
41 }
42 
43 // 明示的なインスタンス化
44 template class Filter<int>;
45 template class Filter<float>;
46 template class Filter<double>;
Filter()
Definition: Filter.cpp:9
void reset()
Definition: Filter.cpp:14
double lowPassFilter(T value, double rate=0.9)
ローパスフィルター(現在値と前回値を参考にして値を決定する)
Definition: Filter.cpp:28
Definition: Filter.h:10
外乱対策のためのフィルターをまとめたクラス