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; usesdk.exo()for Exo data andsdk.glove()for Glove access. - Call
start(),stop(), andclose()only on the rootSdkso 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.