From 5d235e825557e4a0f839a6e841c9a398945901df Mon Sep 17 00:00:00 2001 From: MagDish <2717360869@qq.com> Date: Wed, 13 Nov 2024 16:22:21 +0800 Subject: [PATCH] new change_target --- scripts/gyms/sprint.py | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/gyms/sprint.py b/scripts/gyms/sprint.py index 06e9a20..645d41a 100644 --- a/scripts/gyms/sprint.py +++ b/scripts/gyms/sprint.py @@ -280,15 +280,21 @@ class sprint(gym.Env): self.player.terminate() def change_target(self): - original_angle = M.vector_angle(self.walk_rel_target) - random_angle_delta = np.random.uniform(-10, 10) - new_angle = (original_angle + np.radians(random_angle_delta)) * 3 * math.sin(time.time()) + original_angle = self.walk_rel_orientation + orientations = random.choice([-1, 1]) + random_angle_delta = orientations * np.random.uniform(10, 75) # 单位是度 + + # 新的角度 + new_angle = original_angle + np.radians(random_angle_delta) # 转换为弧度 + + # 计算新的目标向量,保持原来的距离不变 new_walk_rel_target = np.array([ - np.cos(new_angle) * self.walk_distance, - np.sin(new_angle) * self.walk_distance + 15, + np.sin(new_angle) * self.walk_distance * 3 ]) + # 保存新的目标向量 self.walk_rel_target = new_walk_rel_target def step(self, action): @@ -298,7 +304,7 @@ class sprint(gym.Env): w = self.player.world current_time = time.time() - if current_time - self.last_target_update_time > 0.6: + if current_time - self.last_target_update_time > 2: self.change_target() self.last_target_update_time = current_time @@ -346,13 +352,11 @@ class sprint(gym.Env): reward = robot_speed * (1 - direction_error / 10) if self.player.behavior.is_ready("Get_Up"): self.terminal = True - elif w.time_local_ms - self.reset_time > 30000: + elif w.time_local_ms - self.reset_time > 50000: self.terminal = True elif r.loc_torso_position[0] > 14.5: self.terminal = True reward += 500 - elif r.loc_torso_position[0] > 0: - reward += 3 * r.loc_torso_position[0] else: self.terminal = False return obs, reward, self.terminal, {}