class_docstr: Base class to represent the Se3 group.
  
  The SE(3) is the group of rigid body transformations about the origin of three-dimensional Euclidean
  space :math:`R^3` under the operation of composition.
  See more: https://ingmec.ual.es/~jlblanco/papers/jlblanco2010geometry3D_techrep.pdf
  
  Example:
      >>> q = Quaternion.identity()
      >>> s = Se3(q, torch.ones(3))
      >>> s.r
      Parameter containing:
      tensor([1., 0., 0., 0.], requires_grad=True)
      >>> s.t
      Parameter containing:
      tensor([1., 1., 1.], requires_grad=True)
docstr: Converts elements of lie algebra to elements of lie group.
  
  Args:
      v: vector of shape :math:`(B, 6)`.
  
  Example:
      >>> v = torch.zeros((1, 6))
      >>> s = Se3.exp(v)
      >>> s.r
      Parameter containing:
      tensor([[1., 0., 0., 0.]], requires_grad=True)
      >>> s.t
      Parameter containing:
      tensor([[0., 0., 0.]], requires_grad=True)
code: def exp(v: Tensor) -> Se3:
      """Converts elements of lie algebra to elements of lie group.
  
      Args:
          v: vector of shape :math:`(B, 6)`.
  
      Example:
          >>> v = torch.zeros((1, 6))
          >>> s = Se3.exp(v)
          >>> s.r
          Parameter containing:
          tensor([[1., 0., 0., 0.]], requires_grad=True)
          >>> s.t
          Parameter containing:
          tensor([[0., 0., 0.]], requires_grad=True)
      """
      # KORNIA_CHECK_SHAPE(v, ["B", "6"])  # FIXME: resolve shape bugs. @edgarriba
      upsilon = v[..., :3]
      omega = v[..., 3:]
      omega_hat = So3.hat(omega)
      omega_hat_sq = omega_hat @ omega_hat
      theta = batched_dot_product(omega, omega).sqrt()
      R = So3.exp(omega)
      V = (
          eye(3, device=v.device, dtype=v.dtype)
          + ((1 - theta.cos()) / (theta**2))[..., None, None]
          * omega_hat
          + ((theta - theta.sin()) / (theta**3))[..., None, None]
          * omega_hat_sq
      )
      U = where(
          theta[..., None] != 0.0,
          (upsilon[..., None, :] * V).sum(-1),
          upsilon,
      )
      return Se3(R, U)
  
imports: from __future__ import annotations
  from typing import Optional
  from kornia.core import Device, Dtype, Module, Parameter, Tensor, concatenate, eye, pad, stack, tensor, where, zeros_like
  from kornia.core.check import KORNIA_CHECK, KORNIA_CHECK_SAME_DEVICES
  from kornia.geometry.liegroup.so3 import So3
  from kornia.geometry.linalg import batched_dot_product
  from kornia.geometry.quaternion import Quaternion
  from kornia.geometry.vector import Vector3
label_desc: Use image node_id 12 for calling the Se3 obj's underlying member method code with example usage: obj.exp(v) and returns: Se3