1

当 iPhone 在纵向模式下垂直按住时按下按钮,我正在记录一个指南针磁航向 - 一个带有十字准线的实时摄像头馈送。GPS、相机(中预设)、指南针和姿态感应都在这里同时运行长达 20 秒。有一个 CLLocationManager 实例。对于姿态,我尝试了一个与磁北 + 垂直以及任意垂直对齐的参考系。

如果不纠正态度,无论我如何努力垂直握住 iPhone 并避免偏航,我都无法获得可重现的结果。有时有一个正确的值,但通常不是。我不确定这是否完全是因为我还没有应用态度校正,或者 iPhone 指南针在垂直时是否根本无法准确工作。

我在一个远离杂散磁场的大公园中间做了一些彻底的测试,完成了校准仪式,在三个轴上旋转 180 度和其他稍微尴尬的操作。

结果不正确,而且经常非常不准确。例如,固定在磁 142 度的目标上,我连续得到磁(不是真实)航向的值 155、152、154、154、153、156。在其他时候,我会得到 175、177、142 等等。

我希望这不是 iOS 的缺陷(可能与云台锁定有关?),只是磁罗盘航向必须针对 iPhone 姿态进行校正。我以欧拉角的形式获得手机相对于参考轴的姿态(但同样可以获得旋转矩阵或四元数)——使用 CMMotionManager / DeviceMotion。

我的问题是,尽管进行了长时间的搜索(并且尽管不太害怕数学),但我还没有找到进行更正所需的数学。有时我似乎很接近,但链接到的服务器不再可用。

如果您旋转设备以将偏航角改变一定量,罗盘读数似乎也会发生类似的变化,这让我想也许我只是在航向中添加了偏航角,但这完全失败了。我已经看到了以未指定方式使用四元数或旋转矩阵的建议,但我所拥有的只是一个四元数或矩阵,表示从参考系到当前手机方向的旋转,所以不确定我会用它做什么。

希望不必跳入原始磁力计/陀螺仪/加速度计硬铁干扰等应用校正?

任何指示或建议都非常感激。

- 账单。

4

0 回答 0