Download env/pusht/pusht_image_env.py from ducido/diffusion_policy_gbc: direct link, hf CLI and curl.
- Browser
- Download file 1.96 kB
-
https://huggingface.co/ducido/diffusion_policy_gbc/resolve/main/env/pusht/pusht_image_env.py
- Command line
-
hf download hf://ducido/diffusion_policy_gbc/env/pusht/pusht_image_env.py
-
curl -L -o pusht_image_env.py https://huggingface.co/ducido/diffusion_policy_gbc/resolve/main/env/pusht/pusht_image_env.py
1.96 kB
| from gym import spaces | |
| from diffusion_policy.env.pusht.pusht_env import PushTEnv | |
| import numpy as np | |
| import cv2 | |
| class PushTImageEnv(PushTEnv): | |
| metadata = {"render.modes": ["rgb_array"], "video.frames_per_second": 10} | |
| def __init__(self, | |
| legacy=False, | |
| block_cog=None, | |
| damping=None, | |
| render_size=96): | |
| super().__init__( | |
| legacy=legacy, | |
| block_cog=block_cog, | |
| damping=damping, | |
| render_size=render_size, | |
| render_action=False) | |
| ws = self.window_size | |
| self.observation_space = spaces.Dict({ | |
| 'image': spaces.Box( | |
| low=0, | |
| high=1, | |
| shape=(3,render_size,render_size), | |
| dtype=np.float32 | |
| ), | |
| 'agent_pos': spaces.Box( | |
| low=0, | |
| high=ws, | |
| shape=(2,), | |
| dtype=np.float32 | |
| ) | |
| }) | |
| self.render_cache = None | |
| def _get_obs(self): | |
| img = super()._render_frame(mode='rgb_array') | |
| agent_pos = np.array(self.agent.position) | |
| img_obs = np.moveaxis(img.astype(np.float32) / 255, -1, 0) | |
| obs = { | |
| 'image': img_obs, | |
| 'agent_pos': agent_pos | |
| } | |
| # draw action | |
| if self.latest_action is not None: | |
| action = np.array(self.latest_action) | |
| coord = (action / 512 * 96).astype(np.int32) | |
| marker_size = int(8/96*self.render_size) | |
| thickness = int(1/96*self.render_size) | |
| cv2.drawMarker(img, coord, | |
| color=(255,0,0), markerType=cv2.MARKER_CROSS, | |
| markerSize=marker_size, thickness=thickness) | |
| self.render_cache = img | |
| return obs | |
| def render(self, mode): | |
| assert mode == 'rgb_array' | |
| if self.render_cache is None: | |
| self._get_obs() | |
| return self.render_cache | |