SDKC++ 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. Declare all three members in one CompositeExoGloveConfig, then let the root Sdk manage them.

Configuration flow

  • Let CompositeExoGloveConfig own the only serial connection. Do not assign separate connections to the Exo or two Glove members.
  • Leave composite.connection.port empty for automatic discovery. Set it once on the composite when a fixed port is required.
  • 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.

Complete example

// Members declare identity only; they do not own separate serial connections.
qnbot::GloveConfig left_glove;
left_glove.side = qnbot::Side::left;
qnbot::GloveConfig right_glove;
right_glove.side = qnbot::Side::right;
qnbot::ExoConfig exo_config;

qnbot::CompositeExoGloveConfig composite;
// The shared port is auto-discovered by default. Uncomment to pin it.
// composite.connection.port = "/dev/ttyACM0";
composite.devices = {
    qnbot::DeviceConfig{left_glove},
    qnbot::DeviceConfig{right_glove},
    qnbot::DeviceConfig{exo_config},
};
qnbot::SdkConfig config;
config.devices.push_back(composite);
qnbot::Sdk sdk(config);

// Obtain all three members through the product facades on the root SDK.
auto glove = sdk.glove();
auto exo = sdk.exo();
auto left = glove.device(qnbot::Side::left);
auto right = glove.device(qnbot::Side::right);
auto exo_device = exo.device();

// Let the root SDK own the entire composite lifecycle.
sdk.start();
// Composite vibration is sent through Glove, not ExoHaptics.
const qnbot::GloveHaptics value{{{qnbot::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 members. Exo supplies telemetry, status, and IMU; Glove supplies pose and status. The current shared CDC path does not expose raw Glove IMU.

Install compatible Exo and Glove C++ packages. See the Glove composite guide and the complete composite-exo-glove/cpp example.