手套 + 外骨骼融合方案
通过共享串口连接双手套与外骨骼,并统一管理生命周期与设备能力。
当前版本 · 1.4.0
手套 + 外骨骼融合方案
Qnbot PLUS 融合设备用一个共享串口承载左手套、右手套和 Exo。在同一个
CompositeExoGloveConfig 中声明三个成员,再用根 Sdk 统一管理生命周期。
配置思路
- 共享串口只由
CompositeExoGloveConfig持有,不要再给两只手套或 Exo 成员单独配置连接。 - 保持
composite.connection.port为空即使用自动发现;需要锁定设备时,只在这里设置共享端口。 devices内放入左手套、右手套和 Exo;使用sdk.glove()与sdk.exo()取得成员。- 只对根
Sdk调用start()、stop()和close()。
完整示例
// 三个成员只声明身份,不各自持有串口。
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;
// 默认自动发现共享串口。固定端口时只需取消下行注释。
// 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);
// 通过两个产品门面取得共享链路上的三个成员。
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();
// 由根 Sdk 统一管理整个组合设备的生命周期。
sdk.start();
// 融合模式的震动通过手套成员发送。
const qnbot::GloveHaptics value{{{qnbot::GloveFinger::thumb, 80}}};
left.haptics().set(value);
right.haptics().set(value);
// Exo telemetry/status/IMU 从 exo_device 读取。
left.haptics().clear();
right.haptics().clear();
sdk.stop();
sdk.close();融合模式下 Exo haptics 不可用,震动控制必须走左右手套。Exo 提供 telemetry、status 和 IMU;手套提供 pose 与 status。当前共享 CDC 链路不提供手套原始 IMU。
请同时安装兼容版本的 Exo 与 Glove C++ 包。另见
外骨骼侧融合方案;完整程序见
composite-exo-glove/cpp。