v3.5.3
3.5.3 是一个补丁版本。主要变更包括:更智能的自动配对,更换已配对的 Inverse3 + 握把套装中的一个设备时会自动重新配对;修复有线 Verse Grip 的错误电量警告;更准确的固件能力检查,不再静默丢弃不受支持的命令;连接时状态 LED 更稳定;服务停止与重启不再崩溃。此外,还合并了若干设备与序列化相关的修复,以及一些字节级 wire 说明。
亮点
- 自动配对:更换一半套装时重新配对。 当自动配对的 Inverse3 + Verse Grip 套装中的某一台设备被更换时,SDK 现在会丢弃过期的配对关系,并与新连接的设备重新配对。手动配对不受影响。
- 有线 Verse Grip 不再误报电量警告。 低电量和极低电量警告现在仅对无线连接的 Verse Grip 触发;有线 Verse Grip 不再产生错误的低电量或极低电量警告。
- 更准确的固件能力检查。 当请求设备执行其固件版本过低而无法运行的触觉功能时(例如固件版本低于 7.5 时的均匀阻尼或方向性阻尼,以及固件版本低于 7.4 时的归位(return-to-home)功能),现在会返回 HTTP 422,并附带
device-protocol-unsupported事件,而不再返回误导性的 200 并静默丢弃请求。 - 连接时状态指示灯更稳定。 Inverse3 的状态 LED 在每次连接或重连时不再闪烁红灯:连接会在唤醒后约 5 秒的稳定期内保持活跃,因此固件的连接看门狗不再被触发。
- 服务停止与重启不再崩溃。 停止和重启服务不再崩溃或挂起;关闭与重启流程已重构,消除了反复开关服务时出现的 panic 和挂起问题。
内部改进
- 离合导航模式(实验性功能,默认关闭)。 一种新的导航模式,允许操作者在物理设备持续移动的同时,缩小或完全冻结服务导出到场景中的运动——包括用于精细定位的半速“精确”模式,以及用于重新定位工作区的完全冻结模式。松开后,累积的偏移量会折叠进工作区,因此场景光标不会跳动。力反馈在所有比例下均持续输出。本版本中需主动开启;默认 wire 格式保持不变。
- 会话级力缩放(预览版)。 客户端可以将某个仿真会话的触觉输出衰减至趋近于零(例如在打开饼状菜单时),并将设备交给 Hub,使菜单触觉通过常规控制路径渲染;当会话关闭或菜单被关闭时,会自动恢复。本版本中该功能需通过预览开关启用;默认 wire 格式保持不变。
- 围绕枢轴点的工作区缩放(实验性)。 在更新工作区变换时传入一个枢轴点(例如实时光标位置),视图将围绕该点缩放,使枢轴点在屏幕上的位置保持不动,即即时的光标缩放。仅适用于 Inverse3;本版本中为实验性功能,因此默认 wire 格式保持不变。
- 将 JSON 序列化引擎(glaze)升级至 v7.8.4。 仅涉及基础设施,不改变公共 API 或行为。同时附带一项保持数值不变的浮点数文本 wire 格式调整;详见下方“潜在的破坏性变更”。
修复
- 更改或重置设备的安装变换不再有崩溃风险。 一段遗留的原型代码路径会在每次安装变换更改时推送固件工作空间边界框;该路径现已移除。
- 在 inkwell 底座重新校准后,本体姿态会刷新。 在 inkwell 中重新对接并校准后,流式传输的本体姿态现在会从设备刷新,不再在下次重连前报告校准前的数值。需要当前版本的设备固件;传输格式未变。
- Minverse 始终会报告被阻止的校准。 只要固件报告校准被阻止,Minverse 现在就会发出
device-calibration-failed事件,包括此前会静默吞掉失败的霍尔振荡边缘情况,因此 Device Manager 现在始终会显示 "Calibration failed" 消息。 - 居中预设将原点置于工作空间的实际可达中心。
arm_front_centered和led_front_centered(Inverse3 / Inverse3x)原先沿手臂关节轴对齐,而该轴并不位于可达包络的中心,因此在原点{0, 0, 0}处调用set_cursor_position会偏离中心;Minverse 的居中原点也大约向右偏移了 10 mm。现在,每个轴上的偏移量都取可达范围的一半,计算时排除了固件安全弹簧限位区,而不是机械上可能达到的范围。(参见"潜在的破坏性变更"下的原点偏移说明。)
潜在的破坏性变更
- 在 7.5 之前的固件上,
POST/DELETE /config/filters/damping现在返回 HTTP 422,并附带device-protocol-unsupported事件,而不再返回会静默丢弃写入的 200。7.5 及更新版本的固件不受影响(仍返回 200)。迁移方法:将设备固件升级到 7.5 或更新版本,或处理 422 响应。 - 在不支持该命令的固件(7.4 之前)上,
POST/DELETE /home_return现在返回 HTTP 422,而不再无条件返回 200。仅旧版固件设备受影响。迁移方法:将固件升级到 7.4 或更新版本,或处理 422 响应。 config/mount和state/transform(GET/POST/PATCH/DELETE)的命令回显现在以{w,x,y,z}键顺序序列化transform.rotation,而不再使用{x,y,z,w},以与流式state快照的旋转顺序保持一致。仅影响字节层面:数值与键名均不变,只有键的顺序发生改变;三个分量仍会全部回显。按名称访问字段的 JSON 客户端无需任何操作;进行严格字节或顺序比较的,应重新确认基准。- 单设备配置应用时的变更通知作用域名称。 当应用单个设备的配置时,会话更新的变更通知事件现在报告配置作用域名称(
config.mount、config.basis、config.preset),而不再使用裸名称(mount、basis、preset)。依据这些事件作用域字符串进行过滤的客户端必须更新匹配规则。 - 所有数值传输字段的 Glaze 浮点文本重新格式化,涵盖 v3.0 和 v3.1(例如
1.0E-7->1E-7、16777216->1.6777216E7、-1.0E-37->-1E-37)。仅影响字节层面:数值解析器读取的值相同,只是文本形式发生了变化。对字符串做相等比较的使用方应重新确认其测试夹具。 - 居中预设原点偏移。 由于居中预设现在以实际可达中心为目标,相对于 3.5.2,它们安装的原点发生了移动:
arm_front_centered/led_front_centered沿设备深度轴偏移 25 mm,Minverse 居中预设在 X 方向偏移 10 mm、Y 方向偏移 20 mm、Z 方向偏移 20 mm,minverse_zup在 X 方向偏移 20 mm、Y 方向偏移 30 mm。此项默认开启,并且在检测到 Freeform 会话时会自动应用minverse_zup。影响范围:当居中预设处于激活状态时,放置在原点处的内容,或相对于原点定位的几何体,都会随原点一起移动。迁移方法:重新检查以原点为锚点的几何体,或将之前的偏移量显式写为自定义安装变换。非居中预设(device_defaults、arm_front、led_front)为恒等变换,不受影响。
弃用
- inverse3 控制命令上的旧版
values输入现已成为带警告的弃用项。 将values数组发送给set_cursor_force、set_cursor_position、set_angular_position或set_angular_torques(而非命令的命名字段vector/position/angles/torques)仍可正常工作,但现在会触发command-deprecated事件(每个命令每 30 秒限速一次),而不再被静默接受。请将values迁移到命名字段;旧版输入计划在 4.0 中移除。 - 本周期其余方面均不影响公开的传输接口。