18 #ifndef _GAZEBO_MOVING_WINDOW_FILTER_HH_ 
   19 #define _GAZEBO_MOVING_WINDOW_FILTER_HH_ 
   25 #include <boost/function.hpp> 
   26 #include <boost/bind.hpp> 
   27 #include <boost/shared_ptr.hpp> 
   28 #include <boost/thread/mutex.hpp> 
   30 #include <gazebo/gazebo_config.h> 
   58       public: 
typename std::vector<T>::iterator 
valIter;
 
   72       this->valWindowSize = 4;
 
   73       this->valHistory.resize(this->valWindowSize);
 
   74       this->valIter = this->valHistory.begin();
 
   92       public: 
void Update(T _val);
 
  129       this->dataPtr->valHistory.clear();
 
  130       delete this->dataPtr;
 
  131       this->dataPtr = 
NULL;
 
  141       this->dataPtr->sum += _val;
 
  144       ++this->dataPtr->valIter;
 
  145       if (this->dataPtr->valIter == this->dataPtr->valHistory.end())
 
  148         this->dataPtr->valIter = this->dataPtr->valHistory.begin();
 
  152       ++this->dataPtr->samples;
 
  154       if (this->dataPtr->samples > this->dataPtr->valWindowSize)
 
  157         this->dataPtr->sum -= (*this->dataPtr->valIter);
 
  159         (*this->dataPtr->valIter) = _val;
 
  161         --this->dataPtr->samples;
 
  166         (*this->dataPtr->valIter) = _val;
 
  174       this->dataPtr->valWindowSize = _n;
 
  175       this->dataPtr->valHistory.clear();
 
  176       this->dataPtr->valHistory.resize(this->dataPtr->valWindowSize);
 
  177       this->dataPtr->valIter = this->dataPtr->valHistory.begin();
 
  178       this->dataPtr->sum = T();
 
  179       this->dataPtr->samples = 0;
 
  186       return this->dataPtr->valWindowSize;
 
  193       return this->dataPtr->samples == this->dataPtr->valWindowSize;
 
  200       return this->dataPtr->sum / 
static_cast<double>(this->dataPtr->samples);
 
MovingWindowFilterPrivate< T > * dataPtr
Data pointer. 
Definition: MovingWindowFilter.hh:115
 
T Get()
Get filtered result. 
Definition: MovingWindowFilter.hh:198
 
unsigned int GetWindowSize() const 
Get the window size. 
Definition: MovingWindowFilter.hh:184
 
bool GetWindowFilled() const 
Get whether the window has been filled. 
Definition: MovingWindowFilter.hh:191
 
std::vector< T >::iterator valIter
iterator pointing to current value in buffer 
Definition: MovingWindowFilter.hh:58
 
unsigned int valWindowSize
For moving window smoothed value. 
Definition: MovingWindowFilter.hh:52
 
std::vector< T > valHistory
buffer history of raw values 
Definition: MovingWindowFilter.hh:55
 
T sum
keep track of running sum 
Definition: MovingWindowFilter.hh:61
 
void SetWindowSize(unsigned int _n)
Set window size. 
Definition: MovingWindowFilter.hh:172
 
Definition: MovingWindowFilter.hh:46
 
MovingWindowFilterPrivate()
Definition: MovingWindowFilter.hh:69
 
Base class for MovingWindowFilter. 
Definition: MovingWindowFilter.hh:82
 
void Update(T _val)
Update value of filter. 
Definition: MovingWindowFilter.hh:136
 
#define NULL
Definition: CommonTypes.hh:30
 
unsigned int samples
keep track of number of elements 
Definition: MovingWindowFilter.hh:64
 
virtual ~MovingWindowFilter()
Destructor. 
Definition: MovingWindowFilter.hh:127
 
MovingWindowFilter()
Constructor. 
Definition: MovingWindowFilter.hh:120