计算 iPhone 移动的短垂直距离

Mic*_*lov 5 iphone cocoa-touch ios core-motion swift

目前我正在开发一个应用程序,它需要检测 iPhone 是否开始和停止垂直移动。我需要能够检测到非常短(50-100 厘米)的垂直距离,即一个人是否进行深蹲。

有没有办法计算Core Motion 框架

let motion = CMMotionManager()

if motion.isDeviceMotionAvailable {
    self.motion.deviceMotionUpdateInterval = 1.0 / 60.0
    self.motion.showsDeviceMovementDisplay = true

    self.motion.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: .main, withHandler: { (data, error) in
        if let validData = data {
            // Just a random minimum acceleration threshold                    
            if validData.userAcceleration.y > 3 {
               print(validData.userAcceleration.y)
            }
         }
     })
}
Run Code Online (Sandbox Code Playgroud)

mat*_*att 2

\n

有没有办法使用 Core Motion 框架计算垂直行进距离?

\n
\n\n

Core Motion 可以检测姿态(手机如何定向)和加速度(手机如何开始或停止移动、加速或减速)。平滑的垂直运动根本不会被记录下来。您可能知道运动的开始和结束,但不知道这些事件发生的时间间隔有多远。您可能会根据初始加速度(这可以让您计算我们的行驶速度)和减速前的时间来猜测一些内容。但这并不只是猜测。

\n

  • 你的问题里没有“蹲”。我对此什么也没说。我说的是我想说的。手机传感器中没有任何固有的信息可以告诉您手机现在距离地面近 2 英尺。如果深蹲足够快和突然,您可以感觉到开始和停止时的猛拉,并猜测这是一个深蹲。你当然可以_数_这些手势。但你不能确定这是深蹲,也不能确切知道它有多深。 (3认同)
  • 您的编辑不会改变我的答案。您问 CoreMotion 框架能够检测什么,我已经回答了。正如我在回答中所说,您需要将数据收集到缓冲区中并分析其加速和减速,并使用数据量和中间时间来猜测这是一次深蹲以及在这段时间内行进的距离可能是多少。如果我是你,我会先自己做一些深蹲,收集数据,这样你就可以看到数据是什么样的。 (2认同)