Visual Servoing Platform  version 3.6.1 under development (2024-11-15)
vpStatisticalTestEWMA.h
1 /****************************************************************************
2  *
3  * ViSP, open source Visual Servoing Platform software.
4  * Copyright (C) 2005 - 2024 by Inria. All rights reserved.
5  *
6  * This software is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  * See the file LICENSE.txt at the root directory of this source
11  * distribution for additional information about the GNU GPL.
12  *
13  * For using ViSP with software that can not be combined with the GNU
14  * GPL, please contact Inria about acquiring a ViSP Professional
15  * Edition License.
16  *
17  * See https://visp.inria.fr for more information.
18  *
19  * This software was developed at:
20  * Inria Rennes - Bretagne Atlantique
21  * Campus Universitaire de Beaulieu
22  * 35042 Rennes Cedex
23  * France
24  *
25  * If you have questions regarding the use of this file, please contact
26  * Inria at visp@inria.fr
27  *
28  * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29  * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30  */
31 
37 #ifndef _vpStatisticalTestEWMA_h_
38 #define _vpStatisticalTestEWMA_h_
39 
40 #include <visp3/core/vpConfig.h>
41 
42 #include <visp3/core/vpStatisticalTestAbstract.h>
43 
44 BEGIN_VISP_NAMESPACE
72 {
73 protected:
74  float m_alpha;
75  float m_wt;
76  float m_wtprev;
81  virtual void computeDeltaAndLimits();
82 
90 #if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
91  virtual vpMeanDriftType detectDownwardMeanDrift() override;
92 #else
94 #endif
95 
103 #if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
104  virtual vpMeanDriftType detectUpwardMeanDrift() override;
105 #else
107 #endif
108 
115 #if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
116  virtual bool updateStatistics(const float &signal) override;
117 #else
118  virtual bool updateStatistics(const float &signal);
119 #endif
120 
126 #if (VISP_CXX_STANDARD >= VISP_CXX_STANDARD_11)
127  virtual void updateTestSignals(const float &signal) override;
128 #else
129  virtual void updateTestSignals(const float &signal);
130 #endif
131 
132 public:
138  vpStatisticalTestEWMA(const float &alpha = 0.1f);
139 
145  inline float getAlpha() const
146  {
147  return m_alpha;
148  }
149 
155  inline float getWt() const
156  {
157  return m_wt;
158  }
159 
165  void init(const float &alpha);
166 
174  void init(const float &alpha, const float &mean, const float &stdev);
175 
181  void setAlpha(const float &alpha);
182 };
183 END_VISP_NAMESPACE
184 #endif
Base class for methods detecting the drift of the mean of a process.
vpMeanDriftType
Enum that indicates if a drift of the mean occurred.
virtual vpMeanDriftType detectUpwardMeanDrift()=0
Detects if a upward mean drift occurred.
void init()
(Re)Initialize the algorithm.
virtual bool updateStatistics(const float &signal)
Update m_s and if enough values are available, compute the mean, the standard deviation and the limit...
virtual void updateTestSignals(const float &signal)=0
Update the test signals.
virtual vpMeanDriftType detectDownwardMeanDrift()=0
Detects if a downward mean drift occurred.
Class that permits to perform Exponentially Weighted Moving Average mean drft tests.
float getWt() const
Get the current value of the test signal.
float getAlpha() const
Get the forgetting factor of the algorithm.