30 using namespace filters;
35 this->windowFilterSize = windowSize;
36 this->dataIndex = -windowSize;
37 this->offset = Eigen::Vector3f::Zero();
38 this->currentValue = Eigen::Vector3f::Zero();
44 std::unique_lock lock(historyMutex);
46 if (dataHistory.size() == 0)
51 VariantPtr var = VariantPtr::dynamicCast(dataHistory.begin()->second);
78 armarx::ParameterTypeList
89 armarx::filters::PoseMedianOffsetFilter::median(std::vector<float>&
values)
92 return values.size() % 2 == 0
98 armarx::filters::PoseMedianOffsetFilter::calculateMedian()
100 Eigen::Vector3f result;
101 for (
int i = 0; i < 3; ++i)
103 std::vector<float>
values;
106 for (
const Eigen::Vector3f&
v :
data)
110 result(i) = median(
values);
118 const Ice::Current&
c)
127 data.push_back(currentValue);
128 this->currentValue = Eigen::Vector3f::Zero();
132 offset = calculateMedian();
137 data.at(dataIndex) = currentValue;
138 dataIndex = (dataIndex + 1) % windowFilterSize;
139 this->currentValue = calculateMedian() - offset;