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. Also, every sequence has an abort condition (of class ConditionAbort
). This condition makes it possible to abort a sequence, e.g. by pressing Ctrl-C
.
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("myMon", &seq, myCondition, SequenceProp::abort); // 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. A second monitor checks the abort condition.