From e8f50eea0fb16a39a6135bd4a97f45f2d6bbaaf3 Mon Sep 17 00:00:00 2001 From: MagDish <2717360869@qq.com> Date: Wed, 13 Nov 2024 20:48:33 +0800 Subject: [PATCH] new --- scripts/gyms/sprint.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/scripts/gyms/sprint.py b/scripts/gyms/sprint.py index 93163c3..e80177b 100644 --- a/scripts/gyms/sprint.py +++ b/scripts/gyms/sprint.py @@ -282,17 +282,17 @@ class sprint(gym.Env): Draw.clear_all() self.player.terminate() - def generate_random_target(self, x_range=(-12, 12), y_range=(-9, 9)): - x = np.random.uniform(x_range[0], x_range[1]) - y = np.random.uniform(y_range[0], y_range[1]) - if np.linalg.norm(np.array([x, y]) - self.Gen_player_pos[:2]) < 5: - dir_x = (x - self.Gen_player_pos[0]) / abs (x - self.Gen_player_pos[0]) - dir_y = (y - self.Gen_player_pos[1]) / abs (y - self.Gen_player_pos[1]) - x = x + 5 * dir_x - y = y + 5 * dir_y - x = np.clip(x, -15, 15) - y = np.clip(y, -15, 15) + def generate_random_target(self, x_range=(-12, 12), y_range=(-9, 9)): + while True: + x = np.random.uniform(x_range[0], x_range[1]) + y = np.random.uniform(y_range[0], y_range[1]) + + if np.linalg.norm(np.array([x, y]) - self.Gen_player_pos[:2]) >= 10: + if abs(x) > 15 or abs(y) > 10: + continue + break + self.walk_target = np.array([x, y]) def step(self, action): @@ -342,7 +342,7 @@ class sprint(gym.Env): robot_speed = r.loc_torso_velocity[0] direction_error = abs(self.walk_rel_orientation) direction_error = min(direction_error, 10) - reward = robot_speed * (1.5 - direction_error / 10) + reward = robot_speed * (1 - direction_error / 10) if self.walk_distance < 0.5: reward += 20 self.generate_random_target()