- Add core/compat.py: compatibility module with try/except imports supporting both IS 4.x (omni.isaac.*) and IS 5.x+ (isaacsim.*) - Migrate 152 imports across 47 files from direct omni.isaac.* to core.compat - Handle class renames: RigidPrim→SingleRigidPrim, GeometryPrim→SingleGeometryPrim, XFormPrim→SingleXFormPrim, Articulation→SingleArticulation (aliased for compatibility) - Add migerate/migrate_imports.py: automated migration script for future use - Leave debug_draw and env_loader try/except imports as-is This eliminates ~100 deprecation warnings from our code on IS 5.0, and future-proofs for IS 6.x when old APIs may be removed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
199 lines
5.4 KiB
Python
199 lines
5.4 KiB
Python
"""
|
|
Isaac Sim 4.x / 5.x API compatibility layer.
|
|
|
|
IS 5.0 renamed all `omni.isaac.*` modules to `isaacsim.*`.
|
|
This module provides unified imports that work across both versions.
|
|
Import from here instead of directly from omni.isaac.* or isaacsim.*.
|
|
"""
|
|
|
|
# ===== Core =====
|
|
try:
|
|
from isaacsim.core.api import World
|
|
except ImportError:
|
|
from omni.isaac.core import World
|
|
|
|
# ===== Controllers =====
|
|
try:
|
|
from isaacsim.core.api.controllers.base_controller import BaseController
|
|
except ImportError:
|
|
from omni.isaac.core.controllers import BaseController
|
|
|
|
# ===== Tasks =====
|
|
try:
|
|
from isaacsim.core.api.tasks.base_task import BaseTask
|
|
except ImportError:
|
|
from omni.isaac.core.tasks import BaseTask
|
|
|
|
# ===== Robots =====
|
|
try:
|
|
from isaacsim.core.api.robots.robot import Robot
|
|
except ImportError:
|
|
from omni.isaac.core.robots.robot import Robot
|
|
|
|
# ===== Prims (class names changed in IS 5.x) =====
|
|
try:
|
|
from isaacsim.core.prims import SingleXFormPrim as XFormPrim
|
|
except ImportError:
|
|
from omni.isaac.core.prims import XFormPrim
|
|
|
|
try:
|
|
from isaacsim.core.prims import SingleRigidPrim as RigidPrim
|
|
except ImportError:
|
|
from omni.isaac.core.prims import RigidPrim
|
|
|
|
try:
|
|
from isaacsim.core.prims import SingleGeometryPrim as GeometryPrim
|
|
except ImportError:
|
|
from omni.isaac.core.prims import GeometryPrim
|
|
|
|
try:
|
|
from isaacsim.core.api.sensors.rigid_contact_view import RigidContactView
|
|
except ImportError:
|
|
from omni.isaac.core.prims import RigidContactView
|
|
|
|
# ===== Articulations =====
|
|
try:
|
|
from isaacsim.core.prims import SingleArticulation as Articulation
|
|
except ImportError:
|
|
from omni.isaac.core.articulations.articulation import Articulation
|
|
|
|
# ===== Objects =====
|
|
try:
|
|
from isaacsim.core.api.objects.cylinder import VisualCylinder
|
|
except ImportError:
|
|
from omni.isaac.core.objects.cylinder import VisualCylinder
|
|
|
|
try:
|
|
from isaacsim.core.api.objects import cuboid, sphere
|
|
except ImportError:
|
|
from omni.isaac.core.objects import cuboid, sphere
|
|
|
|
# ===== Materials =====
|
|
try:
|
|
from isaacsim.core.api.materials import PreviewSurface
|
|
except ImportError:
|
|
from omni.isaac.core.materials import PreviewSurface
|
|
|
|
try:
|
|
from isaacsim.core.api.materials import OmniPBR
|
|
except ImportError:
|
|
try:
|
|
from omni.isaac.core.materials import OmniPBR
|
|
except ImportError:
|
|
from omni.isaac.core.materials.omni_pbr import OmniPBR
|
|
|
|
try:
|
|
from isaacsim.core.api.materials import OmniGlass
|
|
except ImportError:
|
|
from omni.isaac.core.materials import OmniGlass
|
|
|
|
# ===== Scenes =====
|
|
try:
|
|
from isaacsim.core.api.scenes.scene import Scene
|
|
except ImportError:
|
|
from omni.isaac.core.scenes.scene import Scene
|
|
|
|
# ===== Utils: prims =====
|
|
try:
|
|
from isaacsim.core.utils.prims import (
|
|
get_prim_at_path,
|
|
create_prim,
|
|
delete_prim,
|
|
is_prim_path_valid,
|
|
)
|
|
except ImportError:
|
|
from omni.isaac.core.utils.prims import (
|
|
get_prim_at_path,
|
|
create_prim,
|
|
delete_prim,
|
|
is_prim_path_valid,
|
|
)
|
|
|
|
# ===== Utils: transformations =====
|
|
try:
|
|
from isaacsim.core.utils.transformations import (
|
|
get_relative_transform,
|
|
pose_from_tf_matrix,
|
|
tf_matrix_from_pose,
|
|
tf_matrices_from_poses,
|
|
)
|
|
except ImportError:
|
|
from omni.isaac.core.utils.transformations import (
|
|
get_relative_transform,
|
|
pose_from_tf_matrix,
|
|
tf_matrix_from_pose,
|
|
tf_matrices_from_poses,
|
|
)
|
|
|
|
# ===== Utils: stage =====
|
|
try:
|
|
from isaacsim.core.utils.stage import (
|
|
get_current_stage,
|
|
add_reference_to_stage,
|
|
)
|
|
except ImportError:
|
|
from omni.isaac.core.utils.stage import (
|
|
get_current_stage,
|
|
add_reference_to_stage,
|
|
)
|
|
|
|
# ===== Utils: xforms =====
|
|
try:
|
|
from isaacsim.core.utils.xforms import get_world_pose
|
|
except ImportError:
|
|
from omni.isaac.core.utils.xforms import get_world_pose
|
|
|
|
# ===== Utils: types =====
|
|
try:
|
|
from isaacsim.core.utils.types import ArticulationAction
|
|
except ImportError:
|
|
from omni.isaac.core.utils.types import ArticulationAction
|
|
|
|
# ===== Utils: viewports =====
|
|
try:
|
|
from isaacsim.core.utils.viewports import set_camera_view
|
|
except ImportError:
|
|
from omni.isaac.core.utils.viewports import set_camera_view
|
|
|
|
# ===== Utils: semantics =====
|
|
try:
|
|
from isaacsim.core.utils.semantics import add_update_semantics
|
|
except ImportError:
|
|
from omni.isaac.core.utils.semantics import add_update_semantics
|
|
|
|
# ===== Utils: string =====
|
|
try:
|
|
from isaacsim.core.utils.string import find_unique_string_name
|
|
except ImportError:
|
|
from omni.isaac.core.utils.string import find_unique_string_name
|
|
|
|
# ===== Utils: stage units =====
|
|
try:
|
|
from isaacsim.core.utils.stage import get_stage_units
|
|
except ImportError:
|
|
from omni.isaac.core.utils.stage import get_stage_units
|
|
|
|
# ===== Utils: extensions =====
|
|
try:
|
|
from isaacsim.core.utils.extensions import enable_extension
|
|
except ImportError:
|
|
from omni.isaac.core.utils.extensions import enable_extension
|
|
|
|
# ===== Utils: nucleus =====
|
|
try:
|
|
from isaacsim.storage.native import get_assets_root_path as nucleus_path
|
|
except ImportError:
|
|
from omni.isaac.core.utils.nucleus import get_assets_root_path as nucleus_path
|
|
|
|
# ===== Sensor: Camera =====
|
|
try:
|
|
from isaacsim.sensors.camera import Camera
|
|
except ImportError:
|
|
from omni.isaac.sensor import Camera
|
|
|
|
# ===== SimulationApp =====
|
|
try:
|
|
from isaacsim import SimulationApp
|
|
except ImportError:
|
|
from omni.isaac.kit import SimulationApp
|