Skip to content

feat(isaacsim):通过 EnvCfg 后端接线暴露 UniSim 的 PhysX solver 旋钮 #1617

Description

@lemon-star608

背景

UniSim 1.7.x 为 IsaacSim 后端交付了有界、带读回验证的 PhysX solver 配置(unilabsim/unisim#251、#259):unisim.create_backend("isaacsim", ...) 接受 isaacsim_solver_position_iteration_count、isaacsim_solver_velocity_iteration_count、isaacsim_bounce_threshold_velocity、isaacsim_contact_offset(worker profile 另有 rest_offset/max_depenetration_velocity),映射到 PhysX 场景后由 host 严格比对请求值与引擎读回值。

缺口

在 UniLab 标准路径(registry.make → make_manager_based_rl_env → create_backend)上,这些旋钮没有任何通道能到达后端:

  • unilab/base/backend_factory.py::env_backend_kwargs(main @ 3a3576a,25-60 行)负责把 EnvCfg 的后端旋钮翻译成 UniSim 适配器选项,但 EnvCfg 没有 IsaacSim solver 配置的字段,该函数也不转发;
  • 任务 owner(Hydra YAML → EnvCfg)因此无法声明求解器表,后端只能静默使用 PhysX 默认值。

用例

我们在把 SimToolReal teacher 任务(KUKA iiwa14 + SHARPA 手,1200 工具变体池)迁移到 UniLab + UniSim(MJCF 资产 + mapped entity 场景)。原训练钉了一张特定的 PhysX 求解器表(position iterations 8、velocity iterations 0、bounce threshold 0.2、contact offset 0.002、rest offset 0.0、max depenetration velocity 1000)。训练等价性要求这些值能经公共配置路径到达后端,而不是依赖默认值。

提案

EnvCfg 增加 isaacsim_solver_* 字段(沿用现有按后端命名的旋钮惯例),并在 env_backend_kwargs 中转发。UniSim factory 本就接受同名 kwargs,转发是机械工作;我们乐意贡献这个 PR。

相关(独立、不阻塞我们)

unilab/base/reset_state.py:1114-1121 在 mapped 场景拒绝 DR 写("mapped scene DR writes need a public entity transaction"),使 unilabsim/unisim#248 交付的 reset-time 模型 DR 从 Manager-Based 事件项完全不可达。我们暂不需要(增益/摩擦已烘焙进 MJCF 资产),但值得为有此需求的任务登记跟踪。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions