import argparse import numpy as np from mlagents_envs.environment import UnityEnvironment EPSILON = 0.001 def test_run_environment(env_name): """ Run the low-level API test of compressed sensors using the specified environment :param env_name: Name of the Unity environment binary to launch """ env = UnityEnvironment( file_name=env_name, no_graphics=True, additional_args=["-logFile", "-"] ) try: # Reset the environment env.reset() env.step() # Set the default brain to work with group_name = list(env.behavior_specs.keys())[0] # Get the state of the agents decision_steps, _ = env.get_steps(group_name) # One observation comes from compressed sensor while the other comes # from an uncompressed sensor obs_1 = decision_steps.obs[0][0, :, :, :] obs_2 = decision_steps.obs[0][1, :, :, :] diff = np.abs(obs_1 - obs_2) # make sure both are identical assert np.max(diff) < EPSILON # make sure an actual observation was collected assert np.max(obs_1) > EPSILON print("Observations were identical") finally: env.close() if __name__ == "__main__": parser = argparse.ArgumentParser() parser.add_argument("--env", default="artifacts/testPlayer") args = parser.parse_args() test_run_environment(args.env)