计算 iPhone 行进的短垂直距离

Calculate a short vertical distance traveled by iPhone

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

有没有办法计算出Core Motion framework

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)
            }
         }
     })
}

Is there a way to calculate vertical distance traveled with the Core Motion framework?

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

我不得不为我之前开发的应用程序之一做一些类似的工作。所以关键是使用所有你能接触到的传感器。加速度计、陀螺仪、GPS 和磁力计(可能不是您的情况下的 GPS 和指南针)。然后下一步是执行一些完整的下蹲(希望你的办公室对此没有问题 :-) 正如你期望你的用户在获得数据基线时那样。然后你可以建立一个模型。

好吧,如果你真的想厚颜无耻,你可以做我们所做的,我们将这些传感器数据发送到 ML API/Model。随着时间的推移,它变得非常准确。现在我们的准确率超过 90%。但是,这在您的情况下可能有点矫枉过正。