예제 #1
0
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)
예제 #2
0
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)
예제 #3
0
    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]
예제 #4
0
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)
예제 #5
0
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]
예제 #6
0
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]
예제 #7
0
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]