Spaces:
Sleeping
Sleeping
from typing import TYPE_CHECKING, Optional | |
from numpy import ndarray | |
if TYPE_CHECKING: | |
from ding.envs import BaseEnv, BaseEnvManager | |
def render_env(env, render_mode: Optional[str] = 'rgb_array') -> "ndarray": | |
""" | |
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] | |
""" | |
if hasattr(env, 'sim'): | |
# mujoco: mujoco frame is unside-down by default | |
return env.sim.render(camera_name='track', height=128, width=128)[::-1] | |
else: | |
# other envs | |
return env.render(mode=render_mode) | |
def render(env: "BaseEnv", render_mode: Optional[str] = 'rgb_array') -> "ndarray": | |
""" | |
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] | |
""" | |
gym_env = env._env | |
return render_env(gym_env, render_mode=render_mode) | |
def get_env_fps(env) -> "int": | |
""" | |
Overview: | |
Get the environment's fps. | |
Arguments: | |
- env (:obj:`gym.Env`): DI-engine env instance. | |
Returns: | |
- fps (:obj:`int`). | |
""" | |
if hasattr(env, 'model'): | |
# mujoco | |
fps = 1 / env.model.opt.timestep | |
elif hasattr(env, 'env') and 'video.frames_per_second' in env.env.metadata.keys(): | |
# classic control | |
fps = env.env.metadata['video.frames_per_second'] | |
else: | |
# atari and other envs | |
fps = 30 | |
return fps | |
def fps(env_manager: "BaseEnvManager") -> "int": | |
""" | |
Overview: | |
Render the environment's fps. | |
Arguments: | |
- env (:obj:`BaseEnvManager`): DI-engine env manager instance. | |
Returns: | |
- fps (:obj:`int`). | |
""" | |
try: | |
# env_ref is a ding gym environment | |
gym_env = env_manager.env_ref._env | |
return get_env_fps(gym_env) | |
except: | |
return 30 | |