Skip to content

fix: expose mjwarp tracked body kinematics for the MBA body-state contract - #1283

Merged
TATP-233 merged 1 commit into
dev/issue-1042-manager-based-apifrom
fix/issue-1282-mjwarp-body-state
Aug 24, 2026
Merged

fix: expose mjwarp tracked body kinematics for the MBA body-state contract#1283
TATP-233 merged 1 commit into
dev/issue-1042-manager-based-apifrom
fix/issue-1282-mjwarp-body-state

Conversation

@TATP-233

Copy link
Copy Markdown
Collaborator

Fixes #1282

Summary

uv run train --algo sac --task g1_walk_flat --sim mjwarp#1232 G1 迁入 Manager-Based runtime 起在建 env 阶段失败:Entity 初始化 eager 校验 body-state 能力,而 mjwarp host_numpy profile 对全部 get_body_*NotImplementedError,且 create_backend 的 mjwarp 分支静默丢弃 body_state_required

本 PR 按 issue 规划补齐 mjwarp 的只读 body kinematics,不放宽任何契约:

  • create_backend:mjwarp 分支将 body_state_required=True 映射为 add_body_sensors=True(对齐 mujoco/motrix)。
  • mjwarp 冷路径 materialization:复用 inject_mujoco_tracking_sensors 注入 world-frame tracking frame sensors;临时 XML 在模型编译后立即释放(对齐 MuJoCo backend 生命周期)。
  • MjwarpBackendget_body_{pos,quat,lin_vel,ang_vel}_w 从每步本已下载的 _sensor_cache 零拷贝读取(热路径零新增 device→host 同步);get_body_{lin,ang}_vel_bfix: pin get_body_*_vel_b to analytical body-frame semantics across backends #1254 语义用 np_quat_apply_inverse_batched 解析计算;绑定顺序/维度/连续性 fail-closed 校验;get_body_{pos,quat}_b 保持明确 NotImplementedError

不改 obs 维度、不改 owner YAML DENYLIST 字段、不改 SimBackend 接口(getter 早已声明)。

Tests

  • 恢复 test_g1_walk_flat_owner_one_step[ppo/sac](在 dev HEAD 上实际为红)。
  • 新增 mjwarp vs mujoco 六量 body-state 数值 parity 测试(stand keyframe + 随机 qvel,atol 2e-3)与未跟踪 body id fail-closed 测试。
  • 更新 create_backend 接线测试:mjwarp 现在映射 body_state_required

Validation

  • uv run pytest tests/base/test_mjwarp_backend.py tests/base/test_mjwarp_capabilities.py -m slow:7 passed。
  • uv run pytest tests/base/test_motrix_backend_options.py:35 passed。
  • make test-all:通过(exit 0)。
  • 手动 uv run train --algo sac --task g1_walk_flat --sim mjwarp:完整跑完 5000 iterations(10.26M env steps),checkpoint 保存与 play 视频渲染均成功。

@TATP-233
TATP-233 merged commit 8df1f9e into dev/issue-1042-manager-based-api Aug 24, 2026
@TATP-233
TATP-233 deleted the fix/issue-1282-mjwarp-body-state branch August 24, 2026 06:31
@TATP-233

Copy link
Copy Markdown
Collaborator Author

已同步 main 的 CUDA graph 优化(cherry-pick 1939cfd, #1273),与本 PR 的 tracked body kinematics 兼容(sensor cache 仍在 graph replay 后的显式 barrier 下载)。

验证(head 5052096):

  • tests/base/test_mjwarp_cuda_graph.py 7 passed(默认 lane fake 单测)
  • test_mjwarp_backend.py + test_mjwarp_capabilities.py -m slow 7 passed(含 body-state parity 与 graph launch 顺序断言)
  • make test-all 通过
  • uv run train --algo sac --task g1_walk_flat --sim mjwarp 完整 5000 iterations:总耗时 4m04s → 2m27s(约 40% 提升),训练与 play 渲染均正常

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant