SDK 数据参考

数据流概览

Wuji Glove 通过 Wuji SDK 输出多种数据流,既有手套硬件直采的原始数据,也有 SDK 算法解算的后处理产物。数据订阅方式见 SDK 数据订阅,快速上手见 快速开始

所有数据帧共享相同的 FrameHeader,包含序列号和设备时间戳。通用类型定义(FrameHeader、Vector3、Quaternion、Pose 等)见 SDK 数据结构参考timestamp_us 同步前后语义、同步机制与精度见 SDK 时间同步与时间戳

可用数据流

数据流按生成方式分三类:

  • 原始数据:由手套硬件直接采集,是所有产物的输入。可只保存、事后用原始数据转换复算出全部产物,与实时计算结果一致,且显著降低采集时的 CPU 占用。
  • 后处理产物:由 SDK 算法在原始数据上解算生成。
  • 全局资源:设备级坐标变换,独立于各数据流发布。

原始数据

数据流SDK 方法类型输出率描述
触觉glove.tactile()TactileFrame120 FPS压阻阵列的 24×32 校准压力矩阵
EMF 位姿glove.emf_poses()EmfPoseArray120 HzEMF 模块输出的 5 指定位位姿
IMUglove.imu_palm()ImuData800 Hz手背 IMU 的姿态、角速度和加速度

后处理产物

数据流SDK 方法类型输出率描述
触觉分区glove.tactile_zones()TactileZones120 FPStactile 按手部区域聚合的压力数据
触觉点云glove.tactile_point_cloud()PointCloud120 Hztactile 生成的触觉 3D 点云
接触检测glove.tactile_binary()TactileBinary120 FPStactile 推断的 24×32 二值接触图(1.0 接触 / 0.0 未接触 / -1.0 无效触点)
接触残差glove.tactile_residual()TactileResidual120 FPStactile 推断的 24×32 有符号接触残差(每像素 实测 − 预测基线,用户自行二值化)
指尖位姿glove.tip_poses()FingertipPoses120 Hzemf_poses 解算的 5 指指尖位姿
关节角度glove.hand_joint_angles()HandJointAngles120 Hzemf_poses 解算的 21 DoF 手部关节角度(拇指 5 + 其余四指各 4)
手骨架glove.hand_skeleton()HandSkeleton120 Hzemf_poses 解算的 21 个 MediaPipe 关键点骨架

EMF 链路(emf_poses 与衍生流 tip_poseshand_joint_angleshand_skeletontactile_point_cloud)支持运行时降频。调用 glove.emf_poses_rate_divider().set(N) 把这 5 个流同步降到 输入率 / N(默认 1,N=4 → 30 Hz),降低 CPU 占用。IMU 流(imu_*tf)与触觉流(tactiletactile_zonestactile_binarytactile_residual)不受影响。

全局资源

数据流SDK 方法类型输出率描述
静态坐标变换manager.tf_static()FrameTransforms1 Hz固定坐标系关系
动态坐标变换manager.tf()FrameTransforms800 HzIMU 驱动的动态变换

C SDK 等价:wuji_subscribe_tf(...) / wuji_subscribe_tf_static(...),回调签名 WujiFrameTransforms,设备无关。完整 C 接口用法见 Wuji SDK · C 接口参考