MJCF <option> 中的重力、时间步长和压缩比被接受并默认忽略,而 cone 和 condim 会发出警告
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_cone、geom_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 0impratio 是我首先要标记的选项,因为它已经是一级的 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.friction、dynamics.damping、limit.effort、safety_controller.k_velocity 并将 <mimic> 转换为等式约束。后者很值得注意,MuJoCo 自己的 URDF 解析器完全忽略了 <mimic>,因此 Genesis 在此方面领先于它。最小的更改是将现有的警告块扩展到 opt.impratio、opt.gravity、opt.timestep 和 opt.integrator - 完成了您已经编写的模式,而不是导入一个模式。
内容来源: Genesis-Embodied-AI/genesis-world