====== Troubleshooting Skills ======
This page will refer to example skills from [[https://git.cs.lth.se/robotlab/skill_examples/-/tree/master/|this]] repository written by Pontus Rosqvist.
Your skill is not found by SkiROS, now what? Here are some basic things to make sure are correct before you give up on ever working with SkiROS again.
* Is the skill in the skill list of the launch file?
* Is the script in a package that is imported by the launch file?
* Does the script end in .py?
* Is there an empty _ _init_ _.py file in the same directory as the script?
* Is there an import error in the script?
* Is there a syntax error in the script?
==== Expected File Structure ====
└─ catkin_ws
├─ src
| ├─ skills
| | ├─ skills_sandbox
| | ├─ vision_skills
| | ├─
| | └─ ...
| └─
└─ ...
Where your skill lies in , this package should be a ROS package which looks like [[https://git.cs.lth.se/robotlab/rvmi/skiros2_template_lib|skiros2_template_lib]]. In the src file of the following structure is expected
└─ src
├─
| ├─ _ _init_ _.py
| ├─ .py
| └─ ...
├─
| ├─ _ _init_ _.py
| ├─ .py
| └─ ...
└─ ...
If the _ _init_ _.py files are not present the files containing skills are not found by SkiROS.
==== Add Skill to Skill List and Verify Package is Imported ====
The name of the relevant skills should be added to the skill list. If a skill lies in that package should be added to the libraries_list.
==== Detect and Fix Import Error ====
An easy way to find import errors is to put a minimal skill in the same directory as the skill that does not get found by SkiROS, a good minimal skill can be found in [[https://git.cs.lth.se/robotlab/skill_examples/-/blob/master/src/minimal_skills/minimal_primitive.py|minimal_primitive]]. Then perform the following steps
* Rename the minimal skill.
* Add the minimal skill to the skill list before the skill that does not get loaded.
* Run the simulation/launch file, does the minimal skill get loaded?
* If the minimal skill does not load the _ _init_ _.py might be missing or it's something else.
* If the minimal skill loads there might be a syntax error or import error in the skill you're writing.
To then determine if there is an import error you can paste the imports from your skill into the minimal skill one at a time. If it ever breaks you'll know which import(s) is incorrent. If there are no import errors there might a syntax error. You can paste your skill one block at a time into the same file as the minimal skill. Start with an empty skill with the same name as your skill with no parameters, then add only the parameters to the skill description and so on.