java - 使用加速度计进行运动跟踪的算法建议

标签 java android signal-processing sensors

我希望使用实时加速度计数据(来自手机)来检测一些基本的运动手势。我的问题是我需要一些通常“旋转不变”的东西。

我的意思是,如果用户将手机倒置,然后做出手势,则不会是相同的信号。给定特定方向,我知道如何将实时 acc 数据与给定的手势"template"进行比较。

但是其他方向呢?例如。用户将手机倒置(好吧,这很容易,因为我可以将一个轴视为另一个轴进行相同的基本比较)还是更难,介于两者之间?

最佳答案

一旦加速度值在一段时间内(例如 1 秒)没有改变(或保持在定义的范围内),您就可以假设用户处于稳定位置并存储这些值。如果值超出该范围,您可以从新值中减去先前存储的值。假设你的问题是重力,并且你的意思是“方向不变”......对吗?

对于一个非常简单的情况,您只需要 z 轴加速度有一个峰值:

x_wanted = 0
y_wanted = 0
z_wanted = 10

您的用户处于稳定位置,设备倾斜 45 度:

x_rest = 0
y_rest = sin(45) g
z_rest = -cos(45) g

然后将手机靠近他,即 z 轴(手机引用)为 10:

x_phone = x_measured - x_rest = (0) - 0                    = 0
y_phone = y_measured - y_rest = (sin(45)*g) - sin(45)*g    = 0
x_phone = z_measured - x_rest = (-cos(45)*g + 10) - (-cos(45)*g) = 10

关于java - 使用加速度计进行运动跟踪的算法建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18434934/

相关文章:

java - 类注释导致ClassNotFound异常

java - 如何在浏览器上打开blob而不通过java服务下载?

android - 处理 Android 设备关闭(ISSUE : The intent is received only the first time)

android - 未满足的对等依赖 React Native CLI Init

Python/Scipy 滤波器离散化

java - 告诉 Eclipse 跳过测试

java - 将 JPanel 放置在 JFrame 内

php - Android 和 PHP 之间的加密/解密问题

audio - 什么是音频 block ?

android - 任何支持 48 kHz 的声学回声消除 (AEC) 库?