This page will refer to example skills from [[https://git.cs.lth.se/robotlab/skill_examples/-/tree/master/|this]] repository written by Pontus Rosqvist.
This page will refer to example skills from [[https://git.cs.lth.se/robotlab/skill_examples/-/tree/master/|this]] repository written by Pontus Rosqvist.
-
When it comes to SkiROS a compound skill can be implemented by extending [[https://github.com/RVMI/skiros2/blob/master/skiros2_skill/src/skiros2_skill/core/skill.py|SkillBase]]. This class can run arbitrary python code but it is mostly intended for calling other skills, it has the following stages of execution:
+
When it comes to SkiROS a compound skill can be implemented by extending [[https://github.com/RVMI/skiros2/blob/master/skiros2_skill/src/skiros2_skill/core/skill.py|SkillBase]]. This class can run arbitrary python code but it is mostly intended for calling other skills. If primitive skills are intepreted then compound skills are compiled, anything written in expand only specifies the behaviour tree, it isn't run when expand is called. A compound skill has the following stages of execution:
^ Name ^ When it runs ^ Note ^
^ Name ^ When it runs ^ Note ^
Line 28:
Line 28:
| RetryOnFail | Executes the skills sequentially restarts from the beginning if a skill fails. | Optionally takes the maximal amount restarts as parameter, otherwise retires until all skills have succeded. |
| RetryOnFail | Executes the skills sequentially restarts from the beginning if a skill fails. | Optionally takes the maximal amount restarts as parameter, otherwise retires until all skills have succeded. |
| NoFail | Wrapper for a skill processor to stop if from returning fail. | Takes a skillprocessor as a parameter. |
| NoFail | Wrapper for a skill processor to stop if from returning fail. | Takes a skillprocessor as a parameter. |
+
| InferInvalid | Infers parameters which exist in the blackboard which might happen to be invalid | |
These are all the skill processors one can use but they can also be found [[https://git.cs.lth.se/robotlab/rvmi/skiros2/-/blob/master/skiros2_skill/src/skiros2_skill/core/processors.py|here]]. An example of how to use these skill processors can be seen in [[https://git.cs.lth.se/robotlab/skill_examples/-/blob/master/src/skill_examples/basic_compound_skill.py|basic_compound]] and an example of how to use these processors to perform conditional checks which determine how the skill runs can be seen in [[https://git.cs.lth.se/robotlab/skill_examples/-/blob/master/src/skill_examples/compound_if_statement.py|compound_if_statement]].
These are all the skill processors one can use but they can also be found [[https://git.cs.lth.se/robotlab/rvmi/skiros2/-/blob/master/skiros2_skill/src/skiros2_skill/core/processors.py|here]]. An example of how to use these skill processors can be seen in [[https://git.cs.lth.se/robotlab/skill_examples/-/blob/master/src/skill_examples/basic_compound_skill.py|basic_compound]] and an example of how to use these processors to perform conditional checks which determine how the skill runs can be seen in [[https://git.cs.lth.se/robotlab/skill_examples/-/blob/master/src/skill_examples/compound_if_statement.py|compound_if_statement]].