Spaces:
Running
Running
| 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 | |