Skip to main content

Wuji SDK: Python package for automatic device discovery and real-time data streaming with Wuji devices.

Project description

wuji-sdk (Python)

Python SDK for Wuji series devices. Provides automatic device discovery, connection management, and real-time data streaming for Wuji Glove, Wuji Hand 2, and other Wuji peripherals. Features a type-safe semantic API with native async/await and callback-based subscription support, multi-channel MCAP recording, and rich hand tracking data including joint angles, skeleton, and fingertip poses.

For detailed documentation, see the Wuji Docs Center.

Looking for the C SDK? See the C SDK README.

Installation

pip install wuji-sdk

When running examples from this repository against local source changes, rebuild and install the Python extension into the active virtual environment first:

cd crates/sdk-python
maturin develop

Quick Start

import time
from wuji_sdk import SdkManager

manager = SdkManager.instance()
devices = manager.scan()
if not devices:
    print("No devices found")
    exit()
glove = manager.connect(sn=devices[0].sn, device_name="glove")

sub = glove.tactile().subscribe_with_callback(
    callback=lambda frame: print(f"Max pressure: {max(frame.data):.2f}")
)

time.sleep(10)
sub.close()

More examples: examples/python/.

Examples

  • wuji_glove/0.subscribe_callback.py: subscribe to glove streams with callbacks; pass --hand-model-path to set a custom online-IK URDF first.
  • wuji_glove/1.subscribe_async.py: subscribe to glove streams with async/await; pass --hand-model-path to set a custom online-IK URDF first.
  • wuji_glove/2.recording.py: record glove data to MCAP.
  • wuji_glove/3.offline_pipeline.py: run hand tracking from offline frames.
  • wuji_glove/4.user.py: inspect, create, and switch local SDK users.
  • wuji_glove/5.calibration.py: run IK calibration with terminal guidance or API-style callbacks.
  • wuji_glove/6.emf_poses_rate_divider.py: lower the EMF pose output rate and compare affected stream rates.
  • retargeting/0.retarget_session.py: map hand keypoints (21×3) to a joint command with RetargetSession — no hardware needed.
  • retargeting/1.teleop_real.py: live teleoperation — drive a Wuji Hand / Wuji Hand 2 from a Wuji Glove (an example built on RetargetSession; swap the glove read for any (21,3) keypoint source).

Retargeting

Map human hand keypoints to Wuji Hand joint commands. Install the runtime dependencies first:

pip install "wuji-sdk[retarget]"

The SDK exposes the pure retarget interface — one frame at a time, supply keypoints from any source:

import numpy as np
from wuji_sdk import Handedness, retargeting

# The hand model selects the builtin tuning config internally — no config path to manage.
session = retargeting.RetargetSession.for_hand(
    retargeting.HandModel.WujiHand2, side=Handedness.Right
)
qpos = session.step(np.zeros((21, 3), dtype=np.float32))  # -> (20,) joint command (firmware order)

Driving a hand live (read → retarget → send) is plain application code built on this interface — see retargeting/1.teleop_real.py for a complete glove → hand loop.

Retargeting is available on Linux x86_64 / aarch64.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ x86-64

wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64

wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_x86_64.whl (31.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ x86-64

wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_aarch64.whl (30.6 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64

File details

Details for the file wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fd0e62d10474cc976d0e9a59adfaf4979ba16fbac1e5c7226c5f46b519e85789
MD5 9e70e22ffb9c418a79372cdb8e0587bf
BLAKE2b-256 63df5034582767b069b6141cfcc7290e505545dd2945eeb8185c9dfec2c52ee1

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_x86_64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 2cf8af8df02570d22f6b4050235ede3f08a0af2e0f6d75ca75923199b6b7e3e6
MD5 d539873f9487fa9377a0ff71d5eb97ed
BLAKE2b-256 52c4bf6271c69b24bdd91de0a61b0f23fa7d805f6a9cac5840aa3937f6db3859

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp314-cp314-manylinux_2_34_aarch64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 f0342fc5e6f7c060289ad94ef1ac1e0ae1a172b7110ddfc46d4d39410f9c092f
MD5 14fe96be59c9db4971946fb9e5222dd3
BLAKE2b-256 0685a1b46ec5781cf59f4db48fca6864a28e47e6099ef53f1d61cc612321bd02

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_x86_64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 daec5a6861ee27ac145fb11aee504143abaaee481921d73359cdd33e213ef46d
MD5 92a8156c56c9e7de7846e7b7b1350e97
BLAKE2b-256 4b14f96b9c33159624dcc9868df0a1c762938481ff943b0bc44f62c814b10cac

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp313-cp313-manylinux_2_34_aarch64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 89f4421167daf892adae2f57eade363047b403966ae3956b57e7f10762b11698
MD5 c64ae0d2adaada6f3fce1ce4ad3d9a42
BLAKE2b-256 7938c1cd916749b78728fe6310c099bd66f1bb149a12369c026ea6d5d06e1044

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_x86_64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 bfd914b636c8c49923788b62bb1017530bf929d6a89e499e6ffcfd910acddd91
MD5 fd8f5787d00659e6ae5dbb64609a71ee
BLAKE2b-256 8bc6ea51aab7e462d7474132e417e067abe2e71de511eabc7d4681110c4d0b0f

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp312-cp312-manylinux_2_34_aarch64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d349d57f4ca35c1b64050b68632ea37abc8c9893d5e872e7d26b4b2a0423956b
MD5 cbea089b85a2d7726e3bb7b3399facc2
BLAKE2b-256 984aef780205b56aff44c5369846e30da44e1722153991fa253983db662b2d40

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_x86_64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 9c5f22f2dfd504e3f269b1a5b2cc3faa0361101e06142a4ebeb4ef9f92b93a38
MD5 7d8f84c9996cb0ddd056f0c4f1d1e148
BLAKE2b-256 b5c493d0dee61daaea71829db8bd1272fe9e1c5d99b2321e0f8db050c1ee14fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp311-cp311-manylinux_2_34_aarch64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_x86_64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 c19866e7c564762dcb7e6a2f8fb3eae07d04c649ae0b060e4e1b1167b9ab7a46
MD5 a74191314310a54fa7ba5ab01b100fa2
BLAKE2b-256 56430d4587bfa0fadc9e08fb62dfae2f935dba32b7c98ac32c98016836f5865e

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_x86_64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_aarch64.whl.

File metadata

File hashes

Hashes for wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 395b922da9b790ece12d1c2c64a781a93052e2a7450ae8f27131bdfb54112012
MD5 f27bcbc4504a070becca49d31f1095ef
BLAKE2b-256 0c4a3c612a029e1119df49814ce2111a9bb7ffdb53611215382982abf452eeca

See more details on using hashes here.

Provenance

The following attestation bundles were made for wuji_sdk-2026.7.1-cp310-cp310-manylinux_2_34_aarch64.whl:

Publisher: release.yml on wuji-technology/wuji-sdk-dev

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page