如何使用机器学习将方向传感器数据转换为运动事件?

时间:2019-06-11 19:31:54

标签: python machine-learning sensor

我构建了一个基于微控制器的设备,该微控制器上连接了一些传感器,其中之一是方向传感器,该传感器当前提供有关x,y,z的俯仰,偏航,侧倾和加速度的信息。我希望能够在设备正常移动时检测到运动“事件”。

例如,我想检测一个“重新定位”事件,该事件基本上由一系列其他事件组成-“向上”(拾取),“移动”(在空中移动到其他位置),“向下”(设备放下)。

由于我才刚刚开始想出如何使之成为可能的问题,所以我想问一下我是在获得正确的想法还是在浪费时间。

我目前的想法是,我使用所探查的数据创建数据集,并尝试使用机器学习来检测每个元素是否属于我要检测的事件之一。因此,基本上我拿起了设备,先将它在桌子上旋转了几次,然后拿起了几次,然后将它在空中移动,最后放下了几次。这样就产生了一组具有如下结构的数据:

yaw,pitch,roll,accelx,accely,accelz,state
-140,178,178,17,-163,-495,stand
110,-176,-166,-212,-97,-389,down
118,-177,178,123,16,-146,up
166,-174,-171,-375,-145,-929,up
157,-178,178,4,-61,-259,down
108,177,-177,-55,76,-516,move
152,178,-179,35,98,-479,stand
175,177,-178,-30,-168,-668,move
100,177,178,-42,26,-447,stand
-14,177,179,42,-57,-491,stand
-155,177,179,28,-57,-469,stand
92,-173,-169,347,-373,-305,down

[...]

我添加了最后一个“状态”列-我在每种测试移动类型之后都添加了此列,然后重新排列了行。

我以这种方式获得了约450条记录,其想法是利用机器学习来预测运行设备发出的每条记录的“状态”列,然后我可以将结果排队,如果在短时间内“ up”事件占多数,我可以接受设备被捡起的情况。

也许不应该将每个读数用作数据行,而应该取最近的10个读数(让我们说),并尝试预测每列会发生什么-即,如果我知道最近的10个偏航读数是在移动时的变化我应该宁愿使用此数据-所以将6列中每列的10个读数作为行处理,然后得到6个结果-同样,结果类型的比率可能使检测这些期间发生的“运动”事件成为可能10个读数。

我目前大约有30%的人参加了在线ML课程并很喜欢它,但是我真的很想听听更有经验的人的一些意见。

我的想法是合理的解决方案,还是我完全不了解如何使用ML?如果是这样,我应该使用什么资源入门?

1 个答案:

答案 0 :(得分:0)

您重新整理阅读内容的想法似乎很有趣。但这全取决于您多久获得一次记录以及如何计划对它们进行分组。

如果每10到100毫秒获得一条记录,最好将它们分组,因为这将有助于获得更准确的数据以减少噪声。您可以利用每一列的平均值来消除这种干扰,并帮助您的分类器更好地分类您的不同状态。

否则,如果您每秒都有一条记录,那么我认为对记录进行重新组合是个坏主意,因为您肯定会将多个操作混合在一起。

如果有时间,最好的方法是尝试两种方法^^