12#ifndef STUCK_DETECTION_HPP
13#define STUCK_DETECTION_HPP
49 double m_dMaximumStuckCount;
50 double m_dStuckCheckIntervalSeconds;
51 double m_dVelocityThreshold;
52 double m_dAngularVelocityThreshold;
53 unsigned int m_unStuckChecksSoFar;
54 std::chrono::system_clock::time_point m_tmTimeSinceLastStuckCheck;
73 double dStuckCheckIntervalSeconds = 3,
74 double dVelocityThreshold = 0.3,
75 double dAngularVelocityThreshold = 5.0)
78 m_dMaximumStuckCount = dMaximumStuckCount;
79 m_dStuckCheckIntervalSeconds = dStuckCheckIntervalSeconds;
80 m_dVelocityThreshold = dVelocityThreshold;
81 m_dAngularVelocityThreshold = dAngularVelocityThreshold;
82 m_unStuckChecksSoFar = 0;
83 m_tmTimeSinceLastStuckCheck = std::chrono::system_clock::now();
105 bool CheckIfStuck(
double dCurrentVelocity,
double dCurrentAngularVelocity)
111 std::chrono::system_clock::time_point tmCurrentTime = std::chrono::system_clock::now();
112 double dTimeSinceLastCheck =
static_cast<double>(std::chrono::duration_cast<std::chrono::seconds>(tmCurrentTime - m_tmTimeSinceLastStuckCheck).count());
113 if (dTimeSinceLastCheck > m_dStuckCheckIntervalSeconds)
116 m_tmTimeSinceLastStuckCheck = tmCurrentTime;
119 if (std::abs(dCurrentVelocity) < m_dVelocityThreshold && std::abs(dCurrentAngularVelocity) < m_dAngularVelocityThreshold)
121 ++m_unStuckChecksSoFar;
125 m_unStuckChecksSoFar = 0;
130 if (m_unStuckChecksSoFar > m_dMaximumStuckCount)
133 m_unStuckChecksSoFar = 0;
This class should be instantiated within another state to be used for detection of if the rover is st...
Definition StuckDetection.hpp:43
~TimeIntervalBasedStuckDetector()
Destroy the Stuck Detector object.
Definition StuckDetection.hpp:93
bool CheckIfStuck(double dCurrentVelocity, double dCurrentAngularVelocity)
Checks if the rover meets stuck criteria based in the given parameters.
Definition StuckDetection.hpp:105
TimeIntervalBasedStuckDetector(double dMaximumStuckCount=3, double dStuckCheckIntervalSeconds=3, double dVelocityThreshold=0.3, double dAngularVelocityThreshold=5.0)
Construct a new Stuck Detector object.
Definition StuckDetection.hpp:72
Namespace containing all state machine related classes.
Definition State.hpp:23