SDK 数据参考
数据流概览
Wuji Glove 通过 Wuji SDK 输出多种数据流,既有手套硬件直采的原始数据,也有 SDK 算法解算的后处理产物。数据订阅方式见 SDK 数据订阅,快速上手见 快速开始。
所有数据帧共享相同的 FrameHeader,包含序列号和设备时间戳。通用类型定义(FrameHeader、Vector3、Quaternion、Pose 等)见 SDK 数据结构参考。timestamp_us 同步前后语义、同步机制与精度见 SDK 时间同步与时间戳。
可用数据流
数据流按生成方式分三类:
- 原始数据:由手套硬件直接采集,是所有产物的输入。可只保存、事后用原始数据转换复算出全部产物,与实时计算结果一致,且显著降低采集时的 CPU 占用。
- 后处理产物:由 SDK 算法在原始数据上解算生成。
- 全局资源:设备级坐标变换,独立于各数据流发布。
原始数据
| 数据流 | SDK 方法 | 类型 | 输出率 | 描述 |
|---|---|---|---|---|
| 触觉 | glove.tactile() | TactileFrame | 120 FPS | 压阻阵列的 24×32 校准压力矩阵 |
| EMF 位姿 | glove.emf_poses() | EmfPoseArray | 120 Hz | EMF 模块输出的 5 指定位位姿 |
| IMU | glove.imu_palm() | ImuData | 800 Hz | 手背 IMU 的姿态、角速度和加速度 |
后处理产物
| 数据流 | SDK 方法 | 类型 | 输出率 | 描述 |
|---|---|---|---|---|
| 触觉分区 | glove.tactile_zones() | TactileZones | 120 FPS | 由 tactile 按手部区域聚合的压力数据 |
| 触觉点云 | glove.tactile_point_cloud() | PointCloud | 120 Hz | 由 tactile 生成的触觉 3D 点云 |
| 接触检测 | glove.tactile_binary() | TactileBinary | 120 FPS | 由 tactile 推断的 24×32 二值接触图(1.0 接触 / 0.0 未接触 / -1.0 无效触点) |
| 接触残差 | glove.tactile_residual() | TactileResidual | 120 FPS | 由 tactile 推断的 24×32 有符号接触残差(每像素 实测 − 预测基线,用户自行二值化) |
| 指尖位姿 | glove.tip_poses() | FingertipPoses | 120 Hz | 由 emf_poses 解算的 5 指指尖位姿 |
| 关节角度 | glove.hand_joint_angles() | HandJointAngles | 120 Hz | 由 emf_poses 解算的 21 DoF 手部关节角度(拇指 5 + 其余四指各 4) |
| 手骨架 | glove.hand_skeleton() | HandSkeleton | 120 Hz | 由 emf_poses 解算的 21 个 MediaPipe 关键点骨架 |
EMF 链路(emf_poses 与衍生流 tip_poses、hand_joint_angles、hand_skeleton、tactile_point_cloud)支持运行时降频。调用 glove.emf_poses_rate_divider().set(N) 把这 5 个流同步降到 输入率 / N(默认 1,N=4 → 30 Hz),降低 CPU 占用。IMU 流(imu_*、tf)与触觉流(tactile、tactile_zones、tactile_binary、tactile_residual)不受影响。
全局资源
| 数据流 | SDK 方法 | 类型 | 输出率 | 描述 |
|---|---|---|---|---|
| 静态坐标变换 | manager.tf_static() | FrameTransforms | 1 Hz | 固定坐标系关系 |
| 动态坐标变换 | manager.tf() | FrameTransforms | 800 Hz | IMU 驱动的动态变换 |
C SDK 等价:wuji_subscribe_tf(...) / wuji_subscribe_tf_static(...),回调签名 WujiFrameTransforms,设备无关。完整 C 接口用法见 Wuji SDK · C 接口参考。