Exemple #1
0
def record_video(run_name: str, model_file: str, video_length: int):
    run_dir = get_run_dir(run_name)
    env, model = load_model(run_name, model_file)
    env = VecVideoRecorder(env,
                           os.path.join(run_dir, 'video'),
                           record_video_trigger=lambda x: x == 0,
                           video_length=video_length,
                           name_prefix='video')
    obs = env.reset()
    for _ in range(video_length + 1):
        action, _ = model.predict(obs, deterministic=False)
        obs, _, _, _ = env.step(action)
        env.render()
    env.close()
Exemple #2
0
def run(env):
    drive = PPO.load("conduziadrive")

    env = VecVideoRecorder(
        env,
        log_dir + '/videos/',
        record_video_trigger=lambda x: x == 0,
        video_length=1000,
        name_prefix="conduzia-drive-agent-{}".format(gym_env_id))

    env = VecNormalize(env,
                       gamma=0.9997,
                       norm_obs=True,
                       norm_reward=True,
                       clip_obs=10.,
                       epsilon=0.1)

    rewards = []
    total_reward = 0

    while True:
        obs = env.reset()

        for t in range(1000):
            action, _states = drive.predict(obs, deterministic=True)
            obs, reward, done, info = env.step(action)
            env.render()
            total_reward += reward
            if t % 100 == 0:
                print(t)
            if done:
                break
        print("Finished after {} timesteps".format(t + 1))
        print("Reward: {}".format(total_reward))
        rewards.append(total_reward)
        env.close()
        hyperparams=hyperparams,
    )

    model = ALGOS[algo].load(model_path, env=env)

    obs = env.reset()

    if video_folder is None:
        video_folder = os.path.join(log_path, "videos")

    # Note: apparently it renders by default
    env = VecVideoRecorder(
        env,
        video_folder,
        record_video_trigger=lambda x: x == 0,
        video_length=video_length,
        name_prefix=name_prefix,
    )

    env.reset()
    try:
        for _ in range(video_length + 1):
            action, _ = model.predict(obs, deterministic=deterministic)
            obs, _, _, _ = env.step(action)
            if not args.no_render:
                env.render()
    except KeyboardInterrupt:
        pass

    env.close()