Owner summary
本 issue 是 UniLab 引入多个物理后端的总体 umbrella,用于统一记录后端版图、契约边界和已有 roadmap 的关系。所有新后端都必须遵循现有 SimBackend、NpEnvState、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
待定
待定
尚未单独立项
统一接入边界
新后端通过 SimBackend、create_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 两个后端共同消费,不允许出现第二份平行维护的协议副本。
依赖关系(开工顺序约束):
共享层拆分先行 :作为 roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的新增 child(Child 2a)单独交付——从 isaacgym 后端提取通用 worker/shm 协议为共享模块,并把 isaacgym 迁移到该共享层。此 child 对 isaacgym 只做等价重构 :不改 SimBackend 语义、不改 worker 线协议行为、不改配置与训练路径;验收以 backend conformance 测试与 make test-all 无回归为准。
isaacsim 后端实现依赖拆分落地 :roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的 IsaacSimBackend 实现 child(Child 2b)必须在 Child 2a 合入后开工,直接基于共享层实现 isaacsim 侧的 client/worker 特化(Kit/SimulationApp lifecycle、PhysX 读写、坐标系适配),不得复制协议代码。
isaacgym 既有 roadmap(roadmap: IsaacGym 后端接入的可行性分析与方案建议 #1332 )的 scope 与归属不变;共享层拆分由 isaacsim 接入需求驱动,故归入 roadmap: IsaacSim 物理后端接入(IsaacLab 运行时,out-of-process worker) #1369 的 child 序列并在两处互相链接。
该共享层属于新增的长期维护责任(跨后端共享 execution infrastructure),按治理规则在此显式声明,由 maintainer 确认后随 #1369 各 child 逐一授权。
Issue 关系与治理
Owner summary
本 issue 是 UniLab 引入多个物理后端的总体 umbrella,用于统一记录后端版图、契约边界和已有 roadmap 的关系。所有新后端都必须遵循现有
SimBackend、NpEnvState、Hydra/registry、env/runner/learner lifecycle 和 checkpoint 契约。本 issue 不承载具体实现,不改变已有 roadmap 的范围,也不直接授权开发;各后端的代码、配置、测试、文档和维护责任仍由各自 issue 定义。长期最终目标是在统一契约下比较不同物理引擎的表现。后端版图
mujocomotrixdrakemjwarpisaacgymnewtongenesisisaacsim统一接入边界
新后端通过
SimBackend、create_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 两个后端共同消费,不允许出现第二份平行维护的协议副本。依赖关系(开工顺序约束):
SimBackend语义、不改 worker 线协议行为、不改配置与训练路径;验收以 backend conformance 测试与make test-all无回归为准。该共享层属于新增的长期维护责任(跨后端共享 execution infrastructure),按治理规则在此显式声明,由 maintainer 确认后随 #1369 各 child 逐一授权。
Issue 关系与治理
dev/issue-1042-manager-based-api;提案时 base head:59d82518。make test-all。