Skip to content

roadmap: 对照 mjlab 补齐 UniLab MBA 能力缺口(curriculum / DR / 通用 term 库),MicroDuck 作验收 example #1389

Description

@TATP-233

Roadmap: 对照 mjlab 补齐 UniLab MBA 能力缺口(curriculum / DR / 通用 term 库)

目标

UniLab MBA 框架骨架移植自 mjlab v1.6.0(src/unilab/managers/ 同构,9 个 manager、term 注册、obs 管线一致),差距不在框架机制,而在 term 库覆盖面后端消费能力。本 roadmap 对照 mjlab(本地 /home/user/ws/simulator/mjlab)系统性补齐:

  1. 主线 — MBA 框架层能力缺口(与物理后端无关):通用 curriculum 引擎、通用 locomotion reward/termination term 库、event/DR term 覆盖面、观测真实化 term。
  2. 独立切片 — unilab-mjwarp 后端 DR 消费能力:contract 层已完备,缺的是后端消费 payload 的写入路径(mjlab 已在 MuJoCo Warp 上证明可行)。
  3. 验收 example — MicroDuck velocity 配方:用补齐后的能力以声明式配置复现 legacy microduck_rl(mjlab 1.3.0 + rsl_rl,已实机部署)配方,检验能力是否过关。microduck 适配是顺带的验收手段,不是本 roadmap 的目标本身

非理想执行器(DC motor / BAM 类 + action delay)体量大,单独立项,不在本 roadmap 内。

declared base branch:dev/issue-1042-manager-based-api(上层 MBA roadmap 集成分支)。理由:整个 MBA 运行时(src/unilab/managers/)与 MicroDuck 移植(#1368)均只存在于该集成分支(领先 main 231 commits,未合入 main),本 roadmap 全部切片都建立在 MBA 运行时之上。

背景与证据

移植对照基线:legacy microduck_rl/home/user/ws/simulator/microduck_rlmicroduck_velocity_env_cfg.py + tasks/mdp.py + robot/microduck_constants.py);UniLab 侧 #1368 已完成 MicroDuck MBA 移植(PPO/SAC × mujoco/mjwarp 可训练)。逐项对照后确认的能力缺口:

MBA 框架层(主线)

  • 通用 curriculum 引擎缺失:mjlab 有 reward_curriculum/termination_curriculum(stage 表按步数覆盖 live term cfg 的 weight/params);UniLab 无任何通用 ramp 基建,仅 g1 私有 G1PenaltyCurriculum。legacy 的 5 条阶梯课表无处落地。
  • 通用 locomotion term 库薄feet_air_time(窗口计数形态)/feet_clearance/feet_swing_height/feet_slip/angular_momentum_penalty/joint_pos_limits/variable_posture/nan_detection 终止,mjlab 全部内置,UniLab 缺失或各 task 私有重复。
  • event/DR term 缺口:无 apply_body_impulse/外力力矩 term(backend apply_body_force 能力在、term 缺);push_by_setting_velocity 只支持线速度(角速度 fail-closed);model-field 写入仅 mode=reset、min_step_count_between_reset>0 不可用;无 pseudo_inertia 物理一致惯量随机化。
  • 观测真实化:obs 管线(noise 加/乘、delay lag/hold_prob/update_period、history、多 group 特权观测、NaN policy)已完整,缺通用 IMU 安装错位 obs term(legacy:每 env 恒定 ≤6° 随机轴旋转,gyro/gravity 共用四元数)。

unilab-mjwarp 后端层(独立)

  • DomainRandomizationCapabilities() 全空(src/unilab/base/backend/mjwarp/backend.py:1055),mjwarp owner 被迫禁用 base_com/push_robot。mjlab 已证明路径:mjwarp Model 字段 leading dim 为 "*"expand_model_fields tile 成 (nworld,...) 即 per-world(kernel 无需改)→ GPU 原位写 → 分级 mjwarp.set_const* 重算派生量 → 重捕获 CUDA graph(UniLab 后端已预留约定,backend.py:492-497)。工作量几乎全在 backend 层。
  • mjwarp 无原生回放(record 绕道 MuJoCo 渲染),另行评估。
  • 传感器面无缺口:gyro/velocimeter/framequat/subtreeangmom/contact-force 在 warp 上均工作(feat: port MicroDuck velocity task to Manager-Based API #1368 smoke 实测)。

交付边界(不做什么)

切片(sub-issues,按依赖排序)

# issue 依赖 规模
S1 #1397 通用 curriculum 引擎(stage 式 weight/params ramp) MBA 框架 ~300 LOC
S2 #1398 通用 locomotion reward/termination term 库沉淀 MBA 框架 ~400 LOC
S3 #1399 event/DR term 补齐(body impulse / push 角速度 / fail-closed 放开) MBA 框架 ~300 LOC
S4 #1400 观测真实化通用 term(IMU 安装错位等) MBA 框架 ~150 LOC
S5 #1401 mjwarp 后端 DR 消费能力(per-world model mutation) backend 无(contract 已备) 数百行 + effect 测试
S7 #1402 example:MicroDuck velocity 配方对齐 legacy(验收) example S1+S2 必需,S3/S4 按需,mjwarp 全量 DR 依赖 S5 配置为主 + 训练机时

S1–S4 纯框架、互相独立可并行;S5 完全隔离在 backend 层(框架/contract 零改动);S7 是唯一汇聚验收点。非理想执行器为第 S6 项,单独立项。

验收标准

  • 每个 sub-issue 附带:owner yaml 变更(如适用)+ 契约/单元测试 + 本地 make test-all 通过。
  • S5 追加 effect 测试(mutation 后物理行为变化、world 间隔离、与 mujoco 后端统计一致性)。
  • S7 追加:与 legacy 同预算对照训练曲线(reward、episode length、tracking 误差、foot_air_time);yaw 误差以分存活 env 的 error_vel_yaw 显著下降为准;sim2real 检查表(观测链路、DR 范围与 legacy 逐项一致)。

关联

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