Ios CMDeviceMotion userAcceleration是否颠倒了?
我在CMDeviceMotion中看到一些来自userAcceleration字段的意外读数。当我查看来自CMAccelerometerData的原始加速计数据时,我发现如果iPhone平放在桌子上,读数是1G(1G in-Z轴),如果我将iPhone(当然是在软表面上)放下,则加速度计读数会如预期的那样变为零。没关系。当我改用CMDeviceMotion类时,当iPhone平放在桌子上时,userAcceleration的读数是零。同样,这很好。但是,当我放下iPhone并阅读CMDeviceManager userAcceleration时,userAcceleration的值是1G直接向上(+Z)而不是预期的向下(-Z)。看起来用户加速度读数实际上与设备实际经历的加速度完全相反。还有其他人注意到这一点吗?在我尝试积分速度和位置之前,我可以反转(乘以-1)所有用户加速度值吗?还是我误解了用户加速度的读数?和之间存在一些概念上的差异Ios CMDeviceMotion userAcceleration是否颠倒了?,ios,accelerometer,core-motion,Ios,Accelerometer,Core Motion,我在CMDeviceMotion中看到一些来自userAcceleration字段的意外读数。当我查看来自CMAccelerometerData的原始加速计数据时,我发现如果iPhone平放在桌子上,读数是1G(1G in-Z轴),如果我将iPhone(当然是在软表面上)放下,则加速度计读数会如预期的那样变为零。没关系。当我改用CMDeviceMotion类时,当iPhone平放在桌子上时,userAcceleration的读数是零。同样,这很好。但是,当我放下iPhone并阅读CMDevice
CMDeviceMotion.userAcceleration+CMDeviceMotion.gravity
检查CMAccelerometerData.acceleration
,以比较同类
通常,当您需要精确的值和硬件独立性时,CMDeviceMotion在大多数情况下是您的首选
另一个要考虑的是,当您通过启动设备运动更新时提供。我不确定使用基本版本时的默认设置是什么
你说你想积分这些值来得到速度和位置。关于这一点有好几次讨论,我可以说根本不可能得到合理的结果。见:
如果你的应用程序概念迫使你在半秒钟以上依赖精确的结果,试着改变它。结果表明,CMAcceleration不遵守右手法则,x是指向左边,y是指向屏幕底部,在这种情况下,对于典型的右手系统,z轴应该指向上方,但不是。 这让我在处理运动传感器时感到不舒服