import gymnasium as gym import pytest import sapien import torch from mani_skill.envs.tasks.tabletop.pick_cube import PickCubeEnv from mani_skill.utils.structs.pose import Pose def test_actor_pose(): env = PickCubeEnv() env.cube.pose = sapien.Pose(p=[0.2, 0.3, 0.5]) assert torch.isclose(env.cube.pose.p[0], torch.tensor([0.2, 0.3, 0.5])).all() env.cube.pose = torch.tensor([0.4, 0.5, 0.6, 1, 0, 0, 0]) assert torch.isclose(env.cube.pose.p[0], torch.tensor([0.4, 0.5, 0.6])).all() assert torch.isclose(env.cube.pose.q[0], torch.tensor([1.0, 0, 0, 0])).all() env.cube.pose = Pose.create(torch.tensor([0.2, 0.5, 0.6, 1, 0, 0, 0])) assert torch.isclose(env.cube.pose.p[0], torch.tensor([0.2, 0.5, 0.6])).all() assert torch.isclose(env.cube.pose.q[0], torch.tensor([1.0, 0, 0, 0])).all() @pytest.mark.gpu_sim def test_actor_pose_gpu(): env = PickCubeEnv(num_envs=4) with torch.device(env.device): env.cube.pose = sapien.Pose(p=[0.2, 0.3, 0.5]) assert torch.isclose(env.cube.pose.p[0], torch.tensor([0.2, 0.3, 0.5])).all() env.cube.pose = torch.tensor([0.4, 0.5, 0.6, 1, 0, 0, 0]) assert torch.isclose(env.cube.pose.p[0], torch.tensor([0.4, 0.5, 0.6])).all() assert torch.isclose(env.cube.pose.q[0], torch.tensor([1.0, 0, 0, 0])).all() env.cube.pose = Pose.create(torch.tensor([0.2, 0.5, 0.6, 1, 0, 0, 0])) for i in range(4): assert torch.isclose( env.cube.pose.p[i], torch.tensor([0.2, 0.5, 0.6]) ).all() assert torch.isclose(env.cube.pose.q[i], torch.tensor([1.0, 0, 0, 0])).all()