Source code for embodichain.lab.sim.utility.import_utils
# ----------------------------------------------------------------------------
# Copyright (c) 2021-2026 DexForce Technology Co., Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ----------------------------------------------------------------------------
from embodichain.utils import logger
[docs]
def lazy_import_pytorch_kinematics():
"""
Lazily import pytorch_kinematics and return the module.
Returns:
module: The pytorch_kinematics module if available.
Raises:
ImportError: If the module is not installed.
"""
try:
import pytorch_kinematics as pk
return pk
except ImportError as e:
logger.log_warning(
"pytorch_kinematics not installed. Install with `pip install pytorch_kinematics==0.7.6`"
)
raise e
[docs]
def lazy_import_pinocchio():
"""
Lazily import pinocchio and return the module.
Returns:
module: The pinocchio module if available.
Raises:
ImportError: If the module is not installed.
"""
try:
import pinocchio as pin
return pin
except ImportError as e:
logger.log_warning(
"pinocchio not installed. Install with `conda install pinocchio==3.1.0 -c conda-forge`"
)
raise e
[docs]
def lazy_import_casadi():
"""
Lazily import casadi and return the module.
Returns:
module: The casadi module if available.
Raises:
ImportError: If the module is not installed.
"""
try:
import casadi
return casadi
except ImportError as e:
logger.log_warning(
"casadi not installed. Install with `pip install casadi==3.6.7`"
)
raise e
[docs]
def lazy_import_pinocchio_casadi():
"""
Lazily import pinocchio.casadi and return the module.
Returns:
module: The pinocchio.casadi module if available.
Raises:
ImportError: If the module is not installed.
"""
try:
from pinocchio import casadi as cpin
return cpin
except ImportError as e:
logger.log_warning(
f"Failed to import pinocchio.casadi: {e}. Install with `conda install pinocchio-casadi -c conda-forge` first."
)
raise e
[docs]
def lazy_import_pink():
"""
Lazily import pin-pink and return its components.
Returns:
tuple: The solve_ik, Configuration, and FrameTask components.
Raises:
ImportError: If the module is not installed.
"""
try:
from pink import solve_ik
from pink.configuration import Configuration
from pink.tasks import FrameTask
import pink
return pink
except ImportError as e:
logger.log_warning(
"Failed to import 'pin-pink'. Please install it using `pip install pin-pink==3.4.0`."
)
raise ImportError("pin-pink is required but not installed.") from e