gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 05:35:38 25 4
gpt4 key购买 nike

假设设备方向可能不断变化,我正在尝试隔离垂直或水平加速度分量。

在拥有陀螺仪数据和 CMAttitude 之前,这是不可能的,因为我们只有加速度数据。现在我们有两个加速度是 userAcceleration 和通过 CMAttitude 的方向,似乎应该可以通过姿态数据调整加速度数据,以便隔离特定的加速度绝对方向。这与使用引用框架有点不同,因为我希望设备方向不断变化。想想臂章等等……就我而言,

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

最佳答案

我不熟悉 iOS API,但我可以给出数学答案。

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

如果 iOS 有正确的 API,实现应该是微不足道的。如果您可以选择四元数而不是矩阵,因为实现会运行得更快。让我们知道进展如何。

关于ios - 使用 CMDeviceMotion 和 CMAttitude 隔离垂直或水平加速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com