Ejemplo n.º 1
0
def rollout(device, vision, action, n_steps=200):
    race_config = pystk.RaceConfig(num_kart=1,
                                   track='icy_soccer_field',
                                   mode=pystk.RaceConfig.RaceMode.SOCCER)
    o = pystk.PlayerConfig(controller=pystk.PlayerConfig.Controller.AI_CONTROL,
                           team=0)
    race_config.players.append(o)
    k = pystk.Race(race_config)

    k.start()
    for i in range(5):  #Skip the first 5 steps since its the game starting
        k.step()
    try:
        data = []
        for n in range(n_steps):
            k.step()
            la = k.last_action[0]

            data.append(
                (np.array(k.render_data[0].image), (la.steer, la.acceleration,
                                                    la.brake)
                 ))  #TODO: remove /10 later 3 in this script and 1 in player
    finally:
        k.stop()
        del k
    return data
def rollout(num_players=4,
            max_steps=1000,
            track='icy_soccer_field',
            save='train_data_temp'):
    config = pystk.GraphicsConfig.hd()
    config.screen_width = 400
    config.screen_height = 300
    pystk.init(config)

    race_config = pystk.RaceConfig(num_kart=num_players,
                                   track=track,
                                   mode=pystk.RaceConfig.RaceMode.SOCCER)
    race_config.players.pop()

    if not os.path.exists(save):
        os.makedirs(save)

    for i in range(num_players):
        o = pystk.PlayerConfig(
            controller=pystk.PlayerConfig.Controller.AI_CONTROL,
            team=int((i + 1) % 2.0))
        race_config.players.append(o)

    active_players = race_config.players
    print('Number of Players', len(active_players))

    k = pystk.Race(race_config)
    k.start()
    k.step()

    # all_images = []
    all_actions = []
    state = pystk.WorldState()
    for t in range(max_steps):
        print('step:', t)
        state.update()

        s = k.step()
        t_actions = []
        for i in range(num_players):
            la = k.last_action[i]
            img = np.array(k.render_data[i].image)
            a = (img, la.steer, la.acceleration, la.brake)
            t_actions.append(a)
            if save is not None:
                PIL.Image.fromarray(img).save(
                    os.path.join(save, 'player%02d_%05d.png' % (i, t)))
                with open(os.path.join(save, 'player%02d_%05d.csv' % (i, t)),
                          mode='w') as new_data:
                    writer = csv.writer(new_data)
                    writer.writerow(a[1:])

        all_actions.append(t_actions)
        if not s:
            break
    print('score', state.soccer.score)
    return all_actions
Ejemplo n.º 3
0
def rollout(epoch=0, num_players=2, max_steps=1000, track='icy_soccer_field', save='train_data_two_players'):
    race_config = pystk.RaceConfig(num_kart=num_players, track=track, mode=pystk.RaceConfig.RaceMode.SOCCER, difficulty=2)
    race_config.players.pop()

    if not os.path.exists(save):
        os.makedirs(save)

    for i in range(num_players):
        o = pystk.PlayerConfig(controller = pystk.PlayerConfig.Controller.AI_CONTROL, team = int(i%2.0))
        race_config.players.append(o)

    active_players = race_config.players
    print('Number of Players',len(active_players))

    k = pystk.Race(race_config)
    k.start()
    try:
        k.step()

        # all_images = []
        all_actions = []
        state = pystk.WorldState()
        state.update()
        # print(dir(state.players[0].kart))
        # input()
        for t in range(max_steps):
            # print('step:',t)
            state.update()

            s = k.step()
            t_actions = []
            for i in range(num_players):
                la = k.last_action[i]
                img = np.array(k.render_data[i].image)
                a = [img, la.steer, la.acceleration, la.brake]
                a.extend(state.players[0].kart.rotation)
                a.extend(state.players[0].kart.velocity)
                a.extend(state.players[0].kart.location)
                
                t_actions.append(a)
                if save is not None:
                    PIL.Image.fromarray(img).save(os.path.join(save, 'player_%05d_%02d_%05d.png' % (epoch, i, t)))
                    with open(os.path.join(save, 'player_%05d_%02d_%05d.csv' % (epoch, i, t)), mode='w') as new_data:
                        writer = csv.writer(new_data)
                        writer.writerow(a[1:])
            
            all_actions.append(t_actions)
            if not s:
                break
        print('epoch',e,'score',state.soccer.score)
    finally:
        k.stop()
        del k
    
    return all_actions
Ejemplo n.º 4
0
def main():
    config = pystk.GraphicsConfig.hd()
    config.screen_width = 800
    config.screen_height = 600
    pystk.init(config)

    config = pystk.RaceConfig()
    config.num_kart = 2
    # config.track ='battleisland'
    config.track = 'stadium'

    config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL
    config.players[0].team = 0
    # NOTE: Add 4 players
    for _ in range(3):
        config.players.append(
            # pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL, (args.team + 1) % 2))
            pystk.PlayerConfig('', pystk.PlayerConfig.Controller.AI_CONTROL,
                               1))

    config.mode = config.RaceMode.THREE_STRIKES
    # TODO: Look at step size?
    # config.step_size = args.step_size

    race = pystk.Race(config)
    race.start()
    race.step()

    uis = [gui.UI(gui.VT['IMAGE']) for i in range(4)]

    state = pystk.WorldState()
    state.update()
    t0 = time()
    if not all(ui.pause for ui in uis):
        race.step(uis[0].current_action)
        state.update()
    for ui, d in zip(uis, race.render_data):
        ui.show(d)
    input('press enter to continue')

    race.stop()
    del race
    pystk.clean()
Ejemplo n.º 5
0
 def config(self):
     return pystk.PlayerConfig(
         controller=pystk.PlayerConfig.Controller.AI_CONTROL,
         team=self.team)
Ejemplo n.º 6
0
    config = pystk.GraphicsConfig.hd()
    config.screen_width = 400
    config.screen_height = 300
    pystk.init(config)

    config = pystk.RaceConfig()
    config.num_kart = 2
    if args.kart is not None:
        config.players[0].kart = args.kart

    config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL
    config.players[0].team = args.team

    for i in range(1, args.num_player):
        config.players.append(
                pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL, (args.team + 1) % 2))

    if args.track is not None:
        config.track = args.track
        if args.track in soccer_tracks:
            config.mode = config.RaceMode.SOCCER
    if args.step_size is not None:
        config.step_size = args.step_size

    race = pystk.Race(config)
    race.start()

    uis = [gui.UI([gui.VT[x] for x in args.visualization]) for i in range(args.num_player)]
    save_depth = "DEPTH" in args.visualization
    save_labels = "SEMANTIC" in args.visualization or "INSTANCE" in args.visualization
Ejemplo n.º 7
0
            config = pystk.GraphicsConfig.ld()
            render = False
        config.screen_width = 320
        config.screen_height = 240
        pystk.init(config)
        init_time, t0 = time() - t0, time()

        config = pystk.RaceConfig(render=render)
        if args.kart != '':
            config.players[0].kart = args.kart
        if args.track is not None:
            config.track = args.track
        if args.step_size is not None:
            config.step_size = args.step_size
        for i in range(1, args.num_player):
            config.players.append(pystk.PlayerConfig(args.kart, pystk.PlayerConfig.Controller.AI_CONTROL))

        race = pystk.Race(config)
        race_time, t0 = time() - t0, time()

        race.start()
        race.step()
        start_time, t0 = time() - t0, time()

        for it in range(500):
            race.step()
            if len(race.render_data):
                race.render_data[0].image
                race.render_data[0].depth
                race.render_data[0].instance
        step_time, t0 = time() - t0, time()
Ejemplo n.º 8
0
            render = False
        config.screen_width = 320
        config.screen_height = 240
        pystk.init(config)
        init_time, t0 = time() - t0, time()

        config = pystk.RaceConfig(render=render)
        if args.kart != '':
            config.players[0].kart = args.kart
        if args.track is not None:
            config.track = args.track
        if args.step_size is not None:
            config.step_size = args.step_size
        for i in range(1, args.num_player):
            config.players.append(
                pystk.PlayerConfig(args.kart,
                                   pystk.PlayerConfig.Controller.AI_CONTROL))

        race = pystk.Race(config)
        race_time, t0 = time() - t0, time()

        race.start()
        start_time, t0 = time() - t0, time()

        for it in range(500):
            race.step()
        step_time, t0 = time() - t0, time()
        for it in range(5):
            race.restart()
        restart_time, t0 = time() - t0, time()

        print('  graphics', init_time)
Ejemplo n.º 9
0
 def config(self):
     return pystk.PlayerConfig(
         controller=pystk.PlayerConfig.Controller.PLAYER_CONTROL,
         kart=self.player.kart,
         team=self.team)
    config = pystk.GraphicsConfig.hd()
    config.screen_width = 400
    config.screen_height = 300

    pystk.init(config)

    config = pystk.RaceConfig()
    config.track = "icy_soccer_field"
    config.mode = config.RaceMode.SOCCER
    config.step_size = 0.1
    config.num_kart = 2
    config.players[0].kart = "wilber"
    config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL
    config.players[0].team = 0
    config.players.append(
        pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1))

    race = pystk.Race(config)
    race.start()

    uis = [gui.UI([gui.VT['IMAGE']])]

    state = pystk.WorldState()
    t0 = time()
    n = 0

    ax = plt.gcf().add_subplot(3, 3, 9)

    # Hard coded goal line
    goal_line = np.array([[[-10.449999809265137, 0.07000000029802322, -64.5],
                           [10.449999809265137, 0.07000000029802322, -64.5]],
Ejemplo n.º 11
0
        'amanda', 'emule', 'suzanne', 'gavroche', 'hexley', 'xue', 'pidgin',
        'puffy', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber', 'wilber',
        'wilber', 'wilber', 'wilber'
    ]

    config = pystk.RaceConfig()
    config.num_kart = 4

    config.difficulty = 2

    num_player = 4
    config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL
    for i in range(3):
        config.players.append(
            pystk.PlayerConfig(random.choice(possible_karts),
                               pystk.PlayerConfig.Controller.AI_CONTROL,
                               (args.team + i + 1) % 2))

    config.players[0].team = args.team

    for p in config.players:
        if ((p.team) % 2 == 1):
            p.kart = random.choice(possible_karts)
        else:
            p.kart = 'wilber'

    if args.track is not None:
        config.track = args.track
        if args.track in soccer_tracks:
            config.mode = config.RaceMode.SOCCER
    if args.step_size is not None:
    config = pystk.GraphicsConfig.hd()
    config.screen_width = 400
    config.screen_height = 300

    pystk.init(config)

    config = pystk.RaceConfig()
    config.track = "icy_soccer_field"
    config.mode = config.RaceMode.SOCCER
    config.step_size = 0.1
    config.num_kart = 4
    config.players[0].kart = "wilber"
    config.players[0].controller = pystk.PlayerConfig.Controller.PLAYER_CONTROL
    config.players[0].team = 0
    config.players.append(
        pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1))
    config.players.append(
        pystk.PlayerConfig("", pystk.PlayerConfig.Controller.PLAYER_CONTROL,
                           0))
    config.players.append(
        pystk.PlayerConfig("", pystk.PlayerConfig.Controller.AI_CONTROL, 1))
    config.difficulty = 2
    race = pystk.Race(config)
    race.start()

    uis = [gui.UI([gui.VT['IMAGE']])]

    state = pystk.WorldState()
    t0 = time()
    n = 0