File size: 1,791 Bytes
7399b6f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"""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)