Skip to content

feat(tasks): unify G1 motion tracking identity - #2075

Merged
TATP-233 merged 1 commit into
mainfrom
feat/g1-motion-tracking-unified-task
Oct 8, 2026
Merged

TATP-233 merged 1 commit into
mainfrom
feat/g1-motion-tracking-unified-task

Conversation

@TATP-233

@TATP-233 TATP-233 commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Unifies the G1 motion tracking registry identity to G1MotionTracking across PPO/APPO/SAC/FlashSAC. The single semantic identity now registers the supported Manager-Based backend factories; algorithm, backend, DR, observation, and tensor-runtime differences remain owned by Hydra task YAML.
  • Removes the redundant G1MotionTrackingSAC registration and updates configs, tests, benchmarks, fixtures, migration matrix, and bilingual docs accordingly.
  • Restores semantic FlashSAC reward telemetry. MotionRewardPack and MotionPenaltyRewardPack now emit raw per-component columns; their YAML target terms own canonical names and weights, so RewardManager publishes motion_global_root_pos/ori, motion_body_pos/ori/lin_vel/ang_vel, action_rate_l2, joint_limit, and undesired_contacts without executing the targets twice.
  • Updates the FlashSAC owner fingerprints for the packed reward contract transition.
  • User-facing training impact: new SAC/FlashSAC run roots use logs/fast_sac/G1MotionTracking/ and logs/flash_sac/G1MotionTracking/. Existing G1MotionTrackingSAC runs still load by passing an absolute algo.load_run path.

Linked Work

Validation

  • make test-all passed on the final local head before this PR was created or updated
  • Additional task-specific validation listed below

Commands actually run:

uv run pytest -q tests/managers/test_core_managers.py tests/config/test_g1_motion_tracking_owners.py tests/tasks/test_flashsac_owner_contract.py tests/tasks/test_motion_term_parity.py tests/tasks/test_production_registry_closeout.py tests/tasks/test_package_boundary.py tests/scripts/test_train_scripts.py tests/scripts/test_train_script_configs.py tests/scripts/test_check_docs.py tests/scripts/test_g1_flashsac_backend.py tests/utils/test_experiment_tracking.py
# 168 passed, 137 deselected

make check
# passed

make test
# 1823 passed, 42 skipped, 488 deselected

make test-all
# passed: format/lint/mypy/pyright, 1823 tests with coverage, benchmark import smoke 34/34 module and 35/35 script

# Manual runtime smoke, FlashSAC + MuJoCo, num_envs=2, one zero-action step:
# reward info keys: action_rate_l2, joint_limit, motion_body_ang_vel,
# motion_body_lin_vel, motion_body_ori, motion_body_pos,
# motion_global_root_ori, motion_global_root_pos, motion_joint_pos,
# motion_joint_vel, motion_reward_pack, undesired_contacts

Remote CI route:

  • Base main: current-head CI will be monitored after PR creation.

Impact

  • Backend impact: mujoco / motrix (registry/config coverage also includes mjwarp, genesis, and newton owners; runtime smoke run on MuJoCo)
  • Platform impact: Linux (validation environment)
  • Training effect expected: yes — unified task/run identity and restored FlashSAC reward diagnostics; reward equations and aggregate values remain unchanged

Artifacts

  • W&B: none
  • benchmark result: none
  • video / screenshot: none
  • ONNX / checkpoint: none

Checklist

  • Added or updated tests where needed
  • Updated docs if behavior or workflow changed
  • Linked the driving issue
  • Noted any follow-up work explicitly

Follow-up: terminal logger metric classification and width-aware layout are owned by unilab-rl and tracked in unilabsim/unilab_rl#86.

@TATP-233
TATP-233 requested a review from caozx1110 as a code owner October 8, 2026 11:09
Use one G1MotionTracking registry identity for the PPO/APPO/SAC/FlashSAC
Manager-Based owners and register its supported backend factories under that
identity. Algorithm- and backend-specific contracts remain owned by Hydra YAML.

Expose fused FlashSAC reward components through the canonical per-term reward
log names: packed owners now emit raw component columns and RewardManager owns
the semantic target names and weights. This restores the six motion components
and MJWarp penalties in reward telemetry without duplicating execution.

Keep terminal logger classification and width-layout work upstream in
unilab-rl; this PR does not alter the pinned logger behavior.
@TATP-233
TATP-233 force-pushed the feat/g1-motion-tracking-unified-task branch from eae3d72 to 1a060ea Compare October 8, 2026 11:12
@TATP-233

TATP-233 commented Oct 8, 2026

Copy link
Copy Markdown
Collaborator Author

Rebased onto current main after unilab-rl 1.4.6 SAC naming landed and resolved the two documentation conflicts. Revalidated final head 1a060ea0 locally with uv sync --extra mujoco --extra uni_rl, focused tests, make check, make test, and make test-all. Current-head CI is green: ruff lint/format, mypy, pyright, benchmark-smoke, test (ubuntu-slim), and Sphinx.

@TATP-233
TATP-233 merged commit 2237af3 into main Oct 8, 2026
8 checks passed
@TATP-233
TATP-233 deleted the feat/g1-motion-tracking-unified-task branch October 8, 2026 11:21
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