From b45724135bc4512fccf719729ebddaeb35695843 Mon Sep 17 00:00:00 2001 From: Matthias Mayr Date: Fri, 30 Jun 2023 14:32:10 +0200 Subject: [PATCH] Fix: Enable automatic skill selection if grounding fails Previously the implementation relied on the "label" property. However, this property is set to the concrete instance, even if the compound skill did not specify an instance. --- skiros2_skill/src/skiros2_skill/core/skill_instanciator.py | 6 +++--- skiros2_skill/src/skiros2_skill/core/skill_utils.py | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/skiros2_skill/src/skiros2_skill/core/skill_instanciator.py b/skiros2_skill/src/skiros2_skill/core/skill_instanciator.py index 285ec9a..ed6bf50 100644 --- a/skiros2_skill/src/skiros2_skill/core/skill_instanciator.py +++ b/skiros2_skill/src/skiros2_skill/core/skill_instanciator.py @@ -68,7 +68,7 @@ def assign_instance(self, skill, ignore_list=list()): """ to_set = None for p in self._available_instances[skill.type]: - if (p.label == skill.label or skill.label == "") and p.label not in ignore_list: + if (p.label == skill._label or skill._label == "") and p.label not in ignore_list: to_set = p if not p.hasState(State.Running): # The skill is available, just go forward break @@ -76,8 +76,8 @@ def assign_instance(self, skill, ignore_list=list()): if to_set.hasState(State.Running): # The skill instance is busy, create a new one to_set = self.duplicate_instance(to_set) skill.setInstance(to_set) - elif skill.label != "" and not ignore_list: # No instance exist, try to load it - skill.setInstance(self.add_instance(skill.label)) + elif skill._label != "" and not ignore_list: # No instance exist, try to load it + skill.setInstance(self.add_instance(skill._label)) else: log.error("assign_instance", "No instance of type {} found.".format(skill.type)) return False diff --git a/skiros2_skill/src/skiros2_skill/core/skill_utils.py b/skiros2_skill/src/skiros2_skill/core/skill_utils.py index d61f412..265cc57 100644 --- a/skiros2_skill/src/skiros2_skill/core/skill_utils.py +++ b/skiros2_skill/src/skiros2_skill/core/skill_utils.py @@ -236,7 +236,7 @@ def tryOther(self, skill): """ @brief If the skill label is not specified, try other instances """ - if skill.label != "": + if skill._label != "": return False ignore_list = [skill._instance.label] while self._instanciator.assign_instance(skill, ignore_list):