mp_yam_code / scripts /yam_probe.py
yqi19's picture
YAM bimanual task suite: env, solvers, tasks, converters
7399b6f verified
Raw
History Blame Contribute Delete
1.79 kB
"""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 # noqa: F401 (registers Template-YAM-Play-v0)
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)
# step a couple zero actions
adim = env.action_space.shape[-1]
print("[yam] action_dim:", adim, flush=True)
env.close(); app.close(); print("YAM_PROBE_OK", flush=True)