From c23f576e106de63a307efeefcedf4fce06de79fc Mon Sep 17 00:00:00 2001 From: TATP-233 Date: Thu, 8 Oct 2026 20:07:13 +0800 Subject: [PATCH] fix(config): restore current-task Motrix owners --- .../source/en/5-reference/5-support_matrix.md | 12 +- .../zh_CN/5-reference/5-support_matrix.md | 12 +- .../appo/task/g1_motion_tracking/motrix.yaml | 8 ++ .../flashsac/task/g1_walk_flat/motrix.yaml | 45 +++++++ .../ppo/task/g1_motion_tracking/motrix.yaml | 37 ++++++ .../conf/ppo/task/g1_walk_flat/motrix.yaml | 125 ++++++++++++++++++ .../ppo/task/go2_joystick_flat/motrix.yaml | 38 ++++++ .../sac/task/g1_motion_tracking/motrix.yaml | 13 ++ tests/scripts/test_support_matrix.py | 4 +- 9 files changed, 281 insertions(+), 13 deletions(-) create mode 100644 src/unilab/conf/appo/task/g1_motion_tracking/motrix.yaml create mode 100644 src/unilab/conf/flashsac/task/g1_walk_flat/motrix.yaml create mode 100644 src/unilab/conf/ppo/task/g1_motion_tracking/motrix.yaml create mode 100644 src/unilab/conf/ppo/task/g1_walk_flat/motrix.yaml create mode 100644 src/unilab/conf/ppo/task/go2_joystick_flat/motrix.yaml create mode 100644 src/unilab/conf/sac/task/g1_motion_tracking/motrix.yaml diff --git a/docs/sphinx/source/en/5-reference/5-support_matrix.md b/docs/sphinx/source/en/5-reference/5-support_matrix.md index 90e41594b..823dcd7b9 100644 --- a/docs/sphinx/source/en/5-reference/5-support_matrix.md +++ b/docs/sphinx/source/en/5-reference/5-support_matrix.md @@ -86,16 +86,16 @@ This table is derived from UniSim's SDK-free public static inventory. It describ | Entrypoint | Task owner | MuJoCo | Motrix | Drake | mjwarp | Newton | SuperDex | Genesis | |------------|------------|---|---|---|---|---|---|---| -| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Registered | Configured | - | - | Configured | - | -| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | - | Configured | -| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Registered | Registered | - | Registered | +| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Tested | Configured | - | - | Configured | - | +| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Registered | - | Configured | +| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Registered | Registered | - | Registered | | APPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Tested | Registered | - | - | Registered | - | | APPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Registered | Registered | - | Registered | -| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Registered | Registered | - | Registered | +| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Registered | Registered | - | Registered | | SAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Tested | - | Tested | -| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Configured | Registered | - | Configured | +| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Registered | - | Configured | | FlashSAC (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Registered | Registered | - | - | Registered | - | -| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Configured | Registered | - | Registered | +| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Configured | Registered | - | Registered | | FlashSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Configured | - | Configured | ### Source Index diff --git a/docs/sphinx/source/zh_CN/5-reference/5-support_matrix.md b/docs/sphinx/source/zh_CN/5-reference/5-support_matrix.md index 77d450b5c..3945641f4 100644 --- a/docs/sphinx/source/zh_CN/5-reference/5-support_matrix.md +++ b/docs/sphinx/source/zh_CN/5-reference/5-support_matrix.md @@ -77,16 +77,16 @@ uv run scripts/generate_support_matrix.py --write | Entrypoint | Task owner | MuJoCo | Motrix | Drake | mjwarp | Newton | SuperDex | Genesis | |------------|------------|---|---|---|---|---|---|---| -| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Registered | Configured | - | - | Configured | - | -| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | - | Configured | -| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Registered | Registered | - | Registered | +| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Tested | Configured | - | - | Configured | - | +| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Registered | - | Configured | +| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Registered | Registered | - | Registered | | APPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Tested | Registered | - | - | Registered | - | | APPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Registered | Registered | - | Registered | -| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Registered | Registered | - | Registered | +| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Registered | Registered | - | Registered | | SAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Tested | - | Tested | -| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Configured | Registered | - | Configured | +| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Registered | - | Configured | | FlashSAC (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | Registered | Registered | - | - | Registered | - | -| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Configured | Registered | - | Registered | +| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Configured | Registered | - | Registered | | FlashSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Configured | - | Configured | ### Source Index diff --git a/src/unilab/conf/appo/task/g1_motion_tracking/motrix.yaml b/src/unilab/conf/appo/task/g1_motion_tracking/motrix.yaml new file mode 100644 index 000000000..22bbdadfa --- /dev/null +++ b/src/unilab/conf/appo/task/g1_motion_tracking/motrix.yaml @@ -0,0 +1,8 @@ +# @package _global_ +defaults: + - /task/g1_motion_tracking/mujoco + - _self_ + +training: + task_name: G1MotionTracking + sim_backend: motrix diff --git a/src/unilab/conf/flashsac/task/g1_walk_flat/motrix.yaml b/src/unilab/conf/flashsac/task/g1_walk_flat/motrix.yaml new file mode 100644 index 000000000..c8d8e6b8d --- /dev/null +++ b/src/unilab/conf/flashsac/task/g1_walk_flat/motrix.yaml @@ -0,0 +1,45 @@ +# @package _global_ +# FlashSAC Motrix owner: keeps the MuJoCo owner's FlashSAC algo identity while +# adopting the Motrix-direction reward retuning; kp/kd randomization disabled. +defaults: + - /task/g1_walk_flat/base + - _self_ + +training: + task_name: G1WalkFlat + sim_backend: motrix +algo: + num_envs: 4096 + learning_starts: 49 + max_iterations: 5000 + save_interval: 1000 + updates_per_step: 8 + replay_buffer_n: 256 + tau: 0.05 +env: + events: + # Legacy Motrix owners disable kp/kd randomization. + pd_gains: null +reward: + tracking_lin_vel: + weight: 2.2 + tracking_ang_vel: + weight: 1.8 + penalty_ang_vel_xy: + weight: -1.2 + penalty_orientation: + weight: -12.0 + penalty_action_rate: + weight: -2.5 + pose: + weight: -0.6 + params: + pose_weights: [0.01, 2.0, 5.0, 0.01, 5.0, 5.0, 0.01, 2.0, 5.0, 0.01, 5.0, 5.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0] + penalty_feet_ori: + weight: -5.0 + feet_phase: + weight: 6.0 + params: + tracking_sigma: 0.008 + alive: + weight: 12.0 diff --git a/src/unilab/conf/ppo/task/g1_motion_tracking/motrix.yaml b/src/unilab/conf/ppo/task/g1_motion_tracking/motrix.yaml new file mode 100644 index 000000000..57f4e35be --- /dev/null +++ b/src/unilab/conf/ppo/task/g1_motion_tracking/motrix.yaml @@ -0,0 +1,37 @@ +# @package _global_ +defaults: + - /task/g1_motion_tracking/mujoco + - _self_ + +training: + task_name: G1MotionTracking + sim_backend: motrix + play_env_num: 16 + +reward: + motion_global_root_pos: + weight: 1.0 + action_rate_l2: + weight: -0.05 + undesired_contacts: + func: unilab.tasks.motion_tracking.common.manager_terms.undesired_body_contacts + weight: -0.1 + params: + command_name: motion + threshold: 0.05 + body_names: + - pelvis + - left_hip_roll_link + - left_knee_link + - right_hip_roll_link + - right_knee_link + - torso_link + - left_shoulder_roll_link + - left_elbow_link + - right_shoulder_roll_link + - right_elbow_link + +play_profile: + enabled: true + env: + render_spacing: 2.5 diff --git a/src/unilab/conf/ppo/task/g1_walk_flat/motrix.yaml b/src/unilab/conf/ppo/task/g1_walk_flat/motrix.yaml new file mode 100644 index 000000000..8ef830eec --- /dev/null +++ b/src/unilab/conf/ppo/task/g1_walk_flat/motrix.yaml @@ -0,0 +1,125 @@ +# @package _global_ +# Motrix owner: inherits the shared 29-DoF flat Manager-Based contract from +# base.yaml, then overrides contract fields for Motrix-specific tuning +# (intentionally non-transferable from MuJoCo; drop overrides to restore parity). +defaults: + - /task/g1_walk_flat/base + - _self_ + +training: + task_name: G1WalkFlat + sim_backend: motrix +algo: + num_envs: 2048 + max_iterations: 2200 + obs_groups: + actor: + - policy + critic: + - critic + actor: + obs_normalization: true + distribution_cfg: + init_std: 0.5 + critic: + obs_normalization: true + algorithm: + learning_rate: 3.0e-4 + entropy_coef: 5.0e-3 +env: + actions: + joint_pos: + scale: 0.5 + commands: + twist: + ranges: + lin_vel_x: [0.4, 0.7] + lin_vel_y: [0.0, 0.0] + ang_vel_z: [0.0, 0.0] + events: + # Legacy Motrix owners disable kp/kd randomization. + pd_gains: null + reset_root_state_uniform: + params: + velocity_range: + x: [-0.05, 0.05] + y: [-0.05, 0.05] + z: [-0.05, 0.05] + roll: [-0.05, 0.05] + pitch: [-0.05, 0.05] + yaw: [-0.05, 0.05] + terminations: + tilt: + params: + max_tilt_deg: 35.0 + base_height: + params: + minimum_height: 0.5 +reward: + tracking_ang_vel: + weight: 0.25 + forward_progress: + func: unilab.tasks.locomotion.g1.manager_terms.forward_progress + weight: 0.0 + params: + command_name: twist + under_speed: + func: unilab.tasks.locomotion.g1.manager_terms.under_speed + weight: -0.2 + params: + command_name: twist + upper_body_pose: + func: unilab.tasks.locomotion.g1.manager_terms.upper_body_pose + weight: -0.05 + params: + pose_weights: [0.01, 1.0, 5.0, 0.01, 5.0, 5.0, 0.01, 1.0, 5.0, 0.01, 5.0, 5.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0, 50.0] + penalty_feet_ori: + func: unilab.tasks.locomotion.g1.manager_terms.penalty_feet_ori + weight: 0.0 + feet_phase: + weight: 1.2 + params: + min_forward_speed: 0.05 + feet_phase_contrast: + func: unilab.tasks.locomotion.g1.manager_terms.feet_phase_contrast + weight: 1.5 + params: + frequency: 1.5 + swing_height: 0.09 + tracking_sigma: 0.008 + min_forward_speed: 0.05 + command_name: twist + feet_phase_contact: + func: unilab.tasks.locomotion.g1.manager_terms.feet_phase_contact + weight: 1.0 + params: + frequency: 1.5 + swing_height: 0.09 + tracking_sigma: 0.008 + min_forward_speed: 0.05 + command_name: twist + feet_double_stance: + func: unilab.tasks.locomotion.g1.manager_terms.feet_double_stance + weight: -1.0 + params: + frequency: 1.5 + swing_height: 0.09 + tracking_sigma: 0.008 + min_forward_speed: 0.05 + command_name: twist + ang_vel_xy: + weight: -0.2 + base_height: + weight: -120.0 + params: + target_height: 0.765 + orientation: + weight: -2.5 + action_rate: + weight: -0.005 + pose: + weight: -0.05 +play_profile: + enabled: true + env: + render_spacing: 2.0 diff --git a/src/unilab/conf/ppo/task/go2_joystick_flat/motrix.yaml b/src/unilab/conf/ppo/task/go2_joystick_flat/motrix.yaml new file mode 100644 index 000000000..4ed4db0b3 --- /dev/null +++ b/src/unilab/conf/ppo/task/go2_joystick_flat/motrix.yaml @@ -0,0 +1,38 @@ +# @package _global_ +defaults: + - /task/go2_joystick_flat/base + - _self_ + +training: + task_name: Go2JoystickFlat + sim_backend: motrix +algo: + num_envs: 1024 + max_iterations: 151 + obs_groups: + actor: + - actor + critic: + - critic + actor: + obs_normalization: true + distribution_cfg: + init_std: 0.5 + critic: + obs_normalization: true + algorithm: + learning_rate: 3.0e-4 + entropy_coef: 1.0e-3 +env: + commands: + twist: + ranges: + lin_vel_x: [0.5, 0.5] + lin_vel_y: [0.0, 0.0] + ang_vel_z: [0.0, 0.0] + events: + pd_gains: null +play_profile: + enabled: true + env: + render_spacing: 2.0 diff --git a/src/unilab/conf/sac/task/g1_motion_tracking/motrix.yaml b/src/unilab/conf/sac/task/g1_motion_tracking/motrix.yaml new file mode 100644 index 000000000..1d978d93e --- /dev/null +++ b/src/unilab/conf/sac/task/g1_motion_tracking/motrix.yaml @@ -0,0 +1,13 @@ +# @package _global_ +# Motrix mirrors the MuJoCo WBT training DR within its supported capability +# set. Root velocity pushes are unsupported by Motrix and stay disabled. +defaults: + - /task/g1_motion_tracking/mujoco + - _self_ + +training: + task_name: G1MotionTrackingSAC + sim_backend: motrix +env: + events: + push_robot: null diff --git a/tests/scripts/test_support_matrix.py b/tests/scripts/test_support_matrix.py index 03df4149e..38d028b36 100644 --- a/tests/scripts/test_support_matrix.py +++ b/tests/scripts/test_support_matrix.py @@ -86,7 +86,9 @@ def test_support_matrix_marks_go2_ppo_backends_as_tested(): assert row.cells["mujoco"].level == EvidenceLevel.TESTED assert row.cells["mjwarp"].level == EvidenceLevel.MISSING - assert row.cells["motrix"].level is EvidenceLevel.REGISTERED + # Restoring the pre-shelving owner restores its prior generated grade: + # generic config coverage promotes configured Motrix owners to Tested. + assert row.cells["motrix"].level is EvidenceLevel.TESTED appo_row = _row("APPO (torch)", "go2_joystick_flat") assert appo_row.cells["motrix"].level is EvidenceLevel.TESTED