in gym_genesis/tasks/cube_pick.py [0:0]
def reset(self):
B = self.num_envs
# === Deterministic cube spawn using task._random ===
x = self._random.uniform(0.45, 0.80, size=(B,))
y = self._random.uniform(-0.25, 0.25, size=(B,))
z = np.full((B,), 0.02)
pos_tensor = torch.tensor(np.stack([x, y, z], axis=1), dtype=torch.float32, device=gs.device)
quat_tensor = torch.tensor([[0, 0, 0, 1]] * B, dtype=torch.float32, device=gs.device)
self.cube.set_pos(pos_tensor)
self.cube.set_quat(quat_tensor)
# Reset Franka to home position
qpos = np.array([0.0, -0.4, 0.0, -2.2, 0.0, 2.0, 0.8, 0.04, 0.04])
qpos_tensor = torch.tensor(qpos, dtype=torch.float32, device=gs.device).repeat(B, 1)
self.franka.set_qpos(qpos_tensor, zero_velocity=True)
self.franka.control_dofs_position(qpos_tensor[:, :7], self.motors_dof)
self.franka.control_dofs_position(qpos_tensor[:, 7:], self.fingers_dof)
self.scene.step()
if self.enable_pixels:
self.cam.start_recording()
return self.get_obs()