Quickstart

This page shows minimal usage examples for parsing and streaming.

Parsing One Line

from hand_tracking_sdk import parse_line

packet = parse_line("Right wrist:, 0.1, 0.2, 0.3, 0.0, 0.0, 0.0, 1.0")
print(packet.side, packet.kind, packet.data)

Streaming Frames

from hand_tracking_sdk import HTSClient, HTSClientConfig, StreamOutput

client = HTSClient(
    HTSClientConfig(
        output=StreamOutput.FRAMES,
        host="0.0.0.0",
        port=9000,
    )
)

for event in client.iter_events():
    print(event)

Accessing Specific Joint Telemetry

from hand_tracking_sdk import HTSClient, HTSClientConfig, JointName, StreamOutput

client = HTSClient(HTSClientConfig(output=StreamOutput.FRAMES))

for frame in client.iter_events():
    x, y, z = frame.get_joint(JointName.INDEX_TIP)
    print(f"index tip xyz=({x:.5f}, {y:.5f}, {z:.5f})")
    index_joints = frame.get_finger("index")
    print(index_joints[JointName.INDEX_PROXIMAL])

Streaming Frames Over TCP

By default, hand_tracking_sdk.HTSClient listens in UDP mode. If your HTS setup uses TCP, configure transport_mode explicitly as shown below.

TCP server mode (recommended for HTS wired ADB reverse and wireless TCP when HTS is configured to connect to your host):

from hand_tracking_sdk import HTSClient, HTSClientConfig, StreamOutput, TransportMode

client = HTSClient(
    HTSClientConfig(
        transport_mode=TransportMode.TCP_SERVER,
        host="0.0.0.0",
        port=8000,
        timeout_s=1.0,
        output=StreamOutput.FRAMES,
    )
)

for frame in client.iter_events():
    print(frame)

For VR telemetry ingestion, use udp (default) or tcp_server.

Coordinate Conversion

from hand_tracking_sdk import convert_hand_frame_unity_left_to_right

converted = convert_hand_frame_unity_left_to_right(event)

Notes

  • HTS data uses Unity left-handed coordinates.

  • For many robotics stacks, convert data to right-handed coordinates.

  • In strict mode, malformed lines raise ParseError.