Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpStatisticalTestEWMA.h
1/*
2 * ViSP, open source Visual Servoing Platform software.
3 * Copyright (C) 2005 - 2025 by Inria. All rights reserved.
4 *
5 * This software is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 * See the file LICENSE.txt at the root directory of this source
10 * distribution for additional information about the GNU GPL.
11 *
12 * For using ViSP with software that can not be combined with the GNU
13 * GPL, please contact Inria about acquiring a ViSP Professional
14 * Edition License.
15 *
16 * See https://visp.inria.fr for more information.
17 *
18 * This software was developed at:
19 * Inria Rennes - Bretagne Atlantique
20 * Campus Universitaire de Beaulieu
21 * 35042 Rennes Cedex
22 * France
23 *
24 * If you have questions regarding the use of this file, please contact
25 * Inria at visp@inria.fr
26 *
27 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
28 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
29 */
30
35
36#ifndef VP_STATISTICAL_TEST_EWMA_H
37#define VP_STATISTICAL_TEST_EWMA_H
38
39#include <visp3/core/vpConfig.h>
40
41#include <visp3/core/vpStatisticalTestAbstract.h>
42
78{
79protected:
80 float m_alpha;
81 float m_wt;
82 float m_wtprev;
83
87 virtual void computeDeltaAndLimits();
88
96 virtual vpMeanDriftType detectDownwardMeanDrift() VP_OVERRIDE;
97
105 virtual vpMeanDriftType detectUpwardMeanDrift() VP_OVERRIDE;
106
113 virtual bool updateStatistics(const float &signal) VP_OVERRIDE;
114
120 virtual void updateTestSignals(const float &signal) VP_OVERRIDE;
121
122public:
128 vpStatisticalTestEWMA(const float &alpha = 0.1f);
129
135 inline float getAlpha() const
136 {
137 return m_alpha;
138 }
139
145 inline float getWt() const
146 {
147 return m_wt;
148 }
149
155 void init(const float &alpha);
156
164 void init(const float &alpha, const float &mean, const float &stdev);
165
171 void setAlpha(const float &alpha);
172};
173END_VISP_NAMESPACE
174#endif
vpMeanDriftType
Enum that indicates if a drift of the mean occurred.
void init()
(Re)Initialize the algorithm.
vpStatisticalTestAbstract()
Construct a new vpStatisticalTestAbstract object.
virtual vpMeanDriftType detectDownwardMeanDrift()=0
Detects if a downward mean drift occurred.
vpStatisticalTestEWMA(const float &alpha=0.1f)
Construct a new vpStatisticalTestEWMA object.
float getWt() const
Get the current value of the test signal.
virtual void updateTestSignals(const float &signal) VP_OVERRIDE
Update the test signals.
float getAlpha() const
Get the forgetting factor of the algorithm.
virtual bool updateStatistics(const float &signal) VP_OVERRIDE
Update m_s and if enough values are available, compute the mean, the standard deviation and the limit...
virtual void computeDeltaAndLimits()
Compute the upper and lower limits of the test signal.
virtual vpMeanDriftType detectUpwardMeanDrift() VP_OVERRIDE
Detects if an upward mean drift occurred on the mean.