fix: action_scale 0.05→0.25 (upstream value, 5x difference)

This commit is contained in:
8x54zj-m
2026-06-30 17:29:16 +08:00
parent a5e5d5029e
commit 964b409aa1

View File

@@ -109,6 +109,7 @@ class DreamWaQCfg(Go1WalkNpEnvCfg):
self.commands = DreamWaQCfg.Commands() self.commands = DreamWaQCfg.Commands()
self.control_config.stiffness = 28.0 self.control_config.stiffness = 28.0
self.control_config.damping = 0.7 self.control_config.damping = 0.7
self.control_config.action_scale = 0.25 # 上游原值(基类默认 0.05
self._apply_dreamwaq() self._apply_dreamwaq()
def _apply_dreamwaq(self): def _apply_dreamwaq(self):
@@ -602,11 +603,13 @@ class DreamWaQTask(Go1WalkTask):
steps = state.info.get("steps", np.zeros(self._num_envs, dtype=np.int32)) steps = state.info.get("steps", np.zeros(self._num_envs, dtype=np.int32))
will_end = state.terminated | (steps >= self._cfg.max_episode_steps - 1) will_end = state.terminated | (steps >= self._cfg.max_episode_steps - 1)
if will_end.any(): 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", {}) ep_report = state.info.get("ep_report", {})
for k in scaled_terms: for k in scaled_terms:
ek = f"ep_{k}" ek = f"ep_{k}"
vals = state.info.get(ek, np.zeros(self._num_envs, dtype=np.float32))[will_end] 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] tl = state.info.get("terrain_level", np.zeros(self._num_envs, dtype=np.int32))[will_end]
ep_report["terrain_level"] = float(np.mean(tl)) ep_report["terrain_level"] = float(np.mean(tl))
state.info["ep_report"] = ep_report state.info["ep_report"] = ep_report