如何识别 Microsoft Band 手势

How can I recognise a Microsoft Band gesture

从 phone,我可以向配对的 Microsoft Band 发送消息 and/or 对话框,但我想从乐队返回到 phone 的确认。由于似乎没有任何其他方式,我想我将不得不选择一个手势,例如用户来回旋转手腕一次,或者可能摇动他们的手腕。这听起来像是加速度计和陀螺仪的工作。从这些信息中收集信息应该很容易,但是就识别手势而言,例如手腕沿一个方向旋转然后返回另一个方向,有人可以建议如何将其识别为故意手势,而不仅仅是正常 "non-gesture"动向?

非常感谢您的帮助,

约翰·H.

首先保存数据并将其绘制成不同种类的图表,看看您是否看到手势的模式。我有一个类似的问题,我想检测用户何时咬了一口,并过滤掉其他手势,如切、喝等。

我记录了 1 分钟的数据,并准确地咬了预定的次数,其他方面都正常交互。然后我稍微平滑了数据,并查看了图表,看看我是否可以看到一种模式,看看我可以使用哪些阈值。

我确定的一些因素是: 定义咬合的一组读数的数量(必须以 16 毫秒为间隔超过 20 个) Y 轴上的峰谷 在

之间休息

我用它来创建一个计算,根据用户提供的训练数据找到 'ultimate' 阈值,- 但由于旋转等手势在人与人之间或多或少是相同的,你可以预定义阈值,例如让用户设置灵敏度。

这里有一些图表:

应该说Y数据:)

这张图片可能太模糊了,但这一切都始于一些想法和一些白板,其中从使用斜率、抛物线计算、随时间加速以及不考虑的一切都被考虑在内。蛮力最有效,或者我数学很差。

总结

  • 写下定义您的姿势的因素和涉及的因素
  • 记录数据 来自加速度计和陀螺仪并绘制一些图表
  • 寻找常见模式
  • 组合一个可以产生正确响应的算法 基于输入数据和因素。
  • 调整和重构。

摇动应该很容易,只需决定哪种方式(上下或侧向,或两者都允许)。为轴设置阈值,并决定在多长时间内必须有多少交叉。

phone 上的伪代码,请原谅丑陋 :) 类似于...?:

if(总时间 < maxTime)

if(reading.X > 某事) if(reading.timestamp - itemsForCount.Last().TimeStamp <= maxTimeBetweenShakes) itemsForCount.Add(新项目({....})

if (itemsFourCount.Count >= desiredShakes) itemsFourCount.Clear(); 如果(总时间 > 最大时间) itemsFourCount.Clear();

灵感: 我用 Leap motion 做过一些工作,我记得看过他们的 js 代码,看看他们的几个手势是如何定义的。 Here is Js leap motion. C# 库需要反编译,这将违反 lic。同意。

Hammer.js 是一个有趣的 OSS,您可以在其中查看触摸手势是如何定义的,- 查找滑动和旋转。

还有一些 kinect 手势 api 值得一看,但与 leap 不同,因为您通常需要使用骨架或点模型以及坐标视图框。