diff --git a/ik_ros/src/ik_ros/ik_solver_interfaces.py b/ik_ros/src/ik_ros/ik_solver_interfaces.py index 76bfd0c..ebf2d1f 100644 --- a/ik_ros/src/ik_ros/ik_solver_interfaces.py +++ b/ik_ros/src/ik_ros/ik_solver_interfaces.py @@ -1,10 +1,35 @@ -from .trac_ik.setup_node import TracIKSetupNode -from .exotica.setup_node import EXOTicaSetupNode -from .pybullet.setup_node import PybulletSetupNode -from .trac_ik.interface import TracIKInterface -from .exotica.interface import EXOTicaInterface -# NOTE: pybullet does not have an interface (see README.md in ik_ros/src/ik_ros/pybullet) +########### +## TracIK +trac_ik_available = True +try: + from .trac_ik.setup_node import TracIKSetupNode + from .trac_ik.interface import TracIKInterface +except ModuleNotFoundError: + TracIKSetupNode = None + TracIKInterface = None + trac_ik_available = False + +########### +## EXOTica +exotica_available = True +try: + from .exotica.setup_node import EXOTicaSetupNode + from .exotica.interface import EXOTicaInterface +except ModuleNotFoundError: + EXOTicaSetupNode = None + EXOTicaInterface = None + exotica_available = False + +########### +## Pybullet +## NOTE: pybullet does not have an interface (see README.md in ik_ros/src/ik_ros/pybullet) +pybullet_available = True +try: + from .pybullet.setup_node import PybulletSetupNode +except ModuleNotFoundError: + PybulletSetupNode = None + pybullet_available = True """ @@ -18,12 +43,17 @@ class SolverInterface: - def __init__(self, setup_node, interface): + def __init__(self, setup_node, interface, is_available): self.setup_node = setup_node self.interface = interface + self.is_available = is_available solver_interfaces = { - 'trac_ik': SolverInterface(TracIKSetupNode, TracIKInterface), - 'exotica': SolverInterface(EXOTicaSetupNode, EXOTicaInterface), - 'pybullet': SolverInterface(PybulletSetupNode, None), + 'trac_ik': SolverInterface(TracIKSetupNode, TracIKInterface, trac_ik_available), + 'exotica': SolverInterface(EXOTicaSetupNode, EXOTicaInterface, exotica_available), + 'pybullet': SolverInterface(PybulletSetupNode, None, pybullet_available), } + +for name, interface in solver_interfaces.items(): + if not interface.is_available: + print(f">>>>>>>{name} interface is not available<<<<<<<<")