问题标签 [core-motion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
969 浏览

ios - 在 CoreMotion 中从地面获取参考 CMAttitude(aTtitude,而不是 aLtitude)

我想获得基于地面水平的参考 CMAttitude,例如,绘制水平线。

实际上,我可以通过随时获取参考姿态并使用multiplyByInverseOfAttitude 来获得与之前姿态相比的手机旋转来旋转我的视图。没关系。

但我无法找到如何在一开始就获得它。我主要处于纵向模式,IOS5,并使用 CMAttitudeReferenceFrameXTrueNorthZVertical(因为我也使用 CoreLocation)。

我查看了气泡水平仪或茶壶样本(使用加速器),但没有找到简单的答案或样本来解决我的设备运动姿态问题。我可能错过了一些东西。

谢谢。

0 投票
1 回答
863 浏览

iphone - 如何在没有陀螺仪的设备上创建 CMRotationMatrix

我想在 iPhone 上创建一个增强现实视图。作为起点,我看了一下 Apple 的 park 演示项目。然而,deviceMotion 属性用于获取旋转矩阵以进行相机变换。但是由于 deviceMotion 使用陀螺仪(在 iPhone 4 和更新版本上可用)并且我也想支持 3GS(事实上,3GS 是我唯一的开发设备),我不能使用这种方法。所以我想使用加速度计和指南针提供的数据自己创建旋转矩阵。

不幸的是,我自己缺乏这样做的数学技能。环顾四周,在我看来,是与我的问题最相关的动手指南,但在实施之后似乎并没有适应我的问题(POI 视图只是暂时出现,而且似乎更多是由于设备移动而不是它的标题;我在下面发布了我的 onDisplayLink 方法(唯一有重大变化的方法)。我试图阅读相关的数学知识,但在这一点上,我对它的了解还不够,无法自行找到方法或在我的代码中找到错误。请问有什么帮助吗?

编辑:我已经认识到传感器数据应该更好地存储在双精度中而不是整数中,并添加了一些平滑。现在我可以更清楚地看到在设备旋转时应该从侧面出现的 POI 是如何从上面下来的。也许这有助于指出问题所在。

当设备放在桌子上并且大致(使用 Compass.app)指向北方时,我会记录以下数据:

这看起来很理智吗?

编辑 2:我已将 r 的分配更新为显然使我达到目标的一半:当设备直立时,我现在看到水平面附近的地标;但是,它们与预期位置相差约 90º。此外,Beta 建议的移动后的输出:

0 投票
2 回答
2601 浏览

iphone - 使用 Core Motion 构建计步器

我想构建一个在 iOS5 设备的后台运行的计步器。我知道 Core Motion 框架可以用来实现这一点,就像 Nike+ 正在使用他们的计步器应用程序一样。

我还听说 Core Motion 何时可以在后台使用是有限制的,特别是 OReilly 的 iOS 5 书中说:“在 iOS5 中,当您的应用程序在后台运行时,Core Motion 是合法的。要利用这一点,您的由于某些其他原因,应用程序需要在后台运行。”

这对我来说似乎很奇怪。这是否意味着我必须有一个“借口”才能在后台使用 Core Motion?

0 投票
1 回答
9711 浏览

iphone - 如何从加速度计计算正确的速度值

我需要计算 iphone 在太空中的速度,例如打孔速度。
我的第一个问题是:accelerometer:didAccelerate此过滤操作的加速度值是否:

与使用 CoreMotion 的一样
motionManager.deviceMotion.userAcceleration.x; motionManager.deviceMotion.userAcceleration.y; motionManager.deviceMotion.userAcceleration.z;吗?

接下来,根据相同的问题,我执行以下操作

对于舍入值,然后,我认为,我获得当前速度

然后根据iphone加速度计速度和距离

最后将速度计算为向量的长度

但是标签中包含的速度值总是在增加。我的意思是如果我移动设备然后停止,速度值不会变为 0。加速度不会在 0 处自我补偿吗?

0 投票
1 回答
1193 浏览

algorithm - DeviceMotion 采用什么算法从加速度计和陀螺仪计算姿态?

根据参考资料, deviceMotion 属性仅适用于同时具有加速度计和陀螺仪的设备。这是因为它的子属性是传感器融合算法的结果,即两个信号一起评估以减少估计误差。

嗯,我的问题是 CMMotionManager 用来进行计算的内部实现或算法在哪里。我想要一些关于这个所谓的“传感器融合算法”的细节

流行的融合算法是例如卡尔曼滤波器和导数,但我猜 CMMotionManager 的内部实现是基于更简单,因此更快的算法。我希望对来自加速度计和陀螺仪的传感器数据进行一些简单但足够好的数学计算,最终计算出横滚、偏航和俯仰

0 投票
1 回答
1221 浏览

ios - 使用 CMDeviceMotion 时,如果设备垂直向上(间距 = 90),它真的很不稳定。无论如何要解决这个问题?

我知道(俯仰、偏航、滚动)坐标系在数学方面有其自身的缺陷。但是,我真的希望可以替代或从该坐标派生的东西可以替代。

我正在尝试做的是在现实世界中移动设备(假设它是一部 iphone),并试图找出用户眼睛的偏航和俯仰。因此,yaw 的范围应该是 (-180, 180),pitch 的范围应该是 (-90, 90)。当我将 iphone(始终面向我)从底部移动到前面时,CMDeviceMotion 使我的音高从 0 变化到 90,而当我将 iphone(仍然面向我)从前到上移动时,CMDeviceMotion 使我的音高从 90 向后变化到 0。这些都很好,我对音高数据非常满意。

然而,当俯仰接近 90 度时,偏航非常不稳定且不稳定。威尔,这不是问题,因为我可以忽略俯仰在 90 左右时偏航的变化。但是,真正的问题是偏航的值在俯仰增加之前和俯仰减小之后发生了巨大变化。我的意思是它不仅不稳定,而且平均变化!改变像 180(Pi) 这样的东西。我想那是因为坐标完全改变了。但我现在迷失在坐标转移上。

0 投票
1 回答
2425 浏览

ios5 - iOS 5 转换 UIAccelerometer

我正在使用 xcode 4.2(并且将很快升级)和这些代码行

代码有效,但我有一个黄色警告说代码是deprecated,我查看了新的参考,CoreMotion现在做加速度计。我想知道写上述内容的新方法是什么..?

0 投票
1 回答
344 浏览

ios5 - iPhone4 iOS5 有没有物理引擎可以将CMDeviceMotion事件转化为位移?

CMDeviceMotion在 iPhone 4 上运行一个处理队列,它为我提供了用户诱导的加速以及旋转速率。我可以自己过滤这些数据。

我想了解的是如何将这些离散的加速度、设备姿态和旋转率样本转换为 3 维位移。这对于直线的经典力学是可能的,但我正在考虑更高级的计算 - 例如曲线。这可以用 GPS 处理,但我正在寻找更好的分辨率 - 比如说在 10 英尺内。GPS 下晴空的平均精度约为 30 英尺。

是否有某种物理引擎或物理处理器可以获取一组设备运动或加速度/转弯速率事件,并告诉我手机与原始位置的距离?

我知道 iPhone 有各种计步器和自行车 GPS 追踪器。它们是基于 GPS 还是真的像我描述的那样进行加速集成?

0 投票
1 回答
3129 浏览

iphone - 如何相对于用户握持设备的方式绕 Y 轴旋转?

我记得在 WWDC 上,有一个演讲展示了 OpenGL ES 中的一个茶壶,它随着设备的移动而旋转。茶壶似乎在太空中静止不动。

当应用程序启动时,茶壶从特定位置开始。然后当设备旋转时,茶壶也会旋转以在空间中静止不动。

在这次演讲中,他们提到我们必须获得“参考框架”,例如在应用启动时,它告诉我们用户最初是如何握住设备的。

例如,这是加速度计轴:

加速度计

我想知道围绕 Y 轴的旋转,但与用户握持设备的方式有关。因此,当用户将其直立并围绕 Y 旋转时,我需要知道该旋转值。

我认为关键是从读数中消除重力?我还用陀螺仪瞄准 iPhone 4 / 4S,但我认为 CoreMotion 会自动对它们进行传感器融合。

我怎么知道用户围绕 Y 轴旋转了多少设备?

0 投票
2 回答
5475 浏览

ios - 找到 iOS 设备的法线向量

我想使用 CMAttitude 来了解与 iPad/iPhone 屏幕玻璃垂直的矢量(相对于地面)。因此,我会得到如下向量:

在此处输入图像描述

请注意,这与方向不同,因为我不关心设备如何围绕 z 轴旋转。因此,如果我将 iPad 面朝下举过头顶,它会显示 (0,-1,0),即使我在头顶上方旋转它(就像直升机一样),它也会继续显示 (0,- 1,0):

在此处输入图像描述

我觉得这可能很容易,但由于我是四元数的新手并且不完全理解设备运动的参考框架选项,所以它整天都在逃避我。