如何识别 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 不同,因为您通常需要使用骨架或点模型以及坐标视图框。
从 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 不同,因为您通常需要使用骨架或点模型以及坐标视图框。