Apollo 10.0
自动驾驶开放平台
apollo::common::DigitalFilter类 参考

The DigitalFilter class is used to pass signals with a frequency lower than a certain cutoff frequency and attenuates signals with frequencies higher than the cutoff frequency. 更多...

#include <digital_filter.h>

apollo::common::DigitalFilter 的协作图:

Public 成员函数

 DigitalFilter ()=default
 
 DigitalFilter (const std::vector< double > &denominators, const std::vector< double > &numerators)
 Initializes a DigitalFilter with given denominators and numerators.
 
 ~DigitalFilter ()=default
 Default destructor.
 
double Filter (const double x_insert)
 Processes a new measurement with the filter.
 
void set_denominators (const std::vector< double > &denominators)
 @desc: Filter by the input x_insert Input: new value of x_insert Remove x[n - 1], insert x_insert into x[0] Remove y[n - 1], Solve den[0] * y + den[1] * y[0] + ... + den[n - 1]*y[n - 2] = num[0] * x[0] + num[1] * x[1] + ... + num[n - 1] * x[n - 1] for y Insert y into y[0] Output: y[0]
 
void set_numerators (const std::vector< double > &numerators)
 set numerators by an input vector
 
void set_coefficients (const std::vector< double > &denominators, const std::vector< double > &numerators)
 set denominators and numerators
 
void set_dead_zone (const double deadzone)
 set filter deadzone
 
void reset_values ()
 re-set the x_values_ and y_values_
 
const std::vector< double > & denominators () const
 get denominators
 
const std::vector< double > & numerators () const
 get numerators
 
double dead_zone () const
 get dead_zone
 
const std::deque< double > & inputs_queue () const
 get inputs of the filter
 
const std::deque< double > & outputs_queue () const
 get outputs of the filter
 

详细描述

The DigitalFilter class is used to pass signals with a frequency lower than a certain cutoff frequency and attenuates signals with frequencies higher than the cutoff frequency.

在文件 digital_filter.h40 行定义.

构造及析构函数说明

◆ DigitalFilter() [1/2]

apollo::common::DigitalFilter::DigitalFilter ( )
default

◆ DigitalFilter() [2/2]

apollo::common::DigitalFilter::DigitalFilter ( const std::vector< double > &  denominators,
const std::vector< double > &  numerators 
)

Initializes a DigitalFilter with given denominators and numerators.

参数
denominatorsThe denominators of the DigitalFilter.
numeratorsThe numerators of the DigitalFilter.

在文件 digital_filter.cc32 行定义.

33 {
35}
void set_coefficients(const std::vector< double > &denominators, const std::vector< double > &numerators)
set denominators and numerators
const std::vector< double > & numerators() const
get numerators
const std::vector< double > & denominators() const
get denominators

◆ ~DigitalFilter()

apollo::common::DigitalFilter::~DigitalFilter ( )
default

Default destructor.

成员函数说明

◆ dead_zone()

double apollo::common::DigitalFilter::dead_zone ( ) const

get dead_zone

返回
double The dead_zone

在文件 digital_filter.cc120 行定义.

120{ return dead_zone_; }

◆ denominators()

const std::vector< double > & apollo::common::DigitalFilter::denominators ( ) const

get denominators

返回
vector<double> The denominators of filter

在文件 digital_filter.cc112 行定义.

112 {
113 return denominators_;
114}

◆ Filter()

double apollo::common::DigitalFilter::Filter ( const double  x_insert)

Processes a new measurement with the filter.

参数
x_insertThe new input to be processed by the filter.

在文件 digital_filter.cc58 行定义.

58 {
59 if (denominators_.empty() || numerators_.empty()) {
60 AERROR << "Empty denominators or numerators";
61 return 0.0;
62 }
63
64 x_values_.pop_back();
65 x_values_.push_front(x_insert);
66 const double xside =
67 Compute(x_values_, numerators_, 0, numerators_.size() - 1);
68
69 y_values_.pop_back();
70 const double yside =
71 Compute(y_values_, denominators_, 1, denominators_.size() - 1);
72
73 double y_insert = 0.0;
74 if (std::fabs(denominators_.front()) > kDoubleEpsilon) {
75 y_insert = (xside - yside) / denominators_.front();
76 }
77 y_values_.push_front(y_insert);
78
79 return UpdateLast(y_insert);
80}
#define AERROR
Definition log.h:44

◆ inputs_queue()

const std::deque< double > & apollo::common::DigitalFilter::inputs_queue ( ) const

get inputs of the filter

返回
deque<double> The queue of inputs of filter

在文件 digital_filter.cc122 行定义.

122 {
123 return x_values_;
124}

◆ numerators()

const std::vector< double > & apollo::common::DigitalFilter::numerators ( ) const

get numerators

返回
vector<double> The numerators of filter

在文件 digital_filter.cc116 行定义.

116 {
117 return numerators_;
118}

◆ outputs_queue()

const std::deque< double > & apollo::common::DigitalFilter::outputs_queue ( ) const

get outputs of the filter

返回
deque<double> The queue of outputs of filter

在文件 digital_filter.cc126 行定义.

126 {
127 return y_values_;
128}

◆ reset_values()

void apollo::common::DigitalFilter::reset_values ( )

re-set the x_values_ and y_values_

参数
deadzoneThe value of deadzone

在文件 digital_filter.cc82 行定义.

82 {
83 std::fill(x_values_.begin(), x_values_.end(), 0.0);
84 std::fill(y_values_.begin(), y_values_.end(), 0.0);
85}

◆ set_coefficients()

void apollo::common::DigitalFilter::set_coefficients ( const std::vector< double > &  denominators,
const std::vector< double > &  numerators 
)

set denominators and numerators

参数
denominatorsThe denominators of filter
numeratorsThe numerators of filter

在文件 digital_filter.cc47 行定义.

48 {
51}
void set_numerators(const std::vector< double > &numerators)
set numerators by an input vector
void set_denominators(const std::vector< double > &denominators)
@desc: Filter by the input x_insert Input: new value of x_insert Remove x[n - 1], insert x_insert int...

◆ set_dead_zone()

void apollo::common::DigitalFilter::set_dead_zone ( const double  deadzone)

set filter deadzone

参数
deadzoneThe value of deadzone

在文件 digital_filter.cc53 行定义.

53 {
54 dead_zone_ = std::fabs(deadzone);
55 AINFO << "Setting digital filter dead zone = " << dead_zone_;
56}
#define AINFO
Definition log.h:42

◆ set_denominators()

void apollo::common::DigitalFilter::set_denominators ( const std::vector< double > &  denominators)

@desc: Filter by the input x_insert Input: new value of x_insert Remove x[n - 1], insert x_insert into x[0] Remove y[n - 1], Solve den[0] * y + den[1] * y[0] + ... + den[n - 1]*y[n - 2] = num[0] * x[0] + num[1] * x[1] + ... + num[n - 1] * x[n - 1] for y Insert y into y[0] Output: y[0]

set denominators by an input vector

参数
denominatorsThe denominators of filter

在文件 digital_filter.cc37 行定义.

37 {
38 denominators_ = denominators;
39 y_values_.resize(denominators_.size(), 0.0);
40}

◆ set_numerators()

void apollo::common::DigitalFilter::set_numerators ( const std::vector< double > &  numerators)

set numerators by an input vector

参数
numeratorsThe numerators of filter

在文件 digital_filter.cc42 行定义.

42 {
43 numerators_ = numerators;
44 x_values_.resize(numerators_.size(), 0.0);
45}

该类的文档由以下文件生成: