本文介绍了如何使用加速度计进行手势识别的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是从安装在太阳的加速度计识别简单的手势。手势可以像旋转设备一样简单,或者以几种不同的运动来移动设备。该设备目前仅具有加速度计,但如果能够使其更容易/更准确,我们正在考虑添加陀螺仪。有没有人有建议如何做到这一点?



Java中的任何可用库?您推荐的样品项目我退房了吗?您推荐的论文?



太阳斑点是一个Java平台,可帮助您制作快速原型的系统。它使用Java编程,可以将命令中继到连接到计算机的基站。如果我需要解释硬件如何工作更多留下评论。

解决方案

加速度计将由于重力而注册恒定的加速度,加上设备受到用户的任何加速,加上噪音。



您将需要对样品进行低通滤波,以尽可能摆脱无关的噪音。噪音最差的一般是比任何可能的人为加速度更高的频率。



意识到当设备未被用户加速时,唯一的力量就是由于重力,因此您可以在空间。此外,当总加速度从1g变化很大时,必须由于用户加速设备;通过减去最后已知的重力估计,您可以粗略地估计用户在加速设备的方向以及用户的加速程度,从而获取可以开始与已知手势列表匹配的数据。



使用单个三轴加速度计,您可以检测当前的俯仰和滚动,还可以以直线加速设备。加速度减去重力的积分将使您估计当前的速度,但估计会由于噪音而迅速偏离现实;您将必须在手势之前/之间/之间对用户的行为进行假设,并指导用户通过UI,以提供设备未加速的点,您可以重新设置估计值并可靠地估计重力方向。如果您有两个三轴加速度计距离相隔一段距离,或者一个距离一些陀螺仪,您还可以检测设备的旋转(通过比较加速度矢量,或直接从陀螺仪);在几秒钟内整合角动量可以让您估算当前开始积分时的当前偏航度,但是这样会快速偏离真实状态。


My goal is to recognize simple gestures from accelerometers mounted on a sun spot. A gesture could be as simple as rotating the device or moving the device in several different motions. The device currently only has accelerometers but we are considering adding gyroscopes if it would make it easier/more accurate.

Does anyone have recommendations for how to do this? Any available libraries in Java? Sample projects you recommend I check out? Papers you recommend?

The sun spot is a Java platform to help you make quick prototypes of systems. It is programmed using Java and can relay commands back to a base station attached to a computer. If I need to explain how the hardware works more leave a comment.

解决方案

The accelerometers will be registering a constant acceleration due to gravity, plus any acceleration the device is subjected to by the user, plus noise.

You will need to low pass filter the samples to get rid of as much irrelevant noise as you can. The worst of the noise will generally be higher frequency than any possible human-induced acceleration.

Realise that when the device is not being accelerated by the user, the only force is due to gravity, and therefore you can deduce its attitude in space. Moreover, when the total acceleration varies greatly from 1g, it must be due to the user accelerating the device; by subtracting last known estimate of gravity, you can roughly estimate in what direction and by how much the user is accelerating the device, and so obtain data you can begin to match against a list of known gestures.

With a single three-axis accelerometer you can detect the current pitch and roll, and also acceleration of the device in a straight line. Integrating acceleration minus gravity will give you an estimate of current velocity, but the estimate will rapidly drift away from reality due to noise; you will have to make assumptions about the user's behaviour before / between / during gestures, and guide them through your UI, to provide points where the device is not being accelerated and you can reset your estimates and reliably estimate the direction of gravity. Integrating again to find position is unlikely to provide usable results over any useful length of time at all.

If you have two three-axis accelerometers some distance apart, or one and some gyros, you can also detect rotation of the device (by comparing the acceleration vectors, or from the gyros directly); integrating angular momentum over a couple of seconds will give you an estimate of current yaw relative to that when you started integrating, but again this will drift out of true rapidly.

这篇关于如何使用加速度计进行手势识别的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

06-28 18:04