NVIDIA Holoscan SDK v3.5.0

holoscan.pose_tree

This module provides a Python interface to the Holoscan SDK logger.

class holoscan.pose_tree.Pose2

Bases: pybind11_builtins.pybind11_object

Attributes

angle
rotation
translation

Methods

from_matrix(arg0)

from_rotation(arg0)

from_translation(arg0)

from_xy_a(arg0, arg1, arg2)

identity()

inverse(self)

matrix(self)

__init__(*args, **kwargs)

Overloaded function.

  1. __init__(self: holoscan.pose_tree._pose_tree.Pose2) -> None

  2. __init__(self: holoscan.pose_tree._pose_tree.Pose2, rotation: holoscan.pose_tree._pose_tree.SO2, translation: numpy.ndarray[numpy.float64[2, 1]]) -> None

property angle
static from_matrix(arg0: numpy.ndarray[numpy.float64[3, 3]])holoscan.pose_tree._pose_tree.Pose2
static from_rotation(arg0: float)holoscan.pose_tree._pose_tree.Pose2
static from_translation(arg0: numpy.ndarray[numpy.float64[2, 1]])holoscan.pose_tree._pose_tree.Pose2
static from_xy_a(arg0: float, arg1: float, arg2: float)holoscan.pose_tree._pose_tree.Pose2
static identity()holoscan.pose_tree._pose_tree.Pose2
inverse(self: holoscan.pose_tree._pose_tree.Pose2)holoscan.pose_tree._pose_tree.Pose2
matrix(self: holoscan.pose_tree._pose_tree.Pose2) → numpy.ndarray[numpy.float64[3, 3]]
property rotation
property translation
class holoscan.pose_tree.Pose3

Bases: pybind11_builtins.pybind11_object

Attributes

rotation
translation

Methods

from_matrix(arg0)

from_pose2_xy(arg0)

from_rotation(arg0, arg1)

from_translation(arg0)

identity()

inverse(self)

to_pose2_xy(self)

__init__(*args, **kwargs)

Overloaded function.

  1. __init__(self: holoscan.pose_tree._pose_tree.Pose3) -> None

  2. __init__(self: holoscan.pose_tree._pose_tree.Pose3, rotation: holoscan.pose_tree._pose_tree.SO3, translation: numpy.ndarray[numpy.float64[3, 1]]) -> None

static from_matrix(arg0: numpy.ndarray[numpy.float64[4, 4]])holoscan.pose_tree._pose_tree.Pose3
static from_pose2_xy(arg0: holoscan.pose_tree._pose_tree.Pose2)holoscan.pose_tree._pose_tree.Pose3
static from_rotation(arg0: numpy.ndarray[numpy.float64[3, 1]], arg1: float)holoscan.pose_tree._pose_tree.Pose3
static from_translation(arg0: numpy.ndarray[numpy.float64[3, 1]])holoscan.pose_tree._pose_tree.Pose3
static identity()holoscan.pose_tree._pose_tree.Pose3
inverse(self: holoscan.pose_tree._pose_tree.Pose3)holoscan.pose_tree._pose_tree.Pose3
property rotation
to_pose2_xy(self: holoscan.pose_tree._pose_tree.Pose3)holoscan.pose_tree._pose_tree.Pose2
property translation
class holoscan.pose_tree.PoseTree

Bases: pybind11_builtins.pybind11_object

Methods

create_edges(*args, **kwargs) Overloaded function.
create_frame(self[, name, number_edges])

deinit(self)

delete_edge(*args, **kwargs) Overloaded function.
delete_frame(*args, **kwargs) Overloaded function.
disconnect_edge(*args, **kwargs) Overloaded function.
disconnect_frame(*args, **kwargs) Overloaded function.
find_frame(self, name)

find_or_create_frame(self, name[, number_edges])

get(*args, **kwargs) Overloaded function.
get_edge_names(self[, maximum_number_edges])

get_edge_uids(self[, maximum_number_edges])

get_frame_name(self, uid)

get_frame_names(self[, maximum_number_frames])

get_frame_uids(self[, maximum_number_frames])

get_latest(*args, **kwargs) Overloaded function.
get_pose2_xy(*args, **kwargs) Overloaded function.
get_pose_tree_version(self)

init(self[, number_frames, number_edges, ...])

set(*args, **kwargs) Overloaded function.
__init__(self: holoscan.pose_tree._pose_tree.PoseTree) → None
create_edges(*args, **kwargs)

Overloaded function.

  1. create_edges(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, number_edges: int = 16, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>) -> int

  2. create_edges(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, number_edges: int = 16, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>) -> int

create_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: str = '', number_edges: int = 16) → int
deinit(self: holoscan.pose_tree._pose_tree.PoseTree) → None
delete_edge(*args, **kwargs)

Overloaded function.

  1. delete_edge(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int) -> int

  2. delete_edge(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str) -> int

delete_frame(*args, **kwargs)

Overloaded function.

  1. delete_frame(self: holoscan.pose_tree._pose_tree.PoseTree, uid: int) -> int

  2. delete_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: str) -> int

disconnect_edge(*args, **kwargs)

Overloaded function.

  1. disconnect_edge(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, time: float) -> int

  2. disconnect_edge(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, time: float) -> int

disconnect_frame(*args, **kwargs)

Overloaded function.

  1. disconnect_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: int, time: float) -> int

  2. disconnect_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: str, time: float) -> int

find_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: str) → int
find_or_create_frame(self: holoscan.pose_tree._pose_tree.PoseTree, name: str, number_edges: int = 16) → int
get(*args, **kwargs)

Overloaded function.

  1. get(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, time: float = 1.7976931348623157e+308, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>, version: int = 0) -> holoscan.pose_tree._pose_tree.Pose3

  2. get(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, time: float = 1.7976931348623157e+308, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>, version: int = 0) -> holoscan.pose_tree._pose_tree.Pose3

get_edge_names(self: holoscan.pose_tree._pose_tree.PoseTree, maximum_number_edges: int = 1024) → list[tuple[str, str]]
get_edge_uids(self: holoscan.pose_tree._pose_tree.PoseTree, maximum_number_edges: int = 1024) → list[tuple[int, int]]
get_frame_name(self: holoscan.pose_tree._pose_tree.PoseTree, uid: int) → str
get_frame_names(self: holoscan.pose_tree._pose_tree.PoseTree, maximum_number_frames: int = 1024) → list[str]
get_frame_uids(self: holoscan.pose_tree._pose_tree.PoseTree, maximum_number_frames: int = 1024) → list[int]
get_latest(*args, **kwargs)

Overloaded function.

  1. get_latest(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int) -> tuple[holoscan.pose_tree._pose_tree.Pose3, float]

  2. get_latest(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str) -> tuple[holoscan.pose_tree._pose_tree.Pose3, float]

get_pose2_xy(*args, **kwargs)

Overloaded function.

  1. get_pose2_xy(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, time: float = 1.7976931348623157e+308, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>, version: int = 0) -> holoscan.pose_tree._pose_tree.Pose2

  2. get_pose2_xy(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, time: float = 1.7976931348623157e+308, method: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod = <PoseTreeAccessMethod.DEFAULT: 6>, version: int = 0) -> holoscan.pose_tree._pose_tree.Pose2

get_pose_tree_version(self: holoscan.pose_tree._pose_tree.PoseTree) → int
init(self: holoscan.pose_tree._pose_tree.PoseTree, number_frames: int = 1024, number_edges: int = 16384, history_length: int = 1048576, default_number_edges: int = 16, default_history_length: int = 1024, edges_chunk_size: int = 4, history_chunk_size: int = 64) → None
set(*args, **kwargs)

Overloaded function.

  1. set(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, time: float, pose: holoscan.pose_tree._pose_tree.Pose3) -> int

  2. set(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, time: float, pose: holoscan.pose_tree._pose_tree.Pose3) -> int

  3. set(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: int, rhs: int, time: float, pose: holoscan.pose_tree._pose_tree.Pose2) -> int

  4. set(self: holoscan.pose_tree._pose_tree.PoseTree, lhs: str, rhs: str, time: float, pose: holoscan.pose_tree._pose_tree.Pose2) -> int

class holoscan.pose_tree.PoseTreeAccessMethod

Bases: pybind11_builtins.pybind11_object

Members:

NEAREST

INTERPOLATE_LINEARLY

EXTRAPOLATE_LINEARLY

INTERPOLATE_SLERP

EXTRAPOLATE_SLERP

PREVIOUS

DEFAULT

Attributes

name

value
DEFAULT = <PoseTreeAccessMethod.DEFAULT: 6>
EXTRAPOLATE_LINEARLY = <PoseTreeAccessMethod.EXTRAPOLATE_LINEARLY: 2>
EXTRAPOLATE_SLERP = <PoseTreeAccessMethod.EXTRAPOLATE_SLERP: 4>
INTERPOLATE_LINEARLY = <PoseTreeAccessMethod.INTERPOLATE_LINEARLY: 1>
INTERPOLATE_SLERP = <PoseTreeAccessMethod.INTERPOLATE_SLERP: 3>
NEAREST = <PoseTreeAccessMethod.NEAREST: 0>
PREVIOUS = <PoseTreeAccessMethod.PREVIOUS: 5>
__init__(self: holoscan.pose_tree._pose_tree.PoseTreeAccessMethod, value: int) → None
property name
property value
class holoscan.pose_tree.PoseTreeManager(fragment, *args, port=13337, number_frames=1024, number_edges=16384, history_length=1048576, default_number_edges=16, default_history_length=1024, edges_chunk_size=4, history_chunk_size=64, request_timeout_ms=5000, request_poll_sleep_us=10, worker_progress_sleep_us=100, server_shutdown_timeout_ms=1000, server_shutdown_poll_sleep_ms=10, **kwargs)

Bases: holoscan.core.Resource, holoscan.core._core.DistributedAppService

Manage a shared PoseTree instance as a FragmentService, with optional distribution.

This resource creates and holds a holoscan.pose_tree.PoseTree instance, making it accessible to multiple components within the same fragment. When used in a distributed application, it can synchronize the pose tree across a driver and worker processes.

To use it, register an instance of PoseTreeManager with the fragment in your application’s compose method:

# In Application.compose() pose_tree_manager = PoseTreeManager(

self, name=”pose_tree”, **self.kwargs(“my_pose_tree_config”)

) self.register_service(pose_tree_manager)

Operators can then access the underlying PoseTree instance via the service() method:

# In Operator.__init__() self.pose_tree = self.service(PoseTreeManager, “pose_tree”).tree

Parameters
fragmentholoscan.core.Fragment

The fragment that the resource belongs to.

portint, optional

Port for the UCX server to listen on in a distributed setup. Defaults to 13337.

number_framesint, optional

Maximum number of coordinate frames. Defaults to 1024.

number_edgesint, optional

Maximum number of edges (direct transformations). Defaults to 16384.

history_lengthint, optional

Total capacity for historical pose data. Defaults to 1048576.

default_number_edgesint, optional

Default edges allocated per new frame. Defaults to 16.

default_history_lengthint, optional

Default history capacity per new edge. Defaults to 1024.

edges_chunk_sizeint, optional

Allocation chunk size for a frame’s edge list. Defaults to 4.

history_chunk_sizeint, optional

Allocation chunk size for an edge’s history buffer. Defaults to 64.

request_timeout_msint, optional

UCX client request timeout in milliseconds. Defaults to 5000.

request_poll_sleep_usint, optional

UCX client polling sleep interval in microseconds. Defaults to 10.

worker_progress_sleep_usint, optional

UCX progress loop sleep interval in microseconds. Defaults to 100.

server_shutdown_timeout_msint, optional

UCX server shutdown timeout in milliseconds. Defaults to 1000.

server_shutdown_poll_sleep_msint, optional

UCX server shutdown polling interval in milliseconds. Defaults to 10.

namestr, optional

The name of the resource.

Notes

Experimental Feature The Pose Tree feature is experimental. The API may change in future releases.

Attributes

args The list of arguments associated with the component.
description YAML formatted string describing the resource.
fragment Fragment that the resource belongs to.
id The identifier of the component.
name The name of the resource.
resource_type Resource type.
tree Get the managed PoseTree instance.

spec

Methods

add_arg(*args, **kwargs) Overloaded function.
driver_shutdown() Stop the PoseTreeUCXServer on the driver.
driver_start(_driver_ip) Start the PoseTreeUCXServer on the driver.
initialize(self) initialization method for the resource.
resource([_new_resource]) The resource associated with the service.
service(self, service_type[, id]) Retrieve a registered fragment service through the component's fragment.
setup(spec) Default implementation of setup method.
worker_connect(driver_ip) Connect the worker's PoseTreeUCXClient to the driver.
worker_disconnect() Disconnect the worker's PoseTreeUCXClient.

ResourceType

class ResourceType

Bases: pybind11_builtins.pybind11_object

Members:

NATIVE

GXF

Attributes

name

value
GXF = <ResourceType.GXF: 1>
NATIVE = <ResourceType.NATIVE: 0>
__init__(self: holoscan.core._core.Resource.ResourceType, value: int) → None
property name
property value
__init__(self: holoscan.core._core.Resource, arg0: object, arg1: holoscan::Fragment, *args, **kwargs) → None

Class representing a resource.

Can be initialized with any number of Python positional and keyword arguments.

If a name keyword argument is provided, it must be a str and will be used to set the name of the resource.

If a fragment keyword argument is provided, it must be of type holoscan.core.Fragment (or holoscan.core.Application). A single Fragment object can also be provided positionally instead.

Any other arguments will be cast from a Python argument type to a C++ Arg and stored in self.args. (For details on how the casting is done, see the py_object_to_arg utility).

Parameters
*args

Positional arguments.

**kwargs

Keyword arguments.

Raises
RuntimeError

If name kwarg is provided, but is not of str type. If multiple arguments of type Fragment are provided. If any other arguments cannot be converted to Arg type via py_object_to_arg.

add_arg(*args, **kwargs)

Overloaded function.

  1. add_arg(self: holoscan.core._core.ComponentBase, arg: holoscan.core._core.Arg) -> None

Add an argument to the component.

  1. add_arg(self: holoscan.core._core.ComponentBase, arg: holoscan.core._core.ArgList) -> None

Add a list of arguments to the component.

property args

The list of arguments associated with the component.

Returns
arglistholoscan.core.ArgList
property description

YAML formatted string describing the resource.

driver_shutdown()

Stop the PoseTreeUCXServer on the driver.

driver_start(_driver_ip)

Start the PoseTreeUCXServer on the driver.

property fragment

Fragment that the resource belongs to.

Returns
nameholoscan.core.Fragment
property id

The identifier of the component.

The identifier is initially set to -1, and will become a valid value when the component is initialized.

With the default executor (holoscan.gxf.GXFExecutor), the identifier is set to the GXF component ID.

Returns
idint
initialize(self: holoscan.core._core.Resource) → None

initialization method for the resource.

property name

The name of the resource.

Returns
namestr
resource(_new_resource=None)

The resource associated with the service.

property resource_type

Resource type.

holoscan.core.Resource.ResourceType enum representing the type of the resource. The two types currently implemented are NATIVE and GXF.

service(self: object, service_type: type, id: str = '') → object

Retrieve a registered fragment service through the component’s fragment.

This method delegates to the fragment’s service() method to retrieve a previously registered fragment service by its type and optional identifier. Returns None if no fragment service is found with the specified type and identifier.

Parameters
service_typetype

The type of the fragment service to retrieve. Must be a type that inherits from Resource or FragmentService.

idstr, optional

The identifier of the fragment service. If empty, retrieves by service type only. For Resources, this would typically be the resource’s name.

Returns
object or None

The fragment service instance of the requested type, or None if not found. If the service wraps a Resource and a Resource type is requested, the unwrapped Resource instance is returned.

Raises
RuntimeError

If the component has no associated fragment or if the fragment’s service method cannot be accessed.

Notes

This is a convenience method that internally calls the fragment’s service() method. For services that wrap Resources, the method will automatically unwrap and return the Resource if a Resource type is requested.

setup(spec: holoscan.core._core.PyComponentSpec)

Default implementation of setup method.

property spec
property tree

Get the managed PoseTree instance.

This is the primary method for accessing the pose tree from other components.

Returns
holoscan.pose_tree.PoseTree

The underlying pose tree instance managed by this resource.

worker_connect(driver_ip)

Connect the worker’s PoseTreeUCXClient to the driver.

worker_disconnect()

Disconnect the worker’s PoseTreeUCXClient.

class holoscan.pose_tree.PoseTreeUCXClient

Bases: pybind11_builtins.pybind11_object

Attributes

is_running

Methods

connect(self, host, port, request_snapshot)

disconnect(self)

error_to_str(arg0)

__init__(self: holoscan.pose_tree._pose_tree.PoseTreeUCXClient, pose_tree: holoscan.pose_tree._pose_tree.PoseTree, config: holoscan.pose_tree._pose_tree.PoseTreeUCXClientConfig = <holoscan.pose_tree._pose_tree.PoseTreeUCXClientConfig object at 0x7f815af66b70>) → None
connect(self: holoscan.pose_tree._pose_tree.PoseTreeUCXClient, host: str, port: int, request_snapshot: bool) → None
disconnect(self: holoscan.pose_tree._pose_tree.PoseTreeUCXClient) → None
static error_to_str(arg0: holoscan.pose_tree._pose_tree.PoseTreeUCXClientError) → str
property is_running
class holoscan.pose_tree.PoseTreeUCXClientConfig

Bases: pybind11_builtins.pybind11_object

Attributes

request_poll_sleep_us
request_timeout_ms
worker_progress_sleep_us

__init__(self: holoscan.pose_tree._pose_tree.PoseTreeUCXClientConfig) → None
property request_poll_sleep_us
property request_timeout_ms
property worker_progress_sleep_us
class holoscan.pose_tree.PoseTreeUCXServer

Bases: pybind11_builtins.pybind11_object

Attributes

is_running

Methods

error_to_str(arg0)

start(self, port)

stop(self)

__init__(self: holoscan.pose_tree._pose_tree.PoseTreeUCXServer, pose_tree: holoscan.pose_tree._pose_tree.PoseTree, config: holoscan.pose_tree._pose_tree.PoseTreeUCXServerConfig = <holoscan.pose_tree._pose_tree.PoseTreeUCXServerConfig object at 0x7f817af39230>) → None
static error_to_str(arg0: holoscan.pose_tree._pose_tree.PoseTreeUCXServerError) → str
property is_running
start(self: holoscan.pose_tree._pose_tree.PoseTreeUCXServer, port: int) → None
stop(self: holoscan.pose_tree._pose_tree.PoseTreeUCXServer) → None
class holoscan.pose_tree.PoseTreeUCXServerConfig

Bases: pybind11_builtins.pybind11_object

Attributes

shutdown_poll_sleep_ms
shutdown_timeout_ms
worker_progress_sleep_us

__init__(self: holoscan.pose_tree._pose_tree.PoseTreeUCXServerConfig) → None
property shutdown_poll_sleep_ms
property shutdown_timeout_ms
property worker_progress_sleep_us
class holoscan.pose_tree.SO2

Bases: pybind11_builtins.pybind11_object

Methods

angle(self)

cos(self)

from_angle(arg0)

from_direction(arg0)

from_normalized(arg0)

identity()

inverse(self)

matrix(self)

sin(self)

__init__(self: holoscan.pose_tree._pose_tree.SO2) → None
angle(self: holoscan.pose_tree._pose_tree.SO2) → float
cos(self: holoscan.pose_tree._pose_tree.SO2) → float
static from_angle(arg0: float)holoscan.pose_tree._pose_tree.SO2
static from_direction(arg0: numpy.ndarray[numpy.float64[2, 1]])holoscan.pose_tree._pose_tree.SO2
static from_normalized(arg0: numpy.ndarray[numpy.float64[2, 1]])holoscan.pose_tree._pose_tree.SO2
static identity()holoscan.pose_tree._pose_tree.SO2
inverse(self: holoscan.pose_tree._pose_tree.SO2)holoscan.pose_tree._pose_tree.SO2
matrix(self: holoscan.pose_tree._pose_tree.SO2) → numpy.ndarray[numpy.float64[2, 2]]
sin(self: holoscan.pose_tree._pose_tree.SO2) → float
class holoscan.pose_tree.SO3

Bases: pybind11_builtins.pybind11_object

Methods

angle(self)

axis(self)

euler_angles_rpy(self)

from_axis_angle(arg0, arg1)

from_matrix(arg0)

from_normalized_quaternion(arg0)

from_quaternion(arg0)

from_scaled_axis(arg0)

from_so2_xy(arg0)

identity()

inverse(self)

matrix(self)

quaternion(self)

__init__(self: holoscan.pose_tree._pose_tree.SO3) → None
angle(self: holoscan.pose_tree._pose_tree.SO3) → float
axis(self: holoscan.pose_tree._pose_tree.SO3) → numpy.ndarray[numpy.float64[3, 1]]
euler_angles_rpy(self: holoscan.pose_tree._pose_tree.SO3) → numpy.ndarray[numpy.float64[3, 1]]
static from_axis_angle(arg0: numpy.ndarray[numpy.float64[3, 1]], arg1: float)holoscan.pose_tree._pose_tree.SO3
static from_matrix(arg0: numpy.ndarray[numpy.float64[3, 3]])holoscan.pose_tree._pose_tree.SO3
static from_normalized_quaternion(arg0: Eigen::Quaternion<double, 0>)holoscan.pose_tree._pose_tree.SO3
static from_quaternion(arg0: Eigen::Quaternion<double, 0>)holoscan.pose_tree._pose_tree.SO3
static from_scaled_axis(arg0: numpy.ndarray[numpy.float64[3, 1]])holoscan.pose_tree._pose_tree.SO3
static from_so2_xy(arg0: holoscan.pose_tree._pose_tree.SO2)holoscan.pose_tree._pose_tree.SO3
static identity()holoscan.pose_tree._pose_tree.SO3
inverse(self: holoscan.pose_tree._pose_tree.SO3)holoscan.pose_tree._pose_tree.SO3
matrix(self: holoscan.pose_tree._pose_tree.SO3) → numpy.ndarray[numpy.float64[3, 3]]
quaternion(self: holoscan.pose_tree._pose_tree.SO3) → Eigen::Quaternion<double, 0>
Previous holoscan.operators
Next holoscan.resources
© Copyright 2022-2025, NVIDIA. Last updated on Aug 1, 2025.