java - 如何使用加速度计进行手势识别

标签 java embedded accelerometer gesture-recognition

我的目标是通过安装在太阳黑点上的加速度计识别简单的手势。一个手势可以像旋转设备或以几种不同的 Action 移动设备一样简单。该设备目前只有加速度计,但我们正在考虑添加陀螺仪,以使其更容易/更准确。

有没有人有关于如何做到这一点的建议? Java中有任何可用的库吗?您推荐我查看的示例项目?你推荐的论文?

太阳斑是一个 Java 平台,可帮助您快速制作系统原型(prototype)。它使用 Java 进行编程,可以将命令转发回连接到计算机的基站。如果我需要更多解释硬件的工作原理,请发表评论。

最佳答案

加速度计将记录由于重力而产生的恒定加速度,加上用户承受的任何加速度以及噪音。

您需要对样本进行低通滤波,以尽可能多地去除不相关的噪声。最糟糕的噪音通常是比任何可能的人为加速度更高的频率。

意识到当设备没有被用户加速时,唯一的力量是由于重力,因此你可以deduce its attitude在太空。而且,当总加速度从1g变化很大时,一定是由于用户加速了设备;通过减去最后已知的重力估计,您可以粗略估计用户在哪个方向以及加速设备的速度,从而获得可以开始与已知手势列表进行匹配的数据。

使用单个三轴加速度计,您可以检测当前的俯仰和滚动,以及设备在直线上的加速度。将加速度减去重力积分将为您提供当前速度的估计值,但由于噪声,估计值会迅速偏离现实;您必须在手势之前/之间/期间对用户的行为做出假设,并通过您的 UI 引导他们,以提供设备未加速的点,您可以重置您的估计并可靠地估计重力方向。再次积分以找到位置根本不可能在任何有用的时间长度内提供可用的结果。

如果您有两个相距一定距离的三轴加速度计,或者一个和一些陀螺仪,您还可以检测设备的旋转(通过比较加速度 vector ,或直接从陀螺仪);在几秒钟内积分角动量会给你一个相对于你开始积分时的当前偏航估计,但这又会很快偏离真实。

关于java - 如何使用加速度计进行手势识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/198982/

相关文章:

c - 使用 Dynamic C 保存数据

c++ - 嵌入式 Visual C++/为什么我的符号未定义?

android - Sensor.TYPE_ROTATION_VECTOR 有漂移 : Is there an alternative?

c - 使用加速度计数据进行 FFT

ios - 校准加速度计?

java - 将非静态方法编写为静态方法

java - WebClient 从订阅返回值

java - Struts 2 Action 中的 Android GCM 服务器

用于从 oracle 数据库检索多个 doc 文件的 Java 程序

embedded - stm32f3 'USER USB' 未检测到