mujoco test

测试 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

这应该会直接打开一个图形窗口显示人形机器人。

预期结果

如果一切正常,你应该看到:

  1. 基础测试: 成功导入 mujoco 包,显示版本号

  2. 模型加载: 能够加载 XML 模型文件

  3. 物理模拟: 能够进行物理计算

  4. 图形显示: 能够打开查看器窗口(如果测试了查看器)

常见问题解决

如果测试失败:

  1. 找不到模型文件:

    bash

# 检查模型文件是否存在
ls ~/.mujoco/mujoco/model/

权限问题:

bash

# 给 MuJoCo 二进制文件执行权限
chmod +x ~/.mujoco/mujoco/bin/*

库加载错误:

bash

# 检查环境变量
echo $LD_LIBRARY_PATH
echo $MUJOCO_PY_MUJOCO_PATH

请运行这些测试并告诉我结果,如果遇到任何错误,把错误信息贴出来,我可以帮你解决!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值