Skip to content

Commit 6fee166

Browse files
authored
update isaacsim for benchmark (#763)
1 parent ddcfcfa commit 6fee166

1 file changed

Lines changed: 26 additions & 7 deletions

File tree

metasim/sim/isaacsim/isaacsim.py

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,15 @@ def _init_scene(self, simulation_app=None, args=None) -> None:
131131
if self.sim.has_gui():
132132
self._init_keyboard()
133133

134+
def _write_root_state_to_sim(self, obj_inst, pose, velocity, env_ids, *, kinematic: bool) -> None:
135+
if isinstance(env_ids, torch.Tensor):
136+
env_ids_t = env_ids
137+
else:
138+
env_ids_t = torch.tensor(env_ids, device=self.device)
139+
obj_inst.write_root_pose_to_sim(pose, env_ids=env_ids_t)
140+
if not kinematic:
141+
obj_inst.write_root_velocity_to_sim(velocity, env_ids=env_ids_t)
142+
134143
def _load_robots(self) -> None:
135144
for robot in self.robots:
136145
self._add_robot(robot)
@@ -348,8 +357,13 @@ def _set_states(self, states: list[DictEnvState] | TensorState, env_ids: list[in
348357
# Set root state (fix_base_link only affects physics, not manual state setting)
349358
root_state = states.objects[obj.name].root_state.clone()
350359
root_state[:, :3] += self.scene.env_origins
351-
obj_inst.write_root_pose_to_sim(root_state[env_ids, :7], env_ids=env_ids)
352-
obj_inst.write_root_velocity_to_sim(root_state[env_ids, 7:], env_ids=env_ids)
360+
self._write_root_state_to_sim(
361+
obj_inst,
362+
root_state[env_ids, :7],
363+
root_state[env_ids, 7:],
364+
env_ids=env_ids,
365+
kinematic=bool(obj.fix_base_link),
366+
)
353367
# Set joint state for articulated objects
354368
if isinstance(obj, ArticulationObjCfg):
355369
joint_ids_reindex = self.get_joint_reindex(obj.name, inverse=True)
@@ -368,9 +382,12 @@ def _set_states(self, states: list[DictEnvState] | TensorState, env_ids: list[in
368382
robot_inst = self.scene.articulations[robot.name]
369383
root_state = states.robots[robot.name].root_state.clone()
370384
root_state[:, :3] += self.scene.env_origins
371-
robot_inst.write_root_pose_to_sim(root_state[env_ids, :7], env_ids=env_ids)
372-
robot_inst.write_root_velocity_to_sim(
373-
states.robots[robot.name].root_state[env_ids, 7:], env_ids=env_ids
385+
self._write_root_state_to_sim(
386+
robot_inst,
387+
root_state[env_ids, :7],
388+
states.robots[robot.name].root_state[env_ids, 7:],
389+
env_ids=env_ids,
390+
kinematic=bool(robot.fix_base_link),
374391
)
375392
joint_ids_reindex = self.get_joint_reindex(robot.name, inverse=True)
376393
robot_inst.write_joint_position_to_sim(
@@ -1510,10 +1527,12 @@ def _set_object_pose(
15101527
],
15111528
dim=-1,
15121529
)
1513-
obj_inst.write_root_pose_to_sim(pose, env_ids=torch.tensor(env_ids, device=self.device))
1514-
obj_inst.write_root_velocity_to_sim(
1530+
self._write_root_state_to_sim(
1531+
obj_inst,
1532+
pose,
15151533
torch.zeros((len(env_ids), 6), device=self.device, dtype=torch.float32),
15161534
env_ids=torch.tensor(env_ids, device=self.device),
1535+
kinematic=bool(object.fix_base_link),
15171536
) # ! critical
15181537
obj_inst.write_data_to_sim()
15191538

0 commit comments

Comments
 (0)