Xinyi0214's picture
Upload UWLab (code, datasets, checkpoints, eval outputs)
0037d53 verified
Raw
History Blame Contribute Delete
2.69 kB
# probe_pose.py — 一次性探针:打印 cube 复位后的真实位姿 + 确认 success 张量
import argparse, sys
from isaaclab.app import AppLauncher
import cli_args # isort: skip
parser = argparse.ArgumentParser()
parser.add_argument("--num_envs", type=int, default=4)
parser.add_argument("--task", type=str, default=None)
parser.add_argument("--agent", type=str, default="rsl_rl_cfg_entry_point")
parser.add_argument("--settle_steps", type=int, default=30, help="reset 后空走几步让物体落定")
cli_args.add_rsl_rl_args(parser)
AppLauncher.add_app_launcher_args(parser)
args_cli, hydra_args = parser.parse_known_args()
sys.argv = [sys.argv[0]] + hydra_args
app_launcher = AppLauncher(args_cli)
simulation_app = app_launcher.app
import gymnasium as gym
import torch
from isaaclab.envs import ManagerBasedRLEnvCfg
import isaaclab_tasks # noqa: F401
import uwlab_tasks # noqa: F401
from uwlab_tasks.utils.hydra import hydra_task_config
@hydra_task_config(args_cli.task, args_cli.agent)
def main(env_cfg: ManagerBasedRLEnvCfg, agent_cfg):
env_cfg.scene.num_envs = args_cli.num_envs
env = gym.make(args_cli.task, cfg=env_cfg)
u = env.unwrapped
# 动作维度(用零动作空走,让物体在物理下落定)
act_dim = u.action_manager.total_action_dim
u.reset()
zeros = torch.zeros((u.num_envs, act_dim), device=u.device)
for _ in range(args_cli.settle_steps):
u.step(zeros)
origins = u.scene.env_origins # [N,3] 每个 env 的世界原点
ins = u.scene["insertive_object"].data # 要叠的 cube
rec = u.scene["receptive_object"].data # 目标 cube
torch.set_printoptions(precision=4, sci_mode=False)
print("\n==================== POSE PROBE ====================")
print("env_origins (world):\n", origins)
print("\ninsertive_object root_pos_w (world):\n", ins.root_pos_w)
print("insertive_object pos REL env_origin:\n", ins.root_pos_w - origins)
print("insertive_object root_quat_w (wxyz):\n", ins.root_quat_w)
print("\nreceptive_object root_pos_w (world):\n", rec.root_pos_w)
print("receptive_object pos REL env_origin:\n", rec.root_pos_w - origins)
print("receptive_object root_quat_w (wxyz):\n", rec.root_quat_w)
# 确认 success 张量可取
pc = u.reward_manager.get_term_cfg("progress_context").func
print("\nsuccess tensor:", pc.success.shape, pc.success.dtype, "->", pc.success)
print("continuous_success_counter ->", pc.continuous_success_counter)
print("====================================================\n")
env.close()
if __name__ == "__main__":
main()
simulation_app.close()