测试 MuJoCo 是否安装成功。这里提供几种测试方法,从简单到复杂。
方法一:基础测试(检查导入)
首先激活你的 Conda 环境(如果使用了的话):
bash
conda activate mujoco_env
然后运行 Python 测试:
python
# 测试 1: 基本导入测试
python -c "import mujoco; print('MuJoCo 版本:', mujoco.__version__)"
如果成功,你会看到类似:
text
MuJoCo 版本: 3.1.4
方法二:查看器测试
创建一个测试脚本 test_mujoco.py:
python
import mujoco
import mujoco.viewer
import os
def test_basic():
print("1. 测试基本功能...")
# MuJoCo 安装路径
mj_path = os.path.expanduser('~/.mujoco/mujoco')
model_path = os.path.join(mj_path, 'model/humanoid.xml')
# 检查文件是否存在
if not os.path.exists(model_path):
print(f"错误: 找不到模型文件 {model_path}")
return False
print(f"找到模型文件: {model_path}")
# 加载模型
try:
model = mujoco.MjModel.from_xml_path(model_path)
data = mujoco.MjData(model)
print("✓ 模型加载成功")
except Exception as e:
print(f"✗ 模型加载失败: {e}")
return False
# 测试物理模拟
try:
for i in range(10):
mujoco.mj_step(model, data)
print("✓ 物理模拟测试通过")
except Exception as e:
print(f"✗ 物理模拟失败: {e}")
return False
return True
def test_viewer():
print("\n2. 测试查看器...")
mj_path = os.path.expanduser('~/.mujoco/mujoco')
model_path = os.path.join(mj_path, 'model/humanoid.xml')
try:
model = mujoco.MjModel.from_xml_path(model_path)
data = mujoco.MjData(model)
print("正在启动查看器...")
print("注意: 查看器启动可能需要几秒钟")
print("如果窗口成功打开并显示机器人,请关闭窗口继续")
with mujoco.viewer.launch_passive(model, data) as viewer:
# 简单模拟循环
for i in range(1000):
if not viewer.is_running:
break
mujoco.mj_step(model, data)
viewer.sync()
print("✓ 查看器测试通过")
return True
except Exception as e:
print(f"✗ 查看器测试失败: {e}")
return False
if __name__ == "__main__":
print("开始 MuJoCo 测试...")
print("=" * 50)
if test_basic():
print("\n基本功能测试: ✓ 通过")
else:
print("\n基本功能测试: ✗ 失败")
exit(1)
# 询问是否测试查看器
response = input("\n是否测试图形查看器?(y/n): ")
if response.lower() in ['y', 'yes']:
test_viewer()
print("\n" + "=" * 50)
print("MuJoCo 测试完成!")
运行测试脚本:
bash
python test_mujoco.py
方法三:简单模拟测试
创建一个更简单的测试文件 simple_test.py:
python
import mujoco
import os
# 设置模型路径
mj_path = os.path.expanduser('~/.mujoco/mujoco')
xml_path = os.path.join(mj_path, 'model/humanoid.xml')
print("加载模型:", xml_path)
# 加载模型和数据
model = mujoco.MjModel.from_xml_path(xml_path)
data = mujoco.MjData(model)
print("模型加载成功!")
print("关节数量:", model.njnt)
print("物体数量:", model.nbody)
print("自由度:", model.nu)
# 运行简单模拟
print("\n运行模拟...")
for i in range(100):
mujoco.mj_step(model, data)
if i % 20 == 0:
print(f"步骤 {i}: 位置 = {data.qpos[0]:.3f}")
print("模拟完成!")
运行:
bash
python simple_test.py
方法四:测试不同的模型
创建 test_models.py 来测试多个模型:
python
import mujoco
import os
def test_model(model_name):
mj_path = os.path.expanduser('~/.mujoco/mujoco')
model_path = os.path.join(mj_path, f'model/{model_name}')
if not os.path.exists(model_path):
print(f"✗ 找不到模型: {model_name}")
return False
try:
model = mujoco.MjModel.from_xml_path(model_path)
data = mujoco.MjData(model)
# 简单模拟测试
for i in range(10):
mujoco.mj_step(model, data)
print(f"✓ {model_name}: 测试通过 (自由度: {model.nu})")
return True
except Exception as e:
print(f"✗ {model_name}: 测试失败 - {e}")
return False
# 测试多个模型
models = [
"humanoid.xml",
"ant.xml",
"hopper.xml",
"half_cheetah.xml",
"cartpole.xml"
]
print("测试 MuJoCo 内置模型...")
print("=" * 40)
for model in models:
test_model(model)
方法五:命令行测试 MuJoCo 本身
你也可以直接测试 MuJoCo 的可执行文件:
bash
# 进入 MuJoCo bin 目录 cd ~/.mujoco/mujoco/bin # 运行 simulate 可执行文件 ./simulate ../model/humanoid.xml
这应该会直接打开一个图形窗口显示人形机器人。
预期结果
如果一切正常,你应该看到:
-
基础测试: 成功导入 mujoco 包,显示版本号
-
模型加载: 能够加载 XML 模型文件
-
物理模拟: 能够进行物理计算
-
图形显示: 能够打开查看器窗口(如果测试了查看器)
常见问题解决
如果测试失败:
-
找不到模型文件:
bash
# 检查模型文件是否存在 ls ~/.mujoco/mujoco/model/
权限问题:
bash
# 给 MuJoCo 二进制文件执行权限 chmod +x ~/.mujoco/mujoco/bin/*
库加载错误:
bash
# 检查环境变量 echo $LD_LIBRARY_PATH echo $MUJOCO_PY_MUJOCO_PATH
请运行这些测试并告诉我结果,如果遇到任何错误,把错误信息贴出来,我可以帮你解决!
6110

被折叠的 条评论
为什么被折叠?



