C++ SDK 版本记录
按时间查看 Qnbot C++ SDK 每个正式版本的新增功能、修复与改进、兼容性变更与内部重构。
v1.4.0
本次版本是 Glove SDK 从 1.3.0 到 1.4.0 的升级,重点完善手套时间同步、组合设备接入和运行状态管理。Core 与 Glove 组件统一升级至 1.4.0,继续支持 Linux x86_64、Linux ARM64、macOS ARM64 和 Windows x86_64。本版本新增 Exo + Glove 融合使用能力,支持一台组合设备通过共享串口接入,并在同一个 `Sdk` 实例中访问 Exo、左手套和右手套。
新增功能
- 新增 `Glove.sync_time()`,支持为手套数据设置统一的外部时间基准。
- 统一手套帧、运行状态、采集和标定相关时间的毫秒语义。
- 支持 Exo 与左右两只 Glove 通过共享串口接入。
- 支持在同一个 `Sdk` 实例中分别访问 Glove 与 Exo 设备能力。
- 完善组合设备中的状态、遥测和生命周期管理。
- 优化算法包解析和运行时初始化流程。
修复与改进
- 兼容旧版 `timestamp_sec` 输入,并明确转换为毫秒时间。
- 修复历史手套时间戳处理问题,提升采集记录和数据对齐的一致性。
- 优化手套连接、状态恢复和资源释放流程。
- 优化算法包解析结果缓存,减少 SDK 初始化过程中的重复解析。
- 改进运行状态、调试信息和错误提示。
- 完善 Exo + Glove 融合场景下的设备信息、遥测和生命周期处理。
兼容性变更
- 1.4.0 统一使用毫秒时间语义;旧版 `timestamp_sec` 输入仍可使用,并会转换为毫秒时间。
- C++ 项目需要同步更新 1.4.0 的 Core/Glove 头文件、库文件和 Conan 包后重新编译。
- 具体升级说明请参考《QnBot Glove SDK 1.3.0 → 1.4.0 迁移指南》。
内部重构
- 统一 Python 与 C++ 的时间模型和序列化行为。
- 优化 Glove、Exo 与共享串口之间的设备管理边界。
- 统一组合设备中的状态、遥测和生命周期处理。
- 优化多设备场景下的运行时资源管理。
v1.3.0
本次版本重点完善手套设备接入、采集与标定流程,并同步更新 Python、C++ 公开示例和客户文档。Core 与 Glove 组件统一升级至 1.3.0,继续支持 Linux x86_64、Linux ARM64、macOS ARM64 和 Windows x86_64。
新增功能
- 新增以 GloveDevice 为中心的设备使用方式,设备选择、采集和标定流程更加清晰。
- 完善采集与标定过程中的进度查询和交互控制。
- 增加 external input 的后台运行和手动调度示例。
- 更新 Python、C++ 公开示例,覆盖设备选择、采集、标定和 external input 等常用场景。
- Core 与 Glove 统一提供四平台 1.3.0 交付包。
修复与改进
- 优化手套连接、启动、停止和资源释放流程。
- 优化设备恢复、多设备状态和运行过程管理。
- 改善采集、标定和运行过程中的状态及错误提示。
- 优化算法包解析、完整性校验和运行时加载。
- 改进 C++ 调试信息和异常退出时的诊断表现。
- 更新 C++ 头文件、库文件和 Conan 包,提升跨语言接入一致性。
- 完善 README 和 public examples 的客户使用说明。
兼容性变更
- 1.3.0 主要调整了手套设备、采集和标定相关的调用流程。
- 应用需要先选择目标 GloveDevice,再通过设备对象执行采集、状态查询和标定操作。
- 采集与标定应使用同一个 GloveDevice。
- C++ 项目需要同步更新 1.3.0 的 Core/Glove 头文件、库文件和 Conan 包后重新编译。
- 具体迁移方式请参考《QnBot Glove SDK 1.2.0 → 1.3.0 迁移指南》。
内部重构
- 重构设备选择、采集、标定和运行时之间的内部边界。
- 统一 Python、C++ 与 Rust 在设备状态、任务进度和错误处理方面的行为。
- 优化运行时数据通道和资源管理,提高后续功能扩展与维护的一致性。
v1.2.0
本次版本升级重点完善了采集与标定工作流、设备接入与诊断能力,以及算法包的在线交付和版本管理。SDK 与 CLI 均继续提供 Linux x86_64、Linux ARM64、macOS ARM64 和 Windows x86_64 四平台支持。
新增功能
- 完善采集与标定工作流,引入更明确的 CaptureSession 和 CalibrationSession 使用方式,支持采集进度、交互控制、标定执行和结果获取。
- 新增手套 IMU 原始数据读取能力。
- 新增 VetraGlove Nano 自动发现与接入支持。
- 算法包改为每个 package ID 只保留一个当前版本,使安装、升级、降级和卸载行为更加明确。
- 增加在线算法包源能力,为 Qnbot CLI 提供账号认证、授权算法查询和在线安装支持。
- 内置手部算法运行时升级:Linux x86_64、macOS ARM64 和 Windows x86_64 使用 qnbot-hand 0.2.49;Linux ARM64 使用兼容 glibc 2.34 的 qnbot-hand 0.2.54。
修复与改进
- 简化设备生命周期:应用直接通过 `start()` 启动设备,通过 `stop()` 停止数据流并释放连接。
- 优化手套连接恢复、多设备运行状态和诊断信息,使设备状态更容易观察和处理。
- 统一采集、标定和算法运行过程中的进度与错误表达。
- 统一 Debug 模块和日志配置,日志默认归档至 `QNBOT_HOME`。
- Linux ARM64 最低运行环境降至 glibc 2.34,扩大可部署系统范围。
- 更新 Python、C++ 公开示例和客户文档,覆盖IMU、VetraGlove Nano、连接状态、Debug、external input 以及完整采集标定流程。
兼容性变更
- 1.2.0 包含部分公开 API 和使用流程调整,主要涉及:设备的 connect / disconnect 生命周期;Capture 与 Calibration 会话;采集请求中的算法包字段;标定数据及日志目录配置;Debug detail 和 module 名称;算法包的单一当前版本规则。
- 本公告只列出主要变化,不再展开替换步骤。
内部重构
- 重构 SDK 内部运行时、数据通道、诊断和设备连接边界,提高跨语言行为的一致性与后续可维护性。
v1.1.0
新增 Linux ARM64 与 Windows 10 x64 交付包,并统一完整 SDK/Glove 交付包的版本选择。
新增功能
- 算法包统一通过 package ID 选择,由 SDK 自动解析默认稳定版本及对应算法。
- 新增 Linux ARM64 原生支持,SDK 与 CLI 均扩展为四平台交付。
- Qnbot CLI 升级至 0.1.1,并完成 SDK 1.1.0 适配。
- 新增无线接收器接入能力,包括无线设备发现和多 source 接入支持。
- 该能力尚未完成本轮真实无线硬件验收,正式项目接入前请单独验证设备兼容性和连接稳定性。
内部重构
- 将 capture、calibration 和 runtime 拆分为相对独立的工作流,明确采集、标定与运行阶段的调用边界。
- 统一 source 创建与配置模型,使物理手套 source 和 `external_input` 虚拟 source 使用一致的配置与运行入口。
修复与改进
- 修复 automatic capture 在不同运行路径间可能出现的调度不一致问题。
- 修复 Linux ARM64 中 `aarch64` 运行目标与算法包 `arm64` 架构标识不一致的问题。
- 改进标定过程中对不完整输入帧的处理。
- 完善设备恢复以及运行状态反馈。
v1.0.0
首个稳定版 C++ SDK,统一正式交付平台、算法包管理目录,并内置 Dynamic OpenXR 骨骼能力。
新增功能
- 新增 `skeleton()`、24 active joints 角度与 25 点骨骼姿态通道。
- 新增三平台 1.0.0 正式交付包和中文 README。
兼容性变更
- 算法包改为使用产品 CLI 安装,并按默认稳定版本解析包 ID。
- 统一标定、算法和 Debug 数据的默认目录。