pycram.designators.GAP
======================

.. py:module:: pycram.designators.GAP


Attributes
----------

.. autoapisummary::

   pycram.designators.GAP.PouringActionDescription
   pycram.designators.GAP.MixingActionDescription
   pycram.designators.GAP.CuttingActionDescription


Classes
-------

.. autoapisummary::

   pycram.designators.GAP.GAP
   pycram.designators.GAP.MixingAction
   pycram.designators.GAP.CuttingAction
   pycram.designators.GAP.PouringAction


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

.. py:class:: GAP

   Bases: :py:obj:`pycram.designator.ActionDescription`


   The performable designator_description with a single element for each list of possible parameter.


   .. py:attribute:: object_
      :type:  pycram.world_concepts.world_object.Object


   .. py:attribute:: tool
      :type:  pycram.world_concepts.world_object.Object


   .. py:attribute:: arm
      :type:  pycram.datastructures.enums.Arms


   .. py:attribute:: technique
      :type:  Optional[str]
      :value: None



   .. py:method:: validate(result: Optional[typing_extensions.Any] = None, max_wait_time: Optional[datetime.timedelta] = None)

      Validate the action after performing it, by checking if the action effects are as expected.

      :param result: The result of the action if there is any
      :param max_wait_time: The maximum time to wait for the action to be validated, before raising an error.



   .. py:method:: plan() -> None
      :abstractmethod:


      Plan of the action. To be overridden by subclasses.

      :return: The result of the action, if there is any



.. py:class:: MixingAction

   Bases: :py:obj:`GAP`


   The performable designator_description with a single element for each list of possible parameter.


   .. py:method:: plan() -> None

      Plan of the action. To be overridden by subclasses.

      :return: The result of the action, if there is any



   .. py:method:: description(object_: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], tool: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], arm: Optional[Union[Iterable[pycram.datastructures.enums.Arms], pycram.datastructures.enums.Arms]] = None, technique: Optional[Union[Iterable[str], str]] = None)
      :classmethod:



.. py:class:: CuttingAction

   Bases: :py:obj:`GAP`


   The performable designator_description with a single element for each list of possible parameter.


   .. py:attribute:: slice_thickness
      :type:  Optional[float]
      :value: 0.03



   .. py:method:: plan() -> None

      Plan of the action. To be overridden by subclasses.

      :return: The result of the action, if there is any



   .. py:method:: description(object_: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], tool: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], arm: Optional[Union[Iterable[pycram.datastructures.enums.Arms], pycram.datastructures.enums.Arms]] = None, technique: Optional[Union[Iterable[str], str]] = None, slice_thickness: Optional[float] = 0.03)
      :classmethod:



   .. py:method:: calculate_slices(obj_length)


   .. py:method:: perpendicular_pose(slice_pose, angle) -> pycram.datastructures.pose.PoseStamped
      :staticmethod:



   .. py:method:: get_rotation_offset_from_axis_preference(pose_a, pose_b: pycram.datastructures.pose.PoseStamped) -> Tuple[int, float]
      :staticmethod:


      Compute a discrete rotation offset (-90 or 90 degrees) to align this pose's local axes with the direction
      toward a target pose, based on which axis (X or Y) is more aligned.

      :param pose_a: The source pose.
      :param pose_b: The target pose to align with.
      :return: Tuple of (rotation offset in degrees, signed angle difference in radians for Y axis).



.. py:class:: PouringAction

   Bases: :py:obj:`GAP`


   The performable designator_description with a single element for each list of possible parameter.


   .. py:attribute:: angle
      :type:  Optional[float]
      :value: 90



   .. py:method:: plan() -> None

      Plan of the action. To be overridden by subclasses.

      :return: The result of the action, if there is any



   .. py:method:: description(object_: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], tool: Union[Iterable[pycram.world_concepts.world_object.Object], pycram.world_concepts.world_object.Object], arm: Optional[Union[Iterable[pycram.datastructures.enums.Arms], pycram.datastructures.enums.Arms]] = None, technique: Optional[Union[Iterable[str], str]] = None, angle: Optional[Union[Iterable[float], float]] = 90)
      :classmethod:



.. py:data:: PouringActionDescription

.. py:data:: MixingActionDescription

.. py:data:: CuttingActionDescription

