in gym_hil/mujoco_gym_env.py [0:0]
def apply_action(self, action):
"""Apply the action to the robot."""
x, y, z, rx, ry, rz, grasp_command = action
# Set the mocap position
pos = self._data.mocap_pos[0].copy()
dpos = np.asarray([x, y, z])
npos = np.clip(pos + dpos, *self._cartesian_bounds)
self._data.mocap_pos[0] = npos
# Set gripper grasp
g = self._data.ctrl[self._gripper_ctrl_id] / MAX_GRIPPER_COMMAND
ng = np.clip(g + grasp_command, 0.0, 1.0)
self._data.ctrl[self._gripper_ctrl_id] = ng * MAX_GRIPPER_COMMAND
# Apply operational space control
for _ in range(self._n_substeps):
tau = opspace(
model=self._model,
data=self._data,
site_id=self._pinch_site_id,
dof_ids=self._panda_dof_ids,
pos=self._data.mocap_pos[0],
ori=self._data.mocap_quat[0],
joint=self._home_position,
gravity_comp=True,
)
self._data.ctrl[self._panda_ctrl_ids] = tau
mujoco.mj_step(self._model, self._data)