SimplePeriodicSkill.cpp
Go to the documentation of this file.
2
4
6
7namespace armarx::skills
8{
11 SimpleSkill(skillDescription), frequency(frequency)
12 {
13 }
14
17 {
19
20 while (true)
21 {
23
24 const auto res = step(in);
25 switch (res.status)
26 {
28 // nothing to do here. break switch
29 break;
31 return MakeAbortedResult();
33 return MakeSucceededResult(res.data);
35 return MakeFailedResult();
36 }
37
38 const auto sleepDuration = metronome.waitForNextTick();
39 if (not sleepDuration.isPositive())
40 {
41 ARMARX_INFO << deactivateSpam() << __PRETTY_FUNCTION__
42 << ": execution took too long (" << -sleepDuration
43 << " too long. Expected " << frequency.toCycleDuration() << ")";
44 }
45 }
46
47 // never happens
48 throw skills::error::SkillException(__PRETTY_FUNCTION__, "Should not happen!");
49 }
50
53 {
54 ARMARX_IMPORTANT << "Dummy executing once skill '" << description.skillId
55 << "'. Please overwrite this method!";
57 }
58} // namespace armarx::skills
SpamFilterDataPtr deactivateSpam(float deactivationDurationSec=10.0f, const std::string &identifier="", bool deactivate=true) const
disables the logging for the current line for the given amount of seconds.
Definition Logging.cpp:99
Represents a frequency.
Definition Frequency.h:17
Simple rate limiter for use in loops to maintain a certain frequency given a clock.
Definition Metronome.h:57
Duration waitForNextTick() const
Wait and block until the target period is met.
Definition Metronome.cpp:27
virtual StepResult step(const MainInput &in)
Override this method with your own step function.
SimplePeriodicSkill(const SkillDescription &skillDescription, const armarx::Frequency &frequency)
static MainResult MakeSucceededResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:413
static MainResult MakeAbortedResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:431
SkillDescription description
Definition Skill.h:372
virtual MainResult main()
Override this method with the actual implementation.
Definition Skill.cpp:542
void throwIfSkillShouldTerminate(const std::string &abortedMessage="") const
Definition Skill.cpp:389
static MainResult MakeFailedResult(aron::data::DictPtr data=nullptr)
Definition Skill.cpp:422
A base class for skill exceptions.
Definition Exception.h:35
#define ARMARX_INFO
The normal logging level.
Definition Logging.h:181
#define ARMARX_IMPORTANT
The logging level for always important information, but expected behaviour (in contrast to ARMARX_WAR...
Definition Logging.h:190
This file is part of ArmarX.
A result struct for th main method of a skill.
Definition Skill.h:62