Skip to main content

IsaacSim / Isaac Lab embodiment adapter for Inspect Robots — run Inspect Robots evals against an Isaac Lab simulation.

Project description

inspect-robots-isaacsim

An Isaac Lab (Isaac Sim) embodiment plugin for Inspect Robots — the "Inspect AI for robotics".

Inspect Robots factors a robotics eval into two swappable inputs: a Policy (the VLA "brain") and an Embodiment (the "body + world"). This package supplies the second one, backed by a real Isaac Lab physics simulation, so you can run any compatible VLA against your Isaac Sim setup.

The default profile is a 7-DoF Franka Panda under joint-position control with a binary gripper (action dimension = num_arm_joints + 1 = 8).

Install

This package installs and registers on any machine, but reset()/step() need a working Isaac Lab environment (NVIDIA Omniverse + GPU) — Isaac Sim is not a PyPI dependency and is imported lazily.

# inside the conda/venv that already has isaaclab + isaacsim available
pip install inspect-robots inspect-robots-isaacsim

Use it

The embodiment is discovered through the inspect_robots.embodiments entry point, so it appears in the CLI without any import:

inspect-robots list embodiments          # -> includes "isaacsim"

inspect-robots run \
  --task my-benchmark \
  --policy my-vla \
  --embodiment isaacsim \
  -E task_id=Isaac-Lift-Cube-Franka-v0 \
  -E headless=true

Or programmatically:

from inspect_robots import eval

logs = eval("my-benchmark", "my-vla", "isaacsim")
print(logs[0].results.metrics)

Constructing directly (e.g. for a non-Franka arm or extra cameras):

from inspect_robots_isaacsim import IsaacSimEmbodiment

emb = IsaacSimEmbodiment(
    task_id="Isaac-Open-Drawer-Franka-v0",
    num_arm_joints=7,
    cameras=[("base_rgb", 224, 224), ("wrist_rgb", 224, 224)],
    control_hz=30.0,
    headless=True,
)

Compatibility

Inspect Robots fail-fast-checks the (policy, embodiment) pair before any rollout. To run against this embodiment your policy must emit 8-D joint_pos actions (control_mode="joint_pos", gripper="binary") and require only observation keys this task provides. The mock cubepick policies (2-D eef_delta_pos) are intentionally incompatible — bring a Franka-trained VLA.

Mapping your task

Isaac Lab tasks vary in their observation-dict layout and success signal. The constructor exposes hooks so you don't edit the adapter:

Argument Purpose
obs_group top-level obs-dict group to read (default "policy")
image_keys / state_keys map Inspect Robots keys → your task's raw dict keys
success_info_key where the task reports success in info (default "success")
num_arm_joints arm DoF; action dim is this + 1 for the gripper

Memory & GPU hygiene

Long unattended evals should not creep in RAM or VRAM. This adapter is built to hold nothing per step, but a few usage rules keep a full run leak-free:

  • Free the simulator when done. eval() closes what it resolves: an embodiment looked up by registry name (e.g. embodiment="isaacsim") is closed when the run finishes. An embodiment object you construct is yours to close — an open SimulationApp holds GPU memory until the process exits, so use it as a context manager (or close() in a finally):

    with IsaacSimEmbodiment() as emb:
        eval("my-bench", "my-vla", emb)
    # GPU + sim torn down here
    

    close() is idempotent and safe to call before launch or twice.

  • One simulator per process. Isaac Sim is a hard process singleton; if you construct several embodiments the adapter reuses the one live SimulationApp rather than launching (and leaking) a second.

  • Stream frames to disk for long episodes. Inspect Robots keeps each step's observation — including camera frames — in the per-trial record. Pass store_frames=True to eval() so frames go to disk side-cars instead of RAM. (Per-trial records are released after each scene is scored, so there is no cross-trial accumulation regardless.)

  • Skip rendering you don't need. If your scorer is state/oracle based, build the embodiment with cameras=() to avoid allocating images at all.

The adapter never stores tensors on self, and copies observations off Isaac's reused buffers (.astype), so a step loop holds no growing references — a tracemalloc regression test asserts flat RAM over thousands of steps.

Develop / test

The test suite runs without Isaac (it checks spaces, semantics, protocol conformance, compatibility, and registry wiring):

pip install -e ".[dev]"
pytest -q

License

MIT.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

inspect_robots_isaacsim-0.1.0.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inspect_robots_isaacsim-0.1.0-py3-none-any.whl (9.8 kB view details)

Uploaded Python 3

File details

Details for the file inspect_robots_isaacsim-0.1.0.tar.gz.

File metadata

  • Download URL: inspect_robots_isaacsim-0.1.0.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for inspect_robots_isaacsim-0.1.0.tar.gz
Algorithm Hash digest
SHA256 896026e3d3e9af1da736baf72a5e71a5a3ad00dbd1d1bcfb962e268757c9abc3
MD5 1ac569dc72c37f0f63c8b792a258fb93
BLAKE2b-256 ffa341a1fb705d4f1f713419bbe10d74348ad165dfbc01202c9e19823941ebd5

See more details on using hashes here.

Provenance

The following attestation bundles were made for inspect_robots_isaacsim-0.1.0.tar.gz:

Publisher: release.yml on robocurve/inspect-robots

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file inspect_robots_isaacsim-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for inspect_robots_isaacsim-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb7f00416fa972bd84814c827c98787f9131d45f052b9e48b80e8bf7fc3495c8
MD5 05636f5dc1a892641345bd9934acb3f0
BLAKE2b-256 bbec36b253957a9b83787914094b4fa6465c38351155cde41d181ecf42747829

See more details on using hashes here.

Provenance

The following attestation bundles were made for inspect_robots_isaacsim-0.1.0-py3-none-any.whl:

Publisher: release.yml on robocurve/inspect-robots

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page