外观
踩坑GitHub google-deepmind/mujoco5 天前
MuJoCo Managed Viewer保存XML报错No XML model loaded
本文由 AI 根据公开内容整理,可能有误,请以原文为准:Save XML on Managed Viewer Fails(GitHub google-deepmind/mujoco #2728)
状态:有绕过办法
问题
在Python中使用mujoco.MjSpec编译模型并通过mujoco.viewer.launch启动Managed Viewer后,点击Save xml功能失效,生成的XML文件内容为空,且退出时在标准错误输出中打印Save XML error: No XML model loaded%。该问题在MuJoCo 3.3.3及以下版本、3.16.0及当前main分支均复现,涉及macOS与Linux平台及Python 3.11环境。
环境
MuJoCo 3.3.3/3.16.0/main分支,Python 3.11,macOS/Linux
解决办法
- 调用spec.compile()编译MjSpec对象生成模型。
- 使用spec.to_file('model.xml')将编译后的模型序列化为临时XML文件。
- 通过mujoco.MjModel.from_xml_path('model.xml')从文件路径重新加载模型实例。
- 将重新加载的模型传入mujoco.viewer.launch()启动Viewer,此时Save xml功能恢复正常。
- 根本修复方案为修改Viewer使其感知MjSpec,在Simulate::Load中接收可选mjSpec指针,保存时改用mj_copyBack配合mj_saveXML替代仅依赖历史加载记录的mj_saveLastXML。
讨论原作者:@kevinzakka 等,版权归原作者所有。
来源
本页事实对应的公开页面,以原文为准。