ios – CMDeviceMotion userAcceleration颠倒了吗?

ios – CMDeviceMotion userAcceleration颠倒了吗?,第1张

概述我在CMDeviceMotion的userAcceleration字段中看到了一些意外的读数.当我从CMAccelerometerData查看原始加速度计数据时,我看到如果iPhone在桌面上是平的,读数是1G直下(1G在-Z轴),如果我放下 iphone(当然在柔软的表面上)那么加速读数按预期变为零.那一切都很好.当我改为使用CMDeviceMotion类时,当桌面上的iPhone平放时,us 我在CMDeviceMotion的useracceleration字段中看到了一些意外的读数.当我从CMAccelerometerData查看原始加速度计数据时,我看到如果iPhone在桌面上是平的,读数是1G直下(1G在-Z轴),如果我放下 iphone(当然在柔软的表面上)那么加速读数按预期变为零.那一切都很好.当我改为使用CMDeviceMotion类时,当桌面上的iPhone平放时,useracceleration读数为零.再次这很好.但是当我放下iPhone并读取CMDeviceManager useracceleration时,useracceleration值是1G直线上升(Z)而不是按预期下降(-Z).看起来userCcceleration读数实际上与设备实际遇到的加速度完全相反.有没有人观察过这个?在尝试整合速度和位置之前,我可以反转(乘以-1)所有useracceleration值,还是我误解了useracceleration正在读取的内容?解决方法 CMAccelerometerData.acceleration和 CMDeviceMotion.userAcceleration之间存在一些概念上的差异

>原始加速度计数据只是所测量的所有加速度的总和,即设备的重力和当前加速度的组合.
>设备运动数据是所有3个传感器(即加速度计,陀螺仪和磁力计)的传感器融合的结果.因此消除了偏差和误差(理论上),并且剩余的加速度数据被分成重力和加速度以便于使用.

因此,如果你想比较两者,你必须检查CMAccelerometerData.acceleration与CMDeviceMotion.useracceleration CMDeviceMotion.gravity,以比较喜欢.

通常,在大多数情况下,当您需要精确值和硬件独立性时,CMDeviceMotion是您的首选.

另外要考虑的是通过startDeviceMotionUpdatesUsingReferenceFrame启动Device Motion更新时提供的CMAttitudeReferenceFrame.我不确定使用基本版本startDeviceMotionUpdates时的默认值是什么

您声明要整合这些值以获得速度和位置.关于这一点有几个讨论,在底线我可以说不可能得到合理的结果.看到:

> Finding distance using accelerometer in iPhone
> Getting displacement from accelerometer data with Core Motion
> How can I find distance traveled with a gyroscope and accelerometer?

如果您的应用程序概念迫使您依赖精确结果超过半秒,请尝试更改它.

总结

以上是内存溢出为你收集整理的ios – CMDeviceMotion userAcceleration颠倒了吗?全部内容,希望文章能够帮你解决ios – CMDeviceMotion userAcceleration颠倒了吗?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1065071.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存