ios – 使用CMDeviceMotion和CMAttitude隔离垂直或水平加速度

ios – 使用CMDeviceMotion和CMAttitude隔离垂直或水平加速度,第1张

概述我试图隔离垂直或水平加速度分量,假设设备方向可能会不断变化. 在具有陀螺仪数据和CMAttitude之前,这是不可能的,因为我们只有加速度数据.既然我们通过CMAttitude同时加速了userAcceleration和方向,那么似乎应该可以通过姿态数据调整加速度数据,以便隔离特定的加速度绝对方向.这与使用参考帧略有不同,因为我期望设备方向不断变化.想想袖标等……就我而言, 无论设备方向如何变化, 我试图隔离垂直或水平加速度分量,假设设备方向可能会不断变化.

在具有陀螺仪数据和CMAttitude之前,这是不可能的,因为我们只有加速度数据.既然我们通过CMAttitude同时加速了useracceleration和方向,那么似乎应该可以通过姿态数据调整加速度数据,以便隔离特定的加速度绝对方向.这与使用参考帧略有不同,因为我期望设备方向不断变化.想想袖标等……就我而言,

无论设备方向如何变化,我都希望能够捕获严格垂直或严格水平的加速度值.这个的几何形状有点超出我的意见,我很欣赏一些建议.

解决方法 我不熟悉iOS API,但我可以给出数学答案.

>使用陀螺仪加速计传感器融合确定方向.我希望iOS有一个API,因为它相对复杂(如果不是让我们知道,我会详细说明).这似乎就是你所说的CMAttitude.方向应表示为四元数或矩阵,它表示固定参考框架(最可能是东北向下,但它取决于API)与附加到设备的本地参考框架之间的旋转.
>从加速度计读取的矢量(在本地参考系中),并以与您的方向相反的旋转旋转它.旋转的反面是四元数共轭或矩阵转置.通过四元数乘法或矩阵乘法来旋转矢量.这为您提供了固定参考系中的加速度矢量.
>固定参考系中加速度的Z分量是垂直加速度. XY分量的范数(sqrt(x ^ 2 y ^ 2))是水平加速度.不要忘记从垂直加速度中减去重力.这又假设了一个东北向下参考系,但大多数其他固定参考系只需要您适当地交换X,Y,Z.

如果iOS具有正确的API,则实现应该是微不足道的.如果你有选择偏好四元数而不是矩阵,因为实现运行得更快.让我们知道怎么回事.

总结

以上是内存溢出为你收集整理的ios – 使用CMDeviceMotion和CMAttitude隔离垂直或水平加速度全部内容,希望文章能够帮你解决ios – 使用CMDeviceMotion和CMAttitude隔离垂直或水平加速度所遇到的程序开发问题。

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

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存