54 auto itPrev = std::prev(it);
57 diff = (it->second->getFloat() - itPrev->second->getFloat());
61 diff = (it->second->getDouble() - itPrev->second->getDouble());
65 diff = (it->second->getInt() - itPrev->second->getInt());
69 diff = (it->second->getLong() - itPrev->second->getLong());
71 double deltaT = it->first - itPrev->first;
74 deriv += diff / (deltaT * 0.000001);
83 return new Variant((
float)deriv);
95 return new Variant((
long)deriv);
104 ParameterTypeList result;
112 StringFloatDictionary
115 return StringFloatDictionary{{
"minSampleTimeDelta", minSampleTimeDelta},
116 {
"windowFilterSize", windowFilterSize}};
122 auto it = newValues.find(
"minSampleTimeDelta");
123 if (it != newValues.end())
125 minSampleTimeDelta = it->second;
127 it = newValues.find(
"windowFilterSize");
128 if (it != newValues.end())
130 windowFilterSize = it->second;
TimeVariantBaseMap dataHistory
The Variant class is described here: Variants.
armarx::StringFloatDictionary getProperties(const Ice::Current &c=Ice::emptyCurrent) const override
ParameterTypeList getSupportedTypes(const Ice::Current &c=Ice::emptyCurrent) const override
This filter supports: Int, Long, Float, Double.
VariantBasePtr calculate(const Ice::Current &c=Ice::emptyCurrent) const override
void setProperties(const armarx::StringFloatDictionary &newValues, const Ice::Current &c=Ice::emptyCurrent) override
const VariantTypeId Double
const VariantTypeId Float
::IceInternal::Handle<::armarx::VariantBase > VariantBasePtr