:py:mod:`rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils`
==============================================================

.. py:module:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils

.. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils
   :allowtitles:

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

Functions
~~~~~~~~~

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

   * - :py:obj:`compute_heading_and_up <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_heading_and_up>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_heading_and_up
          :summary:
   * - :py:obj:`compute_rot <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_rot>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_rot
          :summary:
   * - :py:obj:`quat_axis <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_axis>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_axis
          :summary:
   * - :py:obj:`scale_transform <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.scale_transform>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.scale_transform
          :summary:
   * - :py:obj:`unscale_transform <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.unscale_transform>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.unscale_transform
          :summary:
   * - :py:obj:`saturate <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.saturate>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.saturate
          :summary:
   * - :py:obj:`quat_diff_rad <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_diff_rad>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_diff_rad
          :summary:
   * - :py:obj:`local_to_world_space <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.local_to_world_space>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.local_to_world_space
          :summary:
   * - :py:obj:`normalise_quat_in_pose <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.normalise_quat_in_pose>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.normalise_quat_in_pose
          :summary:
   * - :py:obj:`my_quat_rotate <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.my_quat_rotate>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.my_quat_rotate
          :summary:
   * - :py:obj:`quat_to_angle_axis <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_angle_axis>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_angle_axis
          :summary:
   * - :py:obj:`angle_axis_to_exp_map <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.angle_axis_to_exp_map>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.angle_axis_to_exp_map
          :summary:
   * - :py:obj:`quat_to_exp_map <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_exp_map>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_exp_map
          :summary:
   * - :py:obj:`quat_to_tan_norm <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_tan_norm>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_tan_norm
          :summary:
   * - :py:obj:`euler_xyz_to_exp_map <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.euler_xyz_to_exp_map>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.euler_xyz_to_exp_map
          :summary:
   * - :py:obj:`exp_map_to_angle_axis <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_angle_axis>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_angle_axis
          :summary:
   * - :py:obj:`exp_map_to_quat <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_quat>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_quat
          :summary:
   * - :py:obj:`slerp <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.slerp>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.slerp
          :summary:
   * - :py:obj:`calc_heading <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading
          :summary:
   * - :py:obj:`calc_heading_quat <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat
          :summary:
   * - :py:obj:`calc_heading_quat_inv <rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat_inv>`
     - .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat_inv
          :summary:

API
~~~

.. py:function:: compute_heading_and_up(torso_rotation: Tensor, inv_start_rot: Tensor, to_target: Tensor, vec0: Tensor, vec1: Tensor, up_idx: int) -> Tuple[Tensor, Tensor, Tensor, Tensor, Tensor]
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_heading_and_up

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_heading_and_up

.. py:function:: compute_rot(torso_quat, velocity, ang_velocity, targets, torso_positions)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_rot

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.compute_rot

.. py:function:: quat_axis(q: Tensor, axis: int = 0) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_axis

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_axis

.. py:function:: scale_transform(x: isaacgym.torch_utils.torch.Tensor, lower: isaacgym.torch_utils.torch.Tensor, upper: isaacgym.torch_utils.torch.Tensor) -> isaacgym.torch_utils.torch.Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.scale_transform

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.scale_transform

.. py:function:: unscale_transform(x: isaacgym.torch_utils.torch.Tensor, lower: isaacgym.torch_utils.torch.Tensor, upper: isaacgym.torch_utils.torch.Tensor) -> isaacgym.torch_utils.torch.Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.unscale_transform

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.unscale_transform

.. py:function:: saturate(x: isaacgym.torch_utils.torch.Tensor, lower: isaacgym.torch_utils.torch.Tensor, upper: isaacgym.torch_utils.torch.Tensor) -> isaacgym.torch_utils.torch.Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.saturate

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.saturate

.. py:function:: quat_diff_rad(a: isaacgym.torch_utils.torch.Tensor, b: isaacgym.torch_utils.torch.Tensor) -> isaacgym.torch_utils.torch.Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_diff_rad

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_diff_rad

.. py:function:: local_to_world_space(pos_offset_local: isaacgym.torch_utils.torch.Tensor, pose_global: isaacgym.torch_utils.torch.Tensor)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.local_to_world_space

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.local_to_world_space

.. py:function:: normalise_quat_in_pose(pose)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.normalise_quat_in_pose

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.normalise_quat_in_pose

.. py:function:: my_quat_rotate(q, v)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.my_quat_rotate

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.my_quat_rotate

.. py:function:: quat_to_angle_axis(q: Tensor) -> Tuple[Tensor, Tensor]
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_angle_axis

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_angle_axis

.. py:function:: angle_axis_to_exp_map(angle: Tensor, axis: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.angle_axis_to_exp_map

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.angle_axis_to_exp_map

.. py:function:: quat_to_exp_map(q: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_exp_map

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_exp_map

.. py:function:: quat_to_tan_norm(q: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_tan_norm

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.quat_to_tan_norm

.. py:function:: euler_xyz_to_exp_map(roll: Tensor, pitch: Tensor, yaw: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.euler_xyz_to_exp_map

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.euler_xyz_to_exp_map

.. py:function:: exp_map_to_angle_axis(exp_map)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_angle_axis

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_angle_axis

.. py:function:: exp_map_to_quat(exp_map)
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_quat

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.exp_map_to_quat

.. py:function:: slerp(q0: Tensor, q1: Tensor, t: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.slerp

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.slerp

.. py:function:: calc_heading(q: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading

.. py:function:: calc_heading_quat(q: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat

.. py:function:: calc_heading_quat_inv(q: Tensor) -> Tensor
   :canonical: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat_inv

   .. autodoc2-docstring:: rofunc.learning.RofuncRL.tasks.utils.torch_jit_utils.calc_heading_quat_inv
