Skip to content

Commit 9a5b13e

Browse files
addressed review comments
1 parent 0e07daa commit 9a5b13e

File tree

2 files changed

+7
-92
lines changed

2 files changed

+7
-92
lines changed

genesis/vis/camera.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import genesis as gs
99
import genesis.utils.geom as gu
1010
from genesis.repr_base import RBC
11+
from genesis.utils.misc import tensor_to_array
1112

1213

1314
class Camera(RBC):
@@ -138,7 +139,8 @@ def attach(self, rigid_link, offset_T, env_idx: int | None = None):
138139
offset_T : np.ndarray, shape (4, 4)
139140
The transformation matrix specifying the camera's pose relative to the rigid link.
140141
env_idx : int
141-
The environment index this camera should be tied to. Offsets the `offset_T` accordingly. Must be specified if running parallel environments
142+
The environment index this camera should be tied to. Offsets the `offset_T` accordingly. Must be specified
143+
if running parallel environments
142144
143145
Raises
144146
------
@@ -182,8 +184,8 @@ def move_to_attach(self):
182184
if self._attached_link is None:
183185
gs.raise_exception(f"The camera hasn't been mounted!")
184186

185-
link_pos = self._attached_link.get_pos(envs_idx=self._attached_env_idx).cpu().numpy()
186-
link_quat = self._attached_link.get_quat(envs_idx=self._attached_env_idx).cpu().numpy()
187+
link_pos = tensor_to_array(self._attached_link.get_pos(envs_idx=self._attached_env_idx))
188+
link_quat = tensor_to_array(self._attached_link.get_quat(envs_idx=self._attached_env_idx))
187189
if self._attached_env_idx is not None:
188190
link_pos = link_pos[0] + self._visualizer._scene.envs_offset[self._attached_env_idx]
189191
link_quat = link_quat[0]

tests/test_rigid_physics.py

Lines changed: 2 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,7 +1060,7 @@ def test_batched_mounted_camera_rendering(show_viewer, tol):
10601060
morph=gs.morphs.Mesh(
10611061
file="meshes/sphere.obj",
10621062
scale=0.1,
1063-
pos=(-0.2, -0.8, 0.2),
1063+
pos=(-0.2, -0.5, 0.2),
10641064
fixed=True,
10651065
),
10661066
surface=gs.surfaces.Rough(
@@ -1069,93 +1069,6 @@ def test_batched_mounted_camera_rendering(show_viewer, tol):
10691069
),
10701070
),
10711071
)
1072-
scene.add_entity(
1073-
morph=gs.morphs.Mesh(
1074-
file="meshes/sphere.obj",
1075-
scale=0.1,
1076-
pos=(-0.2, -0.5, 0.2),
1077-
fixed=True,
1078-
),
1079-
surface=gs.surfaces.Rough(
1080-
color=(1.0, 1.0, 1.0),
1081-
),
1082-
)
1083-
scene.add_entity(
1084-
morph=gs.morphs.Mesh(
1085-
file="meshes/sphere.obj",
1086-
scale=0.1,
1087-
pos=(-0.2, -0.2, 0.2),
1088-
fixed=True,
1089-
),
1090-
surface=gs.surfaces.Smooth(
1091-
color=(0.6, 0.8, 1.0),
1092-
),
1093-
)
1094-
scene.add_entity(
1095-
morph=gs.morphs.Mesh(
1096-
file="meshes/sphere.obj",
1097-
scale=0.1,
1098-
pos=(-0.2, 0.2, 0.2),
1099-
fixed=True,
1100-
),
1101-
surface=gs.surfaces.Iron(
1102-
color=(1.0, 1.0, 1.0),
1103-
),
1104-
)
1105-
scene.add_entity(
1106-
morph=gs.morphs.Mesh(
1107-
file="meshes/sphere.obj",
1108-
scale=0.1,
1109-
pos=(-0.2, 0.5, 0.2),
1110-
fixed=True,
1111-
),
1112-
surface=gs.surfaces.Gold(
1113-
color=(1.0, 1.0, 1.0),
1114-
),
1115-
)
1116-
scene.add_entity(
1117-
morph=gs.morphs.Mesh(
1118-
file="meshes/sphere.obj",
1119-
scale=0.1,
1120-
pos=(-0.2, 0.8, 0.2),
1121-
fixed=True,
1122-
),
1123-
surface=gs.surfaces.Glass(
1124-
color=(1.0, 1.0, 1.0),
1125-
),
1126-
)
1127-
scene.add_entity(
1128-
morph=gs.morphs.Mesh(
1129-
file="meshes/sphere.obj",
1130-
scale=0.1,
1131-
pos=(0.2, -0.8, 0.2),
1132-
fixed=True,
1133-
),
1134-
surface=gs.surfaces.Smooth(
1135-
color=(1.0, 1.0, 1.0, 0.5),
1136-
),
1137-
)
1138-
scene.add_entity(
1139-
morph=gs.morphs.Mesh(
1140-
file="meshes/wooden_sphere_OBJ/wooden_sphere.obj",
1141-
scale=0.025,
1142-
pos=(0.2, -0.5, 0.2),
1143-
fixed=True,
1144-
),
1145-
)
1146-
scene.add_entity(
1147-
morph=gs.morphs.Mesh(
1148-
file="meshes/wooden_sphere_OBJ/wooden_sphere.obj",
1149-
scale=0.025,
1150-
pos=(0.2, -0.2, 0.2),
1151-
fixed=True,
1152-
),
1153-
surface=gs.surfaces.Rough(
1154-
diffuse_texture=gs.textures.ImageTexture(
1155-
image_path="textures/checker.png",
1156-
)
1157-
),
1158-
)
11591072
robot = scene.add_entity(
11601073
gs.morphs.MJCF(file="xml/franka_emika_panda/panda.xml"),
11611074
)
@@ -1208,7 +1121,7 @@ def test_batched_mounted_camera_rendering(show_viewer, tol):
12081121
steps_rgb_queue.put(robots_rgb_arrays)
12091122

12101123
if steps_rgb_queue.full(): # we have a set of 2 consecutive frames
1211-
diff_tol = 0.05 # expect atlest 5% difference between each frame
1124+
diff_tol = 0.02 # expect atlest 2% difference between each frame
12121125
frames_t_minus_1 = steps_rgb_queue.get()
12131126
frames_t = steps_rgb_queue.get()
12141127
for i in range(n_envs):

0 commit comments

Comments
 (0)