env-assembly-bench

EnvHub package for the NIST taskboard assembly benchmark on Isaac Lab Arena.

Load with one line (executes Hub code — pin a commit in production):

from lerobot.envs import make_env
from lerobot.envs.configs import IsaaclabArenaEnv

cfg = IsaaclabArenaEnv(
    hub_path="lukasskellijs/env_assembly_bench",
    environment="assembly_bench",
    embodiment="droid_abs_joint_pos_softmimic",
    headless=True,
    enable_cameras=True,
    state_keys="joint_pos,gripper_pos,eef_pos,eef_quat",
    camera_keys="front_cam_rgb,wrist_camera_rgb",
    state_dim=15,
    action_dim=8,
    enable_pinocchio=False,
    kwargs={"variant": "peg_round_M1_loose", "reward": "none"},
)
suites = make_env(cfg, n_envs=1, trust_remote_code=True)
env = next(iter(next(iter(suites.values())).values()))

cfg.task is the natural-language prompt (LeRobot convention). The Arena variant id is kwargs.variant (for example peg_round_M1_loose).

Prerequisites

Same stack as Isaac Lab Arena + EnvHub:

  • NVIDIA GPU, Isaac Sim 6.x, Isaac Lab + Isaac Lab Arena installed locally
  • pip install -r requirements.txt (Hub glue only)
  • Optional: pip install -e . so assembly_bench imports without a Hub snapshot

EULA (once per shell):

export ACCEPT_EULA=Y PRIVACY_CONSENT=Y OMNI_KIT_ACCEPT_EULA=YES

Variants

15 loose-clearance tasks plus debug (apple→bowl). Peg sizes use suite codes S/M1/M2/L (4/8/12/16 mm):

family examples
peg insert peg_round_M1_loose, peg_square_L_loose
gear mesh gear_small, gear_medium, gear_large
nut thread nut_M8, nut_M12, nut_M16, nut_M20

Default embodiment: droid_abs_joint_pos_softmimic (Franka + Robotiq, 8-D absolute joint targets, DROID cameras).

LeRobot eval

lerobot-eval \
  --env.type=isaaclab_arena \
  --env.hub_path=lukasskellijs/env_assembly_bench \
  --env.environment=assembly_bench \
  --env.embodiment=droid_abs_joint_pos_softmimic \
  --env.headless=true \
  --env.enable_cameras=true \
  --env.state_keys=joint_pos,gripper_pos,eef_pos,eef_quat \
  --env.camera_keys=front_cam_rgb,wrist_camera_rgb \
  --env.state_dim=15 \
  --env.action_dim=8 \
  --env.enable_pinocchio=false \
  --env.kwargs='{"variant": "peg_round_M1_loose"}' \
  --trust_remote_code=True \
  --eval.batch_size=1 \
  --policy.path=<your-policy>

HUD

hud_env.py is the standard HUD robot entry: it snapshot-downloads this Hub repo, calls env.py:make_env, and exposes the sim via env.gym(...).

OMNI_KIT_ACCEPT_EULA=YES ACCEPT_EULA=Y PRIVACY_CONSENT=Y \
  python -m hud.environment.server hud_env.py --port 8765

Point a RobotAgent / Runtime("tcp://127.0.0.1:8765") at that port as in the HUD robots guide.

Layout

env_assembly_bench/
├── env.py                  # EnvHub make_env
├── hud_env.py              # HUD Environment (Hub download path)
├── isaaclab_env_wrapper.py
├── example_envs.yaml
├── contract.json           # HUD obs/action contract
└── assembly_bench/         # Arena package + USD/HDR assets

Security

trust_remote_code=True runs Hub Python. Review env.py, pin lukasskellijs/env_assembly_bench@<commit>, and prefer this org only if you trust it.

Downloads last month

-

Downloads are not tracked for this model. How to track
Video Preview
loading