Device Parameters & Calibration

Reading Parameters

Read device properties through the semantic API:

sn = glove.sn().get()                # Serial number
version = glove.version().get()      # Firmware version
hand_side = glove.hand_side().get()  # Hand side ("left" or "right")
ip = glove.ip().get()                # IP address
port = glove.port().get()            # Data port

Writing Parameters

Some parameters support writing:

glove.ip().set("192.168.1.100")     # Change IP address
glove.port().set(50001)             # Change data port

Changing network parameters (IP address, port) may require reconnecting to the device.

Device Operations

Parameter persistence, reboot, and other device operations vary by product. For Wuji Glove, see Wuji Glove device operations.

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 and calibration files land in ~/.wuji/sdk/params/ and ~/.wuji/sdk/models/ directly. Create a named user when you need to isolate by operator:

from wuji_sdk import SdkManager

manager = SdkManager.instance()

# Create a user
alice = manager.create_user("Alice", description="right-hand operator")

# Switch to a specific user
manager.switch_user(alice["user_id"])

# Inspect the current user
print(manager.current_user())

# List all users
for user in manager.list_users():
    marker = "*" if user["is_default"] else " "
    print(f"{marker} {user['display_name']} ({user['user_id']})")

# Switch back to the default user
manager.switch_to_default_user()

Switching reloads calibration parameters for connected devices immediately, no reconnect needed. Deleting the current user automatically switches back to the default user.

User management is Python-only. The C SDK has no equivalent API.

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 both the current SDK user and the device serial number:

SDK userParameter fileModel directory
Default user~/.wuji/sdk/params/<sn>.toml~/.wuji/sdk/models/
Named user~/.wuji/sdk/users/<user_id>/params/<sn>.toml~/.wuji/sdk/users/<user_id>/models/

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
  • Migration: calibration results are plain files. Copy the entire directory to back up or move between hosts. 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

For Wuji Glove, see Wuji Glove Calibration for the calibration procedure and APIs.

Available Parameters

For Wuji Glove, see Wuji Glove available parameters.

Listing All Resources

List all available resources, parameters, and topics on a device:

# All resources
for res in glove.resources():
    print(f"{res.path} - {res.serde_format}")

# Read/write parameters
for param in glove.params():
    print(f"{param.path}")

# Subscribable topics
for topic in glove.topics():
    print(f"{topic.path} - {topic.serde_format}")