SDKPython SDK

Glove + Exo composite solution

Connect an Exo and two Gloves over one shared serial link with one lifecycle.

Current version · 1.0.0

Glove + Exo composite solution

A Qnbot PLUS composite exposes the Exo, left Glove, and right Glove over one shared serial link. Create it with CompositeExoGloveConfig and let one root Sdk manage all three members.

Configuration flow

  • Configure the shared serial link once on CompositeExoGloveConfig. Do not assign separate connections to the Exo, left Glove, or right Glove member.
  • Use automatic discovery when no port is pinned. To target one device explicitly, replace the shared connection with SerialConnection(port="/dev/ttyACM0").
  • Put the left Glove, right Glove, and Exo configs in devices; use sdk.exo() for Exo data and sdk.glove() for Glove access.
  • Call start(), stop(), and close() only on the root Sdk so it owns the shared-link lifecycle.

Complete example

from qnbot_sdk import CompositeExoGloveConfig, Sdk, SerialConnection, Side
from qnbot_sdk.exo import ExoConfig
from qnbot_sdk.glove import GloveConfig, GloveFinger, GloveHaptics

# Configure the connection only on the composite; auto-discover the shared port.
# To pin it, use SerialConnection(port="/dev/ttyACM0") instead.
composite = CompositeExoGloveConfig(
    connection=SerialConnection(auto_discover=True),
    devices=(
        # Member configs do not declare their own serial connections.
        GloveConfig(side=Side.LEFT),
        GloveConfig(side=Side.RIGHT),
        ExoConfig(),
    ),
)
sdk = Sdk(devices=(composite,))

# Obtain all three members through the product facades on the root SDK.
glove = sdk.glove()
exo = sdk.exo()
left = glove.device(side=Side.LEFT)
right = glove.device(side=Side.RIGHT)
exo_device = exo.device()

# Let the root SDK own the entire composite lifecycle.
sdk.start()

# Composite vibration is sent through Glove, not ExoHaptics.
value = GloveHaptics({GloveFinger.THUMB: 80})
left.haptics().set(value)
right.haptics().set(value)
# Continue reading telemetry/status/IMU from exo_device.
left.haptics().clear()
right.haptics().clear()

sdk.stop()
sdk.close()

Standalone ExoHaptics do not apply in composite mode; send vibration through the left and right Glove haptics() APIs. Exo supplies telemetry, status, and IMU; Glove supplies pose and status. The current shared CDC path does not expose raw Glove IMU.

Install compatible qnbot-sdk-exo and qnbot-sdk-glove versions. See the Glove composite guide and the complete composite-exo-glove/python example.