Visual Servoing Platform
version 3.6.1 under development (2024-11-15)
|
#include <visp3/core/vpStatisticalTestEWMA.h>
Public Types | |
enum | vpMeanDriftType { MEAN_DRIFT_NONE = 0 , MEAN_DRIFT_DOWNWARD = 1 , MEAN_DRIFT_UPWARD = 2 , MEAN_DRIFT_BOTH = 3 , MEAN_DRIFT_COUNT = 4 , MEAN_DRIFT_UNKNOWN = MEAN_DRIFT_COUNT } |
typedef enum vpStatisticalTestAbstract::vpMeanDriftType | vpMeanDriftType |
Public Member Functions | |
vpStatisticalTestEWMA (const float &alpha=0.1f) | |
float | getAlpha () const |
float | getWt () const |
void | init (const float &alpha) |
void | init (const float &alpha, const float &mean, const float &stdev) |
void | setAlpha (const float &alpha) |
void | getLimits (float &limitDown, float &limitUp) const |
float | getMean () const |
float | getStdev () const |
void | init () |
void | setMinStdev (const float &stdevmin) |
void | setNbSamplesForStat (const unsigned int &nbSamples) |
vpMeanDriftType | testDownUpwardMeanDrift (const float &signal) |
vpMeanDriftType | testDownwardMeanDrift (const float &signal) |
vpMeanDriftType | testUpwardMeanDrift (const float &signal) |
Static Public Member Functions | |
static std::string | vpMeanDriftTypeToString (const vpMeanDriftType &type) |
static vpMeanDriftType | vpMeanDriftTypeFromString (const std::string &name) |
static std::string | getAvailableMeanDriftType (const std::string &prefix="<", const std::string &sep=" , ", const std::string &suffix=">") |
static void | print (const vpMeanDriftType &type) |
Protected Member Functions | |
virtual void | computeDeltaAndLimits () |
virtual vpMeanDriftType | detectDownwardMeanDrift () override |
virtual vpMeanDriftType | detectUpwardMeanDrift () override |
virtual bool | updateStatistics (const float &signal) override |
virtual void | updateTestSignals (const float &signal) override |
Protected Attributes | |
float | m_alpha |
float | m_wt |
float | m_wtprev |
bool | m_areStatisticsComputed |
float | m_count |
float | m_limitDown |
float | m_limitUp |
float | m_mean |
unsigned int | m_nbSamplesForStatistics |
float * | m_s |
float | m_stdev |
float | m_stdevmin |
float | m_sumForMean |
Class that permits to perform Exponentially Weighted Moving Average mean drft tests.
The EWMA test is designed to detect drift in the mean of an observed signal .
The test signal is computed as follow:
Be the standard deviation of the input signal .
A downward alarm is raised if:
An upward alarm is raised if:
To detect only downward drifts of the input signal use testDownwardMeanDrift().To detect only upward drifts in use testUpwardMeanDrift(). To detect both, downward and upward drifts use testDownUpwardMeanDrift().
Definition at line 71 of file vpStatisticalTestEWMA.h.
|
inherited |
Enum that indicates if a drift of the mean occurred.
|
inherited |
Enum that indicates if a drift of the mean occurred.
Definition at line 63 of file vpStatisticalTestAbstract.h.
vpStatisticalTestEWMA::vpStatisticalTestEWMA | ( | const float & | alpha = 0.1f | ) |
Construct a new vpStatisticalTestEWMA object.
[in] | alpha | The forgetting factor. |
Definition at line 90 of file vpStatisticalTestEWMA.cpp.
References vpStatisticalTestAbstract::init().
|
protectedvirtual |
Compute the upper and lower limits of the test signal.
Definition at line 42 of file vpStatisticalTestEWMA.cpp.
References m_alpha, vpStatisticalTestAbstract::m_limitDown, vpStatisticalTestAbstract::m_limitUp, vpStatisticalTestAbstract::m_mean, and vpStatisticalTestAbstract::m_stdev.
Referenced by init(), and updateStatistics().
|
overrideprotectedvirtual |
Detects if a downward mean drift occurred.
Implements vpStatisticalTestAbstract.
Definition at line 49 of file vpStatisticalTestEWMA.cpp.
References vpStatisticalTestAbstract::m_limitDown, m_wt, vpStatisticalTestAbstract::MEAN_DRIFT_DOWNWARD, and vpStatisticalTestAbstract::MEAN_DRIFT_NONE.
|
overrideprotectedvirtual |
Detects if an upward mean drift occurred on the mean.
Implements vpStatisticalTestAbstract.
Definition at line 59 of file vpStatisticalTestEWMA.cpp.
References vpStatisticalTestAbstract::m_limitUp, m_wt, vpStatisticalTestAbstract::MEAN_DRIFT_NONE, and vpStatisticalTestAbstract::MEAN_DRIFT_UPWARD.
|
inline |
Get the forgetting factor of the algorithm.
Definition at line 145 of file vpStatisticalTestEWMA.h.
|
staticinherited |
Get the list of available vpMeanDriftType objects that are handled.
[in] | prefix | The prefix that should be placed before the list. |
[in] | sep | The separator between each element of the list. |
[in] | suffix | The suffix that should terminate the list. |
Definition at line 82 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::MEAN_DRIFT_COUNT, and vpStatisticalTestAbstract::vpMeanDriftTypeToString().
|
inlineinherited |
Get the upper and lower limits of the test signal.
[out] | limitDown | The lower limit. |
[out] | limitUp | The upper limit. |
Definition at line 175 of file vpStatisticalTestAbstract.h.
|
inlineinherited |
Get the mean used as reference.
Definition at line 186 of file vpStatisticalTestAbstract.h.
|
inlineinherited |
Get the standard deviation used as reference.
Definition at line 196 of file vpStatisticalTestAbstract.h.
|
inline |
Get the current value of the test signal.
Definition at line 155 of file vpStatisticalTestEWMA.h.
|
inherited |
(Re)Initialize the algorithm.
Definition at line 154 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::m_areStatisticsComputed, vpStatisticalTestAbstract::m_count, vpStatisticalTestAbstract::m_limitDown, vpStatisticalTestAbstract::m_limitUp, vpStatisticalTestAbstract::m_mean, vpStatisticalTestAbstract::m_nbSamplesForStatistics, vpStatisticalTestAbstract::m_s, vpStatisticalTestAbstract::m_stdev, and vpStatisticalTestAbstract::m_sumForMean.
Referenced by vpStatisticalTestHinkley::init(), vpStatisticalTestShewhart::init(), init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), setAlpha(), vpStatisticalTestEWMA(), vpStatisticalTestMeanAdjustedCUSUM::vpStatisticalTestMeanAdjustedCUSUM(), vpStatisticalTestShewhart::vpStatisticalTestShewhart(), and vpStatisticalTestSigma::vpStatisticalTestSigma().
void vpStatisticalTestEWMA::init | ( | const float & | alpha | ) |
Initialize the EWMA algorithm.
[in] | alpha | The forgetting factor. |
Definition at line 99 of file vpStatisticalTestEWMA.cpp.
References vpStatisticalTestAbstract::init(), m_alpha, m_wt, m_wtprev, and vpStatisticalTestAbstract::setNbSamplesForStat().
void vpStatisticalTestEWMA::init | ( | const float & | alpha, |
const float & | mean, | ||
const float & | stdev | ||
) |
Initialize the EWMA algorithm.
[in] | alpha | The forgetting factor. |
[in] | mean | The expected mean of the signal to monitor. |
[in] | stdev | The expected standard deviation of the signal to monitor. |
Definition at line 109 of file vpStatisticalTestEWMA.cpp.
References computeDeltaAndLimits(), vpStatisticalTestAbstract::init(), m_alpha, vpStatisticalTestAbstract::m_areStatisticsComputed, vpStatisticalTestAbstract::m_mean, vpStatisticalTestAbstract::m_stdev, m_wt, m_wtprev, and vpStatisticalTestAbstract::setNbSamplesForStat().
|
staticinherited |
Print the message corresponding to the type of mean drift.
[in] | type | The type of mean drift. |
Definition at line 95 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::vpMeanDriftTypeToString().
void vpStatisticalTestEWMA::setAlpha | ( | const float & | alpha | ) |
Set the forgetting factor.
[in] | alpha | The forgetting factor. |
Definition at line 125 of file vpStatisticalTestEWMA.cpp.
References vpStatisticalTestAbstract::init().
|
inlineinherited |
Set the minimum value of the standard deviation that is expected. The computed standard deviation cannot be lower this value if set.
[in] | stdevmin | The minimum value of the standard deviation that is expected. |
Definition at line 220 of file vpStatisticalTestAbstract.h.
|
inherited |
Set the number of samples required to compute the mean and standard deviation of the signal and allocate the memory accordingly.
[in] | nbSamples | The number of samples we want to use. |
Definition at line 190 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::m_nbSamplesForStatistics, and vpStatisticalTestAbstract::m_s.
Referenced by vpStatisticalTestHinkley::init(), init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), and vpStatisticalTestAbstract::operator=().
|
inherited |
Test if a downward or an upward mean drift occurred according to the new value of the signal.
[in] | signal | The new value of the signal. |
Definition at line 199 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::detectDownwardMeanDrift(), vpStatisticalTestAbstract::detectUpwardMeanDrift(), vpStatisticalTestAbstract::m_areStatisticsComputed, vpStatisticalTestAbstract::MEAN_DRIFT_BOTH, vpStatisticalTestAbstract::MEAN_DRIFT_NONE, vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestAbstract::updateTestSignals().
|
inherited |
Test if a downward mean drift occurred according to the new value of the signal.
[in] | signal | The new value of the signal. |
Definition at line 224 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::detectDownwardMeanDrift(), vpStatisticalTestAbstract::m_areStatisticsComputed, vpStatisticalTestAbstract::MEAN_DRIFT_NONE, vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestAbstract::updateTestSignals().
|
inherited |
Test if an upward mean drift occurred according to the new value of the signal.
[in] | signal | The new value of the signal. |
Definition at line 236 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::detectUpwardMeanDrift(), vpStatisticalTestAbstract::m_areStatisticsComputed, vpStatisticalTestAbstract::MEAN_DRIFT_NONE, vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestAbstract::updateTestSignals().
|
overrideprotectedvirtual |
Update m_s and if enough values are available, compute the mean, the standard deviation and the limits.
[in] | signal | The new value of the signal to monitor. |
Reimplemented from vpStatisticalTestAbstract.
Definition at line 69 of file vpStatisticalTestEWMA.cpp.
References computeDeltaAndLimits(), vpStatisticalTestAbstract::m_mean, m_wt, and vpStatisticalTestAbstract::updateStatistics().
|
overrideprotectedvirtual |
Update the test signals.
[in] | signal | The new value of the signal to monitor. |
Implements vpStatisticalTestAbstract.
Definition at line 82 of file vpStatisticalTestEWMA.cpp.
|
staticinherited |
Cast a string into a vpMeanDriftType.
[in] | name | The name of the mean drift. |
Definition at line 65 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::MEAN_DRIFT_COUNT, vpStatisticalTestAbstract::MEAN_DRIFT_UNKNOWN, and vpStatisticalTestAbstract::vpMeanDriftTypeToString().
|
staticinherited |
Cast a vpMeanDriftType into a string.
[in] | type | The type of mean drift. |
Definition at line 41 of file vpStatisticalTestAbstract.cpp.
References vpStatisticalTestAbstract::MEAN_DRIFT_BOTH, vpStatisticalTestAbstract::MEAN_DRIFT_DOWNWARD, vpStatisticalTestAbstract::MEAN_DRIFT_NONE, vpStatisticalTestAbstract::MEAN_DRIFT_UNKNOWN, and vpStatisticalTestAbstract::MEAN_DRIFT_UPWARD.
Referenced by vpStatisticalTestAbstract::getAvailableMeanDriftType(), vpStatisticalTestAbstract::print(), and vpStatisticalTestAbstract::vpMeanDriftTypeFromString().
|
protected |
Forgetting factor: the higher, the more weight the current signal value has.
Definition at line 74 of file vpStatisticalTestEWMA.h.
Referenced by computeDeltaAndLimits(), init(), and updateTestSignals().
|
protectedinherited |
Set to true once the mean and the standard deviation are available.
Definition at line 108 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestAbstract::init(), vpStatisticalTestShewhart::init(), vpStatisticalTestHinkley::init(), init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestAbstract::testDownUpwardMeanDrift(), vpStatisticalTestAbstract::testDownwardMeanDrift(), vpStatisticalTestAbstract::testUpwardMeanDrift(), vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestHinkley::updateStatistics().
|
protectedinherited |
Current number of data used to compute the mean and the standard deviation.
Definition at line 109 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestHinkley::computeMean(), vpStatisticalTestAbstract::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestHinkley::updateTestSignals().
|
protectedinherited |
Upper limit for the test signal m_wt.
Definition at line 110 of file vpStatisticalTestAbstract.h.
Referenced by computeDeltaAndLimits(), vpStatisticalTestSigma::computeLimits(), vpStatisticalTestShewhart::computeLimits(), detectDownwardMeanDrift(), vpStatisticalTestMeanAdjustedCUSUM::detectDownwardMeanDrift(), vpStatisticalTestShewhart::detectDownwardMeanDrift(), vpStatisticalTestSigma::detectDownwardMeanDrift(), vpStatisticalTestAbstract::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestHinkley::setAlpha(), and vpStatisticalTestMeanAdjustedCUSUM::updateStatistics().
|
protectedinherited |
Lower limit for the test signal m_wt
Definition at line 111 of file vpStatisticalTestAbstract.h.
Referenced by computeDeltaAndLimits(), vpStatisticalTestSigma::computeLimits(), vpStatisticalTestShewhart::computeLimits(), detectUpwardMeanDrift(), vpStatisticalTestMeanAdjustedCUSUM::detectUpwardMeanDrift(), vpStatisticalTestShewhart::detectUpwardMeanDrift(), vpStatisticalTestSigma::detectUpwardMeanDrift(), vpStatisticalTestAbstract::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestHinkley::setAlpha(), and vpStatisticalTestMeanAdjustedCUSUM::updateStatistics().
|
protectedinherited |
Mean of the monitored signal.
Definition at line 112 of file vpStatisticalTestAbstract.h.
Referenced by computeDeltaAndLimits(), vpStatisticalTestSigma::computeLimits(), vpStatisticalTestShewhart::computeLimits(), vpStatisticalTestHinkley::computeMean(), vpStatisticalTestHinkley::computeSk(), vpStatisticalTestHinkley::computeTk(), vpStatisticalTestShewhart::detectDownwardMeanDrift(), vpStatisticalTestShewhart::detectUpwardMeanDrift(), vpStatisticalTestAbstract::init(), vpStatisticalTestShewhart::init(), vpStatisticalTestHinkley::init(), init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestAbstract::updateStatistics(), updateStatistics(), and vpStatisticalTestMeanAdjustedCUSUM::updateTestSignals().
|
protectedinherited |
Number of samples to use to compute the mean and the standard deviation.
Definition at line 113 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestAbstract::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestAbstract::setNbSamplesForStat(), and vpStatisticalTestAbstract::updateStatistics().
|
protectedinherited |
Array that keeps the samples used to compute the mean and standard deviation.
Definition at line 114 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestSigma::getSignal(), vpStatisticalTestAbstract::init(), vpStatisticalTestAbstract::operator=(), vpStatisticalTestAbstract::setNbSamplesForStat(), vpStatisticalTestAbstract::updateStatistics(), and vpStatisticalTestAbstract::~vpStatisticalTestAbstract().
|
protectedinherited |
Standard deviation of the monitored signal.
Definition at line 115 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestHinkley::computeAlphaDelta(), computeDeltaAndLimits(), vpStatisticalTestMeanAdjustedCUSUM::computeDeltaAndLimits(), vpStatisticalTestSigma::computeLimits(), vpStatisticalTestShewhart::computeLimits(), vpStatisticalTestAbstract::init(), vpStatisticalTestShewhart::init(), init(), vpStatisticalTestHinkley::init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestSigma::init(), vpStatisticalTestAbstract::operator=(), and vpStatisticalTestAbstract::updateStatistics().
|
protectedinherited |
Minimum allowed standard deviation of the monitored signal.
Definition at line 116 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestAbstract::updateStatistics().
|
protectedinherited |
Sum of the samples used to compute the mean and standard deviation.
Definition at line 117 of file vpStatisticalTestAbstract.h.
Referenced by vpStatisticalTestAbstract::init(), vpStatisticalTestMeanAdjustedCUSUM::init(), vpStatisticalTestAbstract::operator=(), and vpStatisticalTestAbstract::updateStatistics().
|
protected |
Test signal that permits to raise an alarm.
Definition at line 75 of file vpStatisticalTestEWMA.h.
Referenced by detectDownwardMeanDrift(), detectUpwardMeanDrift(), init(), updateStatistics(), and updateTestSignals().
|
protected |
Previous value of the test signal.
Definition at line 76 of file vpStatisticalTestEWMA.h.
Referenced by init(), and updateTestSignals().