我希望使用实时加速度计数据(来自手机)来检测一些基本的运动手势。我的问题是我需要一些通常“旋转不变”的东西。
我的意思是,如果用户将手机倒置,然后做出手势,则不会是相同的信号。给定特定方向,我知道如何将实时 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/