chrisjcc commited on
Commit
45b8435
·
verified ·
1 Parent(s): de503ed

Updated run_tray_simulation() (safe for HuggingFace Spaces)

Browse files

- Renderer(model, width, height) initializes a headless framebuffer — safe for use in headless environments like HuggingFace Spaces.
- renderer.update_scene(data) prepares the rendering scene.
- renderer.render() returns a NumPy array image (H x W x 3).
- Make sure to renderer.close() when done to release GPU/GL resources.

Files changed (1) hide show
  1. tray_sim.py +7 -3
tray_sim.py CHANGED
@@ -3,7 +3,6 @@ import numpy as np
3
  import imageio
4
  import os
5
  import tempfile
6
- from mujoco import viewer
7
 
8
  MODEL_PATH = "assets/tray.xml"
9
 
@@ -16,13 +15,18 @@ def run_tray_simulation(seed=0):
16
  data.qpos[:3] = [0.0, 0.0, 0.3 + 0.2 * np.random.rand()] # x, y, z
17
  data.qvel[:] = 0
18
 
19
- # Simulate
 
 
20
  frames = []
21
  for _ in range(200):
22
  mujoco.mj_step(model, data)
23
- img = mujoco.mjr_render(model, data, width=480, height=480, camera=None)
 
24
  frames.append(img)
25
 
 
 
26
  # Save as GIF to temp file
27
  gif_path = os.path.join(tempfile.gettempdir(), f"tray_sim_{seed}.gif")
28
  imageio.mimsave(gif_path, frames, fps=20)
 
3
  import imageio
4
  import os
5
  import tempfile
 
6
 
7
  MODEL_PATH = "assets/tray.xml"
8
 
 
15
  data.qpos[:3] = [0.0, 0.0, 0.3 + 0.2 * np.random.rand()] # x, y, z
16
  data.qvel[:] = 0
17
 
18
+ # Use mujoco.Renderer for offscreen rendering
19
+ renderer = mujoco.Renderer(model, width=480, height=480)
20
+
21
  frames = []
22
  for _ in range(200):
23
  mujoco.mj_step(model, data)
24
+ renderer.update_scene(data)
25
+ img = renderer.render()
26
  frames.append(img)
27
 
28
+ renderer.close()
29
+
30
  # Save as GIF to temp file
31
  gif_path = os.path.join(tempfile.gettempdir(), f"tray_sim_{seed}.gif")
32
  imageio.mimsave(gif_path, frames, fps=20)