class_docstr: Class to represent a named pose between two frames.
  
  Internally represented by either Se2 or Se3.
  
  Example:
      >>> b_from_a = NamedPose(Se3.identity(), frame_src="frame_a", frame_dst="frame_b")
      >>> b_from_a
      NamedPose(dst_from_src=rotation: Parameter containing:
      tensor([1., 0., 0., 0.], requires_grad=True)
      translation: x: 0.0
      y: 0.0
      z: 0.0,
      frame_src: frame_a -> frame_dst: frame_b)
class_docstr_tok: ["Class","to","represent","a","named","pose","between","two","frames",".","Internally","represented","by","either","Se2","or","Se3",".","Example",":",">",">",">","b_from_a","=","NamedPose","(","Se3.identity","(",")",",","frame_src=","''","frame_a","''",",","frame_dst=","''","frame_b","''",")",">",">",">","b_from_a","NamedPose","(","dst_from_src=rotation",":","Parameter","containing",":","tensor","(","[","1.",",","0.",",","0.",",","0",".","]",",","requires_grad=True",")","translation",":","x",":","0.0","y",":","0.0","z",":","0.0",",","frame_src",":","frame_a","-",">","frame_dst",":","frame_b",")"]
docstr: Compose two NamedPoses.
  
  Args:
      other: NamedPose to compose with.
  
  Returns:
      Composed NamedPose.
  
  Example:
      >>> b_from_a = NamedPose(Se3.identity(), frame_src="frame_a", frame_dst="frame_b")
      >>> c_from_b = NamedPose(Se3.identity(), frame_src="frame_b", frame_dst="frame_c")
      >>> c_from_b * b_from_a
      NamedPose(dst_from_src=rotation: Parameter containing:
      tensor([1., 0., 0., 0.], requires_grad=True)
      translation: x: 0.0
      y: 0.0
      z: 0.0,
      frame_src: frame_a -> frame_dst: frame_c)
docstr_tok: ["Compose","two","NamedPoses",".","Args",":","other",":","NamedPose","to","compose","with",".","Returns",":","Composed","NamedPose",".","Example",":",">",">",">","b_from_a","=","NamedPose","(","Se3.identity","(",")",",","frame_src=","''","frame_a","''",",","frame_dst=","''","frame_b","''",")",">",">",">","c_from_b","=","NamedPose","(","Se3.identity","(",")",",","frame_src=","''","frame_b","''",",","frame_dst=","''","frame_c","''",")",">",">",">","c_from_b","*","b_from_a","NamedPose","(","dst_from_src=rotation",":","Parameter","containing",":","tensor","(","[","1.",",","0.",",","0.",",","0",".","]",",","requires_grad=True",")","translation",":","x",":","0.0","y",":","0.0","z",":","0.0",",","frame_src",":","frame_a","-",">","frame_dst",":","frame_c",")"]
code: def __mul__(self, other: NamedPose) -> NamedPose:
      """Compose two NamedPoses.
  
      Args:
          other: NamedPose to compose with.
  
      Returns:
          Composed NamedPose.
  
      Example:
          >>> b_from_a = NamedPose(Se3.identity(), frame_src="frame_a", frame_dst="frame_b")
          >>> c_from_b = NamedPose(Se3.identity(), frame_src="frame_b", frame_dst="frame_c")
          >>> c_from_b * b_from_a
          NamedPose(dst_from_src=rotation: Parameter containing:
          tensor([1., 0., 0., 0.], requires_grad=True)
          translation: x: 0.0
          y: 0.0
          z: 0.0,
          frame_src: frame_a -> frame_dst: frame_c)
      """
      if self._frame_src != other._frame_dst:
          raise ValueError(f"Cannot compose {self} with {other}")
      if isinstance(other.pose, Se2):
          return NamedPose(
              self._dst_from_src._mul_se2(other.pose),
              other._frame_src,
              self._frame_dst,
          )
      elif isinstance(other.pose, Se3):
          return NamedPose(
              self._dst_from_src._mul_se3(other.pose),
              other._frame_src,
              self._frame_dst,
          )
      else:
          raise ValueError(
              f"Pose must be either Se2 or Se3, got {type(self._dst_from_src)}"
          )
  
file_path: kornia/kornia/geometry/pose.py
imports: from __future__ import annotations
  import uuid
  from kornia.core import Tensor, eye
  from kornia.geometry.liegroup import Se2, Se3, So2, So3
  from kornia.geometry.quaternion import Quaternion
label_desc: Use image node_id 3 for calling the NamedPose obj's underlying member method code with example usage: obj.__mul__(other) and returns: NamedPose, NamedPose