Android - 如何处理跌倒检测算法

bob*_*123 14 android sensor accelerometer detection orientation

我希望能够在我的应用程序中使用一个相当简单的跌倒检测算法.在onSensorChanged()中,我得到当前x,x,z值的绝对值,并从中减去SensorManager.GRAVITY_EARTH(9.8 m/s).结果值必须连续10次大于阈值以设置表示加速度计已检测到下降的标志,阈值约为8m/s.

此外,我正在比较阈值已经通过时手机的方向和当阈值不再通过时它的方向,这设置了另一个标志,表示方位传感器已经检测到下降.

当两个标志都设置好后,就会发生一个事件来检查用户是否正确等等.我的问题在于阈值,当手机直接保持时,加速度计的绝对值约为9.8米/秒,但当我保持静止时在某个角度它可以超过15米/秒.这导致其他事件触发跌倒检测,如果我增加阈值以避免这种情况,则不会检测跌倒.
任何人都可以在这里给我一些建议,我应该使用哪些可能的值或如何改进我的方法?非常感谢.

Mar*_*ber 15

首先,我想提醒您,您不能只是将x,y,z值一起添加,您必须使用矢量数学.这就是为什么你得到超过15米/秒的价值.只要手机没有移动,矢量总和应该总是大约9.8米/秒.您使用SQRT(x*x + y*y + z*z)计算它.如果您需要更多信息,可以阅读有关矢量数学的内容,也许http://en.wikipedia.org/wiki/Euclidean_vector#Length是一个很好的开始.

我还建议使用另一种算法:在自由落体中,加速度计的所有三个x,y,z值都应接近零.(至少,这是我很久以前在学校学过的物理课程.)所以也许你可以使用一个公式,如果x,y,z <= 3 m/s的向量和,而不是检测到自由落体.如果矢量和然后增加到超过20 m/s的值,则比检测到着陆.

这些门槛只是一个疯狂的猜测.也许您只需在测试应用程序中记录x,y,z值,然后在手机中移动,然后离线分析值(及其法线和矢量和)的行为方式,以了解哪些阈值是合理的.


Fra*_*aro 6

我已经在这个问题上发表了一篇论文.请随时查看"ifall"@ ww2.cs.fsu.edu/~sposaro

我们基本上取平方根并寻找3个东西1.降低阈值.即摔倒2.上限打破了.即击中地面3.平坦线约1g,即longlie,长时间躺在地上


Fra*_*aro 5

我忘了更新这个帖子,但 iFall 现已在 Android Market 上提供。另请查看ww2.cs.fsu.edu/~sposaro/iFall了解更多信息