code: def motion_from_essential(
      E_mat: torch.Tensor,
  ) -> Tuple[torch.Tensor, torch.Tensor]:
      r"""Get Motion (R's and t's ) from Essential matrix.
  
      Computes and return four possible poses exist for the decomposition of the Essential
      matrix. The possible solutions are :math:`[R1,t], [R1,-t], [R2,t], [R2,-t]`.
  
      Args:
          E_mat: The essential matrix in the form of :math:`(*, 3, 3)`.
  
      Returns:
          The rotation and translation containing the four possible combination for the retrieved motion.
          The tuple is as following :math:`[(*, 4, 3, 3), (*, 4, 3, 1)]`.
      """
      if not (len(E_mat.shape) >= 2 and E_mat.shape[-2:] == (3, 3)):
          raise AssertionError(E_mat.shape)
  
      # decompose the essential matrix by its possible poses
      R1, R2, t = decompose_essential_matrix(E_mat)
  
      # compbine and returns the four possible solutions
      Rs = stack([R1, R1, R2, R2], dim=-3)
      Ts = stack([t, -t, t, -t], dim=-3)
  
      return Rs, Ts
  
file_path: kornia/kornia/geometry/epipolar/essential.py
imports: from typing import Optional, Tuple
  import torch
  import kornia.geometry.epipolar
  from kornia.core import eye, ones_like, stack, where, zeros
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_SAME_SHAPE, KORNIA_CHECK_SHAPE
  from kornia.geometry import solvers
  from kornia.utils import eye_like, vec_like
  from kornia.utils.helpers import _torch_svd_cast
  from .numeric import cross_product_matrix
  from .projection import depth_from_point, projection_from_KRt
  from .triangulation import triangulate_points
label_desc: Use image node_id 5 for calling a global function with example usage: motion_from_essential(E_mat) and returns: Rs,  Ts