From 964b409aa193fdb75e65c3fd9c3623cd98deca48 Mon Sep 17 00:00:00 2001 From: 8x54zj-m <8x54zj-m@motrixlab.local> Date: Tue, 30 Jun 2026 17:29:16 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20action=5Fscale=200.05=E2=86=920.25=20(up?= =?UTF-8?q?stream=20value,=205x=20difference)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- motrix_envs/src/motrix_envs/locomotion/go1/dreamwaq.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/motrix_envs/src/motrix_envs/locomotion/go1/dreamwaq.py b/motrix_envs/src/motrix_envs/locomotion/go1/dreamwaq.py index 999e28c..396caf8 100644 --- a/motrix_envs/src/motrix_envs/locomotion/go1/dreamwaq.py +++ b/motrix_envs/src/motrix_envs/locomotion/go1/dreamwaq.py @@ -109,6 +109,7 @@ class DreamWaQCfg(Go1WalkNpEnvCfg): self.commands = DreamWaQCfg.Commands() self.control_config.stiffness = 28.0 self.control_config.damping = 0.7 + self.control_config.action_scale = 0.25 # 上游原值(基类默认 0.05) self._apply_dreamwaq() def _apply_dreamwaq(self): @@ -602,11 +603,13 @@ class DreamWaQTask(Go1WalkTask): steps = state.info.get("steps", np.zeros(self._num_envs, dtype=np.int32)) will_end = state.terminated | (steps >= self._cfg.max_episode_steps - 1) if will_end.any(): + # 除以 max_episode_length_s,与上游对齐(上游: ep_sum / max_episode_length_s) + ep_len_s = self._cfg.max_episode_steps * self._cfg.ctrl_dt ep_report = state.info.get("ep_report", {}) for k in scaled_terms: ek = f"ep_{k}" vals = state.info.get(ek, np.zeros(self._num_envs, dtype=np.float32))[will_end] - ep_report[f"rew_{k}"] = float(np.mean(vals)) + ep_report[f"rew_{k}"] = float(np.mean(vals) / ep_len_s) tl = state.info.get("terrain_level", np.zeros(self._num_envs, dtype=np.int32))[will_end] ep_report["terrain_level"] = float(np.mean(tl)) state.info["ep_report"] = ep_report