Reading Parameters
Read device properties through the semantic API:- Python
- C
Writing Parameters
Some parameters support writing:- Python
- C
Device Operations
Parameter persistence, reboot, and other device operations vary by product:SDK User Management
When several operators share the same device, calibration and local parameters from one operator overwrite another’s. The SDK keeps a local user profile per operator at~/.wuji/sdk/users/<user_id>/, isolating each user’s parameter and calibration files.
Without a named user, parameter files and tactile calibration land in ~/.wuji/sdk/params/ and ~/.wuji/sdk/tactile/ directly, and pose calibration isn’t available at all. Create a named user when you need to isolate by operator, or when you need pose calibration:
- Python
- C
User Data Export and Import
Pack everything an SDK user owns into a single zip file to back it up or move it to another host. A bundle holds the user’s hand calibration models, the tactile model for each device, and the latest complete tactile calibration run.- Python
- C
components list the state of each component:
Import behavior:
- The owner recorded in the bundle is created if it doesn’t exist, and the current user stays the same
- Every
presentcomponent that isn’t skipped is written and overwrites that user’s existing file - Skipping wins over writing: a skipped component is never written and never overwrites an existing file, and its
statein the report isskipped. Hand models are skipped this way when the owner is the default user (which doesn’t load local hand calibration), while the other components are still written - Validation (path safety, size caps, sha256, data format, and owner id) finishes before anything is written. Any failure raises an exception and leaves no file behind
The export path must end in
.zip, and the SDK creates the parent directory if it’s missing. The three C calls return only a status code, because the per-component detail doesn’t cross the FFI boundary — use the Python API when you need per-component results. A missing bundle returns WUJI_STATUS_ERR_NOT_FOUND, and a bundle that fails validation returns WUJI_STATUS_ERR_INVALID_DATA.Tactile Data Paths
The tactile model is trained in Wuji CLI tactile contact calibration. Models and calibration data are scoped by SDK user and device serial number:model/ holds the trained tactile model (contact.safetensors and contact.npz), and calibration-data/ holds the raw calibration runs, one subdirectory per run. A complete run has one data file per guided motion, 4 in total. Export takes the latest complete run only.
Calibration
Calibration fits the SDK’s algorithms to a specific physical device. The results are written to SDK-local parameter and model files and loaded automatically when the device subscribes to them. Calibration files are scoped by the current SDK user first, then split into three resource types:
Parameter files and the tactile directory are still keyed by device serial number. The tactile directory holds the trained model under
model/ and the latest calibration run under calibration-data/.
The pose hand URDF is stored per SDK user and hand side only (such as left_hand.urdf / right_hand.urdf), without the serial number or hand-profile dimension, so any device of the same side under the same user shares one model. The default user has no pose hand model at all: calibration and import never write one, and real-time IK always falls back to the built-in default. For Wuji Glove specifics, see Wuji Glove Calibration.
Switching the SDK user reloads the matching files for connected devices automatically, no reconnect required.
- When to calibrate: first time you use a device, a different wearer puts on a wearable device, higher-level model or algorithm generation changes, or calibration accuracy has visibly degraded. The exact triggers depend on the product
- Failure behavior: when calibration fails, the SDK preserves the last successful calibration and rolls back the new files automatically, so you can retry directly. Typical failure modes: timeout, solver fails to converge, file persistence fails, or the SDK user switches mid-calibration. Exact exception types vary by product
- Backup and migration: use user data export and import to pack a whole user’s calibration results — on import the SDK rebuilds the paths under the target host’s user directory. Copying the directory works too, but the parameter file can store absolute paths pointing to other files under
~/.wuji/sdk/(such as model files). When migrating to a host with a different home directory, update those paths or run calibration again
- Wuji Hand 2 fingertip tactile calibration (runs on the device and doesn’t write the SDK-local calibration files described in this section): Wuji Hand 2 Fingertip Tactile — Zero-Baseline Calibration and Status
- Wuji Glove calibration procedure and APIs: Wuji Glove Calibration
Available Parameters
Listing All Resources
List all available resources, parameters, and topics on a device:- Python
- C
Interface List
Every C string getter uses a two-step size query: pass
buf = NULL and buf_len = 0 to learn the required byte count, then allocate and call again to fill the buffer. APIs that return a report dictionary in Python return only a WujiStatus in C, because the per-component detail doesn’t cross the FFI boundary. For the WujiUserInfo and WujiUserUpdate fields, memory ownership, and the release functions, see the C Interface Reference.