exoskeleton/code/test/test_master_mujoco.py

44 lines
1.2 KiB
Python

"""Headless smoke test for the canonical master MuJoCo model.
This file used to launch an interactive viewer at import time, which made test
discovery block or fail depending on the current working directory.
"""
from __future__ import annotations
import unittest
from pathlib import Path
import mujoco
CONFIG_ROOT = Path(__file__).resolve().parents[1] / "config"
MASTER_MJCF = CONFIG_ROOT / "master_7dof.mjcf"
MASTER_JOINT_NAMES = (
"master_shoulder_pitch_joint",
"master_shoulder_yaw_joint",
"master_shoulder_roll_joint",
"master_elbow_flex_joint",
"master_wrist_roll_joint",
"master_wrist_yaw_joint",
"master_wrist_pitch_joint",
)
class MasterMujocoModelTest(unittest.TestCase):
def test_canonical_model_loads_headlessly(self) -> None:
model = mujoco.MjModel.from_xml_path(str(MASTER_MJCF))
self.assertEqual(model.nq, 7)
self.assertEqual(model.nv, 7)
for name in MASTER_JOINT_NAMES:
joint_id = mujoco.mj_name2id(
model,
mujoco.mjtObj.mjOBJ_JOINT,
name,
)
self.assertGreaterEqual(joint_id, 0, name)
if __name__ == "__main__":
unittest.main()