mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-28 02:11:43 +00:00
Add return-to-zero test for LinearDigitalFilter moving average (#751)
Ensures LinearDigitalFilter moving average returns to zero after non-zero values are inserted. Tests for issue #642
This commit is contained in:
committed by
Peter Johnson
parent
11f37683c3
commit
7a0dd9baa9
@@ -387,8 +387,9 @@ public final class TestBench {
|
||||
public FilterOutputFixture<LinearDigitalFilter> getSinglePoleIIROutputFixture() {
|
||||
return new FilterOutputFixture<LinearDigitalFilter>(kSinglePoleIIRExpectedOutput) {
|
||||
@Override
|
||||
protected LinearDigitalFilter giveFilter(PIDSource source) {
|
||||
return LinearDigitalFilter.singlePoleIIR(source,
|
||||
protected LinearDigitalFilter giveFilter() {
|
||||
DataWrapper data = new DataWrapper(getData);
|
||||
return LinearDigitalFilter.singlePoleIIR(data,
|
||||
kSinglePoleIIRTimeConstant,
|
||||
kFilterStep);
|
||||
}
|
||||
@@ -403,8 +404,9 @@ public final class TestBench {
|
||||
public FilterOutputFixture<LinearDigitalFilter> getHighPassOutputFixture() {
|
||||
return new FilterOutputFixture<LinearDigitalFilter>(kHighPassExpectedOutput) {
|
||||
@Override
|
||||
protected LinearDigitalFilter giveFilter(PIDSource source) {
|
||||
return LinearDigitalFilter.highPass(source, kHighPassTimeConstant,
|
||||
protected LinearDigitalFilter giveFilter() {
|
||||
DataWrapper data = new DataWrapper(getData);
|
||||
return LinearDigitalFilter.highPass(data, kHighPassTimeConstant,
|
||||
kFilterStep);
|
||||
}
|
||||
};
|
||||
@@ -419,8 +421,25 @@ public final class TestBench {
|
||||
public FilterOutputFixture<LinearDigitalFilter> getMovAvgOutputFixture() {
|
||||
return new FilterOutputFixture<LinearDigitalFilter>(kMovAvgExpectedOutput) {
|
||||
@Override
|
||||
protected LinearDigitalFilter giveFilter(PIDSource source) {
|
||||
return LinearDigitalFilter.movingAverage(source, kMovAvgTaps);
|
||||
protected LinearDigitalFilter giveFilter() {
|
||||
DataWrapper data = new DataWrapper(getData);
|
||||
return LinearDigitalFilter.movingAverage(data, kMovAvgTaps);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a new set of objects representing a moving average filter with a repeatable data
|
||||
* source using a linear digital filter.
|
||||
*
|
||||
* @return a moving average filter with a repeatable data source
|
||||
*/
|
||||
public FilterOutputFixture<LinearDigitalFilter> getPulseFixture() {
|
||||
return new FilterOutputFixture<LinearDigitalFilter>(0.0) {
|
||||
@Override
|
||||
protected LinearDigitalFilter giveFilter() {
|
||||
DataWrapper data = new DataWrapper(getPulseData);
|
||||
return LinearDigitalFilter.movingAverage(data, kMovAvgTaps);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user