读取原始数据
姿态与 IMU:设备直接产出,不需要算法包。
当前版本 · 1.4.0
读取原始数据
原始姿态由有效设备帧直接发布;IMU 在设备帧包含对应数据时直接发布。它们不需要
Retargeting 调度,也不会被 run_forever()、run_background() 或 update() 生成或限频。
手套姿态
通过 device.pose() 读取 GlovePose:
meta:source、时间、可选 sequence 与 frame ID。payload.root_pose:根节点位置和 XYZW quaternion。payload.fingertip_world与fingertip_local:五指世界/局部姿态。raw_valid_mask、held_mask与quality_flags:质量信息。
完整字段见 GlovePose 和 GloveFeaturePayload。
IMU(实验性功能)
通过 device.imu() 读取手套提供的 IMU 原始计数:
auto device = glove.device();
auto imu = device.imu();
auto imu_subscription = imu.subscribe(
[](const qnbot::Sample<qnbot::GloveImu>& sample) {
const auto& value = sample.value.payload;
std::cout << value.valid << ' ' << value.gyroscope_raw[0] << ' '
<< value.accelerometer_raw[0] << '\n';
});
bool started = false;
try {
device.start();
started = true;
run_application();
device.stop();
started = false;
glove.close();
} catch (...) {
if (started) {
device.stop();
}
glove.close();
throw;
}gyroscope_raw 与 accelerometer_raw 都是三个 std::int16_t,依次对应三个轴。SDK 不进行单位换算、标定或姿态融合。valid == false 时仍会保留并发布原始计数。IMU 当前是实验性功能,数据格式、支持设备和公开行为后续可能变化。完整字段见 GloveImu 和 GloveImuPayload。
设备状态
device.status() 也是设备直接产出的读数,不经过算法处理:是否已连接、数据是否过期、最近一次错误和重连次数。字段含义和诊断用法见 诊断与错误。