documentation:skiros:compound_skills

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
documentation:skiros:compound_skills [2023/03/23 18:04] – created pontusrdocumentation:skiros:compound_skills [2023/06/26 12:44] (current) pontusr
Line 1: Line 1:
 ====== Compound Skills ====== ====== Compound Skills ======
  
-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 cannot run arbitrary python code, it has the following stages of execution:+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. 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 9: Line 11:
 | onEnd     | Once when execute has returned a terminal state.      |                                                                 | | onEnd     | Once when execute has returned a terminal state.      |                                                                 |
  
-A compound skill can only call skills but by choosing different processor one can coordinate the execution of skill with a behaviour tree.+A compound skill can call other skills and by choosing different processors one can coordinate the execution of skill with a behaviour tree
 + 
 +===== Skill Processors ===== 
 + 
 +The execution of skills from the compound skill can be coordinate with the help of many different skill processors. The available skill processors are 
 + 
 +^ Processor Name ^ Purpose ^ Note ^ 
 +| Serial | Executes each skill sequentially until every skill has succeeded. Restarts finished skills. | | 
 +| SerialStar | Executes each skill sequentially until every skill has succeeded. Does not restart skills that have succeeded. | | 
 +| Sequential | Alias of SerialStar. Deprecated. | | 
 +| Selector | Executes each skill sequentially until one succeeds. | | 
 +| SelectorStar | Executes each skill sequentially until one succeeds, additionally it keeps track of which skills have succeded and refrains from running them again. | | 
 +| ParallelFf | Parallel First Fail - Executes skills in parallel until all succeed. Stop all processes if a skill fails. | | 
 +| ParallelFs | Parallel First Success - Executes skills in parallel until one succeeds. Stop all processes if a skill succeeds/fails. | | 
 +| Loop | Executes the skills sequentially N times. | Optionally takes amount times to loop as parameter, otherwise loops forever. | 
 +| 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. | 
 +| 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]].
  
-=== Skill Processors === 
  • documentation/skiros/compound_skills.1679594691.txt.gz
  • Last modified: 2023/03/23 18:04
  • by pontusr