Skip to content

umbrella: 多物理后端引入总览 #1341

Description

@TATP-233

Owner summary

本 issue 是 UniLab 引入多个物理后端的总体 umbrella,用于统一记录后端版图、契约边界和已有 roadmap 的关系。所有新后端都必须遵循现有 SimBackendNpEnvState、Hydra/registry、env/runner/learner lifecycle 和 checkpoint 契约。本 issue 不承载具体实现,不改变已有 roadmap 的范围,也不直接授权开发;各后端的代码、配置、测试、文档和维护责任仍由各自 issue 定义。长期最终目标是在统一契约下比较不同物理引擎的表现。

后端版图

层级 后端 UniLab 标识 进程模型 关联 issue / 状态
已有后端 MuJoCo mujoco in-process 已在仓库中使用
已有后端 MotrixSim motrix in-process 已在仓库中使用
已有后端 Drake drake in-process 已在仓库中使用
已有后端 MJWarp mjwarp in-process 已在仓库中使用
已有后端 IsaacGym isaacgym out-of-process worker(shm + pipe) 已在仓库中使用;roadmap #1332 及 child #1334#1336#1337 已全部关闭
已提出 Newton newton in-process(提案) #1338
已提出 Genesis genesis 待 Child 1 验证(默认 in-process 薄 adapter) #1339
已提出 IsaacSim isaacsim out-of-process worker(与 isaacgym 同范式,共用共享通信层) #1369
后续候选 Motrix-GPU 待定 待定 尚未单独立项

统一接入边界

新后端通过 SimBackendcreate_backend()、registry 和 task=<task>/<backend> owner YAML 接入。training.sim_backend 仍只是 owner YAML 的身份字段;env、manager 和 runner 不调用后端私有对象;asset 与 metadata 只在冷路径处理;不支持的能力在最近边界显式 fail-closed。

本 issue 不维护实现 TODO,不修改代码、配置或公共 contract,不新增 task、算法或 execution path。Motrix-GPU 当前仅作为后续候选记录,不在此处创建实现 issue。

共享 subprocess 通信层(isaacgym / isaacsim 共用)

#1369 已确认:IsaacSim 因 pip wheel 仅支持 Python 3.11,无法装入主环境,采用与 isaacgym 相同的 out-of-process worker 进程模型。两个后端共有的通用子进程通信能力——pipe 控制面、multiprocessing.shared_memory 数据面 slot 布局与坐标系/列序转换约定、worker lifecycle(启动预热、异常退出诊断)、runtime 依赖发现(UNILAB_<BACKEND>_HOME 模式)——应从 isaacgym 的现有实现(src/unilab/base/backend/isaacgym/worker.py / protocol.py / dependencies.py)中拆分为一层共享设施,由 isaacgym 和 isaacsim 两个后端共同消费,不允许出现第二份平行维护的协议副本。

依赖关系(开工顺序约束):

  1. 共享层拆分先行:作为 roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的新增 child(Child 2a)单独交付——从 isaacgym 后端提取通用 worker/shm 协议为共享模块,并把 isaacgym 迁移到该共享层。此 child 对 isaacgym 只做等价重构:不改 SimBackend 语义、不改 worker 线协议行为、不改配置与训练路径;验收以 backend conformance 测试与 make test-all 无回归为准。
  2. isaacsim 后端实现依赖拆分落地roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的 IsaacSimBackend 实现 child(Child 2b)必须在 Child 2a 合入后开工,直接基于共享层实现 isaacsim 侧的 client/worker 特化(Kit/SimulationApp lifecycle、PhysX 读写、坐标系适配),不得复制协议代码。
  3. isaacgym 既有 roadmap(roadmap: IsaacGym 后端接入的可行性分析与方案建议 #1332)的 scope 与归属不变;共享层拆分由 isaacsim 接入需求驱动,故归入 roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的 child 序列并在两处互相链接。

该共享层属于新增的长期维护责任(跨后端共享 execution infrastructure),按治理规则在此显式声明,由 maintainer 确认后随 #1369 各 child 逐一授权。

Issue 关系与治理

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions