eeros_architecture:sequencer:monitors
This is an old revision of the document!
Conditions and Monitors
A monitor allows to supervise certain conditions of a robot during a sequence. Examples could include the following situations:
- A sequence steers a robot along a given path. A monitors checks for obstacles. As soon as an obstacle is close enough, the monitor causes a predefined exception sequence to be executed.
- A sequence takes too long to run due to some erroneous behavior. A monitor checks for timeout and either restarts or aborts the sequence or switches to an exception sequence.
- A sequence moves a robot arm. While moving the arm looses its load. A monitor checks for this load to be present and aborts the sequence.
All these situations have in common, that a user does want to check for a given set of conditions during the running of the sequence (including subsequences or steps).
Define your own Condition
Implement your condition by extending the class Condition
as given below:
class MyCondition : public Condition { public: MyCondition() : { } // initialize any attributes necessary bool validate() {return yourTest;} // implement whatever your condition should check };
Every Sequence or step already has a timeout condition (of class
ConditionTimeout
). It allows for checking a maximum duration of execution.
Assign a Condition to a Monitor
The second step is to define a monitor and assign it a condition.
SequenceA seq(...); // define a sequence MyCondition myCondition; // and a condition Monitor myMonitor(&seq, myCondition, SequenceProp::abortOwner); // create an associated monitor setExceptionSequence(exceptionSeq); // choose a sequence to run in case of a condition to become false seq.addMonitor(&myMonitor); // and add it to the sequence };
Here again, every sequence or step already has a timeout monitor which helps to check its associated timeout condition.
eeros_architecture/sequencer/monitors.1503258638.txt.gz · Last modified: 2017/08/20 21:50 by graf