MJCF <option> 中的重力、时间步长和压缩比被接受并默认忽略,而 cone 和 condim 会发出警告

作者: omnilink-tech创建于 2026年8月27日更新于 2026年9月7日
标签enhancementP1

genesis/utils/mjcf.py 已经实现了适合此用途的规范,代码中写有了相应的说明:

# Friction features the model declares but the rigid options leave disabled parse to
# inert values; warn so their absence in the simulation is no surprise

然后对以下三个选项进行警告:mj.opt.cone vs rigid_options.friction_conegeom_condim >= 4 vs enable_torsional_friction、以及 geom_condim >= 6 vs enable_rolling_friction。三个相邻的 <option> 字段没有受到这种处理。搜索 genesis/utils/mjcf.py

cone       3 occurrences
condim     9 occurrences
gravity    0
timestep   0
impratio   0

impratio 是我首先要标记的选项,因为它已经是一级的 Genesis 选项 - genesis/options/solvers.py 定义了 impratio: PositiveFloat | None = None,文档中指出,在使用椭圆锥时将其解析为 100(在 enable_mujoco_compatibility 中为 1),否则为 1。因此,一个 MJCF 声明 impratio="10" 在加载时被接受,并被 Genesis 自身的解析默默地替换。这与您已经警告过的 opt.cone 案例相同,在相同的选项对象上,字段上一个字段。它也不是一个学术性的字段:impratio 是决定椭圆锥下是否存在夹持的唯一参数,MuJoCo Menagerie 手和夹持器故意将其设置为 1。将其中一个模型移植到 Genesis 时,用户无法获得正确的夹持,而且无法说明原因。<option gravity><option timestep> 以同样的方式未被读取和警告。为了对比,值得一提的是,因为这使得此问题不是一个项目姿态,而是一个路径上的缺陷:您的 URDF 导入器非常全面 - 它读取了 dynamics.frictiondynamics.dampinglimit.effortsafety_controller.k_velocity 并将 <mimic> 转换为等式约束。后者很值得注意,MuJoCo 自己的 URDF 解析器完全忽略了 <mimic>,因此 Genesis 在此方面领先于它。最小的更改是将现有的警告块扩展到 opt.impratioopt.gravityopt.timestepopt.integrator - 完成了您已经编写的模式,而不是导入一个模式。

内容来源: Genesis-Embodied-AI/genesis-world