| """Probe the YAM bimanual env: load, reset, report action space + robot/object poses.""" |
| import argparse, sys, os |
| from isaaclab.app import AppLauncher |
| parser = argparse.ArgumentParser() |
| AppLauncher.add_app_launcher_args(parser) |
| args = parser.parse_args() |
| args.headless = True; args.enable_cameras = True |
| app = AppLauncher(args).app |
|
|
| import numpy as np, torch, gymnasium as gym |
| REPO = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) |
| sys.path.insert(0, os.path.join(REPO, "source")) |
| import bimanual.tasks.manager_based.yam |
| from isaaclab_tasks.utils import parse_env_cfg |
|
|
| TASK = "Template-YAM-Play-v0" |
| cfg = parse_env_cfg(TASK, device="cuda:0", num_envs=1) |
| print("[yam] making env ...", flush=True) |
| env = gym.make(TASK, cfg=cfg) |
| u = env.unwrapped |
| obs, _ = env.reset() |
| print("[yam] action_space:", env.action_space, flush=True) |
| print("[yam] scene keys:", list(u.scene.keys()), flush=True) |
| origin = u.scene.env_origins[0].detach().cpu().numpy() |
| for name in ["left_robot", "right_robot"]: |
| if name in u.scene.articulations: |
| a = u.scene.articulations[name] |
| p = a.data.root_pos_w[0].detach().cpu().numpy() - origin |
| bns = list(a.data.body_names) |
| print(f"[yam] {name} base(env-local)={np.round(p,3)} bodies={bns}", flush=True) |
| print(f"[yam] joints={list(a.data.joint_names)}", flush=True) |
| for name in ["apple", "grape", "cart"]: |
| if name in u.scene.rigid_objects: |
| p = u.scene.rigid_objects[name].data.root_pos_w[0].detach().cpu().numpy() - origin |
| print(f"[yam] {name}(env-local)={np.round(p,3)}", flush=True) |
| |
| adim = env.action_space.shape[-1] |
| print("[yam] action_dim:", adim, flush=True) |
| env.close(); app.close(); print("YAM_PROBE_OK", flush=True) |
|
|