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 7680404..a5a0bc2 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;映射系数 5.0 可调) - self.actor._adaboot_prob = max(0.0, min(1.0, cv * 5.0)) + # CV → bootstrap 概率(CV 高→不稳定→多用 GT;上限 0.9 保证 CENet vel head 有梯度) + self.actor._adaboot_prob = max(0.0, min(0.9, 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 48d086e..215f8bd 100644 --- a/motrix_rl/src/motrix_rl/tasks/go1.py +++ b/motrix_rl/src/motrix_rl/tasks/go1.py @@ -126,7 +126,7 @@ class rslrl: runner.algorithm.entropy_coef = 0.01 # 上游 Go1RoughCfgPPO runner.algorithm.desired_kl = 0.01 # 上游 0.01 (默认 0.008) runner.algorithm.clip_param = 0.2 - runner.algorithm.schedule = "adaptive" # 上游原值,前期 bug 已修 + runner.algorithm.schedule = "fixed" # 4096 envs 采样够大,不需要 adaptive 加噪 runner.algorithm.gamma = 0.99 runner.algorithm.lam = 0.95 runner.algorithm.max_grad_norm = 1.0 @@ -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 = 1.0 # 上游原值,adaptive 会自行调节 + runner.actor.init_noise_std = 0.5 # 与 fixed schedule 配合 # Critic:标准 MLPModel,输入 privileged_obs runner.critic.class_name = "MLPModel"