def plot_wave(ax): tg = TracksGenerator() x = np.linspace(-2, 48, 4096, endpoint=True) x = [tg.gen_wave_step(x, 0, x, 0, 0.05)[0] for x in x] y = [tg.gen_wave_step(x, 0, x, 0, 0.05)[1] for x in x] ax.plot(x, y, color="red", label="wave") create_start_dot(ax) #plt.xlabel("x") #plt.ylabel("y") ax.set_title("Wave (3)", size=11)
def plot_circle(ax): start_sin_at = 5 #8 start_sin_at = 10 # 8 head_target_dist = 2 tg = TracksGenerator() x = np.linspace(0, start_sin_at, 4096, endpoint=True) y = np.zeros(len(x)) radius = start_sin_at #fig2, ax2 = ax.subplots() c1 = plt.Circle((0, 0), start_sin_at, color='red', fill=False, linewidth=1.5) ax.plot(x, y, color="red", label="line") create_start_dot(ax) ax.add_artist(c1) #ax.add_artist(p2) ax.set_xlim((-28, 28)) ax.set_ylim((-32, 32)) #plt.xlabel("x") #plt.ylabel("y") ax.set_title("Circle (2)", size=11)
def move_ball(self): head_x, head_y = self.get_head_pos() target_x, target_y = self.get_target_pos() if self.tracks_generator is None: self.tracks_generator = TracksGenerator() self.track_seed += 1 x, y = self.tracks_generator.gen_random_step(head_x, head_y, target_x, target_y, self.dt, seed=self.track_seed, ignore_head=False) self.set_ball([x, y]) return [x, y]
def plot_random(ax): segment_length = 3 segments = 15 seed = 21 #11 #10 #7 #4 #6 tg = TracksGenerator() x = [0] y = [0] for i in range(1000): x2, y2 = tg.gen_random_step(0, 0, x[-1], y[-1], 180 / 1000, seed=seed) x.append(x2) y.append(y2) ax.plot(x, y, label="random", color='red') ax.set_ylim(-10, 10) create_start_dot(ax) #plt.xlabel("x") #plt.ylabel("y") ax.set_title("Random (4)", size=11)
class MujocoPlanarSnakeCarsCamZigzagDistanceEnv(MujocoPlanarSnakeCarsCamEnv): #Follow straight for some units then do a zigzag tracks_generator = TracksGenerator() def move_ball(self): head_x, head_y = self.get_head_pos() target_x, target_y = self.get_target_pos() x, y = self.tracks_generator.gen_zigzag_step(head_x, head_y, target_x, target_y, self.dt) self.set_ball([x, y]) return [x, y]
class MujocoPlanarSnakeCarsCamLineDistanceEnv(MujocoPlanarSnakeCarsCamEnv): #Follow straight line distance tracks_generator = TracksGenerator() def move_ball(self): head_x, head_y = self.get_head_pos() target_x, target_y = self.get_target_pos() #x += self.head_target_dist x, y = self.tracks_generator.gen_line_step(head_x, head_y, target_x, target_y, self.dt) self.set_ball([x, y]) return [x, y]
class MujocoPlanarSnakeCarsCamRandomDistanceEnv(MujocoPlanarSnakeCarsCamEnv): """ Follow straight for some units then do a zigzag """ current_rand = 0 track_seed = 5 tracks_generator = None def reset_model(self): self.tracks_generator = None return super().reset_model() def seed(self, seed=None): #print("seed", seed) #self.track_seed = seed return super().seed(seed) def move_ball(self): head_x, head_y = self.get_head_pos() target_x, target_y = self.get_target_pos() if self.tracks_generator is None: self.tracks_generator = TracksGenerator() self.track_seed += 1 x, y = self.tracks_generator.gen_random_step(head_x, head_y, target_x, target_y, self.dt, seed=self.track_seed, ignore_head=False) self.set_ball([x, y]) return [x, y]