2017-05-25 93 views
1

我几乎读到关于垂直运动的每一个问题,但我无法得出一个确切的结论和想法。因为大部分的问题都是关于游戏编程的,其中涉及很多噪音,旋转等,如oneone使用Android传感器可以检测垂直移动(只能上下移动)吗?

我的问题很简单。我只想检测上下运动(真或假,不测量)。我不在乎纵向或横向模式或旋转。我只想知道用户是在上下移动电话。例如; 我想检测上拉运动。我把手机放在我的口袋里,做拉ups。它甚至有可能吗?它有多准确,我应该关注哪些传感器?

+0

这应该完全可以使用加速度计来实现。只要检查它是否给出了交替的值。你有什么尝试?什么没有用? – Carcigenicate

+0

@Carcigenicate我只使用加速度计,但我无法理解Y轴的变化(我相信这是我需要关注的),变化非常小,有时变为负值,有时变大。很波浪。我认为我需要以某种方式与重力结合,不是吗? – batmaci

+0

使用加速度计,您可以确定任何特定轴(即X,Y和Z轴)中的线性加速度 – Debu

回答

1

这实际上比您想象的要困难得多。

手机的陀螺仪传感器可以为您提供手机相对于手机的移动,而不是世界。离开手机正面朝上,平放在桌面上会给你

  • x = 0.0
  • y = 0.0
  • z = -9.8

由于传感器的原因,这些值会稍微波动。随着手机的旋转,这些基地(静止)值的变化 - 在45度你

  • x = 6.93
  • y = 0
  • z = 6.93

使sqrt(x*x + y*y + z*z) = 9.8。如果你想隔离上下运动,你必须停止旋转手机,或者忽略这个动作。

如果您停止旋转电话 - 例如手机必须直立在口袋里,那么你可以看看x组件,它将在休息时读取-9.81并且更改将显示加速度,负向负向较小或正向向上,向下向负向较多方向。

如果您希望忽略其他移动(例如,用户仅将它用于定义的活动),则绝对值将会执行。 sqrt(x*x + y*y + z*z)会给你9.8静止,并且对该值的更改将归因于设备的加速。有些数学后来(蛮力数值积分),你可以有速度或距离旅行(虽然请注意,这很快得到非常不准确...)

请注意有一个Rotation Vector Sensor API可能允许您删除该设备的方向取自陀螺仪读数,可以计算真实世界的运动,但是我没有尝试过这个API,也不知道需要多少额外的硬件(如果有的话)。