Upload extract_trajectory.py with huggingface_hub
Browse files- extract_trajectory.py +43 -0
extract_trajectory.py
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import sys
|
| 2 |
+
sys.argv = ['play', '--headless']
|
| 3 |
+
from isaaclab.app import AppLauncher
|
| 4 |
+
launcher = AppLauncher({"headless": True})
|
| 5 |
+
sim_app = launcher.app
|
| 6 |
+
|
| 7 |
+
import torch
|
| 8 |
+
import json
|
| 9 |
+
import gymnasium as gym
|
| 10 |
+
import isaaclab_tasks
|
| 11 |
+
|
| 12 |
+
env = gym.make("Isaac-Humanoid-Direct-v0", cfg=None)
|
| 13 |
+
|
| 14 |
+
from isaaclab_rl.rsl_rl import RslRlVecEnvWrapper
|
| 15 |
+
env = RslRlVecEnvWrapper(env)
|
| 16 |
+
|
| 17 |
+
from rsl_rl.runners import OnPolicyRunner
|
| 18 |
+
from isaaclab_tasks.direct.humanoid.agents.rsl_rl_ppo_cfg import HumanoidPPORunnerCfg
|
| 19 |
+
|
| 20 |
+
runner_cfg = HumanoidPPORunnerCfg()
|
| 21 |
+
runner = OnPolicyRunner(env, runner_cfg.to_dict(), log_dir=None, device="cuda")
|
| 22 |
+
runner.load("/workspace/IsaacLab/logs/rsl_rl/humanoid_direct/2026-04-13_00-52-00/model_2999.pt")
|
| 23 |
+
|
| 24 |
+
policy = runner.get_inference_policy(device="cuda")
|
| 25 |
+
obs, _ = env.get_observations()
|
| 26 |
+
|
| 27 |
+
trajectory = []
|
| 28 |
+
for step in range(500):
|
| 29 |
+
with torch.no_grad():
|
| 30 |
+
actions = policy(obs)
|
| 31 |
+
obs, _, dones, infos = env.step(actions)
|
| 32 |
+
qpos = env.unwrapped.scene["robot"].data.joint_pos[0].cpu().numpy().tolist()
|
| 33 |
+
qvel = env.unwrapped.scene["robot"].data.joint_vel[0].cpu().numpy().tolist()
|
| 34 |
+
root_pos = env.unwrapped.scene["robot"].data.root_pos_w[0].cpu().numpy().tolist()
|
| 35 |
+
root_quat = env.unwrapped.scene["robot"].data.root_quat_w[0].cpu().numpy().tolist()
|
| 36 |
+
trajectory.append({"step": step, "joint_pos": qpos, "joint_vel": qvel, "root_pos": root_pos, "root_quat": root_quat, "actions": actions[0].cpu().numpy().tolist()})
|
| 37 |
+
if step % 100 == 0:
|
| 38 |
+
print(f"Step {step}/500 - root_pos: {root_pos[:3]}")
|
| 39 |
+
|
| 40 |
+
with open("/workspace/isaac_trajectory.json", "w") as f:
|
| 41 |
+
json.dump(trajectory, f)
|
| 42 |
+
print(f"Saved {len(trajectory)} steps to /workspace/isaac_trajectory.json")
|
| 43 |
+
sim_app.close()
|