Skip to content
Snippets Groups Projects
Commit 2ddee0f6 authored by Egli Adrian (IT-SCI-API-PFI)'s avatar Egli Adrian (IT-SCI-API-PFI)
Browse files

max frame rate can be set (demo.py)

parent 87869d15
No related branches found
No related tags found
No related merge requests found
import os import os
import time import time
import random import random
import numpy as np import numpy as np
from datetime import datetime
from flatland.envs.generators import complex_rail_generator from flatland.envs.generators import complex_rail_generator
# from flatland.envs.generators import rail_from_list_of_saved_GridTransitionMap_generator # from flatland.envs.generators import rail_from_list_of_saved_GridTransitionMap_generator
...@@ -125,12 +125,16 @@ class Demo: ...@@ -125,12 +125,16 @@ class Demo:
self.env = env self.env = env
self.create_renderer() self.create_renderer()
self.action_size = 4 self.action_size = 4
self.max_frame_rate = 60
def create_renderer(self): def create_renderer(self):
self.renderer = RenderTool(self.env, gl="PILSVG") self.renderer = RenderTool(self.env, gl="PILSVG")
handle = self.env.get_agent_handles() handle = self.env.get_agent_handles()
return handle return handle
def set_max_framerate(self,max_frame_rate):
self.max_frame_rate = max_frame_rate
def run_demo(self, max_nbr_of_steps=30): def run_demo(self, max_nbr_of_steps=30):
action_dict = dict() action_dict = dict()
...@@ -141,7 +145,7 @@ class Demo: ...@@ -141,7 +145,7 @@ class Demo:
for step in range(max_nbr_of_steps): for step in range(max_nbr_of_steps):
# time.sleep(.1) begin_frame_time_stamp = datetime.now()
# Action # Action
for iAgent in range(self.env.get_num_agents()): for iAgent in range(self.env.get_num_agents()):
...@@ -173,6 +177,17 @@ class Demo: ...@@ -173,6 +177,17 @@ class Demo:
if done['__all__']: if done['__all__']:
break break
# ensure that the rendering is not faster then the maximal allowed frame rate
end_frame_time_stamp = datetime.now()
frame_exe_time = end_frame_time_stamp - begin_frame_time_stamp
max_time = 1/self.max_frame_rate
delta = (max_time - frame_exe_time.total_seconds())
if delta > 0.0:
time.sleep(delta)
self.renderer.close_window() self.renderer.close_window()
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment