Surface Gripper Bindings#

The compiled Surface Gripper binding module (_surface_gripper) moved from the isaacsim.robot.surface_gripper package root into the bindings subpackage. This matches the Isaac Sim packaging convention, where compiled pybind11 modules live under <package>/bindings/.

Scripts that import the binding through its old submodule path fail at import time:

import isaacsim.robot.surface_gripper._surface_gripper
# ModuleNotFoundError: No module named 'isaacsim.robot.surface_gripper._surface_gripper'

The interface is otherwise unchanged. acquire_surface_gripper_interface(), release_surface_gripper_interface(), GripperStatus, and SurfaceGripperInterface behave exactly as before — only the import path changed. Update your imports as described below.

Note

The bindings relocation applies to every Isaac Sim extension with compiled pybind11 modules, not only Surface Gripper. For example, import isaacsim.sensors.physics._sensor, import isaacsim.sensors.physx._range_sensor, and import isaacsim.core.simulation_manager._simulation_manager fail the same way in 6.0, while the package-root re-export form (from isaacsim.sensors.physics import _sensor) keeps working. Apply the same import mapping shown below to any deep binding import in your project.

Import mapping#

The binding is available in two equivalent ways. Use the package-root re-export when you want the module as a namespace, and the direct bindings submodule import when you only need specific symbols.

Old import (Isaac Sim 5.x and earlier)

New import (Isaac Sim 6.0 and later)

import isaacsim.robot.surface_gripper._surface_gripper as sg

from isaacsim.robot.surface_gripper import _surface_gripper as sg

from isaacsim.robot.surface_gripper._surface_gripper import acquire_surface_gripper_interface, GripperStatus

from isaacsim.robot.surface_gripper.bindings._surface_gripper import acquire_surface_gripper_interface, GripperStatus

Code examples#

Acquire the interface and query gripper status

# Old (Isaac Sim 5.x and earlier)
import isaacsim.robot.surface_gripper._surface_gripper as surface_gripper

gripper = surface_gripper.acquire_surface_gripper_interface()
status = gripper.get_gripper_status("/World/SurfaceGripper")
is_closed = status == surface_gripper.GripperStatus.Closed
# New (Isaac Sim 6.0 and later)
from isaacsim.robot.surface_gripper import _surface_gripper as surface_gripper

gripper = surface_gripper.acquire_surface_gripper_interface()
status = gripper.get_gripper_status("/World/SurfaceGripper")
is_closed = status == surface_gripper.GripperStatus.Closed

Import specific symbols

# Old (Isaac Sim 5.x and earlier)
from isaacsim.robot.surface_gripper._surface_gripper import (
    acquire_surface_gripper_interface,
    GripperStatus,
)
# New (Isaac Sim 6.0 and later)
from isaacsim.robot.surface_gripper.bindings._surface_gripper import (
    acquire_surface_gripper_interface,
    GripperStatus,
)

Deprecated CreateSurfaceGripper Command#

The CreateSurfaceGripper Kit command is deprecated in Isaac Sim 6.0 and will be removed in a future release. It still works but logs a deprecation warning. Call isaacsim.robot.surface_gripper.create_surface_gripper instead. As with the old command, pass the parent prim path — the function creates a child prim named SurfaceGripper (SurfaceGripper_01, and so on, if the name is taken) and returns the created Usd.Prim.

# Old (Isaac Sim 5.x and earlier) — deprecated in 6.0
import omni.kit.commands

result, prim = omni.kit.commands.execute(
    "CreateSurfaceGripper",
    prim_path="/World/Robot",
)
# New (Isaac Sim 6.0 and later)
import omni.usd
from isaacsim.robot.surface_gripper import create_surface_gripper

stage = omni.usd.get_context().get_stage()
prim = create_surface_gripper(stage, "/World/Robot")