You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
审计:unisim 各物理后端的 Domain Randomization(DR)支持矩阵与差距
背景与方法
UniLab 的 DR 生命周期由 Manager-Based event terms 通过
SimBackend.get_dr_capabilities()协商(不支持的能力 fail closed)。本文对 unisim 当前源码中 9 个已声明适配器的 DR 能力做了一次源码级审计,依据为:get_dr_capabilities()实现(权威实例声明,见src/unisim/backend/<engine>/backend.py)unisim.dr.types的 term 目录:16 个 reset terms、5 个内置 interval terms(push / body_linear_velocity_delta / body_angular_velocity_delta / body_force / body_torque,另支持自定义 op)、fixed variants(same_layout/uniform_public_layout)、per-env playbackunisim.support的静态语义清单(entity.multiple等特性中带条件的 DR 描述)注意:声明 ≠ 运行时验证。表中为适配器自我声明的支持面;带
*的条目依赖实例状态或引擎运行时标志。Reset DR(16 项,重置时按环境写模型参数)
gravity(PhysX 重力是 sim 全局)、body_iquat(PhysX 由惯性张量推导主轴系)、geom_size/geom_solref/geom_solimp(PhysX 无对应通道)均 fail closed;非 mapped 路径为空gravity(sim 全局)、dof_damping(PhysX 关节阻尼仅 drive 内)、base_mass_delta/base_com_offset(多 root 场景无单一 base)、geom_size/solref/solimp;legacy 裸 MJCF 路径为空geom_friction不支持(Genesis 仅有 per-env 比例 API,无绝对值接口);无gravity;非 portable 模式退化为 4 项(body_mass, base_mass, kp, kd)dof_damping在 Motrix 0.8.2 无公开运行时接口,fail closed;其余 term 不支持。非 portable 模式另有 kp/kd*、geom_friction*、gravity*(均依赖运行时标志)(
subprocess_ipc基类与fake后端同样声明为空。)Interval DR(运行中按周期施加)
(mujoco/mjwarp 的 push 与速度增量依赖实例内 push body id / root qvel 映射是否可用。)
Fixed variants 与 per-env playback
VariantPack)materialization.py已实现variant_plan物化(受 Genesis balanced mapping 约束),但get_dr_capabilities()未设置supports_fixed_variants值得讨论的差距与风险
PushBySettingVelocity依赖 intervalbody_linear_velocity_delta/body_angular_velocity_delta,目前只有 mujoco(两项)和 mjwarp(仅线速度)声明支持;PhysX 系(isaacgym/isaacsim)、genesis、motrix、drake 全部 fail closed。这类"推扰动"在多数后端是否应以 body_force/impulse 形式降级实现,还是保持 fail closed?RandomizePhysicsSceneGravity(gravity)在 PhysX 系与 genesis 不可用(sim 全局参数)。跨后端任务若想随机化重力,是否需要契约层的语义让步(如 episode 级而非 env 级),还是在任务配置中按后端白名单启用?_require_fixed_variant_support()(manager_based_rl_env.py)会在 env 构建时直接拒绝。这是声明遗漏还是有意 fail closed?unisim.capabilities的证据体系区分 source/runtime。是否值得为 DR terms 建立统一的跨后端 effect-test 矩阵(在具备运行时的环境中跑 round-trip 验证),让 UniLab 的能力协商可以引用已验证证据而非纯声明?期望结论
*的条件项与 genesis 的 variant 声明);—— 由源码审计自动整理(unisim @ 当前 main),具体实现位置:
src/unisim/backend/*/backend.py中各get_dr_capabilities()。All reactions