Unhelpful error message when adding skills based on implementation rather description
When wrongly adding a skill in the expand()
function of a skill like this:
self.skill("test_primitive", "")
rather than the correct
self.skill("TestPrimitive", "test_primitive")
this error message appears. I find it not very good at pointing out the problem.
bh_robot_1: Traceback (most recent call last):
bh_robot_1: File "/usr/lib/python2.7/threading.py", line 801, in __bootstrap_inner
bh_robot_1: self.run()
bh_robot_1: File "/usr/lib/python2.7/threading.py", line 754, in run
bh_robot_1: self.__target(*self.__args, **self.__kwargs)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/ros/skill_manager.py", line 63, in _run
bh_robot_1: printer.traverse(t)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/visitors.py", line 40, in traverse
bh_robot_1: self._setState(root.visit(self))
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 229, in visit
bh_robot_1: return visitor.process(self)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/visitors.py", line 51, in process
bh_robot_1: state = self.processChildren(procedure)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/visitors.py", line 106, in processChildren
bh_robot_1: return self._processor.processChildren(procedure._children, self)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/processors.py", line 38, in processChildren
bh_robot_1: state = c.visit(visitor)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 229, in visit
bh_robot_1: return visitor.process(self)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/visitors.py", line 46, in process
bh_robot_1: state = self.processNode(procedure)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/visitors.py", line 97, in processNode
bh_robot_1: procedure.wrapper_expand()
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 477, in wrapper_expand
bh_robot_1: self._instance.expand(self)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/blackdrops/src/learning_skills/skills.py", line 17, in expand
bh_robot_1: self.skill("test_primitive", "")
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 571, in skill
bh_robot_1: s = self.getSkill(stype, slabel)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 586, in getSkill
bh_robot_1: return SkillWrapper(self._parse_type(ptype), plabel, self._instanciator)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill.py", line 422, in __init__
bh_robot_1: instanciator.assign_description(self)
bh_robot_1: File "/home/matthias/Workspaces/blackdrops_ws/src/skiros2/skiros2/skiros2_skill/src/skiros2_skill/core/skill_instanciator.py", line 48, in assign_description
bh_robot_1: skill.setDescription(deepcopy(self.get_description(skill.type)))
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
bh_robot_1: y = _reconstruct(x, rv, 1, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
bh_robot_1: state = deepcopy(state, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
bh_robot_1: y = copier(x, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
bh_robot_1: y[deepcopy(key, memo)] = deepcopy(value, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
bh_robot_1: y = _reconstruct(x, rv, 1, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
bh_robot_1: state = deepcopy(state, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
bh_robot_1: y = copier(x, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
bh_robot_1: y[deepcopy(key, memo)] = deepcopy(value, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 190, in deepcopy
bh_robot_1: y = _reconstruct(x, rv, 1, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 334, in _reconstruct
bh_robot_1: state = deepcopy(state, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 163, in deepcopy
bh_robot_1: y = copier(x, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 257, in _deepcopy_dict
bh_robot_1: y[deepcopy(key, memo)] = deepcopy(value, memo)
bh_robot_1: File "/usr/lib/python2.7/copy.py", line 182, in deepcopy
bh_robot_1: rv = reductor(2)
bh_robot_1: TypeError: can't pickle thread.lock objects