ding.utils.render_helper¶
ding.utils.render_helper
¶
render_env(env, render_mode='rgb_array')
¶
Overview
Render the environment's current frame.
Arguments:
- env (:obj:gym.Env): DI-engine env instance.
- render_mode (:obj:str): Render mode.
Returns:
- frame (:obj:numpy.ndarray): [H * W * C]
render(env, render_mode='rgb_array')
¶
Overview
Render the environment's current frame.
Arguments:
- env (:obj:BaseEnv): DI-engine env instance.
- render_mode (:obj:str): Render mode.
Returns:
- frame (:obj:numpy.ndarray): [H * W * C]
get_env_fps(env)
¶
Overview
Get the environment's fps.
Arguments:
- env (:obj:gym.Env): DI-engine env instance.
Returns:
- fps (:obj:int).
fps(env_manager)
¶
Overview
Render the environment's fps.
Arguments:
- env (:obj:BaseEnvManager): DI-engine env manager instance.
Returns:
- fps (:obj:int).
Full Source Code
../ding/utils/render_helper.py
1from typing import TYPE_CHECKING, Optional 2from numpy import ndarray 3 4if TYPE_CHECKING: 5 from ding.envs import BaseEnv, BaseEnvManager 6 7 8def render_env(env, render_mode: Optional[str] = 'rgb_array') -> "ndarray": 9 """ 10 Overview: 11 Render the environment's current frame. 12 Arguments: 13 - env (:obj:`gym.Env`): DI-engine env instance. 14 - render_mode (:obj:`str`): Render mode. 15 Returns: 16 - frame (:obj:`numpy.ndarray`): [H * W * C] 17 """ 18 if hasattr(env, 'sim'): 19 # mujoco: mujoco frame is unside-down by default 20 return env.sim.render(camera_name='track', height=128, width=128)[::-1] 21 else: 22 # other envs 23 return env.render(mode=render_mode) 24 25 26def render(env: "BaseEnv", render_mode: Optional[str] = 'rgb_array') -> "ndarray": 27 """ 28 Overview: 29 Render the environment's current frame. 30 Arguments: 31 - env (:obj:`BaseEnv`): DI-engine env instance. 32 - render_mode (:obj:`str`): Render mode. 33 Returns: 34 - frame (:obj:`numpy.ndarray`): [H * W * C] 35 """ 36 gym_env = env._env 37 return render_env(gym_env, render_mode=render_mode) 38 39 40def get_env_fps(env) -> "int": 41 """ 42 Overview: 43 Get the environment's fps. 44 Arguments: 45 - env (:obj:`gym.Env`): DI-engine env instance. 46 Returns: 47 - fps (:obj:`int`). 48 """ 49 50 if hasattr(env, 'model'): 51 # mujoco 52 fps = 1 / env.model.opt.timestep 53 elif hasattr(env, 'env') and 'video.frames_per_second' in env.env.metadata.keys(): 54 # classic control 55 fps = env.env.metadata['video.frames_per_second'] 56 else: 57 # atari and other envs 58 fps = 30 59 return fps 60 61 62def fps(env_manager: "BaseEnvManager") -> "int": 63 """ 64 Overview: 65 Render the environment's fps. 66 Arguments: 67 - env (:obj:`BaseEnvManager`): DI-engine env manager instance. 68 Returns: 69 - fps (:obj:`int`). 70 """ 71 try: 72 # env_ref is a ding gym environment 73 gym_env = env_manager.env_ref._env 74 return get_env_fps(gym_env) 75 except: 76 return 30