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: Compose two Se3 transformations.
  
  Args:
      right: the other Se3 transformation.
  
  Return:
      The resulting Se3 transformation.
code: def __mul__(self, right: Se3) -> Se3 | Vector3 | Tensor:
      """Compose two Se3 transformations.
  
      Args:
          right: the other Se3 transformation.
  
      Return:
          The resulting Se3 transformation.
      """
      so3 = self.so3
      t = self.t
      if isinstance(right, Se3):
          # https://github.com/strasdat/Sophus/blob/master/sympy/sophus/se3.py#L97
          return self._mul_se3(right)
      elif isinstance(right, (Vector3, Tensor)):
          # KORNIA_CHECK_SHAPE(right, ["B", "N"])  # FIXME: resolve shape bugs. @edgarriba
          return so3 * right + t.data
      else:
          raise TypeError(f"Unsupported type: {type(right)}")
  
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 5 for calling the Se3 obj's underlying member method code with example usage: obj.__mul__(right) and returns: self, unknown