diff --git a/env-data/tests/__init__.py b/env-data/tests/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/examples/demo.py b/examples/demo.py index db28717c2f348489a774a2be5a4f5697d9000213..a1ddbf6293f0e81e48f423bdb7e16e753808b9bc 100644 --- a/examples/demo.py +++ b/examples/demo.py @@ -122,46 +122,55 @@ class Demo: self.renderer.close_window() + @staticmethod + def run_generate_random_scenario(): + demo_000 = Demo(Scenario_Generator.generate_random_scenario()) + demo_000.run_demo() + + @staticmethod + def run_generate_complex_scenario(): + demo_001 = Demo(Scenario_Generator.generate_complex_scenario()) + demo_001.run_demo() + + @staticmethod + def run_example_network_000(): + demo_000 = Demo(Scenario_Generator.load_scenario('example_network_000.pkl')) + demo_000.run_demo() + + @staticmethod + def run_example_network_001(): + demo_001 = Demo(Scenario_Generator.load_scenario('example_network_001.pkl')) + demo_001.run_demo() + + @staticmethod + def run_example_network_002(): + demo_002 = Demo(Scenario_Generator.load_scenario('example_network_002.pkl')) + demo_002.run_demo() + + @staticmethod + def run_example_network_003(): + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_network_003.pkl')) + demo_flatland_000.renderer.resize() + demo_flatland_000.set_max_framerate(5) + demo_flatland_000.run_demo(30) + + @staticmethod + def run_example_flatland_000(): + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_000.pkl')) + demo_flatland_000.renderer.resize() + demo_flatland_000.run_demo(60) + + @staticmethod + def run_example_flatland_001(): + demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_001.pkl')) + demo_flatland_000.renderer.resize() + demo_flatland_000.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp')) + demo_flatland_000.run_demo(60) + + @staticmethod + def run_complex_scene(): + demo_001 = Demo(Scenario_Generator.load_scenario('complex_scene.pkl')) + demo_001.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp')) + demo_001.run_demo(360) -if False: - demo_000 = Demo(Scenario_Generator.generate_random_scenario()) - demo_000.run_demo() - demo_000 = None - - demo_001 = Demo(Scenario_Generator.generate_complex_scenario()) - demo_001.run_demo() - demo_001 = None - - demo_000 = Demo(Scenario_Generator.load_scenario('example_network_000.pkl')) - demo_000.run_demo() - demo_000 = None - - demo_001 = Demo(Scenario_Generator.load_scenario('example_network_001.pkl')) - demo_001.run_demo() - demo_001 = None - - demo_002 = Demo(Scenario_Generator.load_scenario('example_network_002.pkl')) - demo_002.run_demo() - demo_002 = None - - demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_000.pkl')) - demo_flatland_000.renderer.resize() - demo_flatland_000.run_demo(60) - demo_flatland_000 = None - - demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_network_003.pkl')) - demo_flatland_000.renderer.resize() - demo_flatland_000.set_max_framerate(5) - demo_flatland_000.run_demo(30) - demo_flatland_000 = None - - demo_flatland_000 = Demo(Scenario_Generator.load_scenario('example_flatland_001.pkl')) - demo_flatland_000.renderer.resize() - demo_flatland_000.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp')) - demo_flatland_000.run_demo(60) - demo_flatland_000 = None - -demo_001 = Demo(Scenario_Generator.load_scenario('complex_scene.pkl')) -demo_001.set_record_frames(os.path.join(__file_dirname__, '..', 'rendering', 'frame_{:04d}.bmp')) -demo_001.run_demo(360) -demo_001 = None +Demo.run_complex_scene() diff --git a/requirements_dev.txt b/requirements_dev.txt index 9eb74f2b1371c921b4d13718cc7a885c8c8e1d4b..6f8589b52167a0988a8c5531779c595997fc8beb 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -16,4 +16,4 @@ svgutils==0.3.1 screeninfo==0.3.1 pyarrow==0.13.0 importlib-metadata==0.17 -importlib-resources==1.0.2 +importlib_resources==1.0.2 diff --git a/tests/test_env_edit.py b/tests/test_env_edit.py index 0707cf3ce51c77d9918e25e5b3858a46574b321e..ec9dc07158637a9beec12c456e6604aad8e231c8 100644 --- a/tests/test_env_edit.py +++ b/tests/test_env_edit.py @@ -4,7 +4,7 @@ from flatland.envs.rail_env import RailEnv def test_load_env(): env = RailEnv(10, 10) - env.load("env-data/tests/test-10x10.mpk") + env.load_resource('env-data.tests', 'test-10x10.mpk') agent_static = EnvAgentStatic((0, 0), 2, (5, 5), False) env.add_agent_static(agent_static) diff --git a/tests/test_integration_test.py b/tests/test_integration_test.py index 8b6db60f991a523a064b8b5f73e07fbda1d768cd..808af10157298cc3630e7ba7980481b0eb17e833 100644 --- a/tests/test_integration_test.py +++ b/tests/test_integration_test.py @@ -1,138 +1,49 @@ -import os import random -import time import numpy as np -from flatland.envs.generators import complex_rail_generator -from flatland.envs.generators import random_rail_generator -from flatland.envs.rail_env import RailEnv -from flatland.utils.rendertools import RenderTool +from examples.demo import Demo # ensure that every demo run behave constantly equal random.seed(1) np.random.seed(1) -class Scenario_Generator: - @staticmethod - def generate_random_scenario(number_of_agents=3): - # Example generate a rail given a manual specification, - # a map of tuples (cell_type, rotation) - transition_probability = [15, # empty cell - Case 0 - 5, # Case 1 - straight - 5, # Case 2 - simple switch - 1, # Case 3 - diamond crossing - 1, # Case 4 - single slip - 1, # Case 5 - double slip - 1, # Case 6 - symmetrical - 0, # Case 7 - dead end - 1, # Case 1b (8) - simple turn right - 1, # Case 1c (9) - simple turn left - 1] # Case 2b (10) - simple switch mirrored - - # Example generate a random rail - - env = RailEnv(width=20, - height=20, - rail_generator=random_rail_generator(cell_type_relative_proportion=transition_probability), - number_of_agents=number_of_agents) - - return env - - @staticmethod - def generate_complex_scenario(number_of_agents=3): - env = RailEnv(width=15, - height=15, - rail_generator=complex_rail_generator(nr_start_goal=6, nr_extra=30, min_dist=10, - max_dist=99999, seed=0), - number_of_agents=number_of_agents) - - return env - - @staticmethod - def load_scenario(filename, number_of_agents=3): - env = RailEnv(width=2 * (1 + number_of_agents), - height=1 + number_of_agents) - - """ - env = RailEnv(width=20, - height=20, - rail_generator=rail_from_list_of_saved_GridTransitionMap_generator( - [filename]), - number_of_agents=number_of_agents) - """ - if os.path.exists(filename): - print("load file: ", filename) - env.load(filename) - env.reset(False, False) - else: - print("File does not exist:", filename, " Working directory: ", os.getcwd()) - - return env - - -class Demo: - - def __init__(self, env): - self.env = env - self.create_renderer() - self.action_size = 4 - self.max_frame_rate = 60 - self.record_frames = None - - def set_record_frames(self, record_frames): - self.record_frames = record_frames - - def create_renderer(self): - self.renderer = RenderTool(self.env, gl="PILSVG") - handle = self.env.get_agent_handles() - return handle - - def set_max_framerate(self, max_frame_rate): - self.max_frame_rate = max_frame_rate +def test_flatland_000(): + Demo.run_example_flatland_000() + # TODO test assertions - def run_demo(self, max_nbr_of_steps=30): - action_dict = dict() - # Reset environment - _ = self.env.reset(False, False) +def test_flatland_001(): + Demo.run_example_flatland_001() + # TODO test assertions - time.sleep(0.0001) # to satisfy lint... - for step in range(max_nbr_of_steps): +def test_network_000(): + Demo.run_example_network_000() + # TODO test assertions - # Action - for iAgent in range(self.env.get_num_agents()): - # allways walk straight forward - action = 2 - # update the actions - action_dict.update({iAgent: action}) +def test_network_001(): + Demo.run_example_network_001() + # TODO test assertions - # environment step (apply the actions to all agents) - next_obs, all_rewards, done, _ = self.env.step(action_dict) - # render - self.renderer.renderEnv(show=True, show_observations=False) - - if done['__all__']: - break +def test_network_002(): + Demo.run_example_network_002() + # TODO test assertions - if self.record_frames is not None: - self.renderer.gl.saveImage(self.record_frames.format(step)) - self.renderer.close_window() +def test_complex_scene(): + Demo.run_complex_scene() + # TODO test assertions -def test_temp_pk1(): - demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/temp.pkl')) - demo_001.run_demo(10) +def test_generate_complex_scenario(): + Demo.run_generate_complex_scenario() # TODO test assertions -def test_flatland_001_pkl(): - demo_001 = Demo(Scenario_Generator.load_scenario('./env-data/railway/example_flatland_001.pkl')) - demo_001.set_record_frames('./rendering/frame_{:04d}.bmp') - demo_001.run_demo(60) +def test_generate_random_scenario(): + Demo.run_generate_random_scenario() # TODO test assertions