Spleeft 指标 e1756832747885 1024x740 - Spleeft 背后的数据科学项目

在本文中,我将从技术和反思的角度分享Spleeft算法最新优化背后的学习和开发过程。我会解释四年前开发的原始系统的工作原理,以及在过去一个月里,我是如何对其参数进行微调,以提高准确率和处理速度的。.


立即下载适用于 iOS、Android 和 Apple Watch 的 SPLEEFT 应用程序!

该算法如何工作?

Spleeft算法通过积分加速度数据来测量垂直速度。向心收缩阶段通过最小速度阈值来标记重复动作的开始和结束,并且需要至少0.3米/秒的峰值速度才能验证动作的有效性。该阶段定义最清晰、最易预测,因此可以采用更精确的检测规则。.

为了检测稳相(这对于校正积分过程中累积的漂移至关重要),我使用了来自惯性传感器的数据:加速度计、陀螺仪和重力传感器。当这些传感器的值在特定时间窗口内保持在特定阈值以下时,该相位被认为是稳相。.

这种方法论与后来 Achermann等人. 在他们的 Apple Watch 测量杠铃速度的验证研究.


背景和技术背景

科学文献传统上,加速度计的速度测量精度被认为低于其他技术。对比研究表明,像 Beast Sensor 或 Push Band 这样的设备精度低于其他解决方案。

然而,加速度计是迄今为止最容易使用的传感器,因为它们被集成到智能手表和可穿戴设备等广泛使用的消费设备中。尽管它们在心率等指标方面的可靠性也受到质疑,但它们在普及基于速度的训练 (VBT) 方面的潜力是不可否认的。

值得注意的是,大多数对比研究评估的是完整的系统(硬件+软件),而没有区分这两个组成部分。在我看来,将精度差完全归咎于硬件是不公平的。如果加速度计与专门针对所分析的运动类型优化的软件配合使用,则可以提供精确的结果。因此,在排除某种技术之前,我们必须充分探索其算法的可能性。.

已有足够证据支持使用 IMU(惯性测量单元)估算升力速度。Enode 或 Output 等公司已经开发出可实现高精度的专有算法。以 Apple Watch 为例,尽管使用了与我不同的算法,但多项研究已验证了其硬件是否适用于此应用。这强化了这样一种观点:合适的算法可以克服通常仅归因于硬件的限制。


IMU 测量速度的局限性

这些限制是环环相扣的。首要挑战是找到处理惯性传感器数据(加速度计、陀螺仪和磁力计)的最佳方法,以准确估计杆的垂直速度。.

主要问题之一是加速度的积分。当使用梯形法(因其简单而广泛使用)进行积分时,系统误差(称为 漂移 随着时间的推移而累积。为了补偿这种累积效应,需要识别已知的零速度时刻(称为静止阶段),以便进行漂移校正。.


用于估计垂直速度的信号处理

惯性传感器提供三个空间轴的数据。然而,直接使用加速度计的垂直分量是不够的,因为该传感器本身无法精确确定被测力的方向。为了解决这个问题,我使用了诸如卡尔曼滤波、马奥尼滤波和马格威克滤波等传感器融合算法,这些算法提供方向四元数来校正设备的参考系。.

我使用不同的方向算法处理了来自 Apple Watch 和 iPhone 的数据,并将其与运动捕捉系统(STT Systems)进行了比较。我选择了在移动设备上实现准确性和计算效率之间最佳平衡的组合。

方向校正后,加速度积分即可得到速度。为了进一步减少漂移,我测试了低通滤波器的使用,例如 巴特沃斯滤波器,在生物力学中有着广泛的应用。


零速更新(ZUPT)

在测试过程中,我发现主要问题并非取向校正或积分本身,而是应用零阶极化积分(ZUPT)所需的固定相检测。这些固定相必须快速可靠地检测出来,因为它们的准确性直接影响系统的精度。.

没有单一的方法可以实现这一点。因此,我开发了一种基于多参数组合系统分析的经验方法:使用哪些传感器、应用哪些阈值以及考虑哪些时间窗口。

截图 2025 06 16 13.13.19
速度与时间 Spleeft 原始数据具有漂移,并且零速度更新工作正常。

利用数据科学进行算法优化

定义好所有变量后,我在实验室收集了大量健身房训练重复次数的数据集,并存储了原始传感器数据。同时,我使用了一个黄金标准系统进行比较。所选的训练动作包括:反弹深蹲、暂停硬拉(包括向心和离心)以及高位下拉。所有组别都以高强度进行,以适应不同的疲劳程度,并在每次训练之间尽量减少休息时间。

这种设置使我能够优化算法的准确性和速度,即使在重复之间几乎没有或完全没有稳定阶段的情况下也是如此——这是基于积分的方法最具挑战性的场景。.

我创建了一个 Python 脚本来系统地探索 13,486 个参数组合:

  • 是否应用低通滤波器,以及截止频率。
  • ZUPT 参数:阈值、时间窗口和传感器组合。
  • 同心检测的最小速度阈值。

在运行完整数据集(耗时数小时)后,我根据练习类型、速度范围和停止类型,分别分析了表现最佳的组合。我的目标不仅是找到最佳配置,还在于更好地了解系统的运行机制,以便未来进行改进。.

输出2已编辑
Python 脚本的输出帮助我确定算法的最佳参数。

现场测试

在实际验证过程中,我发现主要瓶颈在于算法检测稳定期的延迟。用户反馈也很明确:系统反馈速度太慢。.

在查看许多速度-时间图时,我注意到 第一次重复, 即使不应用零阶最优解(ZUPT),漂移也几乎没有。这是因为漂移会随着时间推移而增大。我问自己:累积的漂移是否大到足以对平均速度估计产生显著影响?

截图 2025 06 16 21.07.57
速度与时间数据之间没有明显的漂移

为了回答这个问题,我测试了在向心阶段之前先进行大量离心阶段的深蹲。我等待第一个静止阶段来校准系统,然后连续进行不间断的重复训练。结果令人惊讶:平均误差仅为 0.018 米/秒,甚至更低(0.016 米/秒在最新的验证中,与修正值相比差异极小,但响应时间却显著缩短,从 800 毫秒降至 200 毫秒。这使得反馈能够及时送达。 紧接着 向心阶段,而不是几秒钟后。

尽管如此,ZUPT 算法仍然有效。当检测到新的固定相时,系统会重新校准信号,并校正任何累积的误差。如果在固定相之间重复测量超过一次,则校正值将覆盖初始反馈,以确保用户始终获得最准确的结果。


结论

这个数据驱动的项目让我得以显著优化 Spleeft 算法。我成功地缩短了平均速度估计的响应时间,同时又不影响先前验证中确认的可靠性。关键在于将系统的数据收集与全面的参数探索相结合——因为最终结果的质量不仅取决于硬件,或许更重要的是其背后的软件。.

伊万-德卢卡斯-罗热罗

伊万·德·卢卡斯·罗杰罗

MSC 身体表现 & SpleeftApp 首席执行官

致力于提高运动表现和骑行训练,结合科学技术来推动成果。

分享此帖:

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

您也可能感兴趣

11 300x180 - 肥大与增生:了解肌肉生长机制
一般的

肥大与增生:了解肌肉生长机制

你可能已经听过无数遍了:“举重、摄入蛋白质、增肌。” 但大多数教练从未提及的是——真正促成肌肉增长的生物学机制。

Diseno sin titulo 2025 11 26T093225.358 300x157 - 如何使用 VBT 进行编程并最终摆脱猜测
一般的

如何使用VBT进行编程,彻底告别猜测

如果你曾经看过运动员苦练那些本应“爆发力十足”的训练组,你就会明白那种挫败感。该训练计划中提到了80%。

zh_CN