:py:mod:`rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual`
==========================================================================

.. py:module:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual

.. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`CURICabinetBimanualTask <rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask>`
     -

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`compute_curi_reward <rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_curi_reward>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_curi_reward
          :summary:
   * - :py:obj:`compute_grasp_transforms <rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_grasp_transforms>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_grasp_transforms
          :summary:

API
~~~

.. py:class:: CURICabinetBimanualTask(cfg, rl_device, sim_device, graphics_device_id, headless, virtual_screen_capture, force_render)
   :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask

   Bases: :py:obj:`rofunc.learning.RofuncRL.tasks.isaacgymenv.base.curi_base_task.CURIBaseTask`

   .. py:method:: init_data_curi(hand_dof_name, lfinger_dof_name, rfinger_dof_name, env_ptr, curi_actor)
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.init_data_curi

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.init_data_curi

   .. py:method:: init_data_cabinet(env_ptr, cabinet_actor)
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.init_data_cabinet

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.init_data_cabinet

   .. py:method:: compute_reward(actions)
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.compute_reward

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.compute_reward

   .. py:method:: compute_observations()
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.compute_observations

      .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.compute_observations

   .. py:method:: post_physics_step()
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.post_physics_step

   .. py:method:: reset_idx(env_ids)
      :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.CURICabinetBimanualTask.reset_idx

.. py:function:: compute_curi_reward(reset_buf: Tensor, progress_buf: Tensor, actions: Tensor, cabinet_dof_pos: Tensor, curi_grasp_pos: Tensor, drawer_grasp_pos: Tensor, curi_grasp_rot: Tensor, drawer_grasp_rot: Tensor, curi_lfinger_pos: Tensor, curi_rfinger_pos: Tensor, gripper_forward_axis: Tensor, drawer_inward_axis: Tensor, gripper_up_axis: Tensor, drawer_up_axis: Tensor, num_envs: int, dist_reward_scale: float, rot_reward_scale: float, around_handle_reward_scale: float, open_reward_scale: float, finger_dist_reward_scale: float, action_penalty_scale: float, distX_offset: float, max_episode_length: float) -> Tuple[Tensor, Tensor]
   :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_curi_reward

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_curi_reward

.. py:function:: compute_grasp_transforms(hand_rot: Tensor, hand_pos: Tensor, curi_local_grasp_rot: Tensor, curi_local_grasp_pos: Tensor, drawer_rot: Tensor, drawer_pos: Tensor, drawer_local_grasp_rot: Tensor, drawer_local_grasp_pos: Tensor) -> Tuple[Tensor, Tensor, Tensor, Tensor]
   :canonical: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_grasp_transforms

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.isaacgymenv.curi_cabinet_bimanual.compute_grasp_transforms
