Skip to main content

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

Quick Start

import time
from wuji_sdk import SdkManager, DeviceType

manager = SdkManager.instance()
# scan() reports each device's type, so connect only the glove.
gloves = [d for d in manager.scan() if d.device_type == DeviceType.WujiGlove]
if not gloves:
    print("No Wuji Glove found")
    exit()
glove = manager.connect(sn=gloves[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.set_stream_rate.py: lower the glove's raw pose output rate at runtime with subscription.set_rate() on emf_poses; derived streams follow automatically.
  • wuji_glove/7.tactile_calibration.py: run the recommended guided tactile-calibration flow.
  • wuji_glove/8.tactile_contact_view.py: independently observe the live tactile_binary contact grid after calibration; it is not a calibration workflow.
  • wuji_glove/9.tactile_residual_view.py: observe the continuous signed tactile_residual grid after calibration and apply an adjustable contact threshold.
  • 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). It lists the SDK users and asks which one to teleoperate under: press Enter to keep the current user, pick the default user for the built-in hand URDF, or pick a named user to use that user's calibrated hand model — an uncalibrated named user falls back to the built-in URDF.

Retargeting

Map human hand keypoints to Wuji Hand joint commands. Retargeting works out of the box — numpy is the only extra dependency (keypoint/qpos arrays):

pip install wuji-sdk numpy

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, HandModel, RetargetSession

# The hand model selects the builtin tuning config internally — no config path to manage.
session = RetargetSession.for_hand(HandModel.WujiHand2, side=Handedness.Right)

# A synthetic open right hand, (21, 3) in meters, MediaPipe landmark order —
# replace with your real keypoint source (camera / glove / replay).
# (All-zero / degenerate frames are rejected with an exception.)
keypoints = np.zeros((21, 3), dtype=np.float32)
for finger, x in enumerate([-0.04, -0.03, -0.01, 0.01, 0.03]):  # thumb..pinky
    for k in range(4):
        keypoints[1 + finger * 4 + k] = [x, 0.03 * (k + 1), 0.0]
keypoints[1] = [-0.03, 0.02, 0.01]  # thumb CMC nearer the palm

qpos = session.step(keypoints)  # -> (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

Metadata

Release files for wuji-sdk 2026.8.17

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for wuji-sdk 2026.8.17
File
wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ x86-64 Details
wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.34+ ARM64 Details
wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ x86-64 Details
wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.34+ ARM64 Details
wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ x86-64 Details
wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.34+ ARM64 Details
wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ x86-64 Details
wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.34+ ARM64 Details
wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ x86-64 Details
wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.34+ ARM64 Details

Total release size: 101.0 MB

Release files / wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_x86_64.whl

Download URL wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_x86_64.whl
Size 10.1 MB
Tags CPython 3.14 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
4ff7ac66b7eaf9d54aaf73c47f2f107df8f539ba5bd32b95f74e48335d231da3
BLAKE2b-256 checksum
How to use checksums
c8c64a1ff7463783060db73afdc9b74721123eb9dd9aa1edaf351ba93f6b1347
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_aarch64.whl

Download URL wuji_sdk-2026.8.17-cp314-cp314-manylinux_2_34_aarch64.whl
Size 10.1 MB
Tags CPython 3.14 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
d48326d095114654aa1fe2a6120aa156a1c679e9d291087e08c145e474655c7c
BLAKE2b-256 checksum
How to use checksums
2eb32f38262eca75a05dbeffe99119a2e0742e06bc7247ab4e60c2fb92d06ee6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_x86_64.whl

Download URL wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_x86_64.whl
Size 10.1 MB
Tags CPython 3.13 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
a65f2a53cf29cfa01e40cda17cb0b11466786acf73c6d34d55cc542bd8352196
BLAKE2b-256 checksum
How to use checksums
ee163dabff3be7868497e679065d55be3cc29ccfa66164b752d648abffeda7a8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_aarch64.whl

Download URL wuji_sdk-2026.8.17-cp313-cp313-manylinux_2_34_aarch64.whl
Size 10.1 MB
Tags CPython 3.13 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
12f4e7313f2c753815bdb8828bad9a3b313d62df42fa8cded49c76e66b5cf012
BLAKE2b-256 checksum
How to use checksums
9956a4ceb00346fb9f2115f75fe827508ff01ad2726d0a9d8d32df5c6a25d230
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_x86_64.whl

Download URL wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_x86_64.whl
Size 10.1 MB
Tags CPython 3.12 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
eaa36b5b74d1616428467cc50cc3136bd3ca00d7aef140a5ecb0508180c71fa8
BLAKE2b-256 checksum
How to use checksums
6969da2c7d352683ec777f1ed3e066c4ae302fe3c737fe245e847ef6bfb641d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_aarch64.whl

Download URL wuji_sdk-2026.8.17-cp312-cp312-manylinux_2_34_aarch64.whl
Size 10.1 MB
Tags CPython 3.12 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
a7825792c98680df3488b4f0fecc9e8c6e3181ca3b891032c1c198d12594a8a7
BLAKE2b-256 checksum
How to use checksums
32e4bb0648c8a9e9aa08a126c306385533dd6bbe16caea393c35229a846ca2a2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_x86_64.whl

Download URL wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_x86_64.whl
Size 10.1 MB
Tags CPython 3.11 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
0589de86149830e558e07b083ff736839bda4cb135db7d25b42be0d350da08f6
BLAKE2b-256 checksum
How to use checksums
6f2ff2a3e805e5e71722a5d180c5ed447d793a977c854596c8c4615d5e1785c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_aarch64.whl

Download URL wuji_sdk-2026.8.17-cp311-cp311-manylinux_2_34_aarch64.whl
Size 10.1 MB
Tags CPython 3.11 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
d4a48c93561cfd1d51789fc31d68ba185817a35e877ba9c3fe9af1b3d23d7216
BLAKE2b-256 checksum
How to use checksums
16c9bc7f640e68cd3b731bed2a4dc9c4830667c65f3f21cb632168699c6f56d8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_x86_64.whl

Download URL wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_x86_64.whl
Size 10.1 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64
SHA-256 checksum
How to use checksums
dbe6bcb1abb35881fad413d1913d98dacf5b43173961272bf5fffc59d38e5d52
BLAKE2b-256 checksum
How to use checksums
413121cef51ce3c2d8745bccff303ecfceb94116a2762d18e62252958284ed67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release files / wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_aarch64.whl

Download URL wuji_sdk-2026.8.17-cp310-cp310-manylinux_2_34_aarch64.whl
Size 10.1 MB
Tags CPython 3.10 Linux glibc 2.34+ ARM64
SHA-256 checksum
How to use checksums
985768076aa858eec6f8daae0e082401678758b329e22a4d31f3729b59a95a8a
BLAKE2b-256 checksum
How to use checksums
e5e6dcec7cb1e20bb0faa9158dae24aef43db9c1cf0fde2cee79f37be3cc49d9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2026.8.17 This release

10 release files

0.8.0

10 release files

0.6.0

10 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page