Spaces:
Paused
Paused
| """Fail-aware wrappers for ManiSkill motion planners.""" | |
| from __future__ import annotations | |
| from mani_skill.examples.motionplanning.panda.motionplanner import ( | |
| PandaArmMotionPlanningSolver, | |
| ) | |
| from mani_skill.examples.motionplanning.panda.motionplanner_stick import ( | |
| PandaStickMotionPlanningSolver, | |
| ) | |
| class ScrewPlanFailure(RuntimeError): | |
| """Raised when mplib reports a screw-planning failure.""" | |
| class _FailAwareMixin: | |
| """Mixin that turns ``-1`` screw-plan return values into exceptions.""" | |
| def move_to_pose_with_screw(self, *args, **kwargs): # type: ignore[override] | |
| result = super().move_to_pose_with_screw(*args, **kwargs) # type: ignore[misc] | |
| if isinstance(result, int) and result == -1: | |
| raise ScrewPlanFailure("screw plan failed") | |
| return result | |
| class FailAwarePandaArmMotionPlanningSolver(_FailAwareMixin, PandaArmMotionPlanningSolver): | |
| """Panda arm solver that raises on screw failures.""" | |
| class FailAwarePandaStickMotionPlanningSolver( | |
| _FailAwareMixin, PandaStickMotionPlanningSolver | |
| ): | |
| """Stick solver variant that raises on screw failures.""" | |