diff --git a/motrix_rl/src/motrix_rl/rslrl/torch/train/dreamwaq_ppo.py b/motrix_rl/src/motrix_rl/rslrl/torch/train/dreamwaq_ppo.py index a5a0bc2..0a921ef 100644 --- a/motrix_rl/src/motrix_rl/rslrl/torch/train/dreamwaq_ppo.py +++ b/motrix_rl/src/motrix_rl/rslrl/torch/train/dreamwaq_ppo.py @@ -222,8 +222,8 @@ class DreamWaQPPO(PPO): cv = std_r / (mean_r + 1e-6) if not (0 <= cv < 1e6): # NaN 或 Inf → 保持当前 prob return - # CV → bootstrap 概率(CV 高→不稳定→多用 GT;上限 0.9 保证 CENet vel head 有梯度) - self.actor._adaboot_prob = max(0.0, min(0.9, cv * 5.0)) + # CV → bootstrap 概率(CENet vel head 通过 VAE loss 已有梯度,无需额外保护) + self.actor._adaboot_prob = max(0.0, min(1.0, cv * 5.0)) def _compute_surrogate_loss( self, actions_batch, actions_log_prob_batch, diff --git a/motrix_rl/src/motrix_rl/tasks/go1.py b/motrix_rl/src/motrix_rl/tasks/go1.py index 215f8bd..ae90a47 100644 --- a/motrix_rl/src/motrix_rl/tasks/go1.py +++ b/motrix_rl/src/motrix_rl/tasks/go1.py @@ -136,7 +136,7 @@ class rslrl: runner.actor.class_name = ( "motrix_rl.rslrl.torch.models.cenet_actor:CENetActorModel") runner.actor.hidden_dims = [512, 256, 128] - runner.actor.init_noise_std = 0.5 # 与 fixed schedule 配合 + runner.actor.init_noise_std = 1.0 # 论文原值 # Critic:标准 MLPModel,输入 privileged_obs runner.critic.class_name = "MLPModel" diff --git a/scripts/dreamwaq_sim2sim_mujoco.py b/scripts/dreamwaq_sim2sim_mujoco.py index 2db9726..ca9ea4e 100644 --- a/scripts/dreamwaq_sim2sim_mujoco.py +++ b/scripts/dreamwaq_sim2sim_mujoco.py @@ -37,11 +37,12 @@ MAX_VX, MAX_VY, MAX_WZ = 1.0, 1.0, 1.0 # DreamWaQ default joint angles — MUST match MuJoCo XML joint order: # qpos[7:19] = FR_hip,FR_thigh,FR_calf, FL_hip,FL_thigh,FL_calf, RR_hip,RR_thigh,RR_calf, RL_hip,RL_thigh,RL_calf +# 必须与 MotrixSim 训练的 default_angles 完全一致! DEFAULT_ANGLES = np.array([ - -0.1, 0.8, -1.5, # FR - 0.1, 0.8, -1.5, # FL - -0.1, 1.0, -1.5, # RR - 0.1, 1.0, -1.5, # RL + 0.0, 0.9, -1.8, # FR + 0.0, 0.9, -1.8, # FL + 0.0, 0.9, -1.8, # RR + 0.0, 0.9, -1.8, # RL ], dtype=np.float32)