FSGlove: An Inertial-Based Hand Tracking System with Shape-Aware Calibration
核心思想
手部运动捕获是机器人遥操作、VR 交互的基础需求。现有商业手套要么自由度不够(MANUS 仅 21 DoF),要么极其昂贵($5,250)。
FSGlove 提出一种开源、低成本的 IMU 手套系统:
- 16 个 IMU 覆盖所有手指关节 → 捕获 48 自由度
- DiffHCal 可微校准框架 → 同时估计关节角度、手形参数和传感器安装误差
- 关节角误差 <2.7°,指尖接触误差 15.7mm,总成本仅 $426
背景知识
手部运动捕获的方式
| 方式 | 代表 | 优点 | 缺点 |
|---|---|---|---|
| 光学(外部相机) | Meta Quest 3 | 无需穿戴 | 遮挡时失效 |
| 磁传感器 | MANUS | 精度高 | 价格极高、DoF 少 |
| 惯性(IMU) | FSGlove | 低成本、无遮挡 | 累积漂移 |
什么是 IMU
惯性测量单元(Inertial Measurement Unit)包含:
- 加速度计:测量线性加速度
- 陀螺仪:测量角速度
- 磁力计:测量磁场方向
三者融合可以估计传感器的绝对朝向(四元数/旋转矩阵)。
什么是 MANO 模型
MANO 是一个参数化手部网格模型:
\[\text{MANO}(\theta, \beta) \to \text{手部网格}(778 \text{ 顶点})\]- $\theta$:关节角度参数(控制手势姿态)
- $\beta$:形状参数(控制手的胖瘦、大小、手指长度)
MANO 是可微的 → 可以通过梯度优化 $\theta, \beta$。
校准的核心挑战
每个 IMU 粘在手指上时,存在安装误差——传感器的坐标轴不与手指骨骼精确对齐。如果不校准这个误差,所有后续的角度估计都会有偏。
方法详解
1. 硬件架构
1.1 传感器配置
每根手指 3 个 IMU(近节、中节、远节指骨)+ 手背 1 个 = 16 个 IMU。
| 参数 | 值 |
|---|---|
| IMU 型号 | HI229(BNO055 芯片) |
| 静态角度误差 | 0.8° |
| 动态角度误差 | 2.5° |
| 采样率 | 400 Hz(使用 100 Hz) |
| 处理器 | Raspberry Pi Zero 2W |
| 通信 | CH9344 USB-UART + Wi-Fi |
| 电池 | 1100 mAh 锂电池(续航 2 小时) |
| 总重量 | 110 克 |
| 总成本 | $426(IMU 占 75%,$320) |
1.2 手背追踪
使用 Nokov 光学系统 + 红外反射标记球 → 追踪手掌的 6 自由度位姿(位置 + 朝向)。
2. DiffHCal 可微校准框架
2.1 坐标系对齐
IMU 输出的旋转在世界坐标系(WNU,西-北-上),但 MANO 使用自己的虚拟坐标系。需要变换矩阵 $A$:
\[R_i^\mathcal{M} = A \cdot R_i^\mathcal{W}\]其中 $R_i^\mathcal{M}$ 是第 $i$ 个关节在 MANO 空间的旋转,$R_i^\mathcal{W}$ 是 IMU 读数。
2.2 安装误差校正
实际中 IMU 不完美对齐,引入校正旋转 $C_i$:
\[R_i^\mathcal{M} \cdot C_i = A \cdot R_i^\mathcal{W}\]$C_i$ 表示第 $i$ 个传感器的安装偏差——每个 IMU 都有自己的 $C_i$。
2.3 关节角度计算
相邻关节的相对旋转即为关节角度:
\[\theta_i = R_i^\mathcal{M} \cdot (R_{i-1}^\mathcal{M})^{-1}\]2.4 校准姿态
需要用户做 3 个参考姿态:
| 姿态 | 动作 | 用途 |
|---|---|---|
| 静息姿态 | 手掌朝下,手指展开 | 确定初始对齐 |
| X 轴旋转 | 手腕绕 X 轴转动,手指不动 | 确定 X 轴方向 |
| Y 轴旋转 | 手腕在竖直面内绕 Y 轴转动 | 确定 Y 轴方向 |
2.5 形状校准损失
利用触摸姿态(如拇指捏食指)建立接触约束:
\[E_\text{shape}(\beta) = \sum_{c_{jk} \in \mathcal{C}} \|v_j(\theta, \beta) - v_k(\theta, \beta)\|_2^2\]其中:
- $v_j, v_k$ 是 MANO 网格上预定义的接触顶点对(如顶点 744 和 320 代表拇指-食指捏合)
- $\mathcal{C}$ 是所有接触对的集合
- $\beta$ 是 MANO 的形状参数
直觉:如果用户做”拇指捏食指”的姿态,那么 MANO 模型中拇指尖和食指尖的顶点应该重合 → 通过这个约束反推手的形状参数。
2.6 联合可微优化
利用 MANO 的可微性,在单次优化中同时求解:
- 变换矩阵 $A$
- 安装误差 $C_i$(16 个)
- 形状参数 $\beta$
- 关节角度 $\theta$
全部通过梯度下降端到端优化——这是 DiffHCal 的核心优势。
3. 数据流水线
IMU (100Hz) → Raspberry Pi Zero 2W
→ gRPC + Protobuf 序列化
→ Wi-Fi 传输到 PC
→ NTP 时间同步
→ GPU 加速重建 (25Hz 可视化)
延迟分析:
| 环节 | 延迟 |
|---|---|
| 手套(Wi-Fi 拥塞) | 24 ms |
| Nokov 追踪器 | 1 ms |
| 中间件/内存 | <0.5 ms |
| 总显示延迟 | 40 ms |
实验结果
单关节精度
使用 Nokov 光学系统(0.5mm 精度 → 0.3° 旋转精度)作为真值。
| 指标 | 值 |
|---|---|
| 偏差 | ±2.7° |
| 标准差 | ±1.8° |
| 非线性度 | 0.7% |
形状重建
使用深度相机拍摄手部轮廓,用单向 Chamfer 距离评估:
\[E_\text{sr} = \frac{1}{|P|} \sum_{p \in P} \min_{v \in V} \|p - v\|_2^2\]| 方法 | 平均距离 (mm) | 价格 |
|---|---|---|
| FSGlove | 15.7 | $426 |
| Meta Quest 3 | 19.6 | $499 |
| VRTRIX | 18.9 | $1,400 |
| MANUS | 33.2 | $5,250 |
FSGlove 以最低成本取得了最好精度。
指尖捏合追踪
| 方法 | 食指 | 中指 | 无名指 | 小指 | 平均 (mm) |
|---|---|---|---|---|---|
| FSGlove | 7.2 | 16.5 | 12.0 | 27.1 | 15.7 |
| Meta Quest 3 | 11.0 | 21.5 | 18.9 | 22.3 | 19.6 |
| VRTRIX | 20.9 | 14.4 | 25.3 | 15.1 | 18.9 |
| MANUS | 28.0 | 32.3 | 36.7 | 35.7 | 33.2 |
手-物体交互一致性
测试物体:大立方体、杯子、犹他茶壶、斯坦福兔、大象(来自 ContactPose 数据集)。
| 方法 | 平均距离 (mm) |
|---|---|
| FSGlove | 20.2 |
| VRTRIX | 24.5 |
| MANUS | 26.7 |
| Meta Quest 3 | 28.0 |
与商业产品对比
| 规格 | FSGlove | VRTRIX Pro | Meta Quest 3 | MANUS |
|---|---|---|---|---|
| 技术 | IMU (16个) | IMU (6个) | 视觉 | 磁传感器 |
| 采样率 | 100 Hz | 180 Hz | 60 Hz | 120 Hz |
| 捕获 DoF | 48 | 有限 | ~25 | 21 |
| 价格 | $426 | $1,400 | $499 | $5,250 |
| 形状重建 | 有 | 无 | 有(视觉) | 无 |
漂移分析
IMU 理论漂移:30 分钟后 3-10°。实验中超过 10 分钟无明显漂移;标准差保持 ±1.8°。
个人思考
- $426 打败 $5,250 是最有冲击力的结果——FSGlove 以 MANUS 1/12 的价格实现了更好的精度,说明高成本≠高性能。
- DiffHCal 的优雅性:将关节角/手形/安装误差统一到一个可微优化中——利用 MANO 的可微性是关键创新。
- 触摸姿态做形状校准非常巧妙:不需要外部深度相机,仅靠”拇指捏食指”这样的自然动作就能推断手形——用户友好且物理合理。
- 48 DoF vs 21 DoF:更多传感器覆盖所有指节 → 捕获更精细的手指弯曲 → 这对灵巧手遥操作至关重要。
- 开源设计的社区价值:硬件图纸、驱动、软件全部开源 → 可以推动手部追踪研究的民主化。
- 局限性坦诚:IMU 碰撞效应(拇指碰小指时)、Wi-Fi 延迟 24ms、手套拉伸需要每日重校——这些都是实际部署中的真实痛点。