AbsSlewFilter.cpp
Go to the documentation of this file.
00001 #include <cstdlib> // for std::abs on integers
00002 #include "robodyn_utilities/AbsSlewFilter.h"
00003 
00004 AbsSlewFilter::AbsSlewFilter()
00005 {
00006 }
00007 
00008 AbsSlewFilter::~AbsSlewFilter()
00009 {
00010 }
00011 
00012 void AbsSlewFilter::setRates(double greaterRate, double lesserRate)
00013 {
00014     setGreaterRate(greaterRate);
00015     setLesserRate(lesserRate);
00016 }
00017 
00018 void AbsSlewFilter::setGreaterRate(double rate)
00019 {
00020     greater.setRateLimit(rate);
00021 }
00022 
00023 void AbsSlewFilter::setLesserRate(double rate)
00024 {
00025     lesser.setRateLimit(rate);
00026 }
00027 
00028 double AbsSlewFilter::filter(double previous, double current)
00029 {
00030     double output = current;
00031 
00033     if ((previous * current) < 0)
00034     {
00035         output = 0;
00036     }
00037     else
00038     {
00039         if (std::abs(current) > std::abs(previous))
00040         {
00041             output =  greater.getLimitedValue(current, previous);
00042         }
00043         else if (std::abs(current) < std::abs(previous))
00044         {
00045             output =  lesser.getLimitedValue(current, previous);
00046         }
00047     }
00048 
00049     return output;
00050 }
00051 
00052 int AbsSlewFilter::filter(int previous, int current)
00053 {
00054     int output = current;
00055 
00057     if ((previous * current) < 0)
00058     {
00059         output = 0;
00060     }
00061     else
00062     {
00063         if (std::abs(current) > std::abs(previous))
00064         {
00065             output =  greater.getLimitedValue(current, previous);
00066         }
00067         else if (std::abs(current) < std::abs(previous))
00068         {
00069             output =  lesser.getLimitedValue(current, previous);
00070         }
00071     }
00072 
00073     return output;
00074 }


robodyn_utilities
Author(s):
autogenerated on Thu Jun 6 2019 18:56:07