我目前正在开发一个应用程序,它应该通过设备的加速度来计算速度。为了实现这一点,我使用传感套件。应用程序记录用户运动的数据并将其保存到本地存储器。当用户停止记录时,可以按时间以速度绘制收集的加速度(加速度计的每个轴有三个曲线图)。
检测工具包使用CMMotionManager的startAccelerometerUpdates获取加速度。为了计算速度,我做了一些信号处理和加速度的积分(然后乘以9.81,因为苹果是以重力增量来测量加速度的)。结果是在记录时间内的速度(它不是很精确,但在我的情况下这并不重要)。
我测试了我的应用程序,将手机滑过一张桌子,屏幕朝上,屏幕上方朝移动方向移动。这个运动后来出现在Y轴的结果图中,但它的速度是负的(加速度也是负的)。我希望速度和加速度应该是正的,因为我在y轴的正方向上移动了设备。
同样的情况也发生在X轴上,只要我把手机放在桌子上,沿着这个轴的方向移动。
我今天在没有感应套件的情况下测试了它,得到了同样的结果。
重力在z轴上总是一个负速度,因为它是对地面的加速度。
谁能给我解释一下为什么传感器的加速度有错误的符号?
谢谢你。
https://developer.apple.com/documentation/foundation/unitacceleration https://developer.apple.com/documentation/foundation/units_and_measurement
Foundation
库有一个用于此功能的函数,您可以使用它在UnitAcceleration
和UnitSpeed
之间进行转换。