Two basic filters: highpass and lowpass to either remove rapid movements or slow movements.
git-svn-id: svn://svn.code.sf.net/p/wiigee/code/trunk@77 c7eff9ee-dd40-0410-8832-91a4d88773cf
This commit is contained in:
@@ -56,9 +56,9 @@ public class Device {
|
||||
protected ProcessingUnit processingunit = new TriggeredProcessingUnit();//new TriggeredProcessingUnit();
|
||||
|
||||
public Device() {
|
||||
this.addFilter(new IdleStateFilter());
|
||||
this.addFilter(new MotionDetectFilter(this));
|
||||
this.addFilter(new DirectionalEquivalenceFilter());
|
||||
//this.addFilter(new IdleStateFilter());
|
||||
//this.addFilter(new MotionDetectFilter(this));
|
||||
//this.addFilter(new DirectionalEquivalenceFilter());
|
||||
this.addDeviceListener(this.processingunit);
|
||||
}
|
||||
|
||||
|
||||
66
src/filter/HighPassFilter.java
Normal file
66
src/filter/HighPassFilter.java
Normal file
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: benjamin.poppinga@informatik.uni-oldenburg.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package filter;
|
||||
|
||||
/**
|
||||
*
|
||||
* This filter removes every acceleration that happens slowly or
|
||||
* steadily (like e.g. gravity). Remember: It _passes_ acceleration
|
||||
* with a big variety.
|
||||
*
|
||||
* @author Benjamin 'BePo' Poppinga
|
||||
*/
|
||||
public class HighPassFilter extends Filter {
|
||||
|
||||
private double factor;
|
||||
private double[] prevAcc;
|
||||
|
||||
public HighPassFilter() {
|
||||
super();
|
||||
this.factor = 0.1;
|
||||
this.prevAcc = new double[] {0.0, 0.0, 0.0};
|
||||
}
|
||||
|
||||
public HighPassFilter(double factor) {
|
||||
super();
|
||||
this.factor = factor;
|
||||
this.prevAcc = new double[] {0.0, 0.0, 0.0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] filterAlgorithm(double[] vector) {
|
||||
double[] retVal = new double[3];
|
||||
prevAcc[0] = vector[0] * this.factor + this.prevAcc[0] * (1.0 - this.factor);
|
||||
prevAcc[1] = vector[1] * this.factor + this.prevAcc[1] * (1.0 - this.factor);
|
||||
prevAcc[2] = vector[2] * this.factor + this.prevAcc[2] * (1.0 - this.factor);
|
||||
|
||||
retVal[0] = vector[0] - prevAcc[0];
|
||||
retVal[1] = vector[1] - prevAcc[1];
|
||||
retVal[2] = vector[2] - prevAcc[2];
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
}
|
||||
62
src/filter/LowPassFilter.java
Normal file
62
src/filter/LowPassFilter.java
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* wiigee - accelerometerbased gesture recognition
|
||||
* Copyright (C) 2007, 2008, 2009 Benjamin Poppinga
|
||||
*
|
||||
* Developed at University of Oldenburg
|
||||
* Contact: benjamin.poppinga@informatik.uni-oldenburg.de
|
||||
*
|
||||
* This file is part of wiigee.
|
||||
*
|
||||
* wiigee is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
package filter;
|
||||
|
||||
/**
|
||||
*
|
||||
* This filter removes every acceleration that happens fast or
|
||||
* suddenly (like e.g. a short hit). Remember: It _passes_ acceleration
|
||||
* with a slight variety.
|
||||
*
|
||||
* @author Benjamin 'BePo' Poppinga
|
||||
*/
|
||||
public class LowPassFilter extends Filter {
|
||||
|
||||
private double factor;
|
||||
private double[] prevAcc;
|
||||
|
||||
public LowPassFilter() {
|
||||
super();
|
||||
this.factor = 0.01;
|
||||
this.prevAcc = new double[] {0.0, 0.0, 0.0};
|
||||
}
|
||||
|
||||
public LowPassFilter(double factor) {
|
||||
super();
|
||||
this.factor = factor;
|
||||
this.prevAcc = new double[] {0.0, 0.0, 0.0};
|
||||
}
|
||||
|
||||
@Override
|
||||
public double[] filterAlgorithm(double[] vector) {
|
||||
double[] retVal = new double[3];
|
||||
retVal[0] = vector[0] * this.factor + this.prevAcc[0] * (1.0 - this.factor);
|
||||
retVal[1] = vector[1] * this.factor + this.prevAcc[1] * (1.0 - this.factor);
|
||||
retVal[2] = vector[2] * this.factor + this.prevAcc[2] * (1.0 - this.factor);
|
||||
this.prevAcc = retVal;
|
||||
return retVal;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user