feat: migrate omni.isaac.* imports to isaacsim.* via compat layer

- 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>
This commit is contained in:
Tangger
2026-04-03 15:09:50 +08:00
parent 6032b12c59
commit b178aafe40
47 changed files with 546 additions and 249 deletions

View File

@@ -0,0 +1,198 @@
"""
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